IMFASFMultiplexer::P rocessSample 方法 (wmcontainer.h)

将输入样本传送到多路复用器。

语法

HRESULT ProcessSample(
  [in] WORD      wStreamNumber,
  [in] IMFSample *pISample,
  [in] LONGLONG  hnsTimestampAdjust
);

参数

[in] wStreamNumber

样本所属流的流号。

[in] pISample

指向输入样本的 IMFSample 接口的指针。 输入示例包含要转换为 ASF 数据包的媒体数据。 如果可能,此示例的时间戳应准确无误。

[in] hnsTimestampAdjust

要应用于示例时间戳的调整。 如果调用方要在 pISample 上转移样本时间,则使用此参数。 如果应提前推送时间戳,则此值应为正值;如果应向后推送时间戳,则此值应为负。 此时间戳将添加到 pISample 上的采样时间,生成的时间由多路复用器使用,而不是原始采样时间。 如果不需要调整,请将此值设置为 0。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
MF_E_NOTACCEPTING
等待从多路复用器检索的数据包太多。 调用 IMFASFMultiplexer::GetNextPacket 以获取数据包。
MF_E_BANDWIDTH_OVERRUN
处理的示例违反了为 ASF ContentInfo 对象中的流指定的带宽限制。 生成此错误时,将删除示例。
MF_E_INVALIDSTREAMNUMBER
wStreamNumber 中传递的值无效。
MF_E_LATE_SAMPLE
输入媒体样本的呈现时间早于发送时间。

注解

应用程序将示例传递给 ProcessSample,ASF 多路复用器在内部将它们排队,直到它们准备好放入 ASF 数据包中。 调用 IMFASFMultiplexer::GetNextPacket 以获取 ASF 数据包。

每次调用 ProcessSample 后,在循环中调用 GetNextPacket 以获取所有可用的数据包。 有关代码示例,请参阅 生成新的 ASF 数据包

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wmcontainer.h
Library Mfuuid.lib

另请参阅

生成新的 ASF 数据包

IMFASFMultiplexer

IMFSample