配置编解码器 DSO

本主题介绍配置编解码器 DSO 的过程。 每个编解码器都有特定的过程,但此处介绍了所有人通用的信息。

配置 DMO 输入和输出

每个 DMO 都支持特定的输入和输出类型。 可以通过为输入调用 IMediaObject::GetInputType ,为输出调用 IMediaObject::GetOutputType 来检索输入和输出支持的类型。 可以通过对任一方法进行重复调用来枚举支持的格式,每次调用都会递增类型索引。 当索引超过最终支持类型的索引时,调用将返回DMO_E_NO_MORE_ITEMS。

对于视频编解码器,仅为给定媒体子类型枚举一个输出类型或输入类型。 对于音频编解码器,枚举每个单独的受支持类型。 有关单个编解码器支持的类型的详细信息,请参阅 使用音频 和使用 视频

为输入和输出流配置媒体类型后,通过分别调用 IMediaObject::SetInputTypeIMediaObject::SetOutputType 来设置它们。 如果指定的类型无效,这两种方法都会返回 DMO_E_TYPE_NOT_ACCEPTED

为编码配置编解码器 DSO

所有 Windows Media 音频和视频编解码器都支持各种编码功能。 这些功能通常通过使用 IPropertyBag 接口的方法在 DMO 上设置属性来配置。 某些属性是使用专用编解码器接口配置的。 编解码器 对象部分为每个编解码器列出了这些接口。

配置编码 DMO 的一般操作顺序如下:

  1. 使用 IPropertyBag 的方法根据需要配置编解码器功能。
  2. 如果需要,请使用编解码器 DMO 接口配置其他功能。
  3. 配置输入和输出类型。 类型的配置顺序因各个编解码器而异。 有关详细信息,请参阅 使用音频处理视频

为解码配置编解码器 DSO

解码比编码更简单,因为支持的解码器功能更少。

配置解码 DMO 的一般操作顺序如下:

  1. 使用 IPropertyBag 的方法根据需要配置解码器功能。
  2. 将输入类型设置为用于编码器输出的类型。
  3. 配置输出类型。 支持的输出类型对于不同的输入是不同的。

注意

对于解码器输入,请务必使用与编码器输出相同的媒体类型。 这是因为 Windows 媒体音频和视频编解码器使用带有额外数据的媒体格式。 此数据追加到DMO_MEDIA_TYPE结构的 pbFormat 成员指向的结构, (通常为 VIDEOINFOHEADERWAVEFORMATEX) 。 对于某些类型,额外数据是枚举编码器输出类型的一部分。 其他类型要求手动追加此数据。 如果没有扩展格式数据,则无法解码压缩的内容。

 

使用编解码器 DME