Browse Source

sample rate fix

patch by Andrew Voznytsa andrew.voznytsa gmail com

Originally committed as revision 6820 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Andrew Voznytsa Diego Biurrun 19 years ago
parent
commit
b500cc2a46
1 changed files with 44 additions and 0 deletions
  1. +44
    -0
      libavcodec/amr.c

+ 44
- 0
libavcodec/amr.c View File

@@ -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;
}



Loading…
Cancel
Save