Share via


Interface ISpatialAudioClient2 (spatialaudioclient.h)

A interface ISpatialAudioClient2 herda de ISpatialAudioClient e adiciona métodos para consultar o suporte para descarregar buffers de áudio grandes.

Herança

A interface ISpatialAudioClient2 herda da interface ISpatialAudioClient.

Métodos

A interface ISpatialAudioClient2 tem esses métodos.

 
ISpatialAudioClient2::GetMaxFrameCountForCategory

Obtém a contagem máxima de quadros com suporte por passagem de processamento.
ISpatialAudioClient2::IsOffloadCapable

Consulta se o ponto de extremidade de renderização de áudio no qual o ISpatialAudioClient2 foi criado dá suporte ao processamento de áudio descarregado por hardware.

Comentários

O descarregamento de áudio permite que um aplicativo envie um buffer de áudio grande (normalmente de 1 a 2 segundos) para o driver do dispositivo de áudio. Sem descarregamento, um buffer de áudio típico contém apenas 10ms de dados, exigindo que o aplicativo seja despertado cerca de 100 vezes por segundo para fornecer dados de áudio adicionais. O uso de buffers grandes descarregados pode fornecer economia de bateria, especialmente para o cenário em que o usuário está ouvindo áudio com a tela desligada.

Para usar esse recurso, o driver do dispositivo de áudio deve dar suporte ao descarregamento. Consulte para obter suporte chamando IsOffloadCapable. Determine o número máximo de quadros de áudio com suporte para descarregamento chamando GetMaxFrameCountForCategory.

ISpatialAudioClient2 foi introduzido no Windows 11 (Windows Build 22000), portanto, seu código deve lidar com o caso em que ele está sendo executado em uma versão mais antiga do Windows que não inclui a interface . O exemplo a seguir ilustra o uso da chamada de QueryInterface no ISpatialAudioClient para tentar obter uma instância de ISpatialAudioClient2 e verificar se a interface recuperada não é nula antes de chamar seus métodos.

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

Para aplicativos UWP que não têm acesso ao IMMDevice, você deve obter uma instância de ISpatialAudioClient chamando ActivateAudioInterfaceAsync. Para obter um exemplo, consulte o exemplo WindowsAudioSession.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Build 22000
Cabeçalho spatialaudioclient.h