Compartir a través de


Diferencias entre las versiones de DDI de audio HD

El DDI de audio HD está disponible en tres versiones ligeramente diferentes que se definen de la siguiente manera:

  • Una versión de línea base de la DDI de audio HD, que se define mediante la estructura HDAUDIO_BUS_INTERFACE . La mayoría de los controladores de funciones para códecs de audio y módem solo requieren las funcionalidades que proporciona esta versión DDI. Esta versión está disponible a través de los controladores de bus de audio HD que se proporcionan con Windows XP y Windows Vista.

  • Una versión mejorada de la DDI de audio HD definida por la estructura HDAUDIO_BUS_INTERFACE_V2 . Esta versión de DDI proporciona la funcionalidad adicional necesaria para admitir la notificación de eventos controlada por DMA con flexibilidad. Está disponible en Windows Vista y versiones posteriores de Windows.

  • Versión modificada de la DDI de audio HD definida por la estructura HDAUDIO_BUS_INTERFACE_BDL . Esta versión admite los requisitos de unos controladores de audio y módem relativamente pocos que deben tener control adicional sobre la configuración de listas de descriptores de búfer (BDL) para las operaciones DMA. Esta versión de DDI está disponible para Windows XP y versiones posteriores de Windows. Sin embargo, use el HDAUDIO_BUS_INTERFACE o la versión de HDAUDIO_BUS_INTERFACE_V2 DDI en su lugar. .

En las tres estructuras, los nombres y tipos de los cinco primeros miembros coinciden con los de los cinco miembros de la estructura INTERFACE . Para obtener información sobre los valores de estos miembros, vea Obtener un objeto DDI de HDAUDIO_BUS_INTERFACE, Obtener un objeto DDI de HDAUDIO_BUS_INTERFACE_V2 u Obtener un objeto DDI de HDAUDIO_BUS_INTERFACE_BDL.

Las rutinas de las tres versiones de hd Audio DDI realizan las siguientes tareas:

  • Transfiera comandos a códecs y recupere las respuestas a esos comandos.

  • Asigne y configure motores DMA para transferir los datos en secuencias de representación y captura.

  • Cambie el estado de flujo de uno o varios motores DMA a en ejecución, en pausa, detenido o restablecido.

  • Reserve el ancho de banda de vínculo para las secuencias de representación y captura.

  • Proporcione acceso directo al registro del reloj y a los registros de posición de vínculo.

  • Notificar a los clientes las respuestas no solicitadas de los códecs.

  • Registre eventos de kernel para que puedan recibir notificaciones de progreso de DMA.

Las versiones HDAUDIO_BUS_INTERFACE y HDAUDIO_BUS_INTERFACE_BDL de la DDI tienen las siguientes diferencias:

Cuando un cliente llama a la rutina AllocateDmaBuffer en la primera versión de DDI, el controlador del bus de audio HD:

  • Asigna un búfer DMA y un BDL para que lo use un motor DMA.

  • Inicializa el BDL.

  • Configura el motor DMA para usar el búfer y BDL.

En cambio, la rutina AllocateContiguousDmaBuffer de la segunda versión de DDI asigna almacenamiento para un búfer DMA y BDL, pero se basa en el llamador para inicializar el BDL. La rutina SetupDmaEngineWithBdl configura el motor DMA para usar el búfer y el BDL inicializado por el autor de la llamada.

El BDL contiene la lista de bloques de memoria física en la cola de dispersión o recopilación del motor DMA. Al llamar a SetupDmaEngineWithBdl para configurar el BDL, el cliente puede especificar los puntos del flujo de datos en el que el motor DMA genera interrupciones. El cliente lo hace estableciendo el bit de interrupción al finalizar (IOC) en entradas BDL seleccionadas. Con esta funcionalidad, el cliente puede controlar con precisión el tiempo de las interrupciones del IOC que se producen durante el procesamiento de la secuencia de audio. Los controladores de módem de audio también usan la segunda versión DDI para obtener información precisa del reloj del sistema.

Para obtener más información, consulte Especificación de audio de alta definición de Intel.

Sin embargo, casi todos los clientes usarán la versión HDAUDIO_BUS_INTERFACE de la DDI. Solo algunos clientes que requieren un control preciso sobre el tiempo de las interrupciones usarán la versión de HDAUDIO_BUS_INTERFACE_BDL.