[FFmpeg-devel] [PATCH] two small h264 optimizations

Alexander Strange astrange
Tue Aug 14 05:36:40 CEST 2007


#1 ffmpeg-cabacres-switches -
This changes the if (cat == ) .... statements to switch tables.
Adding a default case to case 5: removed most of the speed gain, so I  
took out the assert,
but it doesn't affect anything. I can put it back somewhere else if  
needed.

#2 ffmpeg-fillrectangle-microopt.diff -
Statements like a = b = c = d = e; store from right-to-left, so if  
you write them in the right order it comes out backwards.
This removes them from fill_rectangle().

The last two parts of that could be SIMDed, although obviously  
couldn't be selected at runtime.

Times:

before-
BENCHMARKs: VC:  25.151s VO:   1.773s A:   0.000s Sys:   0.184s =    
27.108s
BENCHMARKs: VC:  25.136s VO:   1.782s A:   0.000s Sys:   0.184s =    
27.102s
BENCHMARKs: VC:  25.152s VO:   1.775s A:   0.000s Sys:   0.184s =    
27.111s
BENCHMARKs: VC:  25.147s VO:   1.780s A:   0.000s Sys:   0.185s =    
27.112s
BENCHMARKs: VC:  25.161s VO:   1.781s A:   0.000s Sys:   0.184s =    
27.127s
avg - 25.15

#1 decode_cabac_residual switches-
BENCHMARKs: VC:  25.096s VO:   1.774s A:   0.000s Sys:   0.182s =    
27.052s
BENCHMARKs: VC:  25.102s VO:   1.784s A:   0.000s Sys:   0.183s =    
27.069s
BENCHMARKs: VC:  25.106s VO:   1.782s A:   0.000s Sys:   0.184s =    
27.073s
BENCHMARKs: VC:  25.102s VO:   1.780s A:   0.000s Sys:   0.185s =    
27.067s
BENCHMARKs: VC:  25.107s VO:   1.782s A:   0.000s Sys:   0.184s =    
27.073s
avg - 25.103

#1 + #2 fill_rectangle statement changes-
BENCHMARKs: VC:  25.010s VO:   1.778s A:   0.000s Sys:   0.185s =    
26.973s
BENCHMARKs: VC:  25.026s VO:   1.775s A:   0.000s Sys:   0.183s =    
26.984s
BENCHMARKs: VC:  25.014s VO:   1.784s A:   0.000s Sys:   0.184s =    
26.982s
BENCHMARKs: VC:  25.013s VO:   1.778s A:   0.000s Sys:   0.184s =    
26.975s
BENCHMARKs: VC:  25.023s VO:   1.779s A:   0.000s Sys:   0.184s =    
26.986s
avg - 25.017

??



More information about the ffmpeg-devel mailing list