[MPlayer-dev-eng] mpeg 1/2 vs. direct rendering

Arpi arpi at thot.banki.hu
Wed Apr 3 04:13:47 CEST 2002


Hi,

here is short bench of the well known matrix.vob with -vo mga and -vo xv:

mga+nodr+frame:
BENCHMARKs: VC:  22.560s VO:  14.228s A:   0.000s Sys:   4.731s =   41.519s

mga+nodr+slice:
BENCHMARKs: VC:  29.981s VO:   5.843s A:   0.000s Sys:   4.759s =   40.583s

xv+nodr+frame:
BENCHMARKs: VC:  22.594s VO:  19.866s A:   0.000s Sys:   2.018s =   44.478s

xv+nodr+slice:
BENCHMARKs: VC:  22.370s VO:  18.758s A:   0.000s Sys:   2.026s =   43.154s

xv+dr:
BENCHMARKs: VC:  22.557s VO:  18.815s A:   0.000s Sys:   2.121s =   43.493s

Note:
frame means whole frame memcpy after decoding
slice means copy B frames by slices (calling draw_slice() per 16 line bands)
dr means decoding of B frames directly to vo buffer (get_image())

note2: I/P frames are always whole frame copy - because their order is
nonlinear - i'll add full IPB support to -vo xv later

conclusion:
DR is not a good thing for mpeg... copy by slice is faster.
even method-2 DR is bad, as it cannot do partial updating of the buffer (B
vs I/P frames)

btw we should check copy-by-slice method for libavcodec codecs too.
it has such function (at least in the headers) but not supported by most
codecs yet.

anyway the copy-by-slice trick of libmpeg2 is really big trick: after it
copied out that slice, it _reuse_ that small 16 pixel height buffer for the
next frame -> achieving much better cache usage

we should do such thingie for divx5 with B frames, it's the same
as mpeg 1/2 in viewpoint of rendering.

and, at the end, the most interesting result:
dr vs. nodr with -vo mga  (DR B frames directly into video ram):

mga+nodr+frame:
BENCHMARKs: VC:   8.733s VO:   6.193s A:   0.000s Sys:   1.479s =   16.405s
mga+nodr+slice:
BENCHMARKs: VC:  12.250s VO:   2.092s A:   0.000s Sys:   1.380s =   15.721s
mga+dr:
BENCHMARKs: VC:  64.683s VO:   2.097s A:   0.000s Sys:   1.408s =   68.188s

yes... DR is 4 times slower! nice, eh?
it seems AGP is not a random access memory... it is only fast when acecssed
lineary.


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-dev-eng mailing list