[FFmpeg-devel] [PATCH] E-AC-3 spectral extension
Justin Ruggles
justin.ruggles
Thu Jul 2 03:29:02 CEST 2009
Justin Ruggles wrote:
> 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...
ping.
More information about the ffmpeg-devel
mailing list