6. 编解码器特定考虑因素 (Codec-Specific Considerations)
SDP 允许使用 [RFC6236] 中描述的机制进行与编解码器无关的首选视频分辨率指示。WebRTC 端点可以 (MAY) 发送 "a=imageattr" 属性来指示它们希望接收的最大分辨率。发送者应该 (SHOULD) 解释并遵守此属性,通过将编码分辨率限制为指示的最大尺寸,因为接收者可能无法处理更高的分辨率。
此外,编解码器可能包括编解码器特定的方法来发出关于分辨率、帧率和比特率的最大接收器能力的信号。
除非在 SDP 中另有信号,否则视频流的接收者必须 (MUST) 能够以至少 20 fps 的速率解码至少 320 像素 x 240 像素的分辨率的视频。这些值是根据 [HSUP1] 中的建议选择的。
鼓励编码器至少支持上述相同分辨率和帧率的媒体编码。
6.1. VP8
对于 [RFC6386] 中定义的 VP8 编解码器,端点必须 (MUST) 支持 [RFC7741] 中定义的有效载荷格式。
除了 [RFC6236] 机制之外,VP8 编码器必须 (MUST) 限制它们发送的流以符合接收者在相应的 max-fr 和 max-fs SDP 属性中指示的值。
除非另有信号,否则使用 VP8 的实现必须 (MUST) 以隐含的 1:1 (方形) 纵横比编码和解码像素。
6.2. H.264
对于 [H264] 编解码器,端点必须 (MUST) 支持 [RFC6184] 中定义的有效载荷格式。此外,它们必须 (MUST) 支持受限基线配置级别 1.2 (Constrained Baseline Profile Level 1.2),并且应该 (SHOULD) 支持 H.264 受限高配置级别 1.3 (Constrained High Profile Level 1.3)。
H.264 编解码器的实现使用了各种各样的可选参数。为了提高互操作性,指定了以下参数设置:
packetization-mode: 必须 (MUST) 支持打包模式 1 (Packetization-mode 1)。可以 (MAY) 协商和使用其他模式。
profile-level-id: 实现必须 (MUST) 在 SDP 中包含此参数,并且必须 (MUST) 在接收时解释它。
max-mbps, max-smbps, max-fs, max-cpb, max-dpb, 和 max-br:
这些参数允许实现指定它们可以支持 H.264 的某些特性,其速率和值高于其级别 (通过 profile-level-id 设置) 所发出的信号。实现可以 (MAY) 在其 SDP 中包含这些参数,但它们应该 (SHOULD) 在接收时解释它们,允许它们发送尽可能高质量的视频。
sprop-parameter-sets: H.264 允许序列和图像信息以带内 (In-Band) 和带外 (Out-of-Band) 方式发送。WebRTC 实现必须 (MUST) 以带内方式发出此信息的信号。这意味着 WebRTC 实现不得 (MUST NOT) 在它们生成的 SDP 中包含此参数。
H.264 编解码器可以 (MAY) 发送并且必须 (MUST) 支持补充增强信息 (Supplemental Enhancement Information, SEI) "填充有效载荷 (Filler Payload)" 和 "完整帧冻结 (Full Frame Freeze)" 消息的正确解释。"完整帧冻结" 消息用于视频切换 MCU 中,以确保在各种输入流之间切换时稳定的解码显示图像。
当未将视频方向 (CVO) RTP 头扩展的使用作为 SDP 的一部分发出信号时,H.264 实现可以 (MAY) 发送并且应该 (SHOULD) 支持显示方向 SEI 消息 (Display Orientation SEI Messages) 的正确解释。
实现可以 (MAY) 发送并响应 "由 Rec. ITU-T T.35 注册的用户数据 (User Data Registered by Rec. ITU-T T.35)" 和 "未注册的用户数据 (User Data Unregistered)" 消息。即使它们不对这些消息采取行动,实现也必须 (MUST) 准备好接收此类消息而不会产生任何不良影响。
除非另有信号,否则使用 H.264 的实现必须 (MUST) 以隐含的 1:1 (方形) 纵横比编码和解码像素。