Compatibilidad con la posición de audio
Información general
Los dispositivos se pueden usar en diferentes posturas. Para una tableta, la posición básicamente significa la orientación que se mantiene, como vertical u horizontal. La experiencia de audio para estos dispositivos se puede optimizar para posturas específicas. Por ejemplo, los puntos de conexión de audio pueden reasignar canales izquierdo/derecho para una experiencia estéreo adecuada en diferentes orientaciones. También es posible calibrar los micrófonos para la supresión de ruido, la cancelación de eco, etc. en función de las ubicaciones modificadas del altavoz o micrófono en los cambios de posición.
Compatibilidad con el sistema operativo Windows
La posición de audio se admite en Windows 11, versión 22000 y posteriores.
Architecture
Los escenarios relacionados con la posición de los puntos de conexión de audio se basan en las respuestas de Shell a los cambios de posición. Shell funciona con sensores y entradas de usuario (por ejemplo, bloqueo de orientación) para determinar la posición general del sistema. La pila de audio del sistema operativo recibe notificaciones de posición de Shell e informa a los puntos de conexión de audio que admiten la DDI de posición de audio.
La pila de audio no modifica el contenido de la secuencia de audio en respuesta a los cambios de posición. En su lugar, la pila de audio informa al controlador de audio de estos cambios. La expectativa es que los componentes de audio IHV se adapten a estos cambios con el procesamiento de señales implementado en hardware (DSP) o como APO de software.
En el caso de los equipos de escritorio, los escenarios relacionados con la posición de los puntos de conexión de audio se alinean con la pantalla. La pila de audio del sistema operativo recibe notificaciones de posición de la pantalla e informa a los puntos de conexión de audio que admiten la DDI de posición de audio.
En el diagrama siguiente se muestra la relación y el flujo de control entre los componentes implicados en el control de los cambios de posición de los dispositivos de audio.
Componentes
Shell y sensores del sistema operativo
Shell supervisa la información del sensor proporcionada por los controladores de sensor. Junto con la información del sensor, el Shell considera las preferencias del usuario, como el bloqueo de orientación y las invalidaciones de la aplicación, para determinar la posición del sistema.
Pila de audio del sistema operativo
La pila de audio del sistema operativo recibe información de posición de Shell. Cuando se produce un cambio en la posición del sistema, la pila de audio informa a los puntos de conexión de audio compatibles con la posición mediante una propiedad KS.
Controlador de audio IHV y APO
El controlador de audio IHV junto con un APO opcional controla los cambios de posición de la pila de audio del sistema operativo. Solo los dispositivos de audio incorporados ubicados directamente en el chasis principal de la máquina que se ven afectados por los cambios de posición deben indicar la compatibilidad con la posición.
Requisitos de compatibilidad con puntos de conexión de audio
En la tabla siguiente se muestran los tipos de punto de conexión de audio que deben y no deben proporcionar compatibilidad con la posición.
Tipo de punto de conexión de audio | Compatibilidad con la posición |
---|---|
altavoces de Built-In | Sí |
Built-In micrófono/matriz de micrófonos | Sí |
Wired-Headset | No |
HDMI/DisplayPort | No |
Audio USB externo | No |
Bluetooth Audio | No |
Requisitos del controlador de audio
La información de posición se proporciona al controlador de audio IHV en forma de orientación. Se espera que el controlador de audio IHV tenga conocimientos implícitos sobre el factor de forma del dispositivo, y debe ser capaz de identificar la orientación predeterminada y las posiciones relativas del altavoz o micrófono. Esta información se puede recuperar de ACPI o de otro mecanismo de IHV.
Estructuras y constantes de datos
PROPSETID
Este es el GUID que se usa para el identificador del conjunto de propiedades KS.
KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F
ID. DE PROPIEDAD
Este es el valor que se usa para el id. de KSPROPERTY.
KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1
DESCRIPCIÓN DE LA PROPIEDAD: AUDIOPOSTURE_ORIENTATION
Esta propiedad especifica la orientación actual del sistema. La orientación se representa mediante los grados de rotación a partir de la orientación predeterminada. La información de orientación está sincronizada con el shell del sistema operativo, que incluye el bloqueo de orientación de usuario o aplicación. El controlador de audio recibe esta enumeración al controlar la solicitud de propiedad Set para KSPROPERTY_AUDIOPOSTURE_ORIENTATION.
typedef enum
{
AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;
Para obtener más información, consulte la enumeración AUDIOPOSTURE_ORIENTATION.
CONTROL DE PROPIEDADES
El controlador de audio debe implementar KSPROPSETID_AudioPosture: KSPROPERTY_AUDIOPOSTURE_ORIENTATION como una propiedad de anclaje a la que se accede a través del identificador de filtro. La propiedad debe admitirse en el pin de puente, es decir, la patilla que representa el punto de conexión de hardware para el punto de conexión.
SOPORTE TÉCNICO BÁSICO: KSPROPERTY_TYPE_BASICSUPPORT
El controlador de audio debe devolver compatibilidad con las marcas Set y access.
SET: KSPROPERTY_TYPE_SET
El controlador de audio recibe un puntero para AUDIOPOSTURE_ORIENTATION como parámetro de valor de solicitud de propiedad. En respuesta a esta solicitud de propiedad, el controlador de audio puede aplicar los cambios de hardware o software necesarios para el nuevo estado de posición. Si se devuelve correctamente, se indica que el controlador ha terminado de procesar el cambio. Si un APO de IHV necesita recibir información de posición del controlador de audio, los módulos de audio se pueden usar para proporcionar el mecanismo de notificación. Los controladores deben almacenar en caché el valor para que se pueda aplicar al salir de poca potencia o hibernación.
AUDIOPOSTURE_ORIENTATION Orientation = *((AUDIOPOSTURE_ORIENTATION*)PropertyRequest->Value);
switch (Orientation)
{
case AUDIOPOSTURE_ORIENTATION_NOTROTATED:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
case AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE:
//Cache and process the orientation
.
.
}