From 49b024663501320310ec729f3bd15d0420bd9e59 Mon Sep 17 00:00:00 2001 From: James Almer Date: Mon, 6 Jun 2016 01:14:11 -0300 Subject: [PATCH] avformat/matroskadec: force 48kHz sample rate when rescaling Opus inital padding Mkvtoolnix stores the sample rate of the original stream as reported by the "OpusHead" stream header instead of 48kHz, the actual sample rate of the Opus stream. Ignoring the stored sample rate and forcing 48kHz preserves the correct initial padding when remuxing such files. Reviewed-by: Michael Niedermayer Signed-off-by: James Almer --- libavformat/matroskadec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 3270009409..7880a103cb 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2353,7 +2353,8 @@ static int matroska_parse_tracks(AVFormatContext *s) if (track->codec_delay > 0) { st->codecpar->initial_padding = av_rescale_q(track->codec_delay, (AVRational){1, 1000000000}, - (AVRational){1, st->codecpar->sample_rate}); + (AVRational){1, st->codecpar->codec_id == AV_CODEC_ID_OPUS ? + 48000 : st->codecpar->sample_rate}); } if (track->seek_preroll > 0) { st->codecpar->seek_preroll = av_rescale_q(track->seek_preroll,