[FFmpeg-devel] [PATCH] wma encoder regtest fix

Benjamin Larsson banan
Thu Feb 12 17:28:15 CET 2009


Diego Biurrun wrote:
> On Thu, Feb 12, 2009 at 01:26:12PM +0100, Diego Biurrun wrote:
>   
>> On Thu, Feb 12, 2009 at 11:42:48AM +0100, Benjamin Larsson wrote:
>>     
>>> Benoit Fouet wrote:
>>>       
>>>> On 02/12/2009 10:49 AM, Benjamin Larsson wrote:
>>>>   
>>>>         
>>>>> Hi, attached is a proposed fix to the elusive wmaencoder regtests. I
>>>>> don't know if it works on all platforms so please test and report back
>>>>> the checksums. Basically it rounds the sine tables to 16-bit accuracy.
>>>>> It still uses sinf which could be a source of error when the angle is
>>>>> small.
>>>>>
>>>>> I also posted this in another thread but I guess it got buried in the
>>>>> massive mail flow.
>>>>>           
>>>> configuration: --enable-gpl --enable-libx264 --enable-libmp3lame
>>>> --enable-swscale --enable-pthreads --enable-libamr-nb --enable-libamr-wb
>>>> --enable-libopenjpeg --enable-nonfree --extra-cflags=-fno-inline
>>>> gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu11)
>>>> intel core2 quad Q6600
>>>>
>>>> with your patch applied, i get:
>>>> --- /home/fouet/tools/ffmpeg/tests/ffmpeg.regression.ref    2009-02-02
>>>> 17:06:54.000000000 +0100
>>>> +++ tests/data/vsynth.regression    2009-02-12 10:57:45.000000000 +0100
>>>> @@ -205,14 +205,14 @@
>>>>  353368 ./tests/data/a-flac.flac
>>>>  95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
>>>>  stddev:    0.00 PSNR:999.99 bytes:  1058444/  1058444
>>>> -4435d87463cd6c5407bd88cca241ca56 *./tests/data/a-wmav1.asf
>>>> +7e640cdf8ae1873c37fd4a6fe208efa7 *./tests/data/a-wmav1.asf
>>>>  106004 ./tests/data/a-wmav1.asf
>>>> -stddev:12251.38 PSNR: 14.56 bytes:  1056812/  1058444
>>>> -stddev: 2105.96 PSNR: 29.85 bytes:  1048620/  1058444
>>>> -24ae726aef89e5d17e315c64182f4c61 *./tests/data/a-wmav2.asf
>>>> +stddev:12251.32 PSNR: 14.56 bytes:  1056812/  1058444
>>>> +stddev: 2105.95 PSNR: 29.85 bytes:  1048620/  1058444
>>>> +36491e6aca4516616e6b0c600330070a *./tests/data/a-wmav2.asf
>>>>  106044 ./tests/data/a-wmav2.asf
>>>> -stddev:12255.80 PSNR: 14.55 bytes:  1056812/  1058444
>>>> -stddev: 2099.27 PSNR: 29.88 bytes:  1048620/  1058444
>>>> +stddev:12255.59 PSNR: 14.55 bytes:  1056812/  1058444
>>>> +stddev: 2099.25 PSNR: 29.88 bytes:  1048620/  1058444
>>>>  89f5b8dd97e0dddbe59af0d44fd229f3 *./tests/data/a-pcm_alaw.wav
>>>>  529256 ./tests/data/a-pcm_alaw.wav
>>>>  0568b0b9a72e31559e150e7e09d301cd *./tests/data/pcm.vsynth.out.wav
>>>>         
>>> I get the same values as Ben (myself?) when I run the same test on 
>>> Ubuntu x86 with the same compiler. Ie when using C routines 
>>> (--disable-mmx) I get the first set of crc's and when running with simd 
>>> I get the same set as Benoit. It would be good to get the results from 
>>> icc and ppc platforms also.
>>>       
>> These are the results I get on PPC with AltiVec enabled:
>>
>> --- /tmp/ffmpeg/tests/ffmpeg.regression.ref     2009-02-12 12:39:04.000000000 +0100
>> +++ tests/data/vsynth.regression        2009-02-12 13:23:01.000000000 +0100
>> @@ -205,14 +205,14 @@
>>  353368 ./tests/data/a-flac.flac
>>  95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
>>  stddev:    0.00 PSNR:999.99 bytes:  1058444/  1058444
>> -4435d87463cd6c5407bd88cca241ca56 *./tests/data/a-wmav1.asf
>> +4cd042a85c9c3f52124d6bcdba8cefdb *./tests/data/a-wmav1.asf
>>  106004 ./tests/data/a-wmav1.asf
>> -stddev:12251.38 PSNR: 14.56 bytes:  1056812/  1058444
>> -stddev: 2105.96 PSNR: 29.85 bytes:  1048620/  1058444
>> -24ae726aef89e5d17e315c64182f4c61 *./tests/data/a-wmav2.asf
>> +stddev:12251.32 PSNR: 14.56 bytes:  1056812/  1058444
>> +stddev: 2105.95 PSNR: 29.85 bytes:  1048620/  1058444
>> +36491e6aca4516616e6b0c600330070a *./tests/data/a-wmav2.asf
>>  106044 ./tests/data/a-wmav2.asf
>> -stddev:12255.80 PSNR: 14.55 bytes:  1056812/  1058444
>> -stddev: 2099.27 PSNR: 29.88 bytes:  1048620/  1058444
>> +stddev:12255.59 PSNR: 14.55 bytes:  1056812/  1058444
>> +stddev: 2099.25 PSNR: 29.88 bytes:  1048620/  1058444
>>  89f5b8dd97e0dddbe59af0d44fd229f3 *./tests/data/a-pcm_alaw.wav
>>  529256 ./tests/data/a-pcm_alaw.wav
>>  0568b0b9a72e31559e150e7e09d301cd *./tests/data/pcm.vsynth.out.wav
>> make: *** [codectest] Error 1
>>     
>
> Here are the results with AltiVec disabled:
>
> --- /tmp/ffmpeg/tests/ffmpeg.regression.ref     2009-02-12 14:07:00.000000000 +0100
> +++ tests/data/vsynth.regression        2009-02-12 14:11:34.000000000 +0100
> @@ -205,14 +205,14 @@
>  353368 ./tests/data/a-flac.flac
>  95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
>  stddev:    0.00 PSNR:999.99 bytes:  1058444/  1058444
> -4435d87463cd6c5407bd88cca241ca56 *./tests/data/a-wmav1.asf
> +4cd042a85c9c3f52124d6bcdba8cefdb *./tests/data/a-wmav1.asf
>  106004 ./tests/data/a-wmav1.asf
> -stddev:12251.38 PSNR: 14.56 bytes:  1056812/  1058444
> +stddev:12251.32 PSNR: 14.56 bytes:  1056812/  1058444
>  stddev: 2105.96 PSNR: 29.85 bytes:  1048620/  1058444
> -24ae726aef89e5d17e315c64182f4c61 *./tests/data/a-wmav2.asf
> +36491e6aca4516616e6b0c600330070a *./tests/data/a-wmav2.asf
>  106044 ./tests/data/a-wmav2.asf
> -stddev:12255.80 PSNR: 14.55 bytes:  1056812/  1058444
> -stddev: 2099.27 PSNR: 29.88 bytes:  1048620/  1058444
> +stddev:12255.59 PSNR: 14.55 bytes:  1056812/  1058444
> +stddev: 2099.25 PSNR: 29.88 bytes:  1048620/  1058444
>  89f5b8dd97e0dddbe59af0d44fd229f3 *./tests/data/a-pcm_alaw.wav
>  529256 ./tests/data/a-pcm_alaw.wav
>  0568b0b9a72e31559e150e7e09d301cd *./tests/data/pcm.vsynth.out.wav
> make: *** [codectest] Error 1
>
> Diego
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at mplayerhq.hu
> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>   
Go this on amd geode and gcc 2.95, it should have used 3dnow code for mdct.

+++ tests/data/vsynth.regression        2009-02-12 15:06:43.000000000 +0000
@@ -205,14 +205,14 @@
 353368 ./tests/data/a-flac.flac
 95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
 stddev:    0.00 PSNR:999.99 bytes:  1058444/  1058444
-4435d87463cd6c5407bd88cca241ca56 *./tests/data/a-wmav1.asf
+4cd042a85c9c3f52124d6bcdba8cefdb *./tests/data/a-wmav1.asf
 106004 ./tests/data/a-wmav1.asf
-stddev:12251.38 PSNR: 14.56 bytes:  1056812/  1058444
-stddev: 2105.96 PSNR: 29.85 bytes:  1048620/  1058444
-24ae726aef89e5d17e315c64182f4c61 *./tests/data/a-wmav2.asf
+stddev:12251.32 PSNR: 14.56 bytes:  1056812/  1058444
+stddev: 2105.95 PSNR: 29.85 bytes:  1048620/  1058444
+36491e6aca4516616e6b0c600330070a *./tests/data/a-wmav2.asf
 106044 ./tests/data/a-wmav2.asf
-stddev:12255.80 PSNR: 14.55 bytes:  1056812/  1058444
-stddev: 2099.27 PSNR: 29.88 bytes:  1048620/  1058444
+stddev:12255.59 PSNR: 14.55 bytes:  1056812/  1058444
+stddev: 2099.25 PSNR: 29.88 bytes:  1048620/  1058444
 89f5b8dd97e0dddbe59af0d44fd229f3 *./tests/data/a-pcm_alaw.wav
 529256 ./tests/data/a-pcm_alaw.wav
 0568b0b9a72e31559e150e7e09d301cd *./tests/data/pcm.vsynth.out.wav
make: *** [codectest] Error 1

So either the fft/mdct routines produce slightly different output or the 
sine table generation code.

MvH
Benjamin Larsson






More information about the ffmpeg-devel mailing list