[vlc-devel] [PATCH] demux: avcodec: audio: reset reference time on backward seek (fix #9176)
Francois Cartegnie
fcvlcdev at free.fr
Thu May 1 12:14:31 CEST 2014
end_date is never reset when seeking backward, and then audio is trashed
when pts - end_date > - 2*CLOCK_FREQ
---
modules/codec/avcodec/audio.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
index 254c06d..7f873f6 100644
--- a/modules/codec/avcodec/audio.c
+++ b/modules/codec/avcodec/audio.c
@@ -352,8 +352,11 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block )
if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate )
date_Init( &p_sys->end_date, ctx->sample_rate, 1 );
- if( p_block->i_pts > VLC_TS_INVALID &&
- p_block->i_pts > date_Get( &p_sys->end_date ) )
+ if( p_block->i_pts > VLC_TS_INVALID && (
+ p_block->i_pts > date_Get( &p_sys->end_date ) ||
+ ( p_block->i_flags & (BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) ||
+ date_Get( &p_sys->end_date ) - p_block->i_pts > AOUT_MAX_PREPARE_TIME
+ ) )
{
date_Set( &p_sys->end_date, p_block->i_pts );
}
--
1.9.0
More information about the vlc-devel
mailing list