IMFTransform::SetOutputBounds 方法 (mftransform.h)

设置客户端输出所需的时间戳范围。

语法

HRESULT SetOutputBounds(
  LONGLONG hnsLowerBound,
  LONGLONG hnsUpperBound
);

parameters

hnsLowerBound

指定最早的时间戳。 媒体基础转换 (MFT) 将接受输入,直到它可以生成此时开始的输出示例:或 ,直到它可以生成此时或稍后结束的示例。 如果没有下限,请使用 值MFT_OUTPUT_BOUND_LOWER_UNBOUNDED

hnsUpperBound

指定最新的时间戳。 MFT 不会生成时间戳晚于此时间的输出示例。 如果没有上限,请使用 值MFT_OUTPUT_BOUND_UPPER_UNBOUNDED

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_NOTIMPL
未实现。
MF_E_TRANSFORM_TYPE_NOT_SET
媒体类型未在一个或多个流上设置。

注解

此方法可用于优化预滚动,尤其是在时间戳之间有间隔的格式或数据必须在同步点开始的格式(如 MPEG-2)中。 调用此方法是可选的,通过 MFT 实现此方法是可选的。 如果 MFT 不实现 方法,则返回值 E_NOTIMPL

如果 MFT 实现此方法,则必须将其输出数据限制为 hnsLowerBoundhnsUpperBound 指定的时间范围。 MFT 会放弃在此范围内生成输出不需要的任何输入数据。 如果示例边界与范围不完全匹配,MFT 应拆分输出样本(如果可能)。 否则,输出样本可能会与范围重叠。

例如,假设输出范围为 100 到 150 毫秒 (ms) ,输出格式是视频,每帧持续 33 毫秒。 时间戳为 67 毫秒的样本与范围 (67 + 33 = 100) 重叠,并作为输出生成。 时间戳为 66 毫秒的样本将被丢弃 (66 + 33 = 99) 。 同样,时间戳为 150 毫秒的样本将作为输出生成,但时间戳为 151 的样本将被丢弃。

如果在包括 mftransform.h 之前定义了 MFT_UNIQUE_METHOD_NAMES ,则此方法将重命名为 MFTSetOutputBounds。 请参阅 创建混合 DMO/MFT 对象

要求

   
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 mftransform.h
Library Mfuuid.lib

另请参阅

IMFTransform

Media Foundation 转换