[FFmpeg-devel] [PATCH] QCELP decoder

Kenan Gillet kenan.gillet
Mon Nov 10 04:59:26 CET 2008


On Nov 8, 2008, at 3:57 PM, Michael Niedermayer wrote:
[...]
>
>> +
>> +    uint8_t           erasure_count;
>> +    uint8_t           octave_count;           /*!< count the  
>> consecutive RATE_OCTAVE frames */
>> +    float             prev_lspf[10];
>> +    float             predictor_lspf[10];     /*!< LSP predictor,
>> +                                                  only use for  
>> RATE_OCTAVE and I_F_Q */
>> +    float             pitch_synthesis_filter_mem[303];
>> +    float             pitch_pre_filter_mem[303];
>> +    float             formant_mem[170];
>> +    float             fir_filter_mem[180];
>> +    float             last_codebook_gain;
>> +    int               prev_g1[2];
>> +    int               prev_framerate;
>> +    float             prev_pitch_gain[4];
>> +    uint8_t           prev_pitch_lag[4];
>> +    uint16_t          first16bits;
>> +    float             bandwith_expansion_coeff[10];
>> +#define QCELP_BANDWITH_EXPANSION_COEFF 0.9883
>> +
>
>> +    float             g12ga[61];              /*!< unpacked  
>> qcelp_g12ga table */
>
> hmm, constant tables must not be in the context as that wastes memory.
> depending on how often it is accessed, qcelp_g12ga should either be
> changed back to float or the int16->float be done as it is accessed.
> (int16->float is prefered due to smaller memory if there is no speed
> differeence otherwise the faster one should be used)


 From the benchmark inside decode_gain_and_index where g12ga is used ,
the float is 17% faster.

So I'll change the qcelp_g12ga table back to float unless you object.

details of benchmarks are attached

Kenan





More information about the ffmpeg-devel mailing list