mplayer-w100
久しぶりの更新です。公開当初はまったく反応無かったのに、何故か最近は話題にのぼることが多いですね。また、メールで貴重な情報を頂いたので、それならばと更新してみました。
変更点ですが、まず QVGA モードで実行しても画面に縞状のノイズが入らないようにしました。オーバレイ表示領域を左に 2 ドットずらすことによりノイズが解消されたのですが、副作用としてムービーの左 2x320 ドットが見えなるのと、画面上 320x2 ドットにノイズが出ます。とはいえ画面全体のノイズよりはマシでしょう。
以上の方法は宮本さんから教えて頂きました。どうもありがとうございます。
また、ダブルバッファリングにも対応しました。僅かな速度向上とティアリング解消、OSD*1のちらつき解消です。
mplayer を終了したあと画面がおかしくなった場合は、適当なソフトで VGA と QVGA を切り替えれば直ると思います。それでも直らないという方がおられるようですが、僕は一度も経験したことがないのでなんとも言えません。
# これ書きながら作業してたら力尽きたので、明日 ipk にしてアップします。
*1:オンスクリーンディスプレイ
mplayer の最適な設定
ベンチマークに用いたムービーはこちら(http://www2.odn.ne.jp/~ccs50140/beyond_cloud/index.html)の cloud_l.mpg を TMpegEnc で VideoCD 規格にエンコードし直したもので、CF に置きました*1。ベンチマークは -benchmark を用いて行ないます。
まず、オプションについて。-quiet はターミナルへの無駄な出力を抑えて負荷を軽くするために、-framedrop は映像と音の同期を取るためにどんな場合でも必須だと思います。
mplayer -quiet -framedrop -vo fbdev cloud_l.mpg BENCHMARKn: disp: 3919 (20.14 fps) drop: 1930 (32%) total: 5849 (30.06 fps)
最初は W100 を使わずに再生してみました。
mplayer -quiet -framedrop -vo fbdev:vidix cloud_l.mpg BENCHMARKn: disp: 5184 (26.66 fps) drop: 665 (11%) total: 5849 (30.08 fps)
次に W100 を使っての再生です。さきほどの結果に比べて 1.23 倍速くなっています。これからはこの結果を基準に比較していきます。
mplayer -quiet -framedrop -vo fbdev:vidix -dr cloud_l.mpg BENCHMARKn: disp: 5246 (26.99 fps) drop: 603 (10%) total: 5849 (30.09 fps)
-dr は中間バッファを用いないで直接フレームバッファに画像を描画するオプションです。1.2% の速度向上が見られます。僅かな差ですが、使って損するものでもないです。
mplayer -quiet -framedrop -vo fbdev:vidix -double cloud_l.mpg BENCHMARKn: disp: 5357 (27.55 fps) drop: 492 (8%) total: 5849 (30.08 fps)
-double を指定するとダブルバッファリングを行なうようになります*2。2.1% 高速になっています。
mplayer -quiet -framedrop -vo fbdev:vidix -vop rotate=1 cloud_l.mpg BENCHMARKn: disp: 4313 (22.18 fps) drop: 1536 (26%) total: 5849 (30.08 fps)
前回までの設定だけでは画像が左に 90 度回転した状態になっており、実用にはなりません。よって普通はこのオプションを使うでしょう。ただし、16.8% も遅くなってしまいます。
mplayer -quiet -framedrop -vo fbdev:vidix /mnt/smb/cloud_l.mpg BENCHMARKn: disp: 2239 (11.51 fps) drop: 3613 (61%) total: 5852 (30.08 fps)
参考までに USB 接続した母艦から Samba 経由で再生した場合です。帯域が細いのか、CPU を持っていかれるのか分かりませんが、お話にならない遅さです。
以上の結果から、普通に使うのであれば "-frameskip -quiet -vo fbdev:vidix -dr -double -vop rotate=1" が最適だと思います。
個人的にはダウンロード、キャプチャーしたムービーで、そのまま SL-C750 で再生可能なものは殆ど無い*3ですから、いつも必要に応じて再エンコードしています。で、どっちみち再エンコードをするのであれば、ついでにムービーそのものを左 90 度回転させて 240x320 にしてしまうのが良いと思います*4。そうすれば -vop rotate=1 が必要無くなり、特に負荷の高い mpeg4 系の再生が少し軽くなるでしょう。