配置 WM ASF 编写器 (QASF)

创建 WM ASF 编写器 筛选器时,会自动使用默认WMProfile_V80_256Video配置文件对其进行配置。 由于此配置文件使用 Windows Media Audio 和 Windows Media Video 版本 8 编解码器,因此建议创建一个使用 Windows Media 9 系列编解码器的自定义配置文件,然后使用 IConfigAsfWriter::ConfigureFilterUsingProfile 方法将其 IWMProfile 指针传递给筛选器。 必须先将筛选器添加到图中,然后才能配置筛选器,然后才能将其连接到上游筛选器。 筛选器使用配置文件来确定要写入的 Windows Media Format 文件的类型、要设置的输入引脚数以及引脚可以接受的媒体类型。

只要新配置文件不需要任何其他输入引脚,筛选器就可以在其输入引脚连接时重置配置文件。 例如,如果将配置文件从仅输入音频配置文件更改为双输入音频和视频配置文件,则只有音频引脚将重新连接所有输入数据都必须带有时间戳,并且必须连接所有输入引脚,然后才能运行或暂停筛选器。 这意味着,如果使用具有音频流和视频流的配置文件配置筛选器,筛选器将创建音频和视频输入引脚,并且必须连接两个引脚,然后才能运行筛选器。

添加数据单元扩展

可以在连接筛选器之前或之后为数据单元扩展(例如 SMPTE 时间代码)配置配置文件流,前提是遵循以下操作顺序:

  1. 使用 IWMStreamConfig2::AddDataUnitExtension 将一个或多个数据单元扩展添加到流。
  2. 调用 WMProfile::ReconfigStream 以更新配置文件。
  3. 使用更新的配置文件对象调用 IConfigAsfWriter::ConfigureFilterUsingProfile
  4. 找到视频输入引脚,并调用其 IAMWMBufferPass::SetNotify 方法来注册应用程序定义的 IAMWMBufferPassCallback 接口。

当图形运行时,将为每个帧调用 IAMWMBufferPassCallback::Notify 方法,并且你将能够使用其 INSSBuffer3 接口方法获取和设置示例的属性。

注意

在某些处理器密集型方案(如反向远程视频)中,WM ASF 编写器可能需要比某些下游筛选器支持的更多输出缓冲区。 例如,DV 解码器不会接受多个缓冲区用于其输出引脚,在某些情况下,AVI 解压缩器也是如此。 如果在尝试连接到这些筛选器时或在运行图形时遇到问题,可能需要编写一个中间筛选器,该筛选器接受其输出引脚上任意数量的缓冲区。