XAUDIO2_VOICE_STATE 構造体 (xaudio2.h)
音声の現在の状態とカーソル位置データを返します。
構文
typedef struct XAUDIO2_VOICE_STATE {
void *pCurrentBufferContext;
UINT32 BuffersQueued;
UINT64 SamplesPlayed;
} XAUDIO2_VOICE_STATE;
メンバー
pCurrentBufferContext
現在処理されている XAUDIO2_BUFFER で提供されるバッファー コンテキストへのポインター、または音声が現在停止している場合は、処理される次のバッファーへのポインター。 キューにバッファーがない場合、pCurrentBufferContext は NULL です。
BuffersQueued
音声で現在キューに登録されているオーディオ バッファーの数 (現在処理されているバッファーを含む)。
SamplesPlayed
この音声が最後に開始されてから、または最後のオーディオ ストリームが終了してから処理されたサンプルの合計数 (XAUDIO2_END_OF_STREAM フラグでマーク)。 この合計には、ループが原因で複数回再生されたサンプルが含まれます。 理論的には、この時点までの音声によって出力されたすべてのオーディオがキャプチャされた場合、このパラメーターはサンプル内のオーディオ ストリームの長さになります。 IXAudio2SourceVoice::GetState を呼び出すときにXAUDIO2_VOICE_NOSAMPLESPLAYEDを指定した場合、このメンバーは計算されません。また、IXAudio2SourceVoice::GetState からの戻り時にその値は指定されません。 IXAudio2SourceVoice::GetState では、XAUDIO2_VOICE_NOSAMPLESPLAYEDを指定すると、完了までに約 3 分 の 1 の時間がかかります。
解説
アダプティブ差動パルス コード変調 (ADPCM) などの定数ビット レート (CBR) 形式を含むすべてのエンコードされた形式について、 SamplesPlayed はデコードされたサンプルの観点から表されます。 パルス・コード変調 (PCM) 形式の場合、 SamplesPlayed は入力サンプルまたは出力サンプルの観点から表されます。 PCM 形式の入力から出力への 1 対 1 のマッピングがあります。
クライアントが複数の音声の相関位置を取得する必要がある場合 (つまり、別の音声の指定したサンプルが再生されているときに、特定の音声のどのサンプルが再生されているかを正確に把握するために)、 XAudio2 エンジン コールバックで IXAudio2SourceVoice::GetState 呼び出しを行う必要があります。 これを行うと、通話中にどの音声も進行しません。
プラットフォームの要件
Windows 10 (XAudio2.9);Windows 8、Windows Phone 8 (XAudio 2.8);DirectX SDK (XAudio 2.7)要件
Header | xaudio2.h |