libvorbisソースコードの解説
libvorbisは(Ogg)Vorbisのエンコードとデコードのための統合ライブラリ。現状のソースコード(Xiph.Org libvorbis1.2.0)にあるファイルについて述べる。これらの説明は適切でない部分もあるかも知れない。私自身も全てを正確に理解している訳ではないので、その辺はご了承願いたい。なにか間違いなどあれば、上記のメニューより連絡されたし。
以下は私的なメモより抜粋したものを修正・加筆したものである。このページがlibvorbisに興味がある方々の参考になれば幸いである。
以下は私的なメモより抜粋したものを修正・加筆したものである。このページがlibvorbisに興味がある方々の参考になれば幸いである。
\lib
analysis.c
一つのブロックを分析する時に使う。詳細は不明。
backends.h
residueやmappingのバックエンド周りの定義。
barkmel.c
bark melなどの心理聴覚モデルのための単位変換。実際のエンコード処理には使われない。
bitrate.c
ビットレートのトラッキングとマネージメント。主にマネージメントモード用。
bitrate.h
bitrate.cのヘッダファイル。
block.c
ブロック周りの処理、初期化、開放、エンコード・デコード処理を含む。
codebook.c
コードブックのエンコード・デコード処理。
codebook.h
codebook.cのヘッダファイル。
codec_internal.h
全体で使われる構造体などの定義。
envelope.c
ブロックスイッチングのための分析処理。
envelope.h
envelope.cのヘッダファイル。
floor0.c
floor0のデコード処理。
floor1.c
floor1のエンコード・デコード処理。
info.c
ヘッダの処理(Vorbisコメントなど)
lookup.c
ルックアップ参照元関数定義。
lookup.h
loockup.cのヘッダファイル。
lookup_data.h
lookup.cで使われるテーブル。
lpc.c
LPC処理。floor0で使われる。
lpc.h
lpc.cのヘッダファイル。
lsp.c
LSP(LSF)変換処理。floor0で使われる。
mapping0.c
ブロック毎のエンコード・デコードのメインシーケンスとして使われる。mappingは本来、特定のステレオマッピングを表すが、現状mapping0しか存在しない(mono/stereo)。
masking.h
ATH/Masking(tone)パラメータ定義。
mdct.c
直交変換。
misc.h
メモリ確保周りの定義など。
os.h
処理系依存の定義。
psy.c
ビットレート割り当てや心理聴覚モデルの肝。
psy.h
psy.cのヘッダファイル。
psytune.c
チューニングに使われるもので実際には使用されない。
registry.c
floor/residue/mapping(channel)バックエンド処理のためのレジストリ。
registry.h
registry.cのヘッダファイル。
res0.c
residueのpack/unpack処理。
scales.h
スケール変換関連。
sharedbook.c
shared codebookのエンコード・デコード処理。
smallft.c
fft処理。tone maskingカーブ作成に使われる。
synthesis.c
デコードのための下位API。
tone.c
テスト用。
vorbisenc.c
エンコードのためのAPI及び、セットアップ処理。
vorbisfile.c
デコードのための上位API(フロントエンド)がある。
window.c
PCMデータに窓処理をする。
window.h
window.cのヘッダファイル。
lib\books 以下
各種コードブック。
lib\modes 以下
セットアップパラメータ・チューニングパラメータ群。
floor_all.h
floorのセットアップ。使用するハフマンコードブックやfloorカーブの設定などを行う。
psych_*.h
心理聴覚モデルのパラメータ群。
residue_*.h
residueのセットアップ。使用するコードブック(ハフマン、ベクトル)の設定を行う。
setup_*.h
変数類をtemplateにセットする。
用語関連
ブロック
処理する単位。VorbisにおけるブロックサイズはWindowサイズと一致する。周波数分解能はブロックサイズの半分である。
floor(カーブ)
大体のオーディオスペクトルを表す。常にチャンネル毎に符号化される。
residue
オーディオスペクトルからfloorカーブ分を取り去った残り。オーディオの詳細を表す。