changeset 1695:2d11403fde4e libavcodec

initial predictors are not sent to the output in QT IMA; fix stereo QT IMA decoding
author melanson
date Tue, 16 Dec 2003 01:17:58 +0000
parents 13169235c306
children f5af91b8be17
files adpcm.c
diffstat 1 files changed, 3 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/adpcm.c	Mon Dec 15 14:40:37 2003 +0000
+++ b/adpcm.c	Tue Dec 16 01:17:58 2003 +0000
@@ -504,9 +504,6 @@
         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 @@
 
         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 @@
         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)