Método IAudioClient3::InitializeSharedAudioStream (audioclient.h)
Inicializa una secuencia compartida con la periodicidad especificada.
Sintaxis
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Parámetros
[in] StreamFlags
Tipo: DWORD
Marcas para controlar la creación de la secuencia. El cliente debe establecer este parámetro en 0 o en el or bit a bit de uno o varios de los AUDCLNT_STREAMFLAGS_XXX constantes compatibles o AUDCLNT_SESSIONFLAGS_XXX constantes. Las constantes de AUDCLNT_STREAMFLAGS_XXX admitidas para este parámetro cuando se usa este método son:
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Tipo: UINT32
Periodicidad solicitada por el cliente. Este valor debe ser un múltiplo entero del valor devuelto en el parámetro pFundamentalPeriodInFrames a IAudioClient3::GetSharedModeEnginePeriod. PeriodInFrames también debe ser mayor o igual que el valor devuelto en pMinPeriodInFrames y menor o igual que el valor devuelto en pMaxPeriodInFrames.
[in] pFormat
Tipo: const WAVEFORMATEX*
Puntero a un descriptor de formato. Este parámetro debe apuntar a un descriptor de formato válido de tipo WAVEFORMATEX o WAVEFORMATEXTENSIBLE. Para obtener más información, vea la sección Comentarios de IAudioClient::Initialize.
[in, optional] AudioSessionGuid
Tipo: LPCGUID
Puntero a un GUID de sesión. Este parámetro apunta a un valor GUID que identifica la sesión de audio a la que pertenece la secuencia. Si el GUID identifica una sesión que se ha abierto anteriormente, el método agrega la secuencia a esa sesión. Si el GUID no identifica una sesión existente, el método abre una nueva sesión y agrega la secuencia a esa sesión. La secuencia sigue siendo miembro de la misma sesión durante su vigencia. Establecer este parámetro en NULL equivale a pasar un puntero a un valor de GUID_NULL.
Valor devuelto
Tipo: HRESULT
Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, los códigos de retorno posibles incluyen, entre otros, los valores que se muestran en la tabla siguiente.
Código devuelto | Descripción |
---|---|
|
El objeto IAudioClient ya se ha inicializado. |
|
La marca AUDCLNT_STREAMFLAGS_LOOPBACK está establecida, pero el dispositivo de punto de conexión es un dispositivo de captura, no un dispositivo de representación. |
|
Indica que la duración del paso del proceso superó el uso máximo de CPU. El motor de audio realiza un seguimiento del uso de CPU manteniendo el número de veces que la duración del paso del proceso supera el uso máximo de CPU. El uso máximo de CPU se calcula como porcentaje de la periodicidad del motor. El valor porcentual es el valor de limitación de CPU del sistema (dentro del intervalo del 10 % y el 90 %). Si no se encuentra este valor, se usa el valor predeterminado del 40 % para calcular el uso máximo de CPU. |
|
El dispositivo de punto de conexión de audio se ha desconectado o el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado o dejado de estar disponible para su uso. |
|
El dispositivo de punto de conexión ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió que usara el dispositivo en modo exclusivo. |
|
El cliente especificó AUDCLNT_STREAMOPTIONS_MATCH_FORMAT al llamar a IAudioClient2::SetClientProperties, pero otro cliente ha bloqueado el formato del motor de audio. En este caso, puede llamar a IAudioClient2::SetClientProperties sin especificar la opción de formato de coincidencia y, a continuación, usar el formato actual del motor de audio. |
|
El cliente especificó AUDCLNT_STREAMOPTIONS_MATCH_FORMAT al llamar a IAudioClient2::SetClientProperties, pero otro cliente ha bloqueado la periodicidad del motor de audio. En este caso, puede llamar a IAudioClient2::SetClientProperties sin especificar la opción de formato de coincidencia y, a continuación, usar la periodicidad actual del motor de audio. |
|
El método no pudo crear el punto de conexión de audio para la representación o el dispositivo de captura. Esto puede ocurrir si el dispositivo de punto de conexión de audio se ha desconectado o el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado o si no están disponibles para su uso. |
|
Indica que el período de dispositivo solicitado especificado con PeriodInFrames no es un múltiplo entero de la periodicidad fundamental del motor de audio, es más corto que el período mínimo del motor o es mayor que el período máximo del motor. Obtenga los valores de periodicidad admitidos del motor mediante una llamada a IAudioClient3::GetSharedModeEnginePeriod. |
|
El motor de audio (modo compartido) o el dispositivo de punto de conexión de audio (modo exclusivo) no admite el formato especificado. |
|
El servicio de audio de Windows no se está ejecutando. |
|
El parámetro pFormat es NULL. |
|
El parámetro pFormat apunta a una descripción de formato no válida; o la marca AUDCLNT_STREAMFLAGS_LOOPBACK está establecida, pero ShareMode no es igual a AUDCLNT_SHAREMODE_SHARED; o la marca AUDCLNT_STREAMFLAGS_CROSSPROCESS está establecida, pero ShareMode es igual a AUDCLNT_SHAREMODE_EXCLUSIVE.
Se realizó una llamada anterior a SetClientProperties con una categoría no válida para las secuencias de audio/representación. |
|
Memoria insuficiente |
Comentarios
A diferencia de IAudioClient::Initialize, este método no permite especificar un tamaño de búfer. El tamaño del búfer se calcula en función de la periodicidad solicitada con el parámetro PeriodInFrames . Es responsabilidad de la aplicación cliente asegurarse de que las muestras de audio se transfieren dentro y fuera del búfer de forma oportuna.
Los clientes de audio deben comprobar los valores permitidos para el parámetro PeriodInFrames mediante una llamada a IAudioClient3::GetSharedModeEnginePeriod. El valor de PeriodInFrames debe ser un múltiplo entero del valor devuelto en el parámetro pFundamentalPeriodInFrames . PeriodInFrames también debe ser mayor o igual que el valor devuelto en pMinPeriodInFrames y menor o igual que el valor de pMaxPeriodInFrames.
Por ejemplo, para un formato de 44100 kHz, GetSharedModeEnginePeriod podría devolver:
pDefaultPeriodInFrames = 448 fotogramas (aproximadamente 10,16 milisegundos)
pFundamentalPeriodInFrames = 4 fotogramas (aproximadamente 0,09 milisegundos)
pMinPeriodInFrames = 48 fotogramas (aproximadamente 1,09 milisegundos)
pMaxPeriodInFrames = 448 fotogramas (igual que el predeterminado)
Los valores permitidos para el parámetro PeriodInFrames para InitializeSharedAudioStream incluirían 48 y 448. También incluirían cosas como 96 y 128.
NO incluirían 4 (que es menor que el valor mínimo permitido) o 98 (que no es múltiplo del fundamental) o 1000 (que es mayor que el valor máximo permitido).
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2016 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | audioclient.h |