CRI ADX  Last Updated: 2024-03-21 14:32 p
WASAPI排他モード

サンプルのディレクトリ

/cri/pc/samples/criatomex/wasapi_exclusive

サンプルで使用しているデータ

/cri/common/smpdata/criatomex/
  • SampleProject.acf
  • AtomCueSheet.acb
  • AtomCueSheet.awb

サンプルの解説

使用方法
WASAPIの排他モードを使用する場合、以下の手順でライブラリを初期化する必要があります。
-# criAtom_SetAudioClientShareMode_WASAPI 関数でWASAPIの排他モードを使用するようライブラリに指示。
-# criAtom_SetAudioClientFormat_WASAPI 関数にサウンド出力フォーマットを WAVEFORMATEXTENSIBLE 型で指定する。
-# criAtomEx_Initialize_WASAPI 関数でライブラリを初期化する。
具体的な処理コードの一例を以下に示します。
/* WASAPIを排他モードで初期化するよう指示 */
criAtom_SetAudioClientShareMode_WASAPI(AUDCLNT_SHAREMODE_EXCLUSIVE);
/* WASAPIの出力フォーマットを指定 */
/* 注意)本サンプルでは48kHz 24bit PCM出力を使用しますが、 */
/*    必ずしも指定したフォーマットが使用できるとは限りません。 */
memset(&output_format, 0, sizeof(output_format));
ex_ptr = (WAVEFORMATEX *)&output_format;
ex_ptr->wFormatTag = WAVE_FORMAT_EXTENSIBLE;
ex_ptr->nChannels = 2;
ex_ptr->nSamplesPerSec = 48000;
ex_ptr->wBitsPerSample = 32;
ex_ptr->nBlockAlign = ex_ptr->wBitsPerSample / 8 * ex_ptr->nChannels;
ex_ptr->nAvgBytesPerSec = ex_ptr->nSamplesPerSec * ex_ptr->nBlockAlign;
ex_ptr->cbSize = 22;
output_format.Samples.wValidBitsPerSample = 24;
output_format.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
criAtom_SetAudioClientFormat_WASAPI((const WAVEFORMATEX *)ex_ptr);
/* WASAPI出力用にライブラリを初期化 */
/* Initialize the library for WASAPI output */
void criAtom_SetAudioClientFormat_WASAPI(const WAVEFORMATEX *format)
出力フォーマットの指定
void criAtom_SetAudioClientShareMode_WASAPI(AUDCLNT_SHAREMODE mode)
共有方式の指定
void criAtomEx_Initialize_WASAPI(const CriAtomExConfig_WASAPI *config, void *work, CriSint32 work_size)
ライブラリの初期化
[備考]
criAtomEx_Initialize_WASAPI 関数を使用してライブラリを初期化した場合、ライブラリの終了処理を criAtomEx_Finalize_WASAPI 関数を用いて行う必要があります。
注意点
指定されたフォーマットで正常に音声が出力されるかどうかは、使用するハードウェアに強く依存します。
(WASAPIがエラーを返さないにもかかわらず、音声が正しく出力されないケースが確認されています。)
WASAPI排他モードの使用は、PCベースのアーケード機等、使用するハードウェアが限定されているケースのみに留めてください。
WASAPIの排他モードを使用できるアプリケーションは、OS上で1つだけです。
WASAPI排他モードを使用するアプリケーションを複数同時に起動した場合、ライブラリの初期化に失敗します
WASAPI排他モード使用時は、他のアプリケーションによる音声出力が行えなくなります。
また、同一アプリケーション中であっても、Atomライブラリを使用せずに音声を再生するものは全てミュートされます。
現状、Atomライブラリでは以下の3種類の量子化ビット数のPCMデータフォーマットをサポートしています。
- 16bit
- 32bit/24valid
- IEEE float
上記以外PCMデータの形式を指定した場合や、上記に該当するケースでも criAtom_GetAudioClientIsFormatSupported_WASAPI 関数が CRI_FALSE を返す場合、指定されたフォーマットでの音声出力は行えません。