_MFT_OUTPUT_STREAM_INFO_FLAGS 枚举 (mftransform.h)

描述媒体基础转换 (MFT) 的输出流。

语法

typedef enum _MFT_OUTPUT_STREAM_INFO_FLAGS {
  MFT_OUTPUT_STREAM_WHOLE_SAMPLES = 0x1,
  MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
  MFT_OUTPUT_STREAM_DISCARDABLE = 0x8,
  MFT_OUTPUT_STREAM_OPTIONAL = 0x10,
  MFT_OUTPUT_STREAM_PROVIDES_SAMPLES = 0x100,
  MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES = 0x200,
  MFT_OUTPUT_STREAM_LAZY_READ = 0x400,
  MFT_OUTPUT_STREAM_REMOVABLE = 0x800
} ;

常量

 
MFT_OUTPUT_STREAM_WHOLE_SAMPLES
值: 0x1
每个媒体示例 (IMFSample 接口) MFT 的输出数据都包含完整、不间断的数据单位。 数据单位的定义取决于媒体类型:对于未压缩的视频,为视频帧;对于压缩数据,为压缩数据包;表示未压缩音频(单个音频帧)。

对于未压缩的音频格式,始终隐含此标志。 (设置标志是有效的,但不是必需的。) 未压缩的音频帧绝不应跨越多个媒体样本。
MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER
值: 0x2
每个输出示例只包含针对 MFT_OUTPUT_STREAM_WHOLE_SAMPLES 标志定义的一个数据单元。

如果存在此标志,则MFT_OUTPUT_STREAM_WHOLE_SAMPLES标志也必须存在。

输出未压缩音频的 MFT 不应设置此标志。 为了提高效率,它应一次输出多个音频帧。
MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE
值: 0x4
所有输出样本的大小相同。
MFT_OUTPUT_STREAM_DISCARDABLE
值: 0x8
如果客户端请求,MFT 可以放弃此输出流的输出数据。 若要放弃输出,请在 IMFTransform::P rocessOutput 方法中设置MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER标志。
MFT_OUTPUT_STREAM_OPTIONAL
值: 0x10
此输出流是可选的。 客户端可以通过不设置媒体类型或设置 NULL 媒体类型来取消选择流。 取消选择可选流时,它不会生成任何输出数据。
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES
值: 0x100
MFT 通过内部分配或直接在输入样本上操作来提供此流的输出样本。 MFT 无法使用客户端为此流提供的输出示例。

如果未设置此标志,MFT 必须将 cbSize 设置为 MFT_OUTPUT_STREAM_INFO 结构中的非零值,以便客户端可以分配正确的缓冲区大小。 有关详细信息,请参阅 IMFTransform::GetOutputStreamInfo。 此标志不能与 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 标志组合使用。
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES
值: 0x200
MFT 可以为此流提供输出示例,也可以使用客户端分配的样本。 此标志不能与 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 标志组合使用。

如果 MFT 未设置此标志或MFT_OUTPUT_STREAM_PROVIDES_SAMPLES标志,则客户端必须为此输出流分配示例。 MFT 不会提供自己的示例。
MFT_OUTPUT_STREAM_LAZY_READ
值: 0x400
MFT 不要求客户端处理此流的输出。 如果客户端继续发送输入数据而不从此流获取输出,则 MFT 只会放弃以前的输入。
MFT_OUTPUT_STREAM_REMOVABLE
值: 0x800
MFT 可能会在流式处理期间删除此输出流。 此标志通常适用于多路复用器,其中输入数据包含可在流式处理期间启动和停止的多个流。 有关详细信息,请参阅 IMFTransform::P rocessOutput

注解

在客户端在 MFT 上设置媒体类型之前,唯一保证准确的标志是MFT_OUTPUT_STREAM_OPTIONAL标志。 对于所有其他标志,客户端应首先在每个非可选流上设置媒体类型。

MFT_OUTPUT_STREAM_DISCARDABLE和MFT_OUTPUT_STREAM_LAZY_READ标志为 MFT 放弃输出数据的方式定义了不同的行为。

  • MFT_OUTPUT_STREAM_DISCARDABLE:仅当客户端使用 MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER 标志调用 ProcessOutput 时,MFT 才会放弃输出数据。 客户端调用 ProcessInput 时,MFT 永远不会放弃数据。
  • MFT_OUTPUT_STREAM_LAZY_READ:如果客户端继续调用 ProcessInput 而不从此流收集输出,MFT 最终会放弃输出。 如果所有输出流都具有 MFT_OUTPUT_STREAM_LAZY_READ 标志,则 MFT 永远不会拒绝更多输入数据。
如果未设置这两个标志,则 MFT 永远不会放弃输出数据。

要求

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

另请参阅

MFT_OUTPUT_STREAM_INFO

媒体基础枚举

媒体基础转换