# HG changeset patch # User michael # Date 1209493889 0 # Node ID 2c540dc9ca2c8a2d053abe402bcbda0ad0e75bbf # Parent e88e719b5e77569b4c260870abb3ddbdca3aec21 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 diff -r e88e719b5e77 -r 2c540dc9ca2c libgsm.c --- a/libgsm.c Tue Apr 29 14:08:01 2008 +0000 +++ b/libgsm.c Tue Apr 29 18:31:29 2008 +0000 @@ -41,9 +41,18 @@ 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 @@ 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();