信封段
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
参数曲线由一个或多个信封段组成,使用 MP_ENVELOPE_SEGMENT 结构定义。 此结构包含以下信息:
- 开始时间和结束时间。
- 起始值和结束值。
- 曲线类型(线性、正方形等)。
- 可选标志,不久将进行说明。
客户端通过调用 IMediaParams::AddEnvelope 方法并传入 MP_ENVELOPE_SEGMENT 结构的数组,将信封段添加到参数中。 客户端应在调用该方法之前将段排序为升序时间顺序。 当 DMO 处理数据时,可以想象参数在每一个信封段上行驶,就像在一系列山上行驶的汽车一样。 IMediaParams::GetParam 方法返回最新的值。
两个相邻段之间可以有一个差距。 在间隔期间,参数保留其以前的值,如下所示:
- 在第一段之前,该值为中性值。
- 在段之间,该值是上一段的结束值。
- 在最后一段之后,该值将保留在该段的结束值。
- 如果客户端刷新 DMO,该值将还原为中性值。
可以通过设置以下标志之一来更改段:
- MPF_ENVLP_BEGIN_CURRENTVAL。 DMO 使用参数的最新值作为段的起始值。 这可能是中性值,也可能是上一段的结束值。 DMO 将忽略 MP_ENVELOPE_SEGMENT 结构的 valStart 成员。
- MPF_ENVLP_BEGIN_NEUTRALVAL。 DMO 使用参数的中性值作为段的起始值。 它忽略 valStart 。
可以将这些标志视为抓住段的起点并将其向上或向下移动,而结束值保持不变。 该段将相应地“拉伸”。
相关主题