参数信息

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

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

  • mpType 成员指示参数值的数据类型。 为了提高效率,所有参数都实现为 32 位浮点值。 MP_TYPE枚举定义是将值解释为整数、浮点值、布尔值还是枚举 (整数系列) 。
  • mopCaps 成员指示此参数支持的曲线。 如果数据类型为布尔值或枚举,则参数可以支持的唯一曲线是“跳转”。
  • 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 每秒样本数

 

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

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

媒体参数