> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XDK と GDK のオーディオ API の比較

> XBOX One Software Development Kit と Microsoft Game Development Kit のオーディオ API の比較

このトピックでは、XBOX One Software Development Kit のオーディオ API が Microsoft Game Development Kit (GDK) 向けにどのように変更されたかを説明します。

## ガイドライン

* ユーザーが可能な限り最高のゲーム体験を得られるようにするために、エンドポイントがマルチチャネル オーディオをサポートしているかを判定してください。まず、[IAudioClient::IsFormatSupported](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-isformatsupported) を呼び出します。優先フォーマットがサポートされていない場合は、[IAudioClient::GetMixFormat](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-getmixformat) のミックス フォーマットへのレンダリングにフォールバックしてください。

* タイトルは 7.1 エンドポイントのみを処理するのではなく、2.0、5.1、および 7.1 エンドポイントもネイティブに処理できる必要があり、オーディオ クライアントの無効化を通じてフォーマットが変更された場合、リアルタイムに反応する必要があります。タイトルがチャネル数の異なる 3 種類のオーディオ ソースを提供したくない場合は、Audioclient の初期化時に [AUDCLNT\_STREAMFLAGS\_AUTOCONVERTPCM](https://learn.microsoft.com/windows/desktop/coreaudio/audclnt-streamflags-xxx-constants) ストリームフラグを付けることで、アップミキシングとダウンミキシングを OS に依頼できます。ゲームが OS にアップミキシングとダウンミキシングを依頼した場合でも、オーディオ クライアントの無効化を受け取り、それに反応する必要があります。

* オーディオ デバイス (レンダリングおよびキャプチャ) を列挙するには、[MMDevice API](https://learn.microsoft.com/windows/desktop/coreaudio/mmdevice-api) を使用します。オーディオをメインの HDMI エンドポイントにのみレンダリングする場合は、[GetDefaultAudioEndpoint](https://learn.microsoft.com/windows/win32/api/mmdeviceapi/nf-mmdeviceapi-immdeviceenumerator-getdefaultaudioendpoint) を呼び出してください。

* XBOX では、一度に 1 つのプロセスからオーディオをレンダリングしてください。

* XBOX Manager リモート コントロールは、[Windows Audio Session API](/build/console-features/audio/overviews/wasapi-overview) (WASAPI) を通じてオーディオをサポートするように設計されています。ただし、Dolby/DTS ホーム シアター設定がアクティブな場合、[ISpatialAudioClient](/build/console-features/audio/overviews/spatial-audio-overview) (ISAC) からのオーディオ ストリーミングはサポートされません。

* WASAPI に関連する多くのメソッドは、クライアント アプリケーションが使用しているオーディオ エンドポイント デバイスが無効になると、エラー コード [AUDCLNT\_E\_DEVICE\_INVALIDATED](https://learn.microsoft.com/windows/win32/api/audioclient/nf-audioclient-iaudioclient-start) を返す可能性があります。タイトルが、エンドポイント デバイスが何らかの方法で変更された場合に発生する可能性のあるこれらのエラーに正しく対応することを確認してください。WASAPI での無効なデバイス エラーからの回復に関する詳細は、[こちら](https://learn.microsoft.com/windows/win32/coreaudio/recovering-from-an-invalid-device-error)にあります。タイトルがオーディオ デバイスの無効化を正しく処理していることを確認する簡単な方法は、タイトルの実行中にオーディオ設定ページに切り替えて、HDMI デバイスのチャネル数を変更することです。無効化シナリオでは、WASAPI から次のエラー コードが返される可能性があります。

  * AUDCLNT\_E\_DEVICE\_INVALIDATED

  * AUDCLNT\_E\_RESOURCES\_INVALIDATED

  * AUDCLNT\_E\_UNSUPPORTED\_FORMAT

  * AUDCLNT\_E\_ENDPOINT\_CREATE\_FAILED

* タイトルで空間音響を使用する場合は ISAC API と対話することになり、これらもデバイスの無効化に関するエラー コードを返します。ISAC では、オーディオ エンドポイントが変更されたり、再生中に空間音響レンダリング モードが変更されたりすると、無効化が発生します。ISAC での無効なデバイス エラーからの回復に関する詳細は、[こちら](https://learn.microsoft.com/windows/win32/coreaudio/recovering-from-an-invalid-device-error-spatial-sound)にあります。これは、次のメソッドのいずれかが次の値のいずれかを返した場合に発生します。

  メソッド:

  * [ISpatialAudioObjectRenderStreamBase](https://learn.microsoft.com/windows/win32/api/spatialaudioclient/nn-spatialaudioclient-ispatialaudioobjectrenderstreambase)

  * [ISpatialAudioObjectRenderStream](https://learn.microsoft.com/windows/win32/api/spatialaudioclient/nn-spatialaudioclient-ispatialaudioobjectrenderstream)

  * [ISpatialAudioObjectRenderStreamForMetadata](https://learn.microsoft.com/windows/win32/api/spatialaudiometadata/nn-spatialaudiometadata-ispatialaudioobjectrenderstreamformetadata)

  * [ISpatialAudioObjectRenderStreamForHrtf](https://learn.microsoft.com/windows/win32/api/spatialaudiohrtf/nn-spatialaudiohrtf-ispatialaudioobjectrenderstreamforhrtf)

  値:

  * SPTLAUDCLNT\_E\_DESTROYED
  * AUDCLNT\_E\_DEVICE\_INVALIDATED
  * AUDCLNT\_E\_RESOURCES\_INVALIDATED
  * AUDCLNT\_E\_UNSUPPORTED\_FORMAT
  * SPTLAUDCLNT\_E\_INTERNAL

    また、コンソールが空間音響フォーマット (ヘッドフォン向け Windows Sonic など) を使用するように設定されているときにコントローラーからヘッドセットを差し込む/抜くと、これらのイベントが発生する可能性があります。

* オーディオ デバイスの無効化は、[MMDevice API](https://learn.microsoft.com/windows/desktop/coreaudio/mmdevice-api) から [IMMDevice](https://learn.microsoft.com/windows/win32/api/mmdeviceapi/nn-mmdeviceapi-immdevice) が取得された後、いつでも発生する可能性があります。[IMMDevice::Activate](https://learn.microsoft.com/windows/win32/api/mmdeviceapi/nf-mmdeviceapi-immdevice-activate) を含むすべての呼び出しが無効化エラーを返す可能性があります。ゲームが無効化エラーに遭遇するたびに、まず [IMMDeviceEnumerator](https://learn.microsoft.com/windows/win32/api/mmdeviceapi/nf-mmdeviceapi-immdevice-activate) を通じて新しい IMMDevice を取得することで、オーディオ ストリームを再作成する必要があります。

## API の変更

\| ターゲット プラットフォーム | XBOX One Software Development Kit API | Microsoft Game Development Kit (GDK) API の代替 | 説明 |
\| --- | --- | --- | --- | --- | --- | --- | --- | --- |
\| PC および XBOX| ActivateAudioInterfaceAsync および IActivateAudioInterfaceAsync| [IMMDevice::Activate()](https://learn.microsoft.com/windows/desktop/api/mmdeviceapi/nf-mmdeviceapi-immdevice-activate)| [IMMDevice](https://learn.microsoft.com/windows/desktop/api/Mmdeviceapi/nn-mmdeviceapi-immdevice) からオーディオ クライアントを同期的にアクティブ化するため。エンドポイントを列挙するには [MMDevice API](https://learn.microsoft.com/windows/desktop/coreaudio/mmdevice-api) を使用してください。|
\| PC および XBOX| IAudioClient2::RegisterXBoxVolumeNotificationCallback および IAudioClient2::UnregisterXBoxVolumeNotificationCallback| [AudioStateMonitor API](/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor)| これらの API は以前、ゲーム メディア ストリームが減衰されたことをタイトルに通知することを目的としていました。新しい方法は、[AudioStateMonitor API](/reference/audio/audiostatemonitor/interfaces/iaudiostatemonitor) を使用することです。|
\| PC および XBOX| ExcludeFromGameDVRCapture| 該当なし| [AudioClient](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-initialize) を作成する際に、AUDCLNT\_STREAMFLAGS\_EXCLUDE\_FROM\_GAMEDVR\_CAPTURE を StreamFlags 定数として使用してください。XAUDIO2XBOX.H をインクルードしてください。|
\| PC および XBOX| IMMGameDVRDeviceCreator| 該当なし| 非推奨。|
\| XBOX| IMMXBoxDevice| 該当なし| 非推奨。|
\| PC および XBOX| GetPnpId| 該当なし| 非推奨。|
\| XBOX| IMMXboxDeviceEnumerator| [IAudioClient::GetMixFormat](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-getmixformat)| |
\| XBOX| GetHdAudioChannelCounts、RegisterChannelCountNotificationCallback、および UnregisterChannelCountNotificationCallback| [IAudioClient::GetMixFormat](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-getmixformat)| エンドポイント フォーマットが変更されると、ストリームが無効になります。次に [IAudioClient::GetMixFormat](https://learn.microsoft.com/windows/desktop/api/audioclient/nf-audioclient-iaudioclient-getmixformat) を呼び出すと、エンドポイントに適したチャネル数が返されます。|
\| XBOX| DisableBitStreamOut および RestoreBitstreamOut| 該当なし| 非推奨。|
\| PC および XBOX| EnableSpatialAudio| 該当なし| 空間音響を使用するために呼び出しは不要になりました。|
\| PC および XBOX| SetWasapiThreadAffinityMask| 該当なし| 非推奨。XAudio2 を使用するゲームは、[XAudio2CreateWithSharedContexts](/reference/audio/xaudio2xbox/functions/xaudio2createwithsharedcontexts) の *XAudio2Processor* パラメーターを調整して、XAudio2 が実行されるプロセッサを指定することを選択できます。|

## リファレンス API ドキュメント

* [AudioStateMonitor (API 内容)](/reference/audio/audiostatemonitor/audiostatemonitor_members)
* [XAudio2Xbox (API 内容)](/reference/audio/xaudio2xbox/xaudio2xbox_members)
  * 関数
    * [XAudio2CreateWithSharedContexts](/reference/audio/xaudio2xbox/functions/xaudio2createwithsharedcontexts)

## 関連項目

[Microsoft Game Development Kit サンプル一覧](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/development-downloads/gdk-samples-list)


## Related topics

- [AudioStateMonitor](/ja-jp/reference/audio/audiostatemonitor/audiostatemonitor_members.md)
- [XAudio2CreateWithSharedContexts](/ja-jp/reference/audio/xaudio2xbox/functions/xaudio2createwithsharedcontexts.md)
- [XBOX Series X|S オーディオ ハードウェアの概要](/ja-jp/build/console-features/audio/overviews/scarlett-audio.md)
- [オーディオ](/ja-jp/build/console-features/audio/gc-audio-toc.md)
- [WASAPI](/ja-jp/build/console-features/audio/overviews/wasapi-overview.md)
