On 03/18/2012 01:15 PM, Ronald S. Bultje wrote:
> ---
> libavcodec/adpcm.c | 11 +++++------
> 1 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c
> index 75a3e6f..72e93f5 100644
> --- a/libavcodec/adpcm.c
> +++ b/libavcodec/adpcm.c
> @@ -292,7 +292,7 @@ static int xa_decode(AVCodecContext *avctx,
> for(j=0;j<28;j++) {
> d = in[16+i+j*4];
>
> - t = (signed char)(d<<4)>>4;
> + t = sign_extend(d, 4);
> s = ( t<<shift ) + ((s_1*f0 + s_2*f1+32)>>6);
> s_2 = s_1;
> s_1 = av_clip_int16(s);
> @@ -322,7 +322,7 @@ static int xa_decode(AVCodecContext *avctx,
> for(j=0;j<28;j++) {
> d = in[16+i+j*4];
>
> - t = (signed char)d >> 4;
> + t = sign_extend(d >> 4, 4);
> s = ( t<<shift ) + ((s_1*f0 + s_2*f1+32)>>6);
> s_2 = s_1;
> s_1 = av_clip_int16(s);
> @@ -833,13 +833,12 @@ static int adpcm_decode_frame(AVCodecContext *avctx,
> void *data,
> }
> break;
> case CODEC_ID_ADPCM_XA:
> - while (buf_size >= 128) {
> - if ((ret = xa_decode(avctx, samples, src, &c->status[0],
> + while (bytestream2_get_bytes_left(&gb) >= 128) {
> + if ((ret = xa_decode(avctx, samples, buf +
> bytestream2_tell(&gb), &c->status[0],
> &c->status[1], avctx->channels)) < 0)
> return ret;
> - src += 128;
> + bytestream2_skipu(&gb, 128);
> samples += 28 * 8;
> - buf_size -= 128;
> }
> break;
> case CODEC_ID_ADPCM_IMA_EA_EACS:
LGTM
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel