MFT_OUTPUT_DATA_BUFFER 结构 (mftransform.h)

包含有关媒体基础转换的输出缓冲区的信息。 此结构在 IMFTransform::P rocessOutput 方法中使用。

语法

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

成员

dwStreamID

输出流标识符。 在调用 ProcessOutput 之前,请将此成员设置为有效的流标识符。

异常:如果 IMFTransform::GetStreamIDs 方法返回E_NOTIMPL,MFT 将忽略此成员,并使用 ProcessOutput 方法中 pOutputSamples 数组的索引作为流标识符。 换句话说,它将数组中的第一个元素用于流 0,第二个元素用于流 1,依此类推。 在这种情况下,建议 (但不要求调用方设置 dwStreamID 等于数组索引) 。

pSample

指向 IMFSample 接口的 指针。 在调用 ProcessOutput 之前,请将此成员设置为有效的 IMFSample 指针或 NULL。 有关更多信息,请参见备注。

dwStatus

在调用 ProcessOutput 之前,将此成员设置为零。 当方法返回时,MFT 可能会将 成员设置为等于 _MFT_OUTPUT_DATA_BUFFER_FLAGS 枚举中的值。 否则,MFT 将此成员保留为零。

pEvents

在调用 ProcessOutput 之前,将此成员设置为 NULL。 在输出时,MFT 可能会将此成员设置为有效的 IMFCollection 接口指针。 指针表示包含零个或多个事件的集合。 若要获取每个事件,请调用 IMFCollection::GetElement 并查询 IMFMediaEvent 接口返回的 IUnknown 指针。 当 ProcessOutput 方法返回时,如果指针不为 NULL,则调用方负责释放 IMFCollection 指针。

注解

必须为每个选定的输出流提供 MFT_OUTPUT_DATA_BUFFER 结构。

MRT 可以为输出示例支持两种不同的分配模型:

  • MFT 分配输出示例。
  • 客户端分配输出示例。
若要查找 MFT 支持给定输出流的模型,请调用 IMFTransform::GetOutputStreamInfo 并检查 dwFlags 的值
标志 分配模型
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT 为流分配输出样本。 将此流的 pSample 设置为 NULL
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT 支持这两种分配模型。
两者都不 (默认) 客户端必须为流分配输出样本。
 

ProcessOutput 的行为取决于 pSample 的初始值和 ProcessOutput 方法中 dwFlags 参数的值。

  • 如果 pSampleNULLdwFlags 包含MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER标志,则 MFT 将放弃输出数据。

    限制:此输出流必须具有 MFT_OUTPUT_STREAM_DISCARDABLE 或 MFT_OUTPUT_STREAM_LAZY_READ 标志。 (若要获取输出流的标志,请调用 IMFTransform::GetOutputStreamInfo 方法。)

  • 如果 pSampleNULLdwFlags 不包含MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER,则 MFT 会提供输出数据的示例。 MFT 将 pSample 设置为指向它提供的示例。 MFT 可以分配新样本或重复使用输入样本。

    限制:此输出流必须具有 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 或 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 标志。

  • 如果 pSample 为非 NULL,则 MFT 使用调用方提供的示例。

    限制:此输出流不得具有MFT_OUTPUT_STREAM_PROVIDES_SAMPLES标志。

任何其他组合无效,并导致 ProcessOutput 返回E_INVALIDARG。

每次调用 ProcessOutput 可以生成零个或多个事件,每个输出流最多可以生成一个样本。

要求

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

另请参阅

IMFTransform::P rocessOutput

媒体基础结构

媒体基础转换