Commit 49b02466 authored by James Almer's avatar James Almer

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: 's avatarMichael Niedermayer <michael@niedermayer.cc>
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent 27c1eae5
...@@ -2353,7 +2353,8 @@ static int matroska_parse_tracks(AVFormatContext *s) ...@@ -2353,7 +2353,8 @@ static int matroska_parse_tracks(AVFormatContext *s)
if (track->codec_delay > 0) { if (track->codec_delay > 0) {
st->codecpar->initial_padding = av_rescale_q(track->codec_delay, st->codecpar->initial_padding = av_rescale_q(track->codec_delay,
(AVRational){1, 1000000000}, (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) { if (track->seek_preroll > 0) {
st->codecpar->seek_preroll = av_rescale_q(track->seek_preroll, st->codecpar->seek_preroll = av_rescale_q(track->seek_preroll,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment