_MFT_INPUT_STREAM_INFO_FLAGS 枚举 (mftransform.h)

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

语法

typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
  MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
  MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
  MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
  MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
  MFT_INPUT_STREAM_REMOVABLE = 0x200,
  MFT_INPUT_STREAM_OPTIONAL = 0x400,
  MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;

常量

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

对于未压缩的音频格式,始终隐含此标志。 (设置标志是有效的,但不是必需的。) 未压缩的音频帧绝不应跨越多个媒体样本。
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER
值: 0x2
客户端作为输入提供的每个媒体示例都必须包含为MFT_INPUT_STREAM_WHOLE_SAMPLES标志定义的一个数据单元。

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

处理未压缩音频的 MFT 不应设置此标志。 为了提高效率,MFT 应接受包含多个音频帧的缓冲区。
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE
值: 0x4
所有输入样本的大小必须相同。
大小在 MFT_INPUT_STREAM_INFO 结构的 cbSize 成员中给出。 MFT 必须提供此值。 在处理期间,MFT 应验证输入样本的大小,并可能会删除大小不正确的样本。
MFT_INPUT_STREAM_HOLDS_BUFFERS
值: 0x8
调用 IMFTransform::P rocessOutput 后,MFT 可能保存一个或多个输入样本。 如果存在此标志,则 MFT_INPUT_STREAM_INFO 结构的 hnsMaxLatency 成员会提供最大延迟,cbMaxLookahead 成员提供最大 lookahead 字节数。
MFT_INPUT_STREAM_DOES_NOT_ADDREF
值: 0x100
在 IMFTransform::P rocessInput 方法返回后,MFT 不保存输入样本。 它会在 ProcessInput 方法返回之前发布示例。

如果此标志不存在,MFT 可能会保留传递给 ProcessInput 方法的样本的引用计数。 在 MFT 释放示例的 IMFSample 指针之前,客户端不得重复使用或删除缓冲区内存。

如果此标志不存在,则不保证 MFT 在输入样本上保留引用计数。 即使 MFT 未设置此标志,MFT 也能在 ProcessInput 中发布输入示例。 但是,设置此标志可能会使客户端能够优化重新使用缓冲区的方式。

如果 MFT 在从 ProcessInput 返回后保留输入样本,则不应设置此标志。
MFT_INPUT_STREAM_REMOVABLE
值: 0x200
可以通过调用 IMFTransform::D eleteInputStream 删除此输入流。
MFT_INPUT_STREAM_OPTIONAL
值: 0x400
此输入流是可选的。 转换可以在不接收来自此流的输入的情况下生成输出。 调用方可以通过不设置媒体类型或设置 NULL 媒体类型来取消选择流。 转换中的每个输入流都是可选的,但必须至少选择一个输入才能生成输出。
MFT_INPUT_STREAM_PROCESSES_IN_PLACE
值: 0x800
MFT 可以执行就地处理。 在此模式下,MFT 直接修改输入缓冲区。 当客户端调用 ProcessOutput 时,在具有匹配流标识符的输出流中返回传递到此流的相同示例。 此标志意味着 MFT 保留输入缓冲区,因此此标志不能与MFT_INPUT_STREAM_DOES_NOT_ADDREF标志组合使用。

如果存在此标志,MFT 必须为与此输入流对应的输出流设置MFT_OUTPUT_STREAM_PROVIDES_SAMPLES或MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES标志。 (请参阅 IMFTransform::GetOutputStreamInfo) 。

注解

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

在默认处理模型中,MFT 保存它在 ProcessInput 中接收的样本的引用计数。 它不会立即在 ProcessInput 中处理示例。 调用 ProcessOutput 时,MFT 会生成输出数据,然后放弃输入示例。 定义了此模型上的以下变体:

  • 如果 MFT 永远不会保留 ProcessInputProcessOutput 之间的输入样本,则可以设置MFT_INPUT_STREAM_DOES_NOT_ADDREF。
  • 如果 MFT 在下一次调用 ProcessOutput 之后保留一些输入样本,则可以设置MFT_INPUT_STREAM_HOLDS_BUFFERS。

要求

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

另请参阅

MFT_INPUT_STREAM_INFO

Media Foundation 枚举

Media Foundation 转换