IAudioRenderClient::ReleaseBuffer メソッド (audioclient.h)
ReleaseBuffer メソッドは、IAudioRenderClient::GetBuffer メソッドの前の呼び出しで取得したバッファー領域を解放します。
構文
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesWritten,
[in] DWORD dwFlags
);
パラメーター
[in] NumFramesWritten
クライアントによってデータ パケットに書き込まれたオーディオ フレームの数。 このパラメーターの値は、IAudioRenderClient::GetBuffer メソッドに渡される NumFramesRequested パラメーターで指定されているように、データ パケットのサイズ以下である必要があります。
[in] dwFlags
バッファー構成フラグ。 呼び出し元は、このパラメーターを 0 または次の _AUDCLNT_BUFFERFLAGS 列挙値 (フラグ ビット) に設定できます。
AUDCLNT_BUFFERFLAGS_SILENT
このフラグ ビットが設定されている場合、オーディオ エンジンは、パケットに含まれるデータ値に関係なく、データ パケットに無音が含まれているかのように扱います。 このフラグにより、クライアントがレンダリング バッファーに無音データを明示的に書き込む必要がなくなります。
戻り値
メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。
リターン コード | 説明 |
---|---|
|
NumFramesWritten 値が、前の IAudioRenderClient::GetBuffer 呼び出しで指定された NumFramesRequested 値を超えています。 |
|
ストリームは排他モードであり、イベント ドリブン バッファリングを使用しますが、クライアントはバッファーのサイズではないパケットを解放しようとしました。 |
|
この呼び出しの前に 、IAudioRenderClient::GetBuffer への対応する呼び出しが行われませんでした。 |
|
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。 |
|
Windows オーディオ サービスが実行されていません。 |
|
パラメーター dwFlags が有効な値ではありません。 |
注釈
クライアントは、 IAudioRenderClient::GetBuffer メソッドの前の呼び出しで要求したフレームの数と同じ数を解放する必要があります。 この規則の 1 つの例外は、クライアントが常に ReleaseBuffer を呼び出して 0 フレームを解放できることです (ストリームが排他モードで、イベント ドリブン バッファリングを使用している場合を除く)。
この動作は、クライアントが以前に要求した長さ 0 のパケットを "解放" するための便利な手段を提供します。 この場合、 ReleaseBuffer の呼び出しは省略可能です。 長さ 0 のパケットを取得するために GetBuffer を呼び出した後、クライアントには、GetBuffer を再度呼び出す前に ReleaseBuffer を呼び出さないオプションがあります。
さらに、前の GetBuffer 呼び出しで 0 以外のサイズのパケットが取得された場合、NumFramesRequested を 0 に設定して ReleaseBuffer を呼び出すことは成功します (ストリームが排他モードで、イベントドリブン バッファリングを使用している場合を除く)。 呼び出しの意味は、クライアントがパケットを解放する前にデータを書き込まないということです。 したがって、 メソッドは、パケットによって表されるバッファーの部分を未使用として扱い、バッファーのこの部分を次の GetBuffer 呼び出しでクライアントが再度使用できるようにします。
クライアントは、バッファーを取得する GetBuffer 呼び出しと、バッファーを 解放する ReleaseBuffer 呼び出しの間の過度の遅延を回避する必要があります。 オーディオ エンジンの実装では、 GetBuffer 呼び出しと対応する ReleaseBuffer 呼び出しが同じバッファー処理期間内に発生することを前提としています。 複数の期間にわたってバッファーの解放を遅らせるクライアントは、サンプル データを失うリスクがあります。
ReleaseBuffer メソッドを呼び出すコード例については、次のトピックを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | audioclient.h |