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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
未实现。 |
|
媒体类型未在一个或多个流上设置。 |
注解
此方法可用于优化预滚动,尤其是在时间戳之间有间隔的格式或数据必须在同步点开始的格式(如 MPEG-2)中。 调用此方法是可选的,通过 MFT 实现此方法是可选的。 如果 MFT 不实现 方法,则返回值 E_NOTIMPL。
如果 MFT 实现此方法,则必须将其输出数据限制为 hnsLowerBound 和 hnsUpperBound 指定的时间范围。 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 |