- block_BytestreamPush( &p_sys->bytestream, *pp_block );
-
- while( 1 )
- {
- switch( p_sys->i_state )
- {
-
- case STATE_NOSYNC:
- if( block_FindStartcodeFromOffset( &p_sys->bytestream,
- &p_sys->i_offset, p_sys->p_startcode, 3 ) == VLC_SUCCESS )
- {
- p_sys->i_state = STATE_NEXT_SYNC;
- }
-
- if( p_sys->i_offset )
- {
- block_SkipBytes( &p_sys->bytestream, p_sys->i_offset );
- p_sys->i_offset = 0;
- block_BytestreamFlush( &p_sys->bytestream );
- }
-
- if( p_sys->i_state != STATE_NEXT_SYNC )
- {
- /* Need more data */
- return NULL;
- }
-
- p_sys->i_offset = 1; /* To find next startcode */
-
- case STATE_NEXT_SYNC:
- /* TODO: If p_block == NULL, flush the buffer without checking the
- * next sync word */
-
- /* Find the next startcode */
- if( block_FindStartcodeFromOffset( &p_sys->bytestream,
- &p_sys->i_offset, p_sys->p_startcode, 3 ) != VLC_SUCCESS )
- {
- /* Need more data */
- return NULL;
- }
-
- /* Get the new fragment and set the pts/dts */
- p_pic = block_New( p_dec, p_sys->i_offset );
- block_BytestreamFlush( &p_sys->bytestream );
- p_pic->i_pts = p_sys->bytestream.p_block->i_pts;
- p_pic->i_dts = p_sys->bytestream.p_block->i_dts;
+static block_t *PacketizeParse( void *p_private, bool *pb_ts_used, block_t *p_block )
+{
+ decoder_t *p_dec = p_private;