オレオレ mplayer と落穂拾い

さっき hobbes の incoming 見てたら faac とか lame とか libmad とか x264 とか xvid とか、単体ツールというより mplayer ビルド用のお道具としか個人的には思えないブツがずんどこ投下されていて(あんまりいっぺんに増えすぎて、OS/2 版 fluidsynth のリリースがちょっと霞んじゃってるヨ)、「おー、これは最新のソースに sync した mplayer のバイナリが KO Myung-Hun 氏自らの手によりリリースされる前ぶれなのか!?」などというグレイトな期待が私個人の中で勝手に高まったりしているわけですが実際どうなんだろう…と思っていたらついでに誰かさんのビルドしたオレオレ mplayer も投下されていてピルクル噴いた。

まあ個人的にはかわまないのですが、正直ちゃんと動くかどうか試していない機能が多いので、よその環境でどの程度にちゃんと動くのかについて不安がなくもありません。そもそも mplayer とか ffmpeg とかは(特に SIMD 方面向けのメモリアラインメントなんかの関係で)gcc 4.2 未満でのビルドは想定外なので、3.3.5 までしか gcc が存在しない OS/2 環境では、最適化されたアセンブラコードを使っている時点でけっこう出たとこ勝負だったりするのです。ついでに言えば x264 や lame の nasm コードを手っ取り早く使いたい場合はひとまず aout 形式で出力させるようにすればいいのですが(私はそうしたし、たぶん KO Myung-Hun 氏もそうしている)、この場合、アラインメント指定がどの程度に有効なのかは正直 OS/2 側のツールをちゃんと調べないとわかりません。

えーと、正直な話、個人的に試していない mplayer の機能がけっこうございましてですね…

  • SNAP (snapwrap), WarpOverlay は使ったことない。いつも dive 出力。たまに sdl 出力でテスト。
    WarpOverlay は入れてないし、snapwrap のほうは(kmp のときに初回起動時しか正常起動できなかったので)ぜんぜん信用していない。snapwrap.dll を自分でビルドしたことはないのですが、念のため SNAP SDK の最終版を使ってビルドしなおしたほうがいいのかもしれないなあ…とは思ったのですが正直環境の仕込みがもう億劫なのでした。
  • x264 方面は(わざわざ入れたのに)試したことない。
    H.264 な動画なんて持ってねーよ。エロゲの mpg ムービーをエンコしなおすのもなんか間抜けだし…。
  • 実は mencoder をぜんぜん使ったことがない!
    コマンドラインから mencoder と打ち込んで、ヘルプメッセージが表示されることは確認しました! でもほんとにそれだけです! そんな力いっぱい言うことじゃないでしょ!
  • あと個人的にあんまり動画の持ちがないで、対応フォーマットのチェックとかもそれほどやってない。
    ただし、Ogg Theora に関しては、RubyKaigi2008 の動画で正常再生を確認しますた。

Win32 コーデックについては、きのう一応確認しました。mplayer.exe のあるディレクトリに codecs ディレクトリを掘って、その下にバイナリコーデックを突っ込みます(Windows x86 版でいいと思う。そのまま unzip するとサブディレクトリが掘られるので、各自で臨機応変に対応してください)。
で、適当なエロゲのデモムービー(wmv)を再生してみたところ、Win32 コーデックありコーデックなしで明らかに差があったので、どうやらきちんと使えているようです(画像の悲惨さもさることながら、バイナリコーデックありとなしでの速度差もかなりある。実効フレームレートが 1.5〜2倍程度違うんじゃないかと思える。Win32 のコーデックはやっぱ速度面でかなり攻め込んでるんだなあ、とか不本意ながら感心した)。しかし Win32 バイナリ読み込む機能を自前で実装しちまってるのもよく考えるとけっこう無茶(褒め言葉)だよなー。やっぱ動画には人の情念情熱をかきたてるものがあるのでしょうか。

(そういえばなんとなく tcpip32 版と tcpipv4 版の両方を作ってしまったのですが、よく考えたら機能的にはほぼ同じなのだから tcpipv4 版だけでよかったんじゃね? とかいまごろになって気づいてしまった。まあもしかすると、動画配信みたいにシビアな転送速度が求められる場合は tcpip32 版のほうが高パフォーマンスかもしれない。ウチのネット環境だと動画配信なんてまともに試す気にならないですが…ともかく、表でコンパイルしつつ Web ラジオがつつがなく再生できるようになった、という時点で個人的にはミッションコンプリートというかだいたい気が済んだ