次の方法で共有


IXAudio2::CreateSubmixVoice

サブミックス ボイスを作成し、設定します。

HRESULT 
CreateSubmixVoice(
  IXAudio2SubmixVoice **ppSubmixVoice,
  UINT32 InputChannels,
  UINT32 InputSampleRate,
  UINT32 Flags = 0,
  UINT32 ProcessingStage = 0,
  const XAUDIO2_VOICE_SENDS *pSendList = NULL,
  const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL
);

パラメータ

  • ppSubmixVoice
    成功した場合、新しい IXAudio2SubmixVoice オブジェクトへのポインターを返します。

  • InputChannels
    サブミックス ボイスの入力オーディオ データのチャンネル数です。

  • InputSampleRate
    サブミックス ボイスの入力オーディオ データのサンプリング レートです。このレートは、XAUDIO2_QUANTUM_DENOMINATOR の倍数でなければなりません。

  • Flags
    サブミックス ボイスの動作を指定するフラグです。0 または次のフラグのどちらかを指定します。

    説明
    XAUDIO2_VOICE_USEFILTERこのボイスでは、フィルター エフェクトが使用可能でなければなりません。
  • ProcessingStage
    XAudio2 エンジンが他のサブミックス ボイスを実行している場合に、他のサブミックス ボイスに関してこのボイスを処理するタイミングを指定する任意の数です。ボイスは、より小さい ProcessingStage の値を持つその他すべてのボイスが処理された後、また、より大きい ProcessingStage の値を持つその他すべてのボイスが処理される前に、処理されます。ProcessingStage の値が同じであるボイスは、任意の順序で処理されます。サブミックス ボイスは、ProcessingStage の値がより小さいかまたは同じである別のサブミックス ボイスに送信できません。これにより、サブミックス サイクルが原因でオーディオが失われるのを防ぎます。

  • pSendList
    サブミックス ボイスに対する一連のデスティネーション ボイスを表す XAUDIO2_VOICE_SENDS 構造体のリストへのポインターです。pSendList が NULL の場合、送信リストは、既定で、最初に作成されたマスター ボイスへの単一の出力となります。

  • pEffectChain
    サブミックス ボイスで使用するエフェクト チェーンを表す XAUDIO2_EFFECT_CHAIN 構造体のリストへのポインターです。

戻り値

正常に実行された場合は S_OK を返し、失敗した場合はエラー コードを返します。XAudio2 固有のエラー コードの説明については、「XAudio2 エラー コード」を参照してください。

解説 

サブミックス ボイスは、1 つまたは複数のソース ボイスまたはサブミックス ボイスの出力を受け取ります。サブミックス ボイスは出力を処理し、次に、出力を別のサブミックス ボイスまたはマスター ボイスに送信します。

サブミックス ボイスは、入力サンプル レートから pSendList の出力ボイスの入力レートへのサンプル レート変換を実行します。複数のボイス送信が指定されている場合、それらすべての入力サンプル レートが同じである必要があります。

マスター ボイスが存在しなければ、ソース ボイスまたはサブミックス ボイスを作成することはできません。また、ソース ボイスまたはサブミックス ボイスが存在している間は、マスター ボイスを破棄することはできません。

最初に作成したとき、サブミックス ボイスは開始された状態になっています。

XAudio2 では、同じ形式のボイスに 1 つの内部メモリー プールを使用するので、多くのボイスが作成された後、破棄される場合に、ボイスのメモリー割り当てが行われる回数が少なくなります。ジャストインタイムの割り当てを最小限に抑えるために、必要なボイスの予想最大数をタイトルで事前に作成してから、必要に応じて削除することができます。その後、ボイスは XAudio2 プールから再利用されます。メモリー プールは XAudio2 エンジンのインスタンスに関連付けられます。XAudio2 エンジンのインスタンスによって使用されるすべてのメモリーは、XAudio2 オブジェクトを破棄し、必要に応じて再作成することで、再利用できます (必要に応じて、事前割り当てによるメモリー プールの拡大を再適用する必要があります)。

コールバック内からの CreateSubmixVoice の呼び出しは無効です。コールバック内から CreateSubmixVoice を呼び出すと、XAUDIO2_E_INVALID_CALL が返されます。

要件

ヘッダー: Xaudio2.h 宣言

関連項目

IXAudio2, XAudio2 のサンプル レート変換