mplayer-bvdd

vo_w100.cを適当にいじってvo_bvdd.cを作った。


$ mplayer -vo bvdd -quiet -benchmark -framedrop -vf rotate=1 RL_MQB_320x240_512_128.avi
BENCHMARKs: VC: 43.955s VO: 20.713s A: 14.380s Sys: 71.222s = 150.271s
BENCHMARK%: VC: 29.2508% VO: 13.7838% A: 9.5694% Sys: 47.3960% = 100.0000%
BENCHMARKn: disp: 3621 (24.10 fps) drop: 0 (0%) total: 3621 (24.10 fps)

これはまぁ当然ですな。
XQのほうはVRAMのハンドリングを真面目に実装しないと再生できないので、これから作業します。


$ mplayer -vo fbdev -quiet -benchmark -framedrop -vf rotate=1 RL_MQB_320x240_512_128.avi
BENCHMARKs: VC: 59.804s VO: 63.858s A: 14.555s Sys: 12.303s = 150.520s
BENCHMARK%: VC: 39.7316% VO: 42.4249% A: 9.6701% Sys: 8.1734% = 100.0000%
BENCHMARKn: disp: 3493 (23.21 fps) drop: 128 (3%) total: 3621 (24.06 fps)

fbdevと比較。fbdevだとドロップフレームも出ていっぱいいっぱいに処理してるが、bvddのほうはかなり余力がある。

あぁ、なるほど。alloc_pagesはPAGE_SIZE(8k) * 2のn乗単位でしか確保できないのか。64k単位ぐらいで複数回コールすればいいのかな。でも、こうやって確保したページをDMAディスクリプタに設定するのが大変だなぁ。とりあえず内蔵メモリとsharpsl_pxafbが確保しているメモリを使えるようにしてお茶を濁そうか。