指定引脚数据范围
定义拓扑以表示设备中的数据路径和控制节点后,下一步是为每个可配置引脚定义 数据范围 。 可配置的引脚可以在软件控制下创建、配置和连接到波形或 MIDI 流。 相比之下,物理连接或网桥引脚存在隐式存在,也不能在软件控制下创建或配置。
在连接可配置的引脚以用作波形或 MIDI 流的接收器或源之前,必须配置该引脚来处理流的数据格式。 通常,可以将引脚配置为接受多种流格式之一。 例如,PCM 波形输出引脚可能接受以下 PCM 流参数范围:
采样率为 11.025 kHz、22.05 kHz、44.1 kHz 和 48 kHz
样本大小为 8、16、24 和 32 位
从 1 到 8 的任意数量的通道
对于每种可配置引脚类型,微型端口驱动程序描述了引脚可以处理的各种流数据格式。 可以将这些参数范围指定为数据范围描述符数组,如以下代码示例所示。
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
}
};
请注意,前面的示例中的PinDataRangesPcm
数组包含KSDATARANGE_AUDIO类型的单个数据范围描述符。 更通常,数据范围数组可以包含任意数量的描述符。 例如,非 PCM 波输出引脚可能同时支持 AC-3-over-S/PDIF 和 WMA Pro-over-S/PDIF 格式。 这两种格式中的每一种都由单独的数据范围描述符指定。 因此,引脚的数据范围数组至少包含两个KSDATARANGE_AUDIO结构。
支持来自使用 Direct音乐 或 Windows 多媒体 midiInXxx 和 midiOutXxx 函数的应用程序的音乐流格式的可配置引脚使用KSDATARANGE_MUSIC类型的数据范围描述符。
端口驱动程序从微型端口驱动程序获取数据范围信息,并尽可能使用此信息来处理有关每个引脚可以支持的数据格式的信息的请求。 对于具有简单 PCM 数据范围的引脚,端口驱动程序能够处理该引脚的交集请求。 在交集请求中,客户端提供一组表示流可能的数据格式的数据范围。 如果可能,端口驱动程序的交集处理程序将从请求中的数据范围中选择一种特定数据格式,该格式也属于其引脚的数据范围。 此格式表示两组数据范围的交集。 因此,客户端和引脚都可以处理采用此格式的流。 对于更复杂的数据范围,微型端口驱动程序可以提供其自己的交集处理程序,端口驱动程序随后使用该处理程序而不是自己的默认处理程序。 微型端口驱动程序的交集处理程序可以允许任何格式要求,这些要求可能难以以数据范围数组的形式表达到端口驱动程序。 有关详细信息,请参阅 数据交集处理程序 和 多声道音频数据和 WAVE 文件。