配置编解码器 DSO
本主题介绍配置编解码器 DSO 的过程。 每个编解码器都有特定的过程,但此处介绍了所有人通用的信息。
配置 DMO 输入和输出
每个 DMO 都支持特定的输入和输出类型。 可以通过为输入调用 IMediaObject::GetInputType ,为输出调用 IMediaObject::GetOutputType 来检索输入和输出支持的类型。 可以通过对任一方法进行重复调用来枚举支持的格式,每次调用都会递增类型索引。 当索引超过最终支持类型的索引时,调用将返回DMO_E_NO_MORE_ITEMS。
对于视频编解码器,仅为给定媒体子类型枚举一个输出类型或输入类型。 对于音频编解码器,枚举每个单独的受支持类型。 有关单个编解码器支持的类型的详细信息,请参阅 使用音频 和使用 视频。
为输入和输出流配置媒体类型后,通过分别调用 IMediaObject::SetInputType 和 IMediaObject::SetOutputType 来设置它们。 如果指定的类型无效,这两种方法都会返回 DMO_E_TYPE_NOT_ACCEPTED 。
为编码配置编解码器 DSO
所有 Windows Media 音频和视频编解码器都支持各种编码功能。 这些功能通常通过使用 IPropertyBag 接口的方法在 DMO 上设置属性来配置。 某些属性是使用专用编解码器接口配置的。 编解码器 对象部分为每个编解码器列出了这些接口。
配置编码 DMO 的一般操作顺序如下:
- 使用 IPropertyBag 的方法根据需要配置编解码器功能。
- 如果需要,请使用编解码器 DMO 接口配置其他功能。
- 配置输入和输出类型。 类型的配置顺序因各个编解码器而异。 有关详细信息,请参阅 使用音频 和 处理视频。
为解码配置编解码器 DSO
解码比编码更简单,因为支持的解码器功能更少。
配置解码 DMO 的一般操作顺序如下:
- 使用 IPropertyBag 的方法根据需要配置解码器功能。
- 将输入类型设置为用于编码器输出的类型。
- 配置输出类型。 支持的输出类型对于不同的输入是不同的。
注意
对于解码器输入,请务必使用与编码器输出相同的媒体类型。 这是因为 Windows 媒体音频和视频编解码器使用带有额外数据的媒体格式。 此数据追加到DMO_MEDIA_TYPE结构的 pbFormat 成员指向的结构, (通常为 VIDEOINFOHEADER 或 WAVEFORMATEX) 。 对于某些类型,额外数据是枚举编码器输出类型的一部分。 其他类型要求手动追加此数据。 如果没有扩展格式数据,则无法解码压缩的内容。
相关主题