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 |