完整和部分媒体类型

本主题介绍完整的媒体类型和部分媒体类型之间的差异。

完整的媒体类型

完整的 媒体类型是完全定义媒体流格式的媒体类型。 给定完整的媒体类型,管道组件可以分析与媒体类型关联的流数据,且没有歧义。

对于未压缩的格式,以下主题定义完整媒体类型所需的属性:

对于压缩的(或 编码)流,完整的媒体类型的定义由编解码器定义。 但是,如果压缩流已知任何未压缩的类型属性,则应将这些值包含在压缩流的媒体类型中。 例如,如果帧大小已知,请在媒体类型上设置 MF_MT_FRAME_SIZE 属性,即使从技术上说,压缩的流没有帧大小。

部分媒体类型

部分 媒体类型缺少完整媒体类型所需的一个或多个属性。 枚举可能的媒体类型时,Microsoft Media Foundation 组件可能会保留一个未设置的值,以指示它可以处理任何值。 例如,视频处理器可能会使 MF_MT_FRAME_RATE 属性未设置,以指示它可以处理任何帧速率,并在必要时执行帧速率转换。

如果创建部分媒体类型,仍应包含尽可能多的信息。 但是,媒体类型不得包含不确定的信息。 信息缺失比错误更好。

至少,部分媒体类型应仅包含两个属性:MF_MT_MAJOR_TYPEMF_MT_SUBTYPE

有时媒体基础组件必须提供完整的媒体类型:

  • 媒体源必须提供完整的输出类型。
  • 设置输入类型后,解码器必须提供完整的输出类型。 在设置输入类型之前,解码器可能会提供部分输出类型。
  • 设置输出类型后,编码器必须提供完整的输入类型。 在设置输出类型之前,编码器可能会提供部分输入类型。

媒体类型