From ef79ef3c1101b238700438f1aed15ecf8b1d6699 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 29 Apr 2008 18:31:29 +0000 Subject: [PATCH] Fix decoding of: http://samples.mplayerhq.hu/A-codecs/msgsm/levis.avi http://samples.mplayerhq.hu/A-codecs/msgsm/wernfried_1.avi partially fix decoding of: http://samples.mplayerhq.hu/A-codecs/GSM/sample-gsm-8000.gsm Allow the user to encode non standard samplerates by using -strict Originally committed as revision 13020 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/libgsm.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavcodec/libgsm.c b/libavcodec/libgsm.c index 2e62a31027..01e58d7a62 100644 --- a/libavcodec/libgsm.c +++ b/libavcodec/libgsm.c @@ -41,9 +41,18 @@ static av_cold int libgsm_init(AVCodecContext *avctx) { avctx->channels); return -1; } + + if(avctx->codec->decode){ + if(!avctx->channels) + avctx->channels= 1; + + if(!avctx->sample_rate) + avctx->sample_rate= 8000; + }else{ if (avctx->sample_rate != 8000) { av_log(avctx, AV_LOG_ERROR, "Sample rate 8000Hz required for GSM, got %dHz\n", avctx->sample_rate); + if(avctx->strict_std_compliance > FF_COMPLIANCE_INOFFICIAL) return -1; } if (avctx->bit_rate != 13000 /* Official */ && @@ -51,8 +60,10 @@ static av_cold int libgsm_init(AVCodecContext *avctx) { avctx->bit_rate != 0 /* Unknown; a.o. mov does not set bitrate when decoding */ ) { av_log(avctx, AV_LOG_ERROR, "Bitrate 13000bps required for GSM, got %dbps\n", avctx->bit_rate); + if(avctx->strict_std_compliance > FF_COMPLIANCE_INOFFICIAL) return -1; } + } avctx->priv_data = gsm_create();