实现 OnSample 回调

[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

异步读取器通过调用 IWMReaderCallback::OnSample 回调方法,按演示时间顺序将示例传送到控制应用程序。 使用异步读取器创建应用程序时,必须实现 OnSample 来处理未压缩的示例。 通常,为呈现内容而创建的函数或方法将从 OnSample 中调用。

OnSample 回调的典型实现包括以下步骤。

  1. 通过在作为 pSample 传递的缓冲区上调用 INSSBuffer::GetBufferAndLength 来检索包含示例的缓冲区的位置和大小。
  2. 根据输出编号对逻辑进行分支。 输出编号作为 dwOutputNumber 传递到 OnSample
  3. 包括要支持的每个输出编号的呈现逻辑。 如果要呈现来自多个输出的示例,则可能需要同步呈现。

从 ASF 文件提供压缩示例的应用程序需要实现 IWMReaderCallbackAdvanced::OnStreamSample 回调方法。 OnStreamSample 的功能与 OnSample 几乎完全相同,只是它按流编号接收压缩样本,而不是按输出编号接收未压缩的样本。

IWMReaderCallback 接口

IWMReaderCallbackAdvanced 接口

使用异步读取器读取文件

使用回调方法