_MFT_OUTPUT_DATA_BUFFER_FLAGS 枚举 (mftransform.h)

定义 IMFTransform::P rocessOutput 方法的标志。

语法

typedef enum _MFT_OUTPUT_DATA_BUFFER_FLAGS {
  MFT_OUTPUT_DATA_BUFFER_INCOMPLETE = 0x1000000,
  MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE = 0x100,
  MFT_OUTPUT_DATA_BUFFER_STREAM_END = 0x200,
  MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE = 0x300
} ;

常量

 
MFT_OUTPUT_DATA_BUFFER_INCOMPLETE
值: 0x1000000
MFT 仍然可以从此流生成输出,而无需再接收任何输入。 再次调用 ProcessOutput 以处理下一批输入数据。
MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE
值: 0x100
此输出流上的格式已更改,或者此流有新的首选格式。 设置此标志后,MFT 会清除流的媒体类型。 ProcessOutput 方法返回MF_E_TRANSFORM_STREAM_CHANGE,并且不生成任何流的输出。 对 IMFTransform::P rocessInputProcessOutput 的进一步调用将失败,直到客户端设置新的媒体类型。
MFT_OUTPUT_DATA_BUFFER_STREAM_END
值: 0x200
MFT 已删除此输出流。 输出流必须具有 MFT_OUTPUT_STREAM_REMOVABLE 标志。 (请参阅 IMFTransform::GetOutputStreamInfo.)

当 MFT 删除输出流时,MFT 将在生成最后一个输出示例后下次调用 ProcessOutput 时返回此状态代码。 当 MFT 返回此状态代码时,它不会修改MFT_OUTPUT_DATA_BUFFER结构的 pSample 成员中包含的任何示例,也不会在 pSampleNULL 时分配新示例。

返回此状态代码后,此输出流的流标识符不再有效。 客户端在调用 ProcessOutput 时不应再为该流提供MFT_OUTPUT_DATA_BUFFER结构。

当流结束时, ProcessOutput 方法不会返回 MF_E_TRANSFORM_STREAM_CHANGE ,除非另一个需要此返回代码的流发生了更改。
MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE
值: 0x300
没有可供此流使用的示例。 如果 MFT 具有多个在不同时间生成数据的输出流,则可以设置此标志。 它为每个尚未准备好生成数据的流设置此标志。 它不会修改MFT_OUTPUT_DATA_BUFFER结构的 pSample 成员中包含的输出示例,也不会分配 pSampleNULL 的新样本。

如果没有流准备好生成输出,则 MFT 不会设置此标志。 相反, ProcessOutput 方法返回MF_E_TRANSFORM_NEED_MORE_INPUT。

注解

此枚举中的值不是位标志,因此不应将其与按位 OR 组合。 此外,调用方应使用相等运算符(而不是按位 AND)测试这些标志:

// Correct.
if (Buffer.dwStatus == MFT_OUTPUT_DATA_BUFFER_STREAM_END)
{
    ...
}

// Incorrect.
if ((Buffer.dwStatus & MFT_OUTPUT_DATA_BUFFER_STREAM_END) != 0)
{
    ...
}

要求

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

另请参阅

媒体基础枚举

媒体基础转换