diff options
author | Mike Melanson <mike@multimedia.cx> | 2003-12-16 01:17:58 +0000 |
---|---|---|
committer | Mike Melanson <mike@multimedia.cx> | 2003-12-16 01:17:58 +0000 |
commit | ac3d5cac7b6cbabf63bdbc588d9723d0f02b5c8d (patch) | |
tree | 7787e9a6fdd42bfbcd8e566d21ec601575f80d58 /libavcodec/adpcm.c | |
parent | 037b5189d84229d97ff15061d90d1a15d2c8c06c (diff) | |
download | ffmpeg-streaming-ac3d5cac7b6cbabf63bdbc588d9723d0f02b5c8d.zip ffmpeg-streaming-ac3d5cac7b6cbabf63bdbc588d9723d0f02b5c8d.tar.gz |
initial predictors are not sent to the output in QT IMA; fix stereo QT
IMA decoding
Originally committed as revision 2618 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/adpcm.c')
-rw-r--r-- | libavcodec/adpcm.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index 6a0643f..3b5f5c1 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -504,9 +504,6 @@ static int adpcm_decode_frame(AVCodecContext *avctx, if (st && channel) samples++; - *samples++ = cs->predictor; - samples += st; - for(m=32; n>0 && m>0; n--, m--) { /* in QuickTime, IMA is encoded by chuncks of 34 bytes (=64 samples) */ *samples = adpcm_ima_expand_nibble(cs, src[0] & 0x0F); samples += avctx->channels; @@ -517,7 +514,7 @@ static int adpcm_decode_frame(AVCodecContext *avctx, if(st) { /* handle stereo interlacing */ c->channel = (channel + 1) % 2; /* we get one packet for left, then one for right data */ - if(channel == 0) { /* wait for the other packet before outputing anything */ + if(channel == 1) { /* wait for the other packet before outputing anything */ *data_size = 0; return src - buf; } @@ -583,12 +580,10 @@ static int adpcm_decode_frame(AVCodecContext *avctx, if(st){ c->status[1].step_index= (int16_t)(src[0] + (src[1]<<8)); src+=2; } -// if (cs->step_index < 0) cs->step_index = 0; -// if (cs->step_index > 88) cs->step_index = 88; + if (cs->step_index < 0) cs->step_index = 0; + if (cs->step_index > 88) cs->step_index = 88; m= (buf_size - (src - buf))>>st; -//printf("%d %d %d %d\n", st, m, c->status[0].predictor, c->status[0].step_index); - //FIXME / XXX decode chanels individual & interleave samples for(i=0; i<m; i++) { *samples++ = adpcm_4xa_expand_nibble(&c->status[0], src[i] & 0x0F); if (st) |