参数信息

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 个样本。

媒体参数