[FFmpeg-soc] [soc]: r4373 - wmapro/wma3dec.c

faust3 subversion at mplayerhq.hu
Mon Jun 1 16:37:10 CEST 2009


Author: faust3
Date: Mon Jun  1 16:37:10 2009
New Revision: 4373

Log:
calculate scale factor for quantization in multiple steps

Modified:
   wmapro/wma3dec.c

Modified: wmapro/wma3dec.c
==============================================================================
--- wmapro/wma3dec.c	Mon Jun  1 16:28:20 2009	(r4372)
+++ wmapro/wma3dec.c	Mon Jun  1 16:37:10 2009	(r4373)
@@ -1344,16 +1344,18 @@ static int wma_decode_subframe(WMA3Decod
             for(b=0;b<s->num_bands;b++){
                 int start = s->cur_sfb_offsets[b];
                 int end = s->cur_sfb_offsets[b+1];
-                int min;
+                int sf = s->channel[c].max_scale_factor;
                 float quant;
                 if(end > s->subframe_len)
                     end = s->subframe_len;
 
                 if(s->channel[c].transmit_sf)
-                     min = s->channel[c].scale_factor_step * (s->channel[c].max_scale_factor - s->channel[c].scale_factors[b]);
+                     sf -= s->channel[c].scale_factors[b];
                 else
-                     min = s->channel[c].scale_factor_step * (s->channel[c].max_scale_factor - s->channel[c].resampled_scale_factors[b]);
-                quant = pow(10.0,(s->quant_step + s->channel[c].quant_step_modifier - min) / 20.0);
+                     sf -= s->channel[c].resampled_scale_factors[b];
+                sf *= -s->channel[c].scale_factor_step;
+                sf += s->quant_step + s->channel[c].quant_step_modifier;
+                quant = pow(10.0,sf / 20.0);
                 while(start < end){
                     s->tmp[start] = s->channel[c].coeffs[start] * quant;
                     ++start;


More information about the FFmpeg-soc mailing list