vlc/vlc-3.0 | branch: master | Francois Cartegnie <[email protected]> | Mon Feb 11 12:50:12 2019 +0100| [d9ff8159a53e867dffe2adecbb8b80f9ca12ea53] | committer: Francois Cartegnie
demux: ogg: PTS to TICK_INVALID on missing interpolation (cherry picked from commit edadd2849f840f117504f0bd1bd92b0b676ed223) > http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=d9ff8159a53e867dffe2adecbb8b80f9ca12ea53 --- modules/demux/ogg.c | 7 ++++++- modules/demux/ogg.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c index 0b368b77f8..f0027b197e 100644 --- a/modules/demux/ogg.c +++ b/modules/demux/ogg.c @@ -715,6 +715,7 @@ static void Ogg_ResetStream( logical_stream_t *p_stream ) p_stream->i_pcr = VLC_TS_UNKNOWN; p_stream->i_previous_granulepos = -1; p_stream->i_previous_pcr = VLC_TS_UNKNOWN; + p_stream->b_interpolation_failed = false; ogg_stream_reset( &p_stream->os ); FREENULL( p_stream->prepcr.pp_blocks ); p_stream->prepcr.i_size = 0; @@ -1137,6 +1138,7 @@ static void Ogg_UpdatePCR( demux_t *p_demux, logical_stream_t *p_stream, p_stream->i_pcr += ( CLOCK_FREQ * p_oggpacket->bytes / p_stream->fmt.i_bitrate / 8 ); } + else p_stream->b_interpolation_failed = true; } p_stream->i_previous_granulepos = p_oggpacket->granulepos; @@ -1477,7 +1479,8 @@ static void Ogg_DecodePacket( demux_t *p_demux, /* Blatant abuse of the i_length field. */ p_block->i_length = p_stream->i_end_trim; - p_block->i_pts = p_block->i_dts = p_stream->i_pcr; + p_block->i_dts = p_stream->i_pcr; + p_block->i_pts = p_stream->b_interpolation_failed ? VLC_TS_INVALID : p_stream->i_pcr; } else if( p_stream->fmt.i_cat == SPU_ES ) { @@ -1485,6 +1488,8 @@ static void Ogg_DecodePacket( demux_t *p_demux, p_block->i_pts = p_block->i_dts = p_stream->i_pcr; } + p_stream->b_interpolation_failed = false; + if( p_stream->fmt.i_codec != VLC_CODEC_VORBIS && p_stream->fmt.i_codec != VLC_CODEC_SPEEX && p_stream->fmt.i_codec != VLC_CODEC_OPUS && diff --git a/modules/demux/ogg.h b/modules/demux/ogg.h index 16ac99793c..b7e52a1993 100644 --- a/modules/demux/ogg.h +++ b/modules/demux/ogg.h @@ -83,6 +83,7 @@ typedef struct logical_stream_s * granulepos */ mtime_t i_pcr; mtime_t i_previous_pcr; + bool b_interpolation_failed; /* Don't use dts, it was not interpolated */ /* Misc */ bool b_initializing; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
