公開 2007-11-04 10:20 投稿者 mafactory
タグ

MinGW + MSYSを使った static版 ffmpegのコンパイル (その4-2:外部ライブラリのコンパイル [a52・faac・faad2] )

個人的に最新リビジョンのffmpegをコンパイルしてみました。

Windows上で動作するstaticなffmpeg.exeを作ります。

その備忘録です。。。

 

■共通項目

外部ライブラリのコンパイル共通項目として、コンパイル生成場所をstatic2(実パスは"C:\msys\1.0\static2")にします。

具体的には、configureに必ず"--prefix=/static2"を付与します。

 

■a52

a52はliba52 - a free ATSC A/52 stream decoderからダウンロードできます。

July 27, 2002: a52dec-0.7.4 is releasedのreleasedからダウンロードします。


・a52dec-0.7.4.tar.tarをダウンロードします

 

※とりあえずこちらに置いておきます。。。

 

MSYSを起動して以下を実行します。

$ tar zxfv a52dec-0.7.4.tar.tar
$ cd a52dec-0.7.4
$ ./configure --prefix=/static2 --disable-shared --enable-static
$ make
$ make install

 

[コンパイル参考リンク]

ffmpeg_wikiさんのliba52 が詳しいです(英語です)

 

 

 

■faac

faacはSOURCEFORGE.NETからダウンロードできます。

上段faac-srcのfaac-1.25から

・faac-1.25.tar.gzをダウンロードします

 

※とりあえずこちらに置いておきます。。。

 

また、このバージョンでlibfaacを利用する場合のパッチがありますので、

ここからダウンロードします。

 

faac-1.25.patch.zipをダウンロードします

ダウンロード終了後解凍します。faac-1.25.patchをどこかに保存しておきます。

 

MSYSを起動して以下を実行します。

$ tar zxfv faac-1.25.tar.gz
作業ルートにfaac-1.25.patchをコピー
$ patch -p0 < faac-1.25.patch
$ cd faac
$ ./bootstrap
$ ./configure --prefix=/static2 --enable-static --disable-shared
$ make LDFLAGS="-no-undefined"
$ make install

[インストール参考リンク]

ffmpeg_wikiさんのfaacが詳しいです(英語です)

 


■faad2

faad2はSOURCEFORGE.NETからダウンロードできます。

上段faad2-srcのfaad2-2.5から

・faad2-2.5.tar.gzをダウンロードします

 

※とりあえずこちらに置いておきます。。。

 

また、このバージョンでlibfaad2を利用する場合のパッチがありますので、

ここからダウンロードします。

 

・faad2-2.5.patch.zipをダウンロードします

ダウンロード終了後解凍します。faad2-2.5.patchをどこかに保存しておきます。

 

MSYSを起動して以下を実行します。

$ tar zxfv faad2-2.5.tar.gz
作業ルートにfaac-1.25.patchをコピー
$ patch -p0 < faad2-2.5.patch
$ cd faad2

//---------------------------------------------------------------
AACのプロファイル[Scalable Sampling Rate(SSR)]を有効にします。
ソースを慎重に修正します。
//---------------------------------------------------------------

SSRとは。。。

ここに詳細があります。

---引用---
MPEG-4 ビデオ同様、 AAC にもプロファイルがあります。
消費者市場ではこのうち Low Complexity (LC AAC) プロファイル
(別名MAIN @ Level 2) がもっとも広く使われています
(例えばApple'の iTunes music store)
その他のプロファイルには、
例えば
Long Term Prediction プロファイル (LTP),
Scalable Sampling Rate (SSR) や
Low Delay (LD)といったものがあります。

ここにも詳細があります。

---引用---
(3) SSR:Scalable Sampling Rate
4バンドのサブバンド分析フィルタを含むゲイン制御部をもつ。
予測部は存在しない。
またTNSの予測次数も制限されている。
4分割サブバンドフィルタ出力の内、例えば最低域バンドのみをデコード、
低域側2つのバンドのみをデコードというように、
スケーラブルな構造をもつデコーダを構成できる。

以下、修正内容です。

[\faad2\libfaad\common.h]
・84行目 //#define SSR_DEC → #define SSR_DEC

[\faad2\libfaad\specrec.c]
・861行目から884行目までコメントアウトする

※cpe->が存在しないエラーを回避するため

[\faad2\libfaad\ssr.h]
・53行目のssr_gc_function( )プロトタイプ宣言の修正

※\faad2\libfaad\ssr.cに合わせる

・static void ssr_gc_function(ssr_info *ssr, real_t *prev_fmd, real_t *gc_function, uint8_t window_sequence, uint8_t band, uint16_t frame_len); とする

[\faad2\libfaad\ssr.c]
・138行目 static void ssr_gc_function(ssr_info *ssr, real_t *prev_fmd, real_t *gc_function, uint8_t window_sequence, uint8_t band, uint16_t frame_len) とする

[\faad2\libfaad\ssr.c]
・ssr_gc_function()をcallしている箇所を修正

117行目 gc_function, window_sequence, frame_len); →  gc_function, window_sequence, band, frame_len);

[\faad2\libfaad\common.h]
・93行目に以下を追加する

#ifdef SSR_DEC
#define MUL_R_C(A,B) ((A)*(B))
#endif

※ssr_fb.cでのMUL_R_C未宣言エラーを回避するため

//---------------------------------------------------------------
以上で修正完了です。
//---------------------------------------------------------------

再びMSYSを起動して以下を実行します。

$ ./bootstrap
$ ./configure --prefix=/static2 --enable-static --disable-shared
$ make LDFLAGS="-no-undefined"
$ make install

[インストール参考リンク]

ffmpeg_wikiさんのfaadが詳しいです(英語です)

 

 

今回はちょっと長くなりましたね。

次回も外部ライブラリのコンパイル(x264、xvidcore、amr_nb)です。

ではまたね。

 

コメントの通知

この投稿にコメントが付いた場合にメールを受信するには、登録してください。ここ

また次のフィードから、お気に入りのRSSリーダーを使って最新の状態を知ることもできます。 コメントのRSSフィード

コメント

コメントはありません
どのような感想ですか?
(必須)
(オプション)
(必須)