[FFmpeg-devel] [PATCH] E-AC-3 spectral extension

Justin Ruggles justin.ruggles
Sat Jun 6 23:24:23 CEST 2009


Justin Ruggles wrote:
> Michael Niedermayer wrote:
>> On Tue, Jun 02, 2009 at 09:19:23PM -0400, Justin Ruggles wrote:
>> [...]
>>> -    /* TODO: spectral extension coordinates */
>>> +    /* spectral extension coordinates */
>>> +    if (s->spx_in_use) {
>>> +        for (ch = 1; ch <= fbw_channels; ch++) {
>>> +            if (s->channel_in_spx[ch]) {
>>> +                if (s->first_spx_coords[ch] || get_bits1(gbc)) {
>>> +                    int bin;
>>> +                    float spx_blend;
>>> +                    int master_spx_coord;
>>> +                    s->first_spx_coords[ch] = 0;
>>> +                    spx_blend = get_bits(gbc, 5) * 0.03125f;
>>> +                    master_spx_coord = get_bits(gbc, 2) * 3;
>>> +                    bin = s->spx_start_freq;
>> an empty line in there somewhere would improve readability IMHO
> 
> fixed.
> 
>> [...]
>>> +                        /* decode spx coordinates */
>>> +                        spx_coord_exp  = get_bits(gbc, 4);
>>> +                        spx_coord_mant = get_bits(gbc, 2);
>>> +                        if (spx_coord_exp == 15)
>>> +                            spx_coord = spx_coord_mant * 8.0f;
>>> +                        else
>>> +                            spx_coord = (spx_coord_mant + 4) * 4.0f;
>>> +                        spx_coord /= 1 << (spx_coord_exp + master_spx_coord);
>> something based on the following would avoid the /
>> spx_coord *= (1<<123) >> (spx_coord_exp + master_spx_coord)
>>
>> also *4 can be factored out of the if/else and into the factor above
> 
> fixed (I think).
> 
>> [...]
>>> @@ -66,6 +62,96 @@ typedef enum {
>>>  
>>>  #define EAC3_SR_CODE_REDUCED  3
>>>  
>>> +void ff_eac3_apply_spectral_extension(AC3DecodeContext *s)
>>> +{
>>> +    int bin, bnd, ch, i;
>>> +    uint8_t wrapflag[SPX_MAX_BANDS]={0,}, num_copy_sections, copy_sizes[SPX_MAX_BANDS];
>>> +    float rms_energy[SPX_MAX_BANDS];
>>> +
>>> +    /* Set copy index mapping table. Set wrap flags to apply a notch filter at
>>> +       wrap points later on. */
>>> +    wrapflag[0] = 1;
>> double initialization
> 
> fixed.
> 
>>> +    bin = s->spx_copy_start_freq;
>>> +    num_copy_sections = 0;
>>> +    for (bnd = 0; bnd < s->num_spx_bands; bnd++) {
>>> +        int copysize;
>>> +        int bandsize = s->spx_band_sizes[bnd];
>>> +        if ((bin + bandsize) > s->spx_start_freq) {
>> redundant ()
> 
> fixed.
> 
> New patch attached.
> 
> Thanks,
> Justin

oops.  empty patch...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: eac3_spx_5.diff
Type: text/x-patch
Size: 19445 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090606/4439fd92/attachment-0001.bin>



More information about the ffmpeg-devel mailing list