]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/libopusenc: Fix for header pre-skip value
authorArthur Taylor <art@ified.ca>
Thu, 7 Jan 2021 20:55:59 +0000 (12:55 -0800)
committerLynne <dev@lynne.ee>
Thu, 7 Jan 2021 21:42:15 +0000 (22:42 +0100)
The Opus header initial padding preskip amount is always to be expressed
relative to 48kHz. However, the encoder delay returned from querying
libopus is relative to the encoding samplerate. Multiply by the
samplerate conversion factor to correct.

Signed-off-by: Arthur Taylor <art@ified.ca>
libavcodec/libopusenc.c

index bf2d04b4fb03628a5fee75d81a87611791c34d9d..70d17f802bdc6e4e47d33e11268a07157d1db59c 100644 (file)
@@ -94,7 +94,7 @@ static void libopus_write_header(AVCodecContext *avctx, int stream_count,
     bytestream_put_buffer(&p, "OpusHead", 8);
     bytestream_put_byte(&p, 1); /* Version */
     bytestream_put_byte(&p, channels);
-    bytestream_put_le16(&p, avctx->initial_padding); /* Lookahead samples at 48kHz */
+    bytestream_put_le16(&p, avctx->initial_padding * 48000 / avctx->sample_rate); /* Lookahead samples at 48kHz */
     bytestream_put_le32(&p, avctx->sample_rate); /* Original sample rate */
     bytestream_put_le16(&p, 0); /* Gain of 0dB is recommended. */