]> git.sesse.net Git - vlc/blobdiff - include/vlc_block.h
Rename all sout_Cfg* stuff to config_Chain* (as it isn't really sout specific)
[vlc] / include / vlc_block.h
index cb589016e69a7e8e6744305a0600158b71f02802..0ebef6e6c0c47b2fe6fed86979f322ecf4995bfb 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * vlc_block.h: Data blocks management functions
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
+ * Copyright (C) 2003 the VideoLAN team
  * $Id$
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
@@ -18,7 +18,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef _VLC_BLOCK_H
@@ -62,8 +62,6 @@ typedef struct block_sys_t block_sys_t;
 #define BLOCK_FLAG_END_OF_FRAME  0x0040
 /** This is not a key frame for bitrate shaping */
 #define BLOCK_FLAG_NO_KEYFRAME   0x0080
-/** This is the last block of the GOP */
-#define BLOCK_FLAG_END_OF_GOP    0x0100
 /** This block contains a clock reference */
 #define BLOCK_FLAG_CLOCK         0x0200
 /** This block is scrambled */
@@ -79,6 +77,7 @@ typedef struct block_sys_t block_sys_t;
 struct block_t
 {
     block_t     *p_next;
+    block_t     *p_prev;
 
     uint32_t    i_flags;
 
@@ -220,13 +219,17 @@ static int block_ChainExtract( block_t *p_list, void *p_data, int i_max )
 static inline block_t *block_ChainGather( block_t *p_list )
 {
     int     i_total = 0;
+    mtime_t i_length = 0;
     block_t *b, *g;
 
     if( p_list->p_next == NULL )
         return p_list;  /* Already gathered */
 
     for( b = p_list; b != NULL; b = b->p_next )
+    {
         i_total += b->i_buffer;
+        i_length += b->i_length;
+    }
 
     g = block_New( p_list->p_manager, i_total );
     block_ChainExtract( p_list, g->p_buffer, g->i_buffer );
@@ -234,6 +237,7 @@ static inline block_t *block_ChainGather( block_t *p_list )
     g->i_flags = p_list->i_flags;
     g->i_pts   = p_list->i_pts;
     g->i_dts   = p_list->i_dts;
+    g->i_length = i_length;
 
     /* free p_list */
     block_ChainRelease( p_list );