ガイドライン
- ユーザーが可能な限り最高のゲーム体験を得られるようにするために、エンドポイントがマルチチャネル オーディオをサポートしているかを判定してください。まず、IAudioClient::IsFormatSupported を呼び出します。優先フォーマットがサポートされていない場合は、IAudioClient::GetMixFormat のミックス フォーマットへのレンダリングにフォールバックしてください。
- タイトルは 7.1 エンドポイントのみを処理するのではなく、2.0、5.1、および 7.1 エンドポイントもネイティブに処理できる必要があり、オーディオ クライアントの無効化を通じてフォーマットが変更された場合、リアルタイムに反応する必要があります。タイトルがチャネル数の異なる 3 種類のオーディオ ソースを提供したくない場合は、Audioclient の初期化時に AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM ストリームフラグを付けることで、アップミキシングとダウンミキシングを OS に依頼できます。ゲームが OS にアップミキシングとダウンミキシングを依頼した場合でも、オーディオ クライアントの無効化を受け取り、それに反応する必要があります。
- オーディオ デバイス (レンダリングおよびキャプチャ) を列挙するには、MMDevice API を使用します。オーディオをメインの HDMI エンドポイントにのみレンダリングする場合は、GetDefaultAudioEndpoint を呼び出してください。
- XBOX では、一度に 1 つのプロセスからオーディオをレンダリングしてください。
- XBOX Manager リモート コントロールは、Windows Audio Session API (WASAPI) を通じてオーディオをサポートするように設計されています。ただし、Dolby/DTS ホーム シアター設定がアクティブな場合、ISpatialAudioClient (ISAC) からのオーディオ ストリーミングはサポートされません。
-
WASAPI に関連する多くのメソッドは、クライアント アプリケーションが使用しているオーディオ エンドポイント デバイスが無効になると、エラー コード AUDCLNT_E_DEVICE_INVALIDATED を返す可能性があります。タイトルが、エンドポイント デバイスが何らかの方法で変更された場合に発生する可能性のあるこれらのエラーに正しく対応することを確認してください。WASAPI での無効なデバイス エラーからの回復に関する詳細は、こちらにあります。タイトルがオーディオ デバイスの無効化を正しく処理していることを確認する簡単な方法は、タイトルの実行中にオーディオ設定ページに切り替えて、HDMI デバイスのチャネル数を変更することです。無効化シナリオでは、WASAPI から次のエラー コードが返される可能性があります。
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- AUDCLNT_E_ENDPOINT_CREATE_FAILED
-
タイトルで空間音響を使用する場合は ISAC API と対話することになり、これらもデバイスの無効化に関するエラー コードを返します。ISAC では、オーディオ エンドポイントが変更されたり、再生中に空間音響レンダリング モードが変更されたりすると、無効化が発生します。ISAC での無効なデバイス エラーからの回復に関する詳細は、こちらにあります。これは、次のメソッドのいずれかが次の値のいずれかを返した場合に発生します。
メソッド:
- ISpatialAudioObjectRenderStreamBase
- ISpatialAudioObjectRenderStream
- ISpatialAudioObjectRenderStreamForMetadata
- ISpatialAudioObjectRenderStreamForHrtf
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- SPTLAUDCLNT_E_INTERNAL また、コンソールが空間音響フォーマット (ヘッドフォン向け Windows Sonic など) を使用するように設定されているときにコントローラーからヘッドセットを差し込む/抜くと、これらのイベントが発生する可能性があります。
- オーディオ デバイスの無効化は、MMDevice API から IMMDevice が取得された後、いつでも発生する可能性があります。IMMDevice::Activate を含むすべての呼び出しが無効化エラーを返す可能性があります。ゲームが無効化エラーに遭遇するたびに、まず IMMDeviceEnumerator を通じて新しい IMMDevice を取得することで、オーディオ ストリームを再作成する必要があります。
