From: Andrew Voznytsa Date: Sat, 28 Oct 2006 09:30:43 +0000 (+0000) Subject: sample rate fix X-Git-Tag: v0.5~11267 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b500cc2a4696758c7e6dbfbc53c92321066cb2b4;p=platform%2Fupstream%2Flibav.git sample rate fix patch by Andrew Voznytsa andrew.voznytsa gmail com Originally committed as revision 6820 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/amr.c b/libavcodec/amr.c index d84bc67..d24c8fe 100644 --- a/libavcodec/amr.c +++ b/libavcodec/amr.c @@ -109,6 +109,23 @@ static enum Mode getBitrateMode(int bitrate) return(MR122); } +static void amr_decode_fix_avctx(AVCodecContext * avctx) +{ + const int is_amr_wb = 1 + (avctx->codec_id == CODEC_ID_AMR_WB); + + if(avctx->sample_rate == 0) + { + avctx->sample_rate = 8000 * is_amr_wb; + } + + if(avctx->channels == 0) + { + avctx->channels = 1; + } + + avctx->frame_size = 160 * is_amr_wb; +} + #ifdef CONFIG_AMR_NB_FIXED /* fixed point version*/ /* frame size in serial bitstream file (frame type + serial stream + flags) */ @@ -145,6 +162,15 @@ static int amr_nb_decode_init(AVCodecContext * avctx) av_log(avctx, AV_LOG_ERROR, "Speech_Decode_Frame_init error\n"); return -1; } + + amr_decode_fix_avctx(avctx); + + if(avctx->channels > 1) + { + av_log(avctx, AV_LOG_ERROR, "amr_nb: multichannel decoding not supported\n"); + return -1; + } + return 0; } @@ -347,6 +373,15 @@ static int amr_nb_decode_init(AVCodecContext * avctx) av_log(avctx, AV_LOG_ERROR, "Decoder_Interface_init error\r\n"); return -1; } + + amr_decode_fix_avctx(avctx); + + if(avctx->channels > 1) + { + av_log(avctx, AV_LOG_ERROR, "amr_nb: multichannel decoding not supported\n"); + return -1; + } + return 0; } @@ -598,6 +633,15 @@ static int amr_wb_decode_init(AVCodecContext * avctx) AMRWBContext *s = (AMRWBContext *)avctx->priv_data; s->frameCount=0; s->state = D_IF_init(); + + amr_decode_fix_avctx(avctx); + + if(avctx->channels > 1) + { + av_log(avctx, AV_LOG_ERROR, "amr_wb: multichannel decoding not supported\n"); + return -1; + } + return 0; }