From fa767b626859cb2e4fbbc29f0b308d3638c10149 Mon Sep 17 00:00:00 2001 From: Dan Oscarsson Date: Sun, 27 Jun 2021 10:11:57 +0200 Subject: demux_mkv: enable AVCodec parser timestamp usage for parsed audio Without this, cases where the parser cannot return data right away will end up utilizing the following fed packet's timestamps. This will in turn cause an unnecessary offset in the audio stream timestamps. An example of such buffered parser in libavcodec is the EAC3 one. --- demux/demux_mkv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 2e03fac874..d07f8fe1e0 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1741,7 +1741,11 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track) if (!strcmp(codec, "mp2") || !strcmp(codec, "mp3") || !strcmp(codec, "truehd") || !strcmp(codec, "eac3")) { + mkv_demuxer_t *mkv_d = demuxer->priv; + int64_t segment_timebase = (1e9 / mkv_d->tc_scale); + track->parse = true; + track->parse_timebase = MPMAX(sh_a->samplerate, segment_timebase); } else if (!strcmp(codec, "flac")) { unsigned char *ptr = extradata; unsigned int size = extradata_len; -- cgit v1.2.3