Hi! Attached patch intends to match what opusdec does, sorry if I miss something.
Please review, Carl Eugen
diff --git a/libavcodec/opus.c b/libavcodec/opus.c index f2b8ecc..df04f05 100644 --- a/libavcodec/opus.c +++ b/libavcodec/opus.c @@ -332,6 +332,18 @@ av_cold int ff_opus_parse_extradata(AVCodecContext *avctx, return AVERROR_INVALIDDATA; } + avctx->sample_rate = AV_RL32(extradata + 12); + if ( avctx->sample_rate != 48000 + && avctx->sample_rate != 24000 + && avctx->sample_rate != 16000 + && avctx->sample_rate != 12000 + && avctx->sample_rate != 8000) { + av_log(avctx, AV_LOG_WARNING, + "Invalid sample rate %d specified in the extradata, using 48000 instead\n", + avctx->sample_rate); + avctx->sample_rate = 48000; + } + s->gain_i = AV_RL16(extradata + 16); if (s->gain_i) s->gain = ff_exp10(s->gain_i / (20.0 * 256)); diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index 95a2435..66f2a19 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -663,7 +663,6 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) int ret, i, j; avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; - avctx->sample_rate = 48000; c->fdsp = avpriv_float_dsp_alloc(0); if (!c->fdsp)
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel