QVorbis (0.9.2) | 2009-09-09 12:00 |
QVorbis は、Vorbis オーディオストリームのデコードコアライブラリである。 C 言語で記述され、C 関数 API を提供する。 QVorbis ライブラリでは、純粋に Vorbis ストリームのみを扱い、Ogg コンテナフォーマット を取り扱う機能はサポートしていない。
Vorbis ストリームをデコードする低水準機能のみを提供するため、より高水準なライブラリを 使用する場合は、このレベルの API を使用する必要はない。
ライブラリ初期化のため、プロセス開始時に一度だけ呼び出す。
SSE2 拡張ルーチンを使用するかどうかを変更する。使用 CPU によって QV_Initialize() 関数が 自動的に設定するため、テスト以外の用途では呼び出す必要はない。
- struct QVorbisDecoderSetup;
- typedef struct QVorbisDecoderSetup QVorbisDecoderSetup_t;
- QVorbisDecoderSetup_t* QV_CreateDecoderSetup(void);
- void QV_ReleaseDecoderSetup(QVorbisDecoderSetup_t* setup);
- BOOL QV_SetupDecoderSetup(
- QVorbisDecoderSetup_t* setup,
- const VOID* id_packet,
- SIZE_T id_size,
- const VOID* setup_packet,
- SIZE_T setup_size);
- INT32 QV_GetDecoderSetupChannels(
- QVorbisDecoderSetup_t* setup);
- INT32 QV_GetDecoderSetupSamplingRate(
- QVorbisDecoderSetup_t* setup);
デコーダーセットアップオブジェクトを作成する。
デコーダーセットアップオブジェクトを解放する。
Vorbis の Identification header および Setup header を入力して、 デコーダーセットアップを準備する。 セットアップデーターが不正な場合は、エラーとして、FALSE を返す。
Vorbis ストリームのオーディオチャンネル数を返す。
Vorbis ストリームのオーディオサンプリングレートを返す。(Hz)
- struct QVorbisDecoder;
- typedef struct QVorbisDecoder QVorbisDecoder_t;
- QVorbisDecoder_t* QV_CreateDecoder(void);
- void QV_ReleaseDecoder(QVorbisDecoder_t* d);
- BOOL QV_SetupDecoder(
- QVorbisDecoder_t* d,
- QVorbisDecoderSetup_t* setup,
- SIZE_T size);
- struct QV_Output {
- INT32 Channels;
- INT32 Length;
- const FLOAT* Output[2];
- };
- typedef struct QV_Output QV_Output_t;
- BOOL QV_DecodeFrame(
- QVorbisDecoder_t* d,
- const VOID* packet,
- SIZE_T size,
- QV_Output_t* output);
- void QV_ResetDecoder(
- QVorbisDecoder_t* d);
デコーダーオブジェクトを作成する。
デコーダーオブジェクトを解放する。
デコーダーオブジェクトを準備する。
setup には、セットアップオブジェクトを指定する。 単一のセットアップオブジェクトから、複数のデコーダーを準備することも可能である。
size には、内部で確保されるビットストリームバッファの容量を指定する。(Byte)
1 フレーム分のビットストリームをデコードし、PCM サンプルを返す。
packet, size には、1 フレーム分の入力ビットストリームを指定する。 size は、QV_SetupDecoder() で指定したサイズを超えてはならない。 (1 フレームごとのパケット化は、上位のコンテナフォーマットで処理される。)
output へ、出力結果が返される。
1 フレームに含まれるサンプル数 (Length) は、可変である。また、最初にデコードされる フレームの出力サンプル数は、Vorbis 仕様により 0 となる。
Output には、32 bit 浮動小数点サンプルが格納される。サンプル実体は、デコーダーの内部ワーク へ格納されているため、呼び出し側でデータをコピーしてから、次のデコード処理を呼び出すこと。
シーク処理などのために、デコーダーをリセットする。
- struct QV_Convert {
- const INT16* Sample;
- INT32 Samples;
- };
- typedef struct QV_Convert QV_Convert_t;
- BOOL QV_ConvertFrame(
- QVorbisDecoder_t* d,
- const QV_Output_t* output,
- QV_Convert_t* convert);
- void QV_ResetDecoderChecker(
- QVorbisDecoder_t* d);
- BOOL QV_CheckDecoderChecker(
- QVorbisDecoder_t* d,
- const VOID* packet,
- SIZE_T size,
- INT32* samples);
デコーダーで出力される 32 bit 浮動小数点サンプルを 16 bit 符号付き整数サンプルへ変換する。
Sample が指すバッファーは、デコーダー内部ワークのため、呼び出し側でコピーして、次の処理を行うこと。
サンプル数チェッカーをリセットする。
フレームデータの出力サンプル数を、デコード処理を行うことなく算出する。 Vorbis 仕様では、1 フレームあたりのサンプル数が可変なので、出力サンプル数を高速に求めたい場合に使用する。
- struct QVorbisSamplesChecker;
- typedef struct QVorbisSamplesChecker QVorbisSamplesChecker_t;
- QVorbisSamplesChecker_t* QV_CreateSamplesChecker(void);
- void QV_ReleaseSamplesChecker(QVorbisSamplesChecker_t* t);
- BOOL QV_SetupSamplesChecker(
- QVorbisSamplesChecker_t* t,
- QVorbisDecoderSetup_t* setup);
- void QV_ResetSamplesChecker(QVorbisSamplesChecker_t* t);
- BOOL QV_CheckSamplesChecker(
- QVorbisSamplesChecker_t* t,
- const VOID* packet,
- SIZE_T size,
- INT32* samples);
サンプルチェッカーは、Vorbis ストリームのインデックス化を行うツール用の機能である。
サンプルチェッカーオブジェクトを作成する。
サンプルチェッカーオブジェクトを解放する。
サンプルチェッカーオブジェクトを準備する。
サンプルチェッカーオブジェクトをリセットする。
フレーム内のサンプル数を算出する。
[PageInfo]
LastUpdate: 2008-12-16 16:59:27, ModifiedBy: noumiakira
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:members, delete/config:members