次の方法で共有


IAudioClient::GetBufferSize メソッド (audioclient.h)

GetBufferSize メソッドは、エンドポイント バッファーのサイズ (最大容量) を取得します。

構文

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

パラメーター

[out] pNumBufferFrames

バッファーが保持できるオーディオ フレームの数をメソッドが書き込む UINT32 変数へのポインター。

戻り値

メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。

リターン コード 説明
AUDCLNT_E_NOT_INITIALIZED
オーディオ ストリームが正常に初期化されていません。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオ サービスが実行されていません。
E_POINTER
パラメーター pNumBufferFramesNULL です

注釈

このメソッドでは、 IAudioClient インターフェイスを事前に初期化する必要があります。 クライアントが IAudioClient::Initialize メソッドを正常に呼び出してオーディオ ストリームを初期化するまで、このメソッドの呼び出しはすべてエラー AUDCLNT_E_NOT_INITIALIZEDで失敗します。

このメソッドは、クライアント アプリケーションとオーディオ エンジンの間で共有されるエンドポイント バッファーの長さを取得します。 長さは、バッファーが保持できるオーディオ フレームの数として表されます。 オーディオ フレームのサイズ (バイト単位) は、ストリーム内のチャネルの数にチャネルあたりのサンプル サイズを乗算して計算されます。 たとえば、16 ビット サンプルを含むステレオ (2 チャネル) ストリームの場合、フレーム サイズは 4 バイトです。

IAudioClient::Initialize メソッドはバッファーを割り当てます。 クライアントは、Initialize メソッドに渡す hnsBufferDuration パラメーター値のバッファー長を指定します。 クライアントをレンダリングする場合、バッファーの長さは、アプリケーションが 1 回の処理パス中にエンドポイント バッファーに書き込むことができるレンダリング データの最大量を決定します。 キャプチャ クライアントの場合、バッファーの長さは、オーディオ エンジンが 1 回の処理パス中にエンドポイント バッファーから読み取ることができるキャプチャ データの最大量を決定します。 クライアントは、Initialize を呼び出した後、常に GetBufferSize を呼び出して、割り当てられたバッファーの実際のサイズを決定する必要があります。これは、要求されたサイズとは異なる場合があります。

レンダリング クライアントは、この値を使用して、各処理パス中に IAudioRenderClient::GetBuffer から要求できる最大のレンダリング バッファー サイズを計算できます。

GetBufferSize メソッドを呼び出すコード例については、次のトピックを参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー audioclient.h

こちらもご覧ください

IAudioClient インターフェイス

IAudioClient::Initialize

IAudioRenderClient::GetBuffer