[FFmpeg-devel] [PATCH] Make VP3/Theora Decoder Much Faster

Måns Rullgård mans
Mon Dec 7 18:08:51 CET 2009


Michael Niedermayer <michaelni at gmx.at> writes:

> On Mon, Dec 07, 2009 at 04:28:24PM +0000, Loren Merritt wrote:
>> On Mon, 7 Dec 2009, Mike Melanson wrote:
>>
>>> I'm a little surprised to realize that this functionality doesn't already 
>>> exist (been a long time since I wrote the decoder). The original VP3 
>>> decoder had IDCTs for 1- and 3-element fragments in addition to the full 
>>> flavor IDCT. I think perhaps I tried to bring them over but someone 
>>> convinced me that those other cases don't occur often enough to make it 
>>> worthwhile. Have you found a lot of fragments with 1-3 non-zero coeffs?
>>
>> I've never examined a Theora bitstream, and I'm not about to start now.
>> However, if Theora doesn't have lots of DC-only blocks, it's either very 
>> different from every other inter-predicted DCT codec out there, or you're 
>> encoding at a ridiculously high bitrate.
>> I don't remember why I never committed such a change to mpegvideo, but it's 
>> not that it didn't help. Maybe this isn't bitexact and I never bothered to 
>> figure out why?
>
> I remember faintly that i tried a dc only idct for mpegvideo _many_ years ago
> and back then it wasnt faster IIRC . I dont know if i investigated why it
> wasnt faster but the simple_idct already checks for things being 0 and the
> extra check on block_last_index isnt free either (branch mispredictions)
> and it needs more code cache ...
> But maybe things where slower for me back then due to gcc stupidity, i dont
> know that.

In addition to a special dc-only function, how about passing the index
of the last coeff to the idct?  It would simplify things in at least
some of the simd ones.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list