次の方法で共有


ISpatialAudioClient2 インターフェイス (spatialaudioclient.h)

ISpatialAudioClient2 インターフェイスは ISpatialAudioClient から継承し、大規模なオーディオ バッファーのオフロードのサポートを照会するメソッドを追加します。

継承

ISpatialAudioClient2 インターフェイスは、ISpatialAudioClient インターフェイスから継承されます。

メソッド

ISpatialAudioClient2 インターフェイスには、これらのメソッドがあります。

 
ISpatialAudioClient2::GetMaxFrameCountForCategory

処理パスごとにサポートされている最大フレーム数を取得します。
ISpatialAudioClient2::IsOffloadCapable

ISpatialAudioClient2 が作成されたオーディオ レンダリング エンドポイントがハードウェア オフロードオーディオ処理をサポートしているかどうかを照会します。

注釈

オーディオ オフロードを使用すると、アプリはオーディオ デバイス ドライバーに大きなオーディオ バッファー (通常は 1 ~ 2 秒) を送信できます。 オフロードを使用しない場合、一般的なオーディオ バッファーには 10 ミリ秒のデータのみが含まれるので、追加のオーディオ データを提供するために、アプリを 1 秒あたり約 100 回起動する必要があります。 オフロードされた大きなバッファーを使用すると、特にユーザーが画面をオフにしてオーディオを聴いているシナリオで、バッテリーを節約できます。

この機能を使用するには、オーディオ デバイスのドライバーがオフロードをサポートしている必要があります。 IsOffloadCapable を呼び出してサポートを照会します。 GetMaxFrameCountForCategory を呼び出して、オフロードでサポートされるオーディオ フレームの最大数を決定します。

ISpatialAudioClient2 は Windows 11 (Windows ビルド 22000) で導入されたため、コードでは、インターフェイスを含まない古いバージョンの Windows で実行されているケースを処理する必要があります。 次の例は、ISpatialAudioClientQueryInterface を呼び出して ISpatialAudioClient2 のインスタンスを取得し、取得したインターフェイスが null ではないことを確認してからメソッドを呼び出す方法を示しています。

HRESULT hr;
Microsoft::WRL::ComPtr<IMMDeviceEnumerator> deviceEnum;
Microsoft::WRL::ComPtr<IMMDevice> defaultDevice;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), nullptr, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&deviceEnum);
hr = deviceEnum->GetDefaultAudioEndpoint(EDataFlow::eRender, eMultimedia, &defaultDevice);

Microsoft::WRL::ComPtr<ISpatialAudioClient> spatialAudioClient;
hr = defaultDevice->Activate(__uuidof(ISpatialAudioClient), CLSCTX_INPROC_SERVER, nullptr, (void**)&spatialAudioClient);

Microsoft::WRL::ComPtr<ISpatialAudioClient2> spatialAudioClient2;
hr = spatialAudioClient->QueryInterface(__uuidof(ISpatialAudioClient2), (void**)&spatialAudioClient2);

if (spatialAudioClient2 != nullptr)
{
    BOOL offloadCapable = false;

    // AudioCategory_Media is just for example purposes.
    // Specify the same audio category that you intend specify in the call toISpatialAudioClient::ActivateSpatialAudioStream
    hr = spatialAudioClient2->IsOffloadCapable(AudioCategory_Media, &offloadCapable);
}

IMMDevice にアクセスできない UWP アプリの場合は、ActivateAudioInterfaceAsync を呼び出して ISpatialAudioClient のインスタンスを取得する必要があります。 例については、 WindowsAudioSession のサンプルを参照してください。

要件

要件
サポートされている最小のクライアント Windows ビルド 22000
Header spatialaudioclient.h