[FFmpeg-devel] [PATCH] make tiny_psnr work with 32-bit audio

Justin Ruggles justin.ruggles
Mon Nov 9 04:51:53 CET 2009


Michael Niedermayer wrote:

> On Sun, Nov 08, 2009 at 03:29:47PM -0500, Justin Ruggles wrote:
>> Justin Ruggles wrote:
>>
>>> Hi,
>>>
>>> I was trying to do some comparisons with 32-bit audio, but tiny_psnr
>>> kept crashing with a float exception.  Then I noticed it does not really
>>> support 32-bit integer comparisons.  The attached patch seems to work.
>>>
>>> -Justin
>> Hmmm...  Most of the regression tests fail with this patch because of:
>>
>> -        psnr= ((2*log16(max<<16) + log16(i) - log16(sse))*284619LL*F +
>> (1<<31)) / (1LL<<32);
>> +        psnr= ((2*log16(max<<16) + log16(i) - log16(sse))*284619LL*F +
>> (1LL<<31)) / (1LL<<32);
>>
>> Looking at an objdump of tiny_psnr.o, it appears that the compiler is
>> treating (1 << 31) as a 32-bit integer (with a negative value), then
>> sign extending it to 64-bit.  Is that what is meant to happen?
> 
> i think your LL addition fixes a rounding bug

well, here is a patch with just the LL addition and all the resulting
regression test changes.

-Justin

-------------- next part --------------
A non-text attachment was scrubbed...
Name: tiny_psnr_rounding.patch
Type: text/x-diff
Size: 35625 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20091108/4de89383/attachment.patch>



More information about the ffmpeg-devel mailing list