Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Depois de definir uma topologia para representar os caminhos de dados e nós de controle em seus dispositivos, a próxima etapa é definir os intervalos de dados para cada pino configurável. Um pino configurável pode ser criado, configurado e conectado a um fluxo de onda ou MIDI sob controle de software. Em contraste, uma conexão física ou pino de ponte existe implicitamente e não pode ser criado nem configurado sob controle de software.
Antes de conectar um pino configurável para servir como um coletor ou fonte para um fluxo de onda ou MIDI, o pino deve ser configurado para lidar com o formato de dados para o fluxo. Normalmente, o pino pode ser configurado para aceitar um dos vários formatos de fluxo. Por exemplo, um pino de saída de onda PCM pode aceitar os seguintes intervalos de parâmetros de fluxo PCM:
Taxas de amostragem de 11,025 kHz, 22,05 kHz, 44,1 kHz e 48 kHz
Tamanhos de amostra de 8, 16, 24 e 32 bits
Qualquer número de canais de 1 a 8
Para cada tipo de pino configurável, um driver de miniporta descreve os vários formatos de dados de fluxo que o pino pode manipular. Esses intervalos de parâmetros podem ser especificados como uma matriz de descritores de intervalo de dados, conforme mostrado no exemplo de código a seguir.
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
}
};
Observe que a PinDataRangesPcm matriz no exemplo anterior contém um único descritor de intervalo de dados do tipo KSDATARANGE_AUDIO. Mais geralmente, uma matriz de intervalo de dados pode conter um número arbitrário de descritores. Por exemplo, um pino de saída de onda não-PCM pode suportar os formatos AC-3-over-S/PDIF e WMA Pro-over-S/PDIF. Cada um destes dois formatos é especificado por um descritor de intervalo de dados separado. Assim, a matriz de intervalo de dados do pino conteria pelo menos duas estruturas KSDATARANGE_AUDIO.
Um pin configurável que suporta o formato de fluxo de música de uma aplicação que utiliza o DirectMusic ou as funções midiInXxx e midiOutXxx multimédia do Windows, utiliza um descritor de intervalo de dados do tipo KSDATARANGE_MUSIC.
O driver de porta obtém as informações do intervalo de dados do driver de miniporta e usa essas informações, sempre que possível, para lidar com solicitações de informações sobre os formatos de dados que cada pino pode suportar. No caso de um pino com um intervalo de dados PCM simples, o driver de porta é capaz de lidar com as solicitações de interseção para esse pino. Em uma solicitação de interseção, um cliente fornece um conjunto de intervalos de dados que representam possíveis formatos de dados para um fluxo. Se possível, o manipulador de interseção do driver de porta seleciona um formato de dados específico dos intervalos de dados na solicitação que também se enquadra nos intervalos de dados do pino. Este formato representa uma intersecção dos dois conjuntos de intervalos de dados. Assim, tanto o cliente como o pino podem processar um fluxo com este formato. Para intervalos de dados mais complexos, o driver de miniporta pode fornecer seu próprio manipulador de interseção, que o driver de porta usa em vez de seu próprio manipulador padrão. O manipulador de interseção do driver de miniporta pode permitir quaisquer requisitos de formato que possam ser difíceis de expressar para o driver de porta como uma matriz de intervalos de dados. Para mais informações, consulte Data-Intersection Manipuladores e Dados de Áudio de Múltiplos Canais e Ficheiros WAVE.