Especificar intervalos de datos de patillas
Después de definir una topología para representar las rutas de acceso de datos y los nodos de control de los dispositivos, el siguiente paso consiste en definir los intervalos de datos para cada patilla configurable. Se puede crear, configurar y conectar un pin configurable a una secuencia wave o MIDI bajo el control de software. En cambio, existe implícitamente una conexión física o un pin de puente y no se puede crear ni configurar bajo control de software.
Antes de conectar un pin configurable para que actúe como receptor o origen para una secuencia wave o MIDI, el pin debe configurarse para controlar el formato de datos de la secuencia. Normalmente, el pin se puede configurar para aceptar uno de varios formatos de secuencia. Por ejemplo, un pin de salida de onda de PCM podría aceptar los siguientes intervalos de parámetros de secuencia de PCM:
Velocidades de muestreo de 11,025 kHz, 22,05 kHz, 44,1 kHz y 48 kHz
Tamaños de muestra de 8, 16, 24 y 32 bits
Cualquier número de canales de 1 a 8
Para cada tipo de patilla configurable, un controlador de minipuerto describe los distintos formatos de datos de flujo que el pin puede controlar. Estos intervalos de parámetros se pueden especificar como una matriz de descriptores de intervalo de datos, como se muestra en el ejemplo de código siguiente.
static KSDATARANGE_AUDIO PinDataRangesPcm[] =
{
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
8, // Maximum number of channels
8, // Minimum number of bits-per-sample
32, // Maximum number of bits-per-channel
11025, // Minimum rate
48000 // Maximum rate
}
};
Tenga en cuenta que la PinDataRangesPcm
matriz del ejemplo anterior contiene un único descriptor de intervalo de datos de tipo KSDATARANGE_AUDIO. Por lo general, una matriz de intervalos de datos puede contener un número arbitrario de descriptores. Por ejemplo, un pin de salida de onda que no es PCM puede admitir formatos AC-3-over-S/PDIF y WMA Pro-over-S/PDIF. Cada uno de estos dos formatos se especifica mediante un descriptor de intervalo de datos independiente. Por lo tanto, la matriz de intervalos de datos del pin contendrá al menos dos estructuras KSDATARANGE_AUDIO.
Un pin configurable que admite el formato de transmisión de música desde una aplicación que usa DirectMusic o las funciones multimedia midiInXxx y midiOutXxx de Windows usa un descriptor de intervalo de datos de tipo KSDATARANGE_MUSIC.
El controlador de puerto obtiene la información del intervalo de datos del controlador de minipuerto y usa esta información, siempre que sea posible, para controlar las solicitudes de información sobre los formatos de datos que cada patilla puede admitir. En el caso de un pin con un intervalo de datos PCM simple, el controlador de puerto puede controlar las solicitudes de intersección de ese pin. En una solicitud de intersección, un cliente proporciona un conjunto de intervalos de datos que representan posibles formatos de datos para una secuencia. Si es posible, el controlador de intersección del controlador de puerto elige un formato de datos determinado de los intervalos de datos de la solicitud que también se encuentra dentro de los intervalos de datos de su patilla. Este formato representa una intersección de los dos conjuntos de intervalos de datos. Por lo tanto, tanto el cliente como el pin pueden procesar una secuencia con este formato. Para intervalos de datos más complejos, el controlador de minipuerto puede proporcionar su propio controlador de intersección, que el controlador de puerto usa en lugar de su propio controlador predeterminado. El controlador de intersección del controlador de minipuerto puede permitir cualquier requisito de formato que pueda ser difícil de expresar al controlador de puerto como una matriz de intervalos de datos. Para obtener más información, vea Controladores de intersección de datos y varios datos de audio de canal y archivos WAVE.