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
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel