完整媒体类型和部分媒体类型

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

完整的媒体类型

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

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

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

部分媒体类型

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

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

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

有时,Media Foundation 组件必须提供完整的媒体类型:

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

媒体类型