mplayerのバグ潰し

外国人の方から要望が届いたのですが、日本語で書かれていて感動したのでちょっとヤル気になり調べてみました。Realのストリーミング再生が出来ないので--enable-realしてくれって内容だったんですが、特に--disable-realしてるわけでもなし、ネイティブコーデックさえあれば再生出来るはずなんだけどな…と調査開始。

とりあえずmplayer-bvdd-1.1.5で問題のストリームの再生すると、未対応で弾かれるとかではなくdemuxerで落ちる。コーデックはCookなので問題無し。Windows版のMPlayerでは…問題無し。ということは、アレか。ARM特有のアラインメント問題。

ザウルスで使えるgdbを作っていなかったという関係の無いところで四苦八苦しつつもgdbserverを作ってバックトレースを採取。案の定、変数の値が異常になっているところがあったので、その変数に代入している部分にブレークポイントを設定して動きを眺めてみる。…あ、ポインタに奇数値を加算したあと、そのままldrしてる。

というわけでid:atty:20060403と同じように修正して完了しました。あー、そういえばasfの修正してからバイナリリリースしていないですね。すみません。近いうちになんとかしたいです。

MPlayer最新版でのVC-1(WMV9)デコーダー

id:atty:20060719でsvkを導入してtrunkへの追随が容易になったので、id:atty:20060704で言及したVC-1デコーダーを試してみました。

YouTube
http://youtubech.com/test/read.cgi%3Fdl%3DO9KV23MOzUo%26ext%3D.flv

これは凄い

映像のデコードは見た感じ完璧です。このプロジェクトが始まるまでは、マトモにデコードすることすら出来なかったはずです。肝心の速度ですが、240x320 30fpsのソースを音無しCCCR=2000216で再生して、ちょっと遅いかな、ってぐらいです。最適化は8月中に行なうそうなので、速度はこれからに期待でしょうか。

ただ実用を考えると、一般的にWMV9のムービーといえば(wmv9+wma2).asfなわけで、浮動小数点演算バリバリのwma2デコーダーと一緒に使うのは厳しそうです。(wmv9+mp3).mkvとかなら実用的かな。

これで、コンシューマで良く使われるコーデックは全てffmpegで賄えるようになりましたね。ザウルス的にはH.264が純粋なCPUパワー不足で事実上再生不可能ですが、これは仕方ないです。*1

*1:Intel IPPのデコーダーを使えば実用的な速度が出るのかもしれないけど、そこまで力を注ぐほどの興味は無いし…