[FFmpeg-devel] [PATCH] Arithmetic decoding in ALS

Thilo Borgmann thilo.borgmann
Tue Jan 19 00:21:34 CET 2010


Am 18.01.10 23:38, schrieb Michael Niedermayer:
> On Thu, Jan 14, 2010 at 03:20:04PM +0100, Thilo Borgmann wrote:
>> Am 13.01.10 00:00, schrieb Michael Niedermayer:
>>> On Tue, Jan 12, 2010 at 08:50:27PM +0100, Thilo Borgmann wrote:
>>>> Am 12.01.10 00:33, schrieb Michael Niedermayer:
>>>>> On Mon, Jan 11, 2010 at 09:15:05PM +0100, Thilo Borgmann wrote:
>>>>>> ...

>> +/** Initializes a given lookup table using a given delta
>> + */
>> +static void bgmc_lut_fill(unsigned int lut, unsigned int delta)
>> +{
>> +    unsigned int sx, i;
>> +
>> +    for (sx = 0; sx < 16; sx++)
>> +        for (i = 0; i < LUT_SIZE; i++) {
>> +            unsigned int target = (i + 1) << (FREQ_BITS - LUT_BITS);
>> +            unsigned int symbol = 1 << delta;
>> +
>> +            while (cf_table[sx][symbol] > target)
>> +                symbol += 1 << delta;
>> +
>> +            cf_lut[lut][sx][i] = symbol;
>> +        }
>> +
>> +    cf_lut_status[lut] = delta;
>> +}
>> +
>> +
>> +/** Retunes the index of a suitable lookup table for a given delta
>> + */
>> +static unsigned int bgmc_lut_get(unsigned int delta)
>> +{
>> +    unsigned int lut = delta < LUT_BUFF ? delta : LUT_BUFF;
>> +
>> +    if (cf_lut_status[lut] != delta)
>> +        bgmc_lut_fill(lut, delta);
> 
> this doesnt look thread safe

I agree for delta >= LUT_BUFF. To be sure, I don't see that for the
other ones, right?

So whether all cases or just the delta >= LUT_BUFF cases affected, do
return a new malloc'd buffer and free it at the end of bgmc_decode()?
Otherwise just locking comes into my mind which is for sure worse...


>> +/** Tail codes used in arithmetic coding using block Gilbert-Moore codes.
>> + */
>> +static unsigned int tail_code[16][6] = {
> 
> static const
> 
> [...]
>> +                    if (res >= 0)
>> +                        res += (max_msb    ) << cur_k;
>> +                    else
> 
> {}

Are there new rules about if-else one-liners I've missed?

-Thilo



More information about the ffmpeg-devel mailing list