[FFmpeg-devel] [PATCH] Make MMX2 put_no_rnd_pixels _x2 and _y2 bitexact

Stefan Gehrer stefan.gehrer
Sat May 29 00:34:53 CEST 2010


On 05/29/2010 12:27 AM, David Conrad wrote:
> On May 28, 2010, at 6:25 PM, Stefan Gehrer wrote:
>
>> On 05/28/2010 11:49 PM, David Conrad wrote:
>>> Hi,
>>>
>>> The mmx2/3dnow put_no_rnd functions don't always round correctly, since they compensate for the +1 in pavgb by subtracting 1 from one of the inputs. This causes our theora decoder to not be bitexact to libtheora, though I haven't found any real source where the error accumulates enough to be visible.
>>>
>>> This fixes it by using the property that (a+b)>>1 is equivalent to ~(~a+~b+1)>>1. This makes these functions 5 cycles slower on my penryn, but on my atom the additional instructions appear to be free probably due to load stalls.
>>
>> Wouldn't it be worth creating new bitexact functions, but still
>> override them with the old/faster ones if BITEXACT is not set?
>
> The problem is that theora must always be bitexact,

Why is that? If I don't see the difference I would think
I can decode it with deviation.

> and codecs can't set the bitexact flag themselves.



More information about the ffmpeg-devel mailing list