480x640でエンコード
昔、mencoderのフロントエンドを作りかけていたのですが、結局完成していません。ちょっと探してみましたが、PocketDivXEncoder(http://divx.ppccool.com/)が良さげです。
Advanced optionsを開いて、機種をVGA(e800)、Orientationを操作パネルが右サイドに来るように変更すれば良いようです。
mplayer iWMMXt最適化がだいたい終了
結果はこんな感じで。それなりに苦労した割にはさほど速くならないなぁ。
ベンチマークなど。
$ ./mplayer -vo bvdd /hdd3/RL_XQ_480x640_1500_128.avi -quiet -rtprio 2 -benchmark -nosound
BENCHMARKs: VC: 124.453s VO: 0.096s A: 0.000s Sys: 3.304s = 127.853s
BENCHMARK%: VC: 97.3402% VO: 0.0753% A: 0.0000% Sys: 2.5845% = 100.0000%$ ./mplayer -vo bvdd /hdd3/RL_XQ_480x640_1500_128.avi -quiet -rtprio 2 -benchmark
BENCHMARKs: VC: 119.853s VO: 0.095s A: 12.719s Sys: 19.177s = 151.845s
BENCHMARK%: VC: 78.9313% VO: 0.0628% A: 8.3766% Sys: 12.6293% = 100.0000%
ソースは151秒。映像処理124秒 + 音声処理13秒 = 137秒。音付きで再生したときのSysの部分は同期を取るためにスリープしている時間ですね。betaplayerのベンチ風に言うと110%のデコード性能ってとこですか。ベースがmplayerであること、オーバレイ以外はすべてソフトウェアで処理してることなど考えると、かなり健闘していると思います。
************************************************
**** Your system is too SLOW to play this! ****
************************************************
のメッセージを見ずに再生出来るなんて、感動もんです。
VGA動画ですが、僕も最初に見たときは感動しましたね。MPEG1なら20fps前後で再生できそうとあって、俄然最適化に力が入りました。C3000 が予想通りの性能なら、mplayerでもDivX系VGA動画がフルフレーム再生可能なはずです。あまり予想に自信が無いので表では口にしていませんが。:) -- atty? 2004-11-09 (火) 11:35:52
この発言もなんとか成就。まぁこれはノーマルカーネルを想定していたので、ちょっと負けた気分ですが……。
年内にやるべきこと。
- フロントエンド
- オーバレイ表示の安定化
- 256KBのSRAMを使ってバス消費率を下げる(どのくらい速くなるかは未知数)
- 変化無し。面倒になるだけなのでボツ。
- ベースフレームを4bppにしてバス消費率を下げる
メモ。
- -
- with -ffast-math BENCHMARKs: VC: 124.029s VO: 0.097s A: 0.000s Sys: 3.495s = 127.622s BENCHMARK%: VC: 97.1853% VO: 0.0762% A: 0.0000% Sys: 2.7385% = 100.0000% - without -ffast-math BENCHMARKs: VC: 115.892s VO: 0.094s A: 0.000s Sys: 2.906s = 118.892s BENCHMARK%: VC: 97.4764% VO: 0.0791% A: 0.0000% Sys: 2.4445% = 100.0000%
-ffast-mathを外したほうが速くなる罠。なぜに?。gccのオプションも一通り検証するべきだな。
ていうかこんなことで10秒も速くなるなんて……orz
gcc-4.0も試してみようかなぁ。
mplayer / MPEG-1/2も試してみた
dsputilの最適化をlibmpeg2にも適用したので。モノはmencoderで480x640、ビットレート1150kbpsにエンコード。
$ ./mplayer -vo bvdd /mnt/card/RL_XQ_480x640_1150_128_mpeg1.mpg -quiet - rtprio 2 -benchmark -nosound BENCHMARKs: VC: 40.277s VO: 26.724s A: 0.000s Sys: 8.465s = 75.465s $ ./mplayer -vo bvdd /mnt/card/RL_XQ_480x640_1150_128_mpeg2.mpg -q uiet -rtprio 2 -benchmark -nosound BENCHMARKs: VC: 38.651s VO: 25.941s A: 0.000s Sys: 9.913s = 74.504s
って、なんですか、この速さは!? betaplayer式で言うところの200%、fps換算で48fps。mplayer-w100で「360x640が20fpsでねぇ〜」とか言っていたのがアホらしくなってきます。
MPEG-1/2なら標準クロックでもフルフレームで再生できますね(試しました)。ていうか、液晶が小さいからMPEG-1/2でもブロックノイズなどはそれほど気になりませんし、ストレージはたっぷりあるので、MPEG-2常用でいいんじゃないかと思ったり。