fixed a segfault in the handling of magic samples.
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 4 May 2007 13:07:21 +0000 (13:07 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Fri, 4 May 2007 13:07:21 +0000 (13:07 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@12918 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/resample.c

index 7135a29..7d9dae5 100644 (file)
@@ -658,9 +658,8 @@ static void update_filter(SpeexResamplerState *st)
    {
       spx_uint32_t i;
       /* Reduce filter length, this a bit tricky */
-      /*speex_warning("decrease filter size (unimplemented)");*/
-      /* Adjust last_sample (which will likely end up negative) */
-      /*st->last_sample += (st->filt_len - old_length)/2;*/
+      /* We must copy the memory that's no longer used into a new "magic" 
+         section that will be used directly as input the next time(s)*/
       for (i=0;i<st->nb_channels;i++)
       {
          spx_uint32_t j;
@@ -775,6 +774,7 @@ static int speex_resampler_process_native(SpeexResamplerState *st, spx_uint32_t
             mem[N-1+i]=mem[N-1+i+tmp_in_len];
       }
       out += tmp_out_len;
+      *out_len -= tmp_out_len;
    }
    
    /* Call the right resampler through the function ptr */