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

David Conrad lessen42
Tue Jun 1 02:00:03 CEST 2010

On May 30, 2010, at 12:39 PM, Michael Niedermayer wrote:

> On Fri, May 28, 2010 at 06:27:41PM -0400, 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, and codecs can't set the bitexact flag themselves.
> if you still want it, you could change the used functions under
> if(codec_id == CODEC_ID_THEORA)

Like so?

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: textmate stdin UMJTb0.txt
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100531/c721b8b4/attachment.txt>

More information about the ffmpeg-devel mailing list