[FFmpeg-soc] [soc]: r4360 - in wmapro: wma3.h wma3dec.c

faust3 subversion at mplayerhq.hu
Sun May 31 16:27:54 CEST 2009


Author: faust3
Date: Sun May 31 16:27:54 2009
New Revision: 4360

Log:
reduced memory consumption by using smaller types for struct members

Modified:
   wmapro/wma3.h
   wmapro/wma3dec.c

Modified: wmapro/wma3.h
==============================================================================
--- wmapro/wma3.h	Sun May 31 15:57:37 2009	(r4359)
+++ wmapro/wma3.h	Sun May 31 16:27:54 2009	(r4360)
@@ -49,7 +49,7 @@
  * @brief decoder context for a single channel
  */
 typedef struct {
-    int      prev_block_len;                          ///< length of the previous block
+    int16_t  prev_block_len;                          ///< length of the previous block
     uint8_t  transmit_coefs;                          ///< transmit coefficients
     uint8_t  num_subframes;                           ///< number of subframes
     uint16_t subframe_len[MAX_SUBFRAMES];             ///< subframe length in samples
@@ -58,14 +58,14 @@ typedef struct {
     uint16_t channel_len;                             ///< channel length in samples
     uint16_t decoded_samples;                         ///< already processed samples
     uint8_t  grouped;                                 ///< channel is part of a group
-    int      quant_step_modifier;                     ///< deviation from the main quantization step
-    int      transmit_sf;                             ///< transmit scale factors
-    int      reuse_sf;                                ///< share scale factors between subframes
-    int      scale_factor_step;                       ///< scaling step
+    int8_t   quant_step_modifier;                     ///< deviation from the main quantization step
+    int8_t   transmit_sf;                             ///< transmit scale factors
+    int8_t   reuse_sf;                                ///< share scale factors between subframes
+    int8_t   scale_factor_step;                       ///< scaling step
     int      max_scale_factor;                        ///< maximum scale factor
     int      scale_factors[MAX_BANDS];                ///< scale factor values
     int      resampled_scale_factors[MAX_BANDS];      ///< scale factors from a previous block
-    int      scale_factor_block_len;                  ///< scale factor reference block length
+    int16_t  scale_factor_block_len;                  ///< scale factor reference block length
     float*   coeffs;                                  ///< pointer to the decode buffer
     DECLARE_ALIGNED_16(float, out[2*BLOCK_MAX_SIZE]); ///< output buffer
 } WMA3ChannelCtx;
@@ -98,7 +98,7 @@ typedef struct WMA3DecodeContext {
 
     /** frame size dependent frame information (set during initialization) */
     uint8_t          lossless;                      ///< lossless mode
-    unsigned int     decode_flags;                  ///< used compression features
+    uint32_t         decode_flags;                  ///< used compression features
     uint8_t          len_prefix;                    ///< frame is prefixed with its length
     uint8_t          dynamic_range_compression;     ///< frame contains DRC data
     uint8_t          sample_bit_depth;              ///< bits per sample
@@ -110,10 +110,10 @@ typedef struct WMA3DecodeContext {
     uint8_t          max_num_subframes;             ///< maximum number of subframes
     int8_t           num_possible_block_sizes;      ///< nb of supported block sizes
     uint16_t         min_samples_per_subframe;      ///< minimum samples per subframe
-    int*             num_sfb;                       ///< scale factor bands per block size
-    int*             sfb_offsets;                   ///< scale factor band offsets
-    int*             sf_offsets;                    ///< scale factor resample matrix
-    int*             subwoofer_cutoffs;             ///< subwoofer cutoff values
+    int8_t*          num_sfb;                       ///< scale factor bands per block size
+    int16_t*         sfb_offsets;                   ///< scale factor band offsets
+    int16_t*         sf_offsets;                    ///< scale factor resample matrix
+    int16_t*         subwoofer_cutoffs;             ///< subwoofer cutoff values
 
     /** packet decode state */
     uint8_t          packet_sequence_number;        ///< current packet number
@@ -123,24 +123,24 @@ typedef struct WMA3DecodeContext {
     uint8_t          packet_loss;                   ///< set in case of bitstream error
 
     /** frame decode state */
-    unsigned int     frame_num;                     ///< current frame number
+    uint32_t         frame_num;                     ///< current frame number
     GetBitContext    gb;                            ///< bitstream reader context
     int              buf_bit_size;                  ///< buffer size in bits
     int16_t*         samples;                       ///< current samplebuffer pointer
     int16_t*         samples_end;                   ///< maximum samplebuffer pointer
     uint8_t          drc_gain;                      ///< gain for the DRC tool
-    int              skip_frame;                    ///< skip output step
-    int              parsed_all_subframes;          ///< all subframes decoded?
+    int8_t           skip_frame;                    ///< skip output step
+    int8_t           parsed_all_subframes;          ///< all subframes decoded?
 
     /** subframe/block decode state */
-    int              subframe_len;                  ///< current subframe length
-    int              channels_for_cur_subframe;     ///< number of channels that contain the subframe
-    int              channel_indexes_for_cur_subframe[MAX_CHANNELS];
-    int              cur_subwoofer_cutoff;          ///< subwoofer cutoff value
-    int              num_bands;                     ///< number of scale factor bands
-    int*             cur_sfb_offsets;               ///< sfb offsets for the current block
+    int16_t          subframe_len;                  ///< current subframe length
+    int8_t           channels_for_cur_subframe;     ///< number of channels that contain the subframe
+    int8_t           channel_indexes_for_cur_subframe[MAX_CHANNELS];
+    int16_t          cur_subwoofer_cutoff;          ///< subwoofer cutoff value
+    int8_t           num_bands;                     ///< number of scale factor bands
+    int16_t*         cur_sfb_offsets;               ///< sfb offsets for the current block
     int              quant_step;                    ///< quantization step
-    int              esc_len;                       ///< length of escaped coefficients
+    int8_t           esc_len;                       ///< length of escaped coefficients
 
     uint8_t          num_chgroups;                  ///< number of channel groups
     WMA3ChannelGroup chgroup[MAX_CHANNELS];         ///< channel group information

Modified: wmapro/wma3dec.c
==============================================================================
--- wmapro/wma3dec.c	Sun May 31 15:57:37 2009	(r4359)
+++ wmapro/wma3dec.c	Sun May 31 16:27:54 2009	(r4360)
@@ -180,7 +180,7 @@ static av_cold int wma_decode_init(AVCod
 {
     WMA3DecodeContext *s = avctx->priv_data;
     uint8_t *edata_ptr = avctx->extradata;
-    int* sfb_offsets;
+    int16_t* sfb_offsets;
     unsigned int channel_mask;
     int i;
 
@@ -292,12 +292,13 @@ static av_cold int wma_decode_init(AVCod
                  ff_wma3_vec1_huffbits, 1, 1,
                  ff_wma3_vec1_huffcodes, 4, 4, 562);
 
-    s->num_sfb = av_mallocz(sizeof(int)*s->num_possible_block_sizes);
+    s->num_sfb = av_mallocz(sizeof(int8_t)*s->num_possible_block_sizes);
     s->sfb_offsets = av_mallocz(MAX_BANDS *
-                                sizeof(int) * s->num_possible_block_sizes);
-    s->subwoofer_cutoffs = av_mallocz(sizeof(int)*s->num_possible_block_sizes);
+                                sizeof(int16_t) * s->num_possible_block_sizes);
+    s->subwoofer_cutoffs = av_mallocz(sizeof(int16_t) *
+                                      s->num_possible_block_sizes);
     s->sf_offsets = av_mallocz(MAX_BANDS * s->num_possible_block_sizes *
-                               s->num_possible_block_sizes * sizeof(int));
+                               s->num_possible_block_sizes * sizeof(int16_t));
 
     if(!s->num_sfb ||
        !s->sfb_offsets || !s->subwoofer_cutoffs || !s->sf_offsets){
@@ -926,8 +927,9 @@ static int wma_decode_scale_factors(WMA3
         /** resample scale factors for the new block size */
         if(s->channel[c].reuse_sf){
             const int idx1 = av_log2(s->samples_per_frame/s->channel[c].scale_factor_block_len);
-            const int* sf_offsets = &s->sf_offsets[s->num_possible_block_sizes * MAX_BANDS  * idx0
-                                                 + MAX_BANDS * idx1];
+            const int16_t* sf_offsets =
+                               &s->sf_offsets[s->num_possible_block_sizes *
+                               MAX_BANDS  * idx0 + MAX_BANDS * idx1];
             int b;
             for(b=0;b<s->num_bands;b++)
                 s->channel[c].resampled_scale_factors[b] = s->channel[c].scale_factors[*sf_offsets++];
@@ -1020,7 +1022,7 @@ static void wma_inverse_channel_transfor
 
         if(s->chgroup[i].transform == 1){
             /** M/S stereo decoding */
-            int* sfb_offsets = s->cur_sfb_offsets;
+            int16_t* sfb_offsets = s->cur_sfb_offsets;
             float* ch0 = *sfb_offsets + s->channel[0].coeffs;
             float* ch1 = *sfb_offsets++ + s->channel[1].coeffs;
             const char* tb = s->chgroup[i].transform_band;


More information about the FFmpeg-soc mailing list