diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-04-29 18:31:29 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-04-29 18:31:29 +0000 |
commit | ef79ef3c1101b238700438f1aed15ecf8b1d6699 (patch) | |
tree | a4b298142483352b1d04fd2d4bfd0748a7923bd2 /libavcodec/libgsm.c | |
parent | e6dba5dfab1c4a24e1592613a28466770c91dfd5 (diff) | |
download | ffmpeg-ef79ef3c1101b238700438f1aed15ecf8b1d6699.tar.gz |
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
Diffstat (limited to 'libavcodec/libgsm.c')
-rw-r--r-- | libavcodec/libgsm.c | 11 |
1 files changed, 11 insertions, 0 deletions
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(); |