共用方式為


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傳回時不會指定其值。 當您指定XAUDIO2_VOICE_NOSAMPLESPLAYED時,IXAudio2SourceVoice::GetState需要大約三分之一的時間才能完成。

備註

對於所有編碼格式,包括常數位元速率 (CBR) 格式,例如調適型差異脈衝程式碼 (ADPCM) , SamplesPlayed 是以解碼的樣本表示。 對於脈衝程式碼 (PCM) 格式, SamplesPlayed 是以輸入或輸出樣本來表示。 PCM 格式的輸入到輸出有一對一的對應。

如果用戶端需要取得數個語音的相互關聯位置,也就是說,若要知道當另一個語音的指定範例現正播放時播放特定語音的確切範例,則必須在 XAudio2 引擎回呼中建立 IXAudio2SourceVoice::GetState 呼叫。 這樣做可確保不會在進行通話時前進任何語音。

平臺需求

Windows 10 (XAudio2.9) ;Windows 8,Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)

規格需求

   
標頭 xaudio2.h

另請參閱

結構