[FFmpeg-devel] [PATCHv2] avcodec/aac_tablegen: get rid of hardcoded tables entirely

Ganesh Ajjanagadde gajjanag at mit.edu
Sat Nov 28 15:45:52 CET 2015


On Sat, Nov 28, 2015 at 7:50 AM, Ganesh Ajjanagadde <gajjanag at mit.edu> wrote:
> On Sat, Nov 28, 2015 at 3:38 AM, Rostislav Pehlivanov
> <atomnuker at gmail.com> wrote:
>> On Fri, 2015-11-27 at 19:35 -0500, Ganesh Ajjanagadde wrote:
>>>
>>> @@ -40,6 +39,57 @@
>>>   * Tables in this file are shared by the AAC decoders and encoder
>>>   */
>>>
>>> +#define POW_SF2_ZERO    200    ///< ff_aac_pow2sf_tab index
>>> corresponding to pow(2, 0);
>>
>> Move POW_SF2_ZERO to aac.h, which is already included by aactab.h and
>> by everything else which uses it, so it'll be fine. Just put it like
>> this:
>>
>> aac.h:
>>> 152   #define SCALE_DIFF_ZERO  60 //....
>>> 153 +
>>> 154 + #define POW_SF2_ZERO    200 //....
>>> 155
>>> 156   #define NOISE_PRE       256 //....
>
> ok, done.
>
>>
>>
>>> +
>>> +extern float ff_aac_pow2sf_tab[428];
>>> +extern float ff_aac_pow34sf_tab[428];
>>> +
>>> +static av_cold inline void ff_aac_tableinit(void)
>>> +{
>>
>> The av_cold attribute seems pointless here. Since the function is
>> inlined and always executed on the already av_cold decoder and encoder
>> table init functions there shouldn't be a branch making it pointless.
>
> Personally, I don't want this inlined, but could not do so in a way
> that keeps the compiler and linker happy after some attempts (see the
> caveat I posted). I want to try this again, unless you know what to do
> here.

Removed the av_cold, did not find a way to cleanly get rid of the
inline. I do suggest giving it some thought; it is needless executable
bloat since the inline does not help perf. Pushed, thanks.

[...]


More information about the ffmpeg-devel mailing list