[FFmpeg-devel] [PATCH] hook up the atrac1 decoder
Vitor Sessak
vitor1001
Tue Sep 22 18:02:31 CEST 2009
Benjamin Larsson wrote:
> Vitor Sessak wrote:
>>>> I think a good deal of code of both branches of the if() can be
>>>> factorized out.
>>>
>>> What code? IMO not much of the code in the 2 cases can be factored out
>>> and still be logical and clear.
>>
>> The calls to at1_imdct() and vector_fmul_window() are very similar.
>> They are exactly the same if block_size == 32 and nbits == 5 when
>> num_blocks == 1. Note also that the for() loop of the else{} branch
>> will be run only once when num_blocks == 1, as it should. Of course,
>> there will always be a if() for the memcpy().
>
> Ok, I see how it could be factored. But the logic of passing parameters
> would be highly obfuscated.
Do you consider the following highly obfuscated or am I missing something?
> /* 4 for short mode(low/middle bands) and 8 for short mode(high band)*/
> num_blocks = 1 << log2_block_count;
>
> + if (num_blocks == 1) {
> + block_size = 32;
> + nbits = 5;
> + } else {
> /* mdct block size in samples: 128 (long mode, low & mid bands), */
> /* 256 (long mode, high band) and 32 (short mode, all bands) */
> block_size = band_samples >> log2_block_count;
> @@ -130,6 +134,7 @@
>
> if (nbits != 5 && nbits != 7 && nbits != 8)
> return -1;
> + }
>
-Vitor
More information about the ffmpeg-devel
mailing list