無効なデバイス エラーからの復旧 (空間サウンド)
ISpatialAudioClient、ISpatialAudioObjectRenderStream、ISpatialAudioObject など、Microsoft Spatial Audio API のメソッドの多くは、クライアント アプリケーションが使用しているオーディオ エンドポイント デバイスが無効になった場合、またはエンドポイントで空間オーディオ レンダリング形式が変更された場合に、エラー コードを返します。 これらのエラー コードは、エンドポイント デバイスが取り外されていること、またはオーディオ ハードウェアや関連するハードウェア リソースが再構成、無効化、削除されていること、あるいは空間オーディオ モードが変更されたかその他の方法で使用できなくなったことを示しています。 多くの場合、アプリケーションはこのエラーから回復できます。
無効なデバイス エラーを示すエラー コードは次のとおりです。
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- SPTLAUDCLNT_E_INTERNAL
無効なデバイス エラーを処理するための方法
無効なデバイス エラーから回復するための推奨される方法は、アプリケーションが内部要件に基づいて特定のデバイスを自動的に選択するのか、ユーザーが使用可能なデバイスの一覧からデバイスを明示的に選択できるのかによって異なります。
既定のオーディオ デバイス
アプリケーションが既定のデバイスを自動的に選択する場合は、次の手順を使用して回復します。
- ISpatialAudioObjectRenderStream インターフェイスと ISpatialAudioClient インターフェイス、およびレンダリングに使用されるその他の空間オーディオ インターフェイスを解除します。
- IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出して、現在の既定のオーディオ デバイスを取得します。
- オーディオ デバイスで ISpatialAudioClient のアクティブ化を試みます。
- ISpatialAudioObjectRenderStream をアクティブ化 します。
具体的に選択されたオーディオ デバイス
アプリケーションが特定のオーディオ デバイスを選択した場合は、次の手順を使用して回復します。
- レンダリングに使用される ISpatialAudioObjectRenderStream インターフェイスとその他の空間オーディオ インターフェイスを解除しますが、ISpatialAudioClient は解除しないでください。
- 現在の ISpatialAudioClient インスタンスを使用して、ISpatialAudioObjectRenderStream のアクティブ化を行います。
上記の両方の方法で、ISpatialAudioObjectRenderStreamForMetadata インターフェイスまたは ISpatialAudioObjectRenderStreamForHrtf インターフェイスを使用するアプリケーションにも同じ手順を適用できます。 上記の手順で単純に、ISpatialAudioObjectRenderStream をメタデータまたは Hrtf インターフェイスに置き換えます。
関連トピック
- [無効なデバイス エラーからの回復](recovering-from-an-invalid-device-error.md)[ストリームの管理](stream-management.md)