[vlc-commits] block_Bytestream: use block_Release() and simplify a little

Rémi Denis-Courmont git at videolan.org
Wed Aug 3 17:41:10 CEST 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Aug  3 18:40:25 2011 +0300| [bbab5a9329a3194c5407fc1f66f2485d87f31b4f] | committer: Rémi Denis-Courmont

block_Bytestream: use block_Release() and simplify a little

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bbab5a9329a3194c5407fc1f66f2485d87f31b4f
---

 include/vlc_block_helper.h |   44 ++++++++++++++++++++++++--------------------
 1 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/include/vlc_block_helper.h b/include/vlc_block_helper.h
index 6852509..f7129f9 100644
--- a/include/vlc_block_helper.h
+++ b/include/vlc_block_helper.h
@@ -28,10 +28,10 @@
 
 typedef struct block_bytestream_t
 {
-    block_t             *p_chain;
-    block_t             *p_block;
-    size_t              i_offset;
-
+    block_t *p_chain;  /**< byte stream head block */
+    block_t *p_block;  /**< byte stream read pointer block */
+    size_t   i_offset; /**< byte stream read pointer offset within block */
+    /* TODO? add tail pointer for faster push? */
 } block_bytestream_t;
 
 /*****************************************************************************
@@ -45,12 +45,12 @@ static inline void block_BytestreamInit( block_bytestream_t *p_bytestream )
 
 static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream )
 {
-    while( p_bytestream->p_chain )
+    for( block_t *block = p_bytestream->p_chain; block != NULL; )
     {
-        block_t *p_next;
-        p_next = p_bytestream->p_chain->p_next;
-        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
-        p_bytestream->p_chain = p_next;
+        block_t *p_next = block->p_next;
+
+        block_Release( block );
+        block = p_next;
     }
 }
 
@@ -68,22 +68,26 @@ static inline void block_BytestreamEmpty( block_bytestream_t *p_bytestream )
  */
 static inline void block_BytestreamFlush( block_bytestream_t *p_bytestream )
 {
-    while( p_bytestream->p_chain != p_bytestream->p_block )
+    block_t *block = p_bytestream->p_chain;
+
+    while( block != p_bytestream->p_block )
     {
-        block_t *p_next;
-        p_next = p_bytestream->p_chain->p_next;
-        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
-        p_bytestream->p_chain = p_next;
+        block_t *p_next = block->p_next;
+
+        block_Release( block );
+        block = p_next;
     }
-    while( p_bytestream->p_block &&
-           (p_bytestream->p_block->i_buffer - p_bytestream->i_offset) == 0 )
+
+    while( block != NULL && block->i_buffer == p_bytestream->i_offset )
     {
-        block_t *p_next;
-        p_next = p_bytestream->p_chain->p_next;
-        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );
-        p_bytestream->p_chain = p_bytestream->p_block = p_next;
+        block_t *p_next = block->p_next;
+
+        block_Release( block );
+        block = p_next;
         p_bytestream->i_offset = 0;
     }
+
+    p_bytestream->p_chain = p_bytestream->p_block = block;
 }
 
 static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,



More information about the vlc-commits mailing list