SSブログ

XvidをVC2005でビルドする [C++]

前置き
MonsterXでHuffyuvを使ってキャプチャーをすると1分で2Gとか平気で使うので我が家のPCにやさしくない。そこで、DivX6.7.0でエンコードして見るとビットレートが~3000kbpsならコマ落ち無しでうまく動いてくれた。CODECの表示に 2 processorsとなってるので並列処理も入っているのだろう。画質も文句無い。で、ふとXvidならどうかと思ってみたところ、ドロップフレームのほうが多い始末。そこで、なんでそんなに重いのか、ちょっとソースを見てみようとソースを落としてみたが、コンパイルしてみたところエラーが出てコンパイルできなかった

必要なもの
・Xvidソースコード(http://www.xvid.org/
 1.1.3はコンパイルできないので、修正のために最新版も落とす
・nasm(http://nasm.sourceforge.net/)
 落としたVerは2.0.0

コンパイル手順
・xvidcore-1.1.3\build\win32\xvidcore.dswを開き、すべてコンバートする
・すぐに閉じる
・libxvidcore.vcprojをテキストエディタで開き以下の置換をする
 -I"$(InputDir)"\ を -I$(InputDir) に置換
 nasm を nasm -Xvc -w-orphan-labels に置換
・エディタを保存して閉じる
・xvidcore-1.1.3\src\dct\x86_asm\fdct_mmx_skal.asmを、最新版のものと入れ替える
・xvidcore.slnを開く
・intptr_tで検索をかけると、portab.hでdefineしてある場所があるので、そこの部分を最新版からマージするか、コメントアウトをする
・ビルドを行う
・_CRT_SECURE_NO_WARNINGSを適宜追加する
・なぜかcolorspace_yuyv_mmx.asmのアセンブリに失敗するが、単独でコンパイルを選ぶとコンパイルできる・・・

とりあえず、これでOK.他にもVC2005の余計なStuffをOffにしないといけないかもしれないが、コンパイルは通る。

#最新版をビルドする場合には、上記に加え、build/win32にあるプロジェクトファイルをすべてテキストエディタで開き、改行コードをLFからCR+LFにする・・・(1.1.3は大丈夫)

最新の1.2.0-devと1.1.3を比較してみた
ざっとみたところ

・SMP対応
・SSE3対応
・intptr_tが定義されていて、コンパイルでエラーが出る部分の修正
・fdct_mmx_skal.asmがアセンブルできないのを修正

1.2.0-devのコードの一部でエラーのみ取り除いて、とりあえずコンパイルはできるようになった。
にしてもコンパイルできないソースを公開して放置しつつ、次の開発のみ進んでるところは、OpenSource&外人らしい。

その他
・最新版のプロジェクトファイルを見ると、どうもIntel C++ Compilerを使うようになっているようだ
・ベンチマークのソースで、CバージョンでH263の処理を2回やってるところあるが、片方はmpegではなかろうか・・・コピペしてそのままって気がする
・MMXで動作させるためか、動画データは16ビット処理のようだ・・・

1.2.0で速くなってたりするかとかはまた今度。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

Firefox私的ビルド悪魔のゲーム ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。