On 03/18/2012 01:15 PM, Ronald S. Bultje wrote:

> ---
>  libavcodec/adpcm.c |   17 +++++++----------
>  1 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
> index 9503c7f..997fff4 100644
> --- a/libavcodec/adpcm.c
> +++ b/libavcodec/adpcm.c
> @@ -618,26 +618,23 @@ static int adpcm_decode_frame(AVCodecContext *avctx, 
> void *data,
>          }
>          break;
>      case CODEC_ID_ADPCM_IMA_WAV:
> -        if (avctx->block_align != 0 && buf_size > avctx->block_align)
> -            buf_size = avctx->block_align;
> -
>          for(i=0; i<avctx->channels; i++){
>              cs = &(c->status[i]);
> -            cs->predictor = *samples++ = (int16_t)bytestream_get_le16(&src);
> +            cs->predictor = *samples++ = 
> sign_extend(bytestream2_get_le16u(&gb), 16);
>  
> -            cs->step_index = *src++;
> -            if (cs->step_index > 88){
> -                av_log(avctx, AV_LOG_ERROR, "ERROR: step_index = %i\n", 
> cs->step_index);
> -                cs->step_index = 88;
> +            cs->step_index = sign_extend(bytestream2_get_le16u(&gb), 16);
> +            if (cs->step_index > 88u){
> +                av_log(avctx, AV_LOG_ERROR, "ERROR: step_index[%d] = %i\n",
> +                       i, cs->step_index);
> +                return AVERROR_INVALIDDATA;
>              }
> -            if (*src++) av_log(avctx, AV_LOG_ERROR, "unused byte should be 
> null but is %d!!\n", src[-1]); /* unused */
>          }
>  
>          for (n = (nb_samples - 1) / 8; n > 0; n--) {
>              for (i = 0; i < avctx->channels; i++) {
>                  cs = &c->status[i];
>                  for (m = 0; m < 4; m++) {
> -                    uint8_t v = *src++;
> +                    int v = bytestream2_get_byteu(&gb);
>                      *samples = adpcm_ima_expand_nibble(cs, v & 0x0F, 3);
>                      samples += avctx->channels;
>                      *samples = adpcm_ima_expand_nibble(cs, v >> 4  , 3);


LGTM

-Justin

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to