Método IAudioClient3::InitializeSharedAudioStream (audioclient.h)
Inicializa um fluxo compartilhado com a periodicidade especificada.
Sintaxe
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Parâmetros
[in] StreamFlags
Tipo: DWORD
Sinalizadores para controlar a criação do fluxo. O cliente deve definir esse parâmetro como 0 ou como OR bit a bit de uma ou mais das constantes de AUDCLNT_STREAMFLAGS_XXX com suporte ou constantes AUDCLNT_SESSIONFLAGS_XXX. As constantes de AUDCLNT_STREAMFLAGS_XXX com suporte para esse parâmetro ao usar esse método são:
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Tipo: UINT32
Periodicidade solicitada pelo cliente. Esse valor deve ser um múltiplo integral do valor retornado no parâmetro pFundamentalPeriodInFrames para IAudioClient3::GetSharedModeEnginePeriod. PeriodInFrames também deve ser maior ou igual ao valor retornado em pMinPeriodInFrames e menor ou igual ao valor retornado em pMaxPeriodInFrames.
[in] pFormat
Tipo: const WAVEFORMATEX*
Ponteiro para um descritor de formato. Esse parâmetro deve apontar para um descritor de formato válido do tipo WAVEFORMATEX ou WAVEFORMATEXTENSIBLE. Para obter mais informações, consulte a seção Comentários para IAudioClient::Initialize.
[in, optional] AudioSessionGuid
Tipo: LPCGUID
Ponteiro para um GUID de sessão. Esse parâmetro aponta para um valor GUID que identifica a sessão de áudio à qual o fluxo pertence. Se o GUID identificar uma sessão que foi aberta anteriormente, o método adicionará o fluxo a essa sessão. Se o GUID não identificar uma sessão existente, o método abrirá uma nova sessão e adicionará o fluxo a essa sessão. O fluxo permanece um membro da mesma sessão durante seu tempo de vida. Definir esse parâmetro como NULL é equivalente a passar um ponteiro para um valor de GUID_NULL.
Retornar valor
Tipo: HRESULT
Se o método for bem-sucedido, retornará S_OK. Se falhar, os códigos de retorno possíveis incluem, mas não se limitam a, os valores mostrados na tabela a seguir.
Código de retorno | Descrição |
---|---|
|
O objeto IAudioClient já está inicializado. |
|
O sinalizador AUDCLNT_STREAMFLAGS_LOOPBACK está definido, mas o dispositivo de ponto de extremidade é um dispositivo de captura, não um dispositivo de renderização. |
|
Indica que a duração da passagem de processo excedeu o uso máximo da CPU. O mecanismo de áudio controla o uso da CPU mantendo o número de vezes que a duração do processo excede o uso máximo da CPU. O uso máximo da CPU é calculado como um percentual da periodicidade do mecanismo. O valor percentual é o valor de limitação da CPU do sistema (dentro do intervalo de 10% e 90%). Se esse valor não for encontrado, o valor padrão de 40% será usado para calcular o uso máximo da CPU. |
|
O dispositivo de ponto de extremidade de áudio foi desconectado ou o hardware de áudio ou os recursos de hardware associados foram reconfigurados, desabilitados, removidos ou indisponíveis para uso. |
|
O dispositivo de ponto de extremidade já está em uso. O dispositivo está sendo usado no modo exclusivo ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. |
|
O cliente especificou AUDCLNT_STREAMOPTIONS_MATCH_FORMAT ao chamar IAudioClient2::SetClientProperties, mas o formato do mecanismo de áudio foi bloqueado por outro cliente. Nesse caso, você pode chamar IAudioClient2::SetClientProperties sem especificar a opção de formato de correspondência e, em seguida, usar o formato atual do mecanismo de áudio. |
|
O cliente especificou AUDCLNT_STREAMOPTIONS_MATCH_FORMAT ao chamar IAudioClient2::SetClientProperties, mas a periodicidade do mecanismo de áudio foi bloqueada por outro cliente. Nesse caso, você pode chamar IAudioClient2::SetClientProperties sem especificar a opção de formato de correspondência e, em seguida, usar a periodicidade atual do mecanismo de áudio. |
|
O método falhou ao criar o ponto de extremidade de áudio para a renderização ou o dispositivo de captura. Isso poderá ocorrer se o dispositivo de ponto de extremidade de áudio tiver sido desconectado ou se o hardware de áudio ou os recursos de hardware associados tiverem sido reconfigurados, desabilitados, removidos ou não estiverem disponíveis para uso. |
|
Indica que o período de dispositivo solicitado especificado com PeriodInFrames não é um múltiplo integral da periodicidade fundamental do mecanismo de áudio, é menor que o período mínimo do mecanismo ou é maior que o período máximo do mecanismo. Obtenha os valores de periodicidade com suporte do mecanismo chamando IAudioClient3::GetSharedModeEnginePeriod. |
|
O mecanismo de áudio (modo compartilhado) ou o dispositivo de ponto de extremidade de áudio (modo exclusivo) não dá suporte ao formato especificado. |
|
O serviço de áudio do Windows não está em execução. |
|
O parâmetro pFormat é NULL. |
|
O parâmetro pFormat aponta para uma descrição de formato inválida; ou o sinalizador AUDCLNT_STREAMFLAGS_LOOPBACK está definido, mas ShareMode não é igual a AUDCLNT_SHAREMODE_SHARED; ou o sinalizador AUDCLNT_STREAMFLAGS_CROSSPROCESS está definido, mas ShareMode é igual a AUDCLNT_SHAREMODE_EXCLUSIVE.
Uma chamada anterior para SetClientProperties foi feita com uma categoria inválida para fluxos de áudio/renderização. |
|
Sem memória. |
Comentários
Ao contrário de IAudioClient::Initialize, esse método não permite que você especifique um tamanho de buffer. O tamanho do buffer é calculado com base na periodicidade solicitada com o parâmetro PeriodInFrames . É responsabilidade do aplicativo cliente garantir que os exemplos de áudio sejam transferidos para dentro e para fora do buffer em tempo hábil.
Os clientes de áudio devem marcar valores permitidos para o parâmetro PeriodInFrames chamando IAudioClient3::GetSharedModeEnginePeriod. O valor de PeriodInFrames deve ser um múltiplo integral do valor retornado no parâmetro pFundamentalPeriodInFrames . PeriodInFrames também deve ser maior ou igual ao valor retornado em pMinPeriodInFrames e menor ou igual ao valor de pMaxPeriodInFrames.
Por exemplo, para um formato de 44100 kHz, GetSharedModeEnginePeriod pode retornar:
pDefaultPeriodInFrames = 448 quadros (cerca de 10,16 milissegundos)
pFundamentalPeriodInFrames = 4 quadros (cerca de 0,09 milissegundos)
pMinPeriodInFrames = 48 quadros (cerca de 1,09 milissegundos)
pMaxPeriodInFrames = 448 quadros (o mesmo que o padrão)
Os valores permitidos para o parâmetro PeriodInFrames para InitializeSharedAudioStream incluiriam 48 e 448. Eles também incluiriam coisas como 96 e 128.
Eles NÃO incluiriam 4 (que é menor que o valor mínimo permitido) ou 98 (que não é um múltiplo do fundamental) ou 1000 (que é maior que o valor máximo permitido).
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2016 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | audioclient.h |