]> git.sesse.net Git - vlc/commitdiff
block_Bytestream: use block_Release() and simplify a little
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 3 Aug 2011 15:40:25 +0000 (18:40 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 3 Aug 2011 15:40:25 +0000 (18:40 +0300)
include/vlc_block_helper.h

index 6852509f1f4eca8bb56cc95925c53d54429f6c04..f7129f9b07e94d4574fe90d1ee334dc630eb0da1 100644 (file)
 
 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,