[FFmpeg-cvslog] avformat/matroskadec: force 48kHz sample rate when rescaling Opus inital padding

James Almer git at videolan.org
Wed Jun 8 01:33:41 CEST 2016


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Mon Jun  6 01:14:11 2016 -0300| [49b024663501320310ec729f3bd15d0420bd9e59] | committer: 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: Michael Niedermayer <michael at niedermayer.cc>
Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=49b024663501320310ec729f3bd15d0420bd9e59
---

 libavformat/matroskadec.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 3270009..7880a10 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,



More information about the ffmpeg-cvslog mailing list