次の方法で共有


XAUDIO2_VOICE_STATE

ボイスの現在の状態およびカーソル位置データを返します。

typedef struct XAUDIO2_VOICE_STATE {
    void *pCurrentBufferContext;
    UINT32 BuffersQueued;
    UINT64 SamplesPlayed;
} XAUDIO2_VOICE_STATE;

メンバ

  • pCurrentBufferContext
    現在処理されている XAUDIO2_BUFFER に提供されているバッファー コンテキストへのポインター、またはボイスが停止した場合に処理されることになっている次のバッファーへのポインターです。キュー内にバッファーがない場合、NULL です。
  • BuffersQueued
    現在処理中のバッファーを含む、現在ボイスのキューに入っているオーディオ バッファーの数です。
  • SamplesPlayed
    前回の起動後、または前回のオーディオ ストリームの終了後、このボイスによって処理されたサンプルの合計数です。XAUDIO2_END_OF_STREAM フラグでマークされます。この合計数には、ループのために複数回再生されたサンプルが含まれます。理論的には、現在までにボイスによって生成されたすべてのオーディオがキャプチャーされている場合、このパラメーターは、このオーディオ ストリームのサンプル数単位の長さになります。

解説 

ADPCM (Adaptive Differential Pulse Code Modulation) のような固定ビット レート (CBR) フォーマットを含む、すべてのエンコードされたフォーマットでは、デコードされたサンプルに関して SamplesPlayed が指定されます。PCM (Pulse Code Modulation) フォーマットの場合、入力サンプルまたは出力サンプルのいずれかに関して、SamplesPlayed が指定されます。PCM フォーマットでは、入力と出力が 1 対 1 で対応しています。

クライアントで複数のボイスの相関位置を取得する必要がある場合 (別のボイスのサンプルの再生中に、あるボイスのどのサンプルが再生されているのかを詳しく知りたい場合など)、XAudio2 エンジン コールバックで IXAudio2SourceVoice::GetState 呼び出しを行う必要があります。これにより、呼び出しを行っている間にボイスが先に進まないようにします。

要件

ヘッダー: Xaudio2.h 宣言