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 <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2016-06-06 01:14:11 -03:00
parent 27c1eae55f
commit 49b0246635

View File

@ -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,