From 3801da9dcde2f56498d49709250abc59502eea59 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sun, 8 Feb 2009 16:51:58 +0100 Subject: [PATCH] Fixed various decoder/packetizer flush. --- modules/codec/a52.c | 2 +- modules/codec/dts.c | 2 +- modules/codec/flac.c | 2 +- modules/codec/mpeg_audio.c | 2 +- modules/packetizer/h264.c | 5 ++++- modules/packetizer/mlp.c | 2 +- modules/packetizer/mpeg4audio.c | 4 ++-- modules/packetizer/mpeg4video.c | 16 ++++++++-------- modules/packetizer/mpegvideo.c | 8 +++++--- modules/packetizer/vc1.c | 4 ++-- 10 files changed, 26 insertions(+), 21 deletions(-) diff --git a/modules/codec/a52.c b/modules/codec/a52.c index 797f8d0970..df5675265f 100644 --- a/modules/codec/a52.c +++ b/modules/codec/a52.c @@ -189,7 +189,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); diff --git a/modules/codec/dts.c b/modules/codec/dts.c index ac486ef581..62a771d0d6 100644 --- a/modules/codec/dts.c +++ b/modules/codec/dts.c @@ -189,7 +189,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); diff --git a/modules/codec/flac.c b/modules/codec/flac.c index d7130dc3de..6206360bbe 100644 --- a/modules/codec/flac.c +++ b/modules/codec/flac.c @@ -386,7 +386,7 @@ static block_t *PacketizeBlock( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); diff --git a/modules/codec/mpeg_audio.c b/modules/codec/mpeg_audio.c index 34d43a22d4..306bf0737b 100644 --- a/modules/codec/mpeg_audio.c +++ b/modules/codec/mpeg_audio.c @@ -208,7 +208,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c index 03120b6a12..b8ffeaf8c6 100644 --- a/modules/packetizer/h264.c +++ b/modules/packetizer/h264.c @@ -421,7 +421,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); @@ -429,6 +429,9 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) p_sys->slice.i_frame_type = 0; p_sys->b_slice = false; } + p_sys->i_frame_pts = -1; + p_sys->i_frame_dts = -1; + block_Release( *pp_block ); return NULL; } diff --git a/modules/packetizer/mlp.c b/modules/packetizer/mlp.c index cd4ce12250..5722c0cb4e 100644 --- a/modules/packetizer/mlp.c +++ b/modules/packetizer/mlp.c @@ -165,7 +165,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) { p_sys->b_mlp = false; p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); diff --git a/modules/packetizer/mpeg4audio.c b/modules/packetizer/mpeg4audio.c index 2bf711bf5e..e08798073e 100644 --- a/modules/packetizer/mpeg4audio.c +++ b/modules/packetizer/mpeg4audio.c @@ -972,9 +972,9 @@ static block_t *PacketizeStreamBlock( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); } - //aout_DateSet( &p_sys->end_date, 0 ); + aout_DateSet( &p_sys->end_date, 0 ); block_Release( *pp_block ); return NULL; } diff --git a/modules/packetizer/mpeg4video.c b/modules/packetizer/mpeg4video.c index 7f953c35b2..06e5f4eb6d 100644 --- a/modules/packetizer/mpeg4video.c +++ b/modules/packetizer/mpeg4video.c @@ -229,20 +229,20 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); p_sys->p_frame = NULL; p_sys->pp_last = &p_sys->p_frame; } -// p_sys->i_interpolated_pts = -// p_sys->i_interpolated_dts = -// p_sys->i_last_ref_pts = -// p_sys->i_last_time_ref = -// p_sys->i_time_ref = -// p_sys->i_last_time = -// p_sys->i_last_timeincr = 0; + p_sys->i_interpolated_pts = + p_sys->i_interpolated_dts = + p_sys->i_last_ref_pts = + p_sys->i_last_time_ref = + p_sys->i_time_ref = + p_sys->i_last_time = + p_sys->i_last_timeincr = 0; block_Release( *pp_block ); return NULL; diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c index 23c2eef48a..e841928ff3 100644 --- a/modules/packetizer/mpegvideo.c +++ b/modules/packetizer/mpegvideo.c @@ -263,7 +263,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); p_sys->b_discontinuity = true; if( p_sys->p_frame ) @@ -272,8 +272,10 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) p_sys->pp_last = &p_sys->p_frame; p_sys->b_frame_slice = false; } -// p_sys->i_interpolated_dts = -// p_sys->i_last_ref_pts = 0; + p_sys->i_dts = 0; + p_sys->i_pts = 0; + p_sys->i_interpolated_dts = 0; + p_sys->i_last_ref_pts = 0; block_Release( *pp_block ); return NULL; diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c index cfbda1cf55..8a4b5066a7 100644 --- a/modules/packetizer/vc1.c +++ b/modules/packetizer/vc1.c @@ -203,7 +203,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( (*pp_block)->i_flags&BLOCK_FLAG_CORRUPTED ) { p_sys->i_state = STATE_NOSYNC; - block_BytestreamFlush( &p_sys->bytestream ); + block_BytestreamEmpty( &p_sys->bytestream ); if( p_sys->p_frame ) block_ChainRelease( p_sys->p_frame ); @@ -211,7 +211,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) p_sys->pp_last = &p_sys->p_frame; p_sys->b_frame = false; } -// p_sys->i_interpolated_dts = 0; + p_sys->i_interpolated_dts = 0; block_Release( *pp_block ); return NULL; } -- 2.39.2