[FFmpeg-devel] Fix MMX dct_quantize for non zigzag_direct scans

Ramiro Polla ramiro
Mon May 19 18:44:40 CEST 2008


Michael Niedermayer wrote:
> On Fri, May 16, 2008 at 12:55:03AM +0100, Ramiro Polla wrote:
>> Hi,
>>
>> Michael Niedermayer wrote:
>>> On Wed, May 14, 2008 at 11:25:43PM +0100, Ramiro Polla wrote:
> [...]
>>>> Benchmarking with START/STOP_TIMER isn't very good since the runs can vary 
>>>> on the time they take depending on last_non_zero. Also the patch changes 
>>>> not only the MMX code but removes the hack in mpegvideo_enc.c.
>>> *_TIMER around the macroblock encode function seems an option
>>> also the automatic threshold calculation could be replaced by a constant
>>> to avoid excessive skips.
>> I added *_TIMERs in first and last line of encode_mb_internal. These are 
>> the results:
>>
>> around 1048576 runs
>> ref          new
>> time   skips time   skips
>> 42612  3033  44422  2889
>> 42551  2981  43440  2712
>> 42553  2846  43711  2991
>> 41825  2895  44401  3036
>> 41812  2925  43691  2878
>> 41792  2858  43137  2873
>> 42458  2973  43482  2945
>> 42388  3078  43553  2766
>> 42366  2888  43450  2987
>> 42721  3003  43163  2996
>> 42210  2964  43956  2954
>> 42299        43674        avg
>> 341.8448     433.0284     stdev
> 
> the skip numbers are too high
> 
> try:
> -if(tcount<2 || tend - tstart < FFMAX(32*tsum/tcount, 200000)){\
> +if(tcount<2 || tend - tstart < FFMAX(32*tsum/tcount, 5000000)){\
> or higher

ref     new
43427   45236
42913   44817
43902   44740
43719   44135
42767   44276
44417   44702
45242   45931
44633   44899
42801   45561
44188   44503
43265   44565
43127   45532
43238   44569
43588   44631
43242   44868
44073   45426
43659   44899  average
   706.15  502.52 stdev

It's weird that testing the internal function with *_TIMER shows ref as 
better, but benchmarking the entire process shows new as better (but 
still inside stdev).

[...]

Ramiro Polla




More information about the ffmpeg-devel mailing list