IMFTransform::SetOutputBounds 方法 (mftransform.h)

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

语法

HRESULT SetOutputBounds(
  LONGLONG hnsLowerBound,
  LONGLONG hnsUpperBound
);

参数

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 转换