2

私は最近 xAudio を掘り下げていましたが、必要な答えが見つかりませんでした。

{ 時間を無駄にしないように - マスター ボイスの現在の進行状況を取得する方法を見つける必要があります }

問題は、- SourceVoice はその状態を与える方法を提供します ( https://msdn.microsoft.com/en-us/library/windows/desktop/hh405047(v=vs.85).aspx )

したがって、このメソッドを介して XAUDIO2_VOICE_STATE を取得し、音声が再生されているときの現在の位置を計算できます。

しかし、xAudio の場合、SourceVoice は実際に使用する最終的なエンティティではありません (または、そうでしょうか?!)。オーディオ デバイスに到達する前に、すべてがマスタリング ボイスに入るからです。

また、IXAudio2MasteringVoice インターフェイスは、GetState() のようなものを提供しません。

だから私の質問は、 - いくつかの声を同期する必要がある場合、現在の進行状況を取得するにはどうすればよいですか。前もって感謝します!

4

1 に答える 1

1

「マスター ボイス」は、出力デバイスを表します (これは実際には、システム レベルのミックスを行い、結果を実際のハードウェア再生バッファーに入れる WASAPI チェーンの開始点です)。そのため、「進行状況」または「サンプル位置」の概念はありません。エフェクト チェーンを取り付けることもできますが、それだけです。

音声を同期する最良の方法は、個々のソース音声をグループとして開始または停止するなど、複数のアクションがすべて同じフレームで処理されるようにする「操作セット」を使用することです。MSDN: XAudio2 操作セットを参照してください。

IXAudio2VoiceCallbackまた、ソース ボイスに を付けて、提出された作業の進行状況の通知を受け取ることもできます。MSDN: XAudio2 コールバックを参照してください。

于 2016-05-24T15:04:45.967 に答える