bond
24th August 2005, 02:05
i today wanted to find out what influences decoding of avc the most with the libavcodec avc decoder as i wanted to know what to best enable/disable in my encodes for getting realtime playback on my good old pentium3 866mhz
therefore i made a bunch of encodes with x264 r287 and benchmarked them with recent libavcodec cvs via mplayer's -vo null -benchmark option with the following "raw" results
the source is the typical matrix1 encode (smith interrogating morpheus, lobby shootout...) 7116 frames:
640x256 B0 Ref3 p8x8-i4x4 loop-5 cabac 103.999s 68.44fps
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p4x4-i4x4 cabac 107.274s 66.33fps
640x256 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 111.700s 63.71fps
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 w(b)p cabac 122.646s 58.02fps
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
640x256 B2 Ref5 p4x4-i4x4 loop-5 cabac 127.723s 55.70fps
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B2 Ref3 p8x8-i4x4 loop-5 cabac 133.842s 53.17fps
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 cabac 136.626s 52.08fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop+6 WBP cabac 150.636s 47.24fpsgrouping the comparable things together we get the following:
------------------------------------------------------------------------
------------------------------------------------------------------------
blocksizes
p8x8 vs. p4x4
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p4x4-i4x4 cabac 107.274s 66.33fps
1.00
------------------------------------------------------------------------
i4x4 vs. i8x8
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
0.01
640x256 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 111.700s 63.71fps
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
1.26
------------------------------------------------------------------------
------------------------------------------------------------------------
multiple reference frames
ref1 vs. ref5
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
5.53
------------------------------------------------------------------------
ref1 vs. ref3
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
4.59
------------------------------------------------------------------------
ref3 vs. ref5
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
0.94
------------------------------------------------------------------------
------------------------------------------------------------------------
weighted (bi)prediction
wbp vs. nowbp
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 cabac 136.626s 52.08fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
1.22
------------------------------------------------------------------------
wp+wbp vs. nowp+nowbp
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 w(b)p cabac 122.646s 58.02fps
2.63
------------------------------------------------------------------------
------------------------------------------------------------------------
b-frames
0 B-frames vs. 3 B-frames
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
8.09
------------------------------------------------------------------------
0 B-frames vs. 2 B-frames
640x256 B0 Ref3 p8x8-i4x4 loop-5 cabac 103.999s 68.44fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
7.79
------------------------------------------------------------------------
0 B-frames vs. 1 B-frames
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
4.81
------------------------------------------------------------------------
1 B-frames vs. 3 B-frames
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
3.28
------------------------------------------------------------------------
B-ref vs. no B-ref
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
0.41
------------------------------------------------------------------------
------------------------------------------------------------------------
loop
loop-5 vs. no loop
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p8x8-i4x4 loop-5 cabac 133.842s 53.17fps
14.16
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
12.05
------------------------------------------------------------------------
loop-5 vs. loop+6
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop+6 WBP cabac 150.636s 47.24fps
2.67
------------------------------------------------------------------------
------------------------------------------------------------------------
cabac
cabac vs. no cabac
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
9.54
------------------------------------------------------------------------
------------------------------------------------------------------------
cabac + noloop vs. loop-5 + nocabac
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
2.51
------------------------------------------------------------------------
------------------------------------------------------------------------
resolution
720x288 vs. 640x256
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
12.54
------------------------------------------------------------------------
------------------------------------------------------------------------summing the findings up imho i think it can be said that there are three groups of features/things which impact speed:
1) the ones that impact speed a lot:
loop, resolution, cabac and high numbers of b-frames (eg 3), of which cabac and b-frames take less decoding time
2) the ones that hardly impact speed (but in sum might do too):
blocksizes, weighted prediction, weighted biprediction and b-references (which is actually faster than b-frames without b-ref)
3) the ones in the middle:
small numbers of b-frames (eg 1) and multiple reference frames
hope someone might find this useful (eg maybe for tuning the decoder?) :)
edit: loop was set with a strenght of -5,-5
therefore i made a bunch of encodes with x264 r287 and benchmarked them with recent libavcodec cvs via mplayer's -vo null -benchmark option with the following "raw" results
the source is the typical matrix1 encode (smith interrogating morpheus, lobby shootout...) 7116 frames:
640x256 B0 Ref3 p8x8-i4x4 loop-5 cabac 103.999s 68.44fps
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p4x4-i4x4 cabac 107.274s 66.33fps
640x256 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 111.700s 63.71fps
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 w(b)p cabac 122.646s 58.02fps
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
640x256 B2 Ref5 p4x4-i4x4 loop-5 cabac 127.723s 55.70fps
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B2 Ref3 p8x8-i4x4 loop-5 cabac 133.842s 53.17fps
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 cabac 136.626s 52.08fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop+6 WBP cabac 150.636s 47.24fpsgrouping the comparable things together we get the following:
------------------------------------------------------------------------
------------------------------------------------------------------------
blocksizes
p8x8 vs. p4x4
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p4x4-i4x4 cabac 107.274s 66.33fps
1.00
------------------------------------------------------------------------
i4x4 vs. i8x8
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
0.01
640x256 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 111.700s 63.71fps
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
1.26
------------------------------------------------------------------------
------------------------------------------------------------------------
multiple reference frames
ref1 vs. ref5
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
5.53
------------------------------------------------------------------------
ref1 vs. ref3
720x288 B3-Ref Ref1 p4x4-i4x4 loop-5 WBP cabac 128.334s 55.45fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
4.59
------------------------------------------------------------------------
ref3 vs. ref5
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
720x288 B3-Ref Ref5 p4x4-i4x4 loop-5 WBP cabac 142.535s 49.92fps
0.94
------------------------------------------------------------------------
------------------------------------------------------------------------
weighted (bi)prediction
wbp vs. nowbp
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 cabac 136.626s 52.08fps
720x288 B3-Ref Ref3 p4x4-i4x4 loop-5 WBP cabac 139.901s 50.86fps
1.22
------------------------------------------------------------------------
wp+wbp vs. nowp+nowbp
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 w(b)p cabac 122.646s 58.02fps
2.63
------------------------------------------------------------------------
------------------------------------------------------------------------
b-frames
0 B-frames vs. 3 B-frames
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
8.09
------------------------------------------------------------------------
0 B-frames vs. 2 B-frames
640x256 B0 Ref3 p8x8-i4x4 loop-5 cabac 103.999s 68.44fps
640x256 B2 Ref3 p8x8-i4x4 loop-5 cabac 117.338s 60.65fps
7.79
------------------------------------------------------------------------
0 B-frames vs. 1 B-frames
720x288 B0 Ref5 p4x4-i8x8 loop-5 WBP cabac 123.567s 57.59fps
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
4.81
------------------------------------------------------------------------
1 B-frames vs. 3 B-frames
720x288 B1 Ref5 p4x4-i8x8 loop-5 WBP cabac 134.824s 52.78fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
3.28
------------------------------------------------------------------------
B-ref vs. no B-ref
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3 Ref5 p4x4-i8x8 loop-5 WBP cabac 143.767s 49.50fps
0.41
------------------------------------------------------------------------
------------------------------------------------------------------------
loop
loop-5 vs. no loop
720x288 B2 Ref3 p8x8-i4x4 cabac 105.682s 67.33fps
720x288 B2 Ref3 p8x8-i4x4 loop-5 cabac 133.842s 53.17fps
14.16
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
12.05
------------------------------------------------------------------------
loop-5 vs. loop+6
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop+6 WBP cabac 150.636s 47.24fps
2.67
------------------------------------------------------------------------
------------------------------------------------------------------------
cabac
cabac vs. no cabac
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
9.54
------------------------------------------------------------------------
------------------------------------------------------------------------
cabac + noloop vs. loop-5 + nocabac
720x288 B3-Ref Ref5 p4x4-i8x8 WBP cabac 114.845s 61.96fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP 119.702s 59.45fps
2.51
------------------------------------------------------------------------
------------------------------------------------------------------------
resolution
720x288 vs. 640x256
640x256 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 113.954s 62.45fps
720x288 B3-Ref Ref5 p4x4-i8x8 loop-5 WBP cabac 142.565s 49.91fps
12.54
------------------------------------------------------------------------
------------------------------------------------------------------------summing the findings up imho i think it can be said that there are three groups of features/things which impact speed:
1) the ones that impact speed a lot:
loop, resolution, cabac and high numbers of b-frames (eg 3), of which cabac and b-frames take less decoding time
2) the ones that hardly impact speed (but in sum might do too):
blocksizes, weighted prediction, weighted biprediction and b-references (which is actually faster than b-frames without b-ref)
3) the ones in the middle:
small numbers of b-frames (eg 1) and multiple reference frames
hope someone might find this useful (eg maybe for tuning the decoder?) :)
edit: loop was set with a strenght of -5,-5