参数信息

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

IMediaParamInfo::GetParamInfo 方法返回描述参数的 MP_PARAMINFO 结构。 此结构包含以下信息:

  • mpType 成员指示参数值的数据类型。 为了提高效率,所有参数都实现为 32 位浮点值。 MP_TYPE 枚举定义是将值解释为整数、浮点值、布尔值还是枚举(整数系列)。
  • mopCaps 成员指示此参数支持的曲线。 如果数据类型为布尔值或枚举,则参数可支持的唯一曲线是“Jump”。
  • mpdMinValuempdMaxValue 成员定义此参数的最小值和最大值。 此参数的任何曲线必须属于此范围。
  • mpdNeutralValue 成员是参数的默认值。
  • szLabel 成员是参数的名称,szUnitText 成员是参数度量单位的名称。 示例可能包括“Volume”和“Decibels”或“Frequency”和“kHz”。这两个字符串都是英语的,并且永远不会本地化。 DMO 可以通过 IMediaParamInfo::GetParamText 方法提供本地化版本。

每个参数的信息在 DMO 的整个生存期内保持不变。 因此,客户端可以查询此信息一次,然后将其缓存。

时间格式

客户端必须时间戳输入数据,以便 DMO 可以计算相应的参数值。 默认情况下,时间戳表示 100 纳秒的单位,也称为 引用时间。 但是,对于每个应用程序来说,此时间单位并不方便,因此 DMO 可以选择支持其他时间格式。 时间格式由 GUID 标识。

GUID 描述
GUID_TIME_REFERENCE 参考时间
GUID_TIME_MUSIC 每个季度的零件说明(PPQN)
GUID_TIME_SAMPLES 每秒样本数

 

建议第三方根据需要定义自己的时间格式。 但是,所有 DMO 都必须支持引用时间。 这提供了每个人都可以使用的标准基线。 若要确定 DMO 支持的时间格式,请调用 IMediaParamInfo::GetNumTimeFormats 方法。 若要枚举支持的格式,请调用 IMediaParamInfo::GetSupportedTimeFormat 方法。

若要设置时间格式,请调用 IMediaParams::SetTimeFormat。 此方法指定时间格式 GUID 和 时间数据,即每个时钟周期的单位数。 例如,如果时间格式是每秒样本,并且时间数据为 32,则时间戳值为 10 对应于 320 个样本。

媒体参数