[FFmpeg-devel] [PATCH] TwinVQ decoder

Loren Merritt lorenm
Wed Aug 5 11:26:00 CEST 2009


On Wed, 5 Aug 2009, Vitor Sessak wrote:
> Loren Merritt wrote:
>
>> Replace imdctw_win_block and imdct_and_window with ff_imdct_half and 
>> vector_fmul_window, as per vorbis_dec.c lines 1512-1537. Or maybe aac is a 
>> closer match since it has multiple mdct blocks per packet.
>
> Thanks, that was a nice optimization. New version attached.

What is add_vec for? In a normal mdct codec, any given output sample is 
either windowed between two imdct blocks, or copied verbatim from one. 
There is no other addition.

What are the memcpies in imdct_and_window:FT_SHORT and FT_MEDIUM for? 
Doesn't imdctw_win_block handle any adjacent samples that aren't windowed?

What's the memset in imdctw_win_block for? Nothing should ever be memset; 
if it's knowably zero, then don't add it to the output.

Short and medium modes could avoid intermediate copies to history by 
alternating between two parts of the imdct tmp buffer.

The giant switch could be made more concise, and maybe faster, as a LUT 
or two.

--Loren Merritt



More information about the ffmpeg-devel mailing list