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();