QOgg API

概要

QOgg は、Ogg Vorbis オーディオストリームのデコードライブラリである。 C 言語で記述され、C 関数 API を提供する。 QOgg ライブラリでは、QVorbis ライブラリを使用して、Ogg コンテナ内の Vorbis ストリーム をデコードすることができる。

API

使用前には、QVorbis ライブラリの初期化関数を呼び出す必要がある。

リーダー

  1. struct QOV_Reader;
  2. typedef struct QOV_Reader QOV_Reader_t;
  3. QOV_Reader_t* QOV_CreateReader(void);
  4. void QOV_ReleaseReader(QOV_Reader_t* t);
  5. BOOL QOV_OpenReader(
  6. QOV_Reader_t* t,
  7. const WCHAR* path);
  8. BOOL QOV_OpenReader_IStream(
  9. QOV_Reader_t* t,
  10. IStream* p);
  11. const QOV_Format_t* QOV_GetFormat(
  12. QOV_Reader_t* t);
  13. BOOL QOV_Seek(
  14. QOV_Reader_t* t,
  15. INT64 sample);
  16. BOOL QOV_Decode(
  17. QOV_Reader_t* t,
  18. VOID* buffer,
  19. INT32 samples,
  20. INT32* output);

QOV_CreateReader()

リーダーオブジェクトを作成する。

QOV_ReleaseReader()

リーダーオブジェクトを解放する。

QOV_OpenReader()

ローカルファイルから Ogg Vorbis ストリームを読みだす。

QOV_OpenReader_IStream()

Windows IStream COM インターフェイスから Ogg Vorbis ストリームを読みだす。

QOgg ライブラリは、IStream::Stat() メソッドで、ストリームサイズを取得する。

QOV_GetFormat()

オーディオフォーマットを取得する。

QOV_Seek()

シークを実行する。シーク先は、サンプル位置を指定する。

QOV_Decode()

ストリームをデコードし、PCM サンプルを取り出す。

PCM データは、16bit 符号つき整数で出力される。

samples は、デコードする最大サンプル数。

output は、実際にデコードされたサンプル数を返す。0 を返した場合は、ストリーム の終了を表す。最大値は、samples と同じとなるが、必ずしも最大値で返るわけではない。

buffer に用意すべきサイズは、samples * 2 * チャンネル数 (Byte) である。

QOV_Format 構造体

  1. struct QOV_Format {
  2. INT32 SamplingRate;
  3. INT32 Channels;
  4. INT64 Duration;
  5. }; /* QOV_Format */
  6. typedef struct QOV_Format QOV_Format_t;

SamplingRate サンプリングレート (Hz)

Channels チャンネル数 (1 or 2)

Duration ストリーム長 (サンプル数)