Bagikan melalui


Antarmuka ISpatialAudioClient2 (spatialaudioclient.h)

Antarmuka ISpatialAudioClient2 mewarisi dari ISpatialAudioClient dan menambahkan metode untuk meminta dukungan untuk membongkar buffer audio besar.

Warisan

Antarmuka ISpatialAudioClient2 mewarisi dari antarmuka ISpatialAudioClient.

Metode

Antarmuka ISpatialAudioClient2 memiliki metode ini.

 
ISpatialAudioClient2::GetMaxFrameCountForCategory

Mendapatkan jumlah bingkai maksimum yang didukung per lulus pemrosesan.
ISpatialAudioClient2::IsOffloadCapable

Kueri apakah titik akhir penyajian audio yang dibuat ISpatialAudioClient2 mendukung pemrosesan audio yang dibongkar perangkat keras.

Keterangan

Offloading audio memungkinkan aplikasi mengirimkan buffer audio besar (biasanya 1 hingga 2 detik) ke driver perangkat audio. Tanpa offload, buffer audio biasa hanya berisi 10ms data, mengharuskan aplikasi dibangunkan sekitar 100 kali per detik untuk menyediakan data audio tambahan. Menggunakan buffer besar yang dibongkar dapat memberikan penghematan baterai, terutama untuk skenario di mana pengguna mendengarkan audio dengan layar mati.

Untuk menggunakan fitur ini, driver untuk perangkat audio harus mendukung offloading. Kueri untuk dukungan dengan memanggil IsOffloadCapable. Tentukan jumlah maksimum bingkai audio yang didukung untuk offloading dengan memanggil GetMaxFrameCountForCategory.

ISpatialAudioClient2 diperkenalkan di Windows 11 (Windows Build 22000), sehingga kode Anda harus menangani kasus di mana ia berjalan pada versi Windows yang lebih lama yang tidak menyertakan antarmuka. Contoh berikut mengilustrasikan menggunakan pemanggilan QueryInterface di ISpatialAudioClient untuk mencoba mendapatkan instans ISpatialAudioClient2 dan memeriksa bahwa antarmuka yang diambil tidak null sebelum memanggil metodenya.

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);
}

Untuk aplikasi UWP yang tidak memiliki akses ke IMMDevice, Anda harus mendapatkan instans ISpatialAudioClient dengan memanggil ActivateAudioInterfaceAsync. Misalnya, lihat sampel WindowsAudioSession.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Build 22000
Header spatialaudioclient.h