# 功能
Source: [https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html)
Adreno VPU 提供各种视频解码和编码功能。下表列出了适用于此平台的功能:
| 用例 | 功能 | QCS6490 |
| --- | --- | --- |
| 编解码器 | H.264(8 位解码器) | 是 |
| 编解码器 | HEVC(8 位解码器) | 是 |
| 编解码器 | HEVC(10 位解码器) | 是 |
| 编解码器 | VP9(8 位解码器) | 是 |
| 编解码器 | VP9(10 位解码器) | 是 |
| 编解码器 | H.264(8 位编码器) | 是 |
| 编解码器 | HEVC(8 位编码器) | 是 |
| 功能 | [B 帧编码](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_gv4_f4s_q1c_eputla_03-06-24-1242-21-896) | 是 |
| 功能 | [编码器初始 QP 覆盖](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_k41_y1t_q1c_eputla_03-06-24-1419-9-910) | 是 |
| 功能 | [分层 P 帧编码](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_zvc_1bt_q1c_eputla_03-06-24-1419-46-611) | 是 |
| 功能 | [分片编码](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_szx_dbt_q1c_eputla_03-06-24-1420-53-632) | 是 |
| 功能 | [内部刷新](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_wb2_3bt_q1c_eputla_03-06-24-1422-8-48) | 是 |
| 功能 | [预处理](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_vh4_3bt_q1c_eputla_03-06-24-1422-14-963) | 是 |
| 功能 | [码率控制](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_tf5_gbt_q1c_eputla_03-06-24-1421-43-813) | 是 |
| 功能 | [长帧参考 (LTR)](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_mpl_nbt_q1c_eputla_03-06-24-1423-41-14) | 是 |
| 功能 | [动态属性](https://docs.qualcomm.com/doc/80-70014-20Y/topic/features.html#concept_i4r_c5h_bzb__p_ykm_qbt_q1c_eputla_03-06-24-1424-34-300) | 是 |
| 并发 | 多实例支持 | 是 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
## 功能介绍
此处介绍了支持的解码和编码功能。
**B 帧编码**
B 帧是一种使用早期和未来帧作为数据参考,以获得最高数据压缩量的帧类型。Adreno VPU 可以对自适应 B 类型的帧进行编码,以获得尽可能高的压缩率,而不会影响视频质量。
**编码器初始 QP 覆盖**
视频编码涉及将信号电平映射到易于压缩的离散值。量化是一个有损过程,量化级别决定了质量与压缩。编码器通常从默认的量化参数 (QP) 开始。根据配置的比特率和场景复杂度,编码器尝试通过持续监视跨帧的复杂度和冗余来获得正确的 QP 值。编码器可能需要几秒钟才能达到稳定状态并预测与目标比特率匹配的正确 QP 值(也称为速率收敛)。
**分层 P 帧编码**
编码器使用分层 P (Hier-P) 功能将帧分配到多个层中,并且每一层的帧仅参考更低层的帧,如下图所示。最低层也称为层 0 或基本层,是唯一的例外。
Figure : Hier-P 层编码模式

在上图中,TL-0 表示基础层,其余层表示增强层。Hier-P 完善了错误恢复和时域可扩展性。Hier-P 功能对于涉及通道错误的视频电话 (VT) 或视频会议应用程序非常有用。Hier-P 可用来通过有选择地丢弃增强层来控制错误进一步扩散。
**分片编码**
编码器可以使用可独立解码的块组 (GOB)(也称为分片)压缩帧。每个分片均可独立解码,并可用于在数据丢失或损坏时作为恢复单元。下面是在编码帧中引入分片的优点:
- 可以忽略损坏的分片并跳过到下一个分片,从而将损坏限制在帧的一部分而不是整个帧。
- 可以调整分片的大小来适合网络数据包,以帮助传输。
- 可以重新传输错误的分片,而不是发送整个帧。
- 应用程序可以使用分片来减少实时通信的延迟。分片可以并行传输和解码,而无需等待整个帧被编码。
分片还可以用作重新同步标记,因为当出现位错误时,解码器可以从下一个分片(标记)恢复。在 Qualcomm Linux 平台上,H.264 和 HEVC 编码器支持切片。分片边界可以指定为每个分片的位数或每个分片的宏块数。
**内部刷新**
内部刷新功能有助于减少支持恒定比特率的流媒体和转播应用程序中的通道损失。Adreno VPU 支持随机内部刷新模式。
**视频编码器预处理**
在必须旋转或翻转 YUV 帧的情况下,应用程序可以使用 Adreno VPU 在对 YUV 帧进行编码之前执行旋转或翻转操作。旋转或翻转操作由 Adreno VPU 执行,没有额外功耗。
**码率控制**
下表列出了支持的码率控制算法:
| 码率控制模式 | 说明 |
| --- | --- |
| 可变比特率 (VBR) |
- 将逐帧视频质量波动降至最低。
- 摄录像机和 Wi-Fi Display 为示例用例
|
| 固定比特率 (CBR) |
- 减少比特率波动
- 用于存在通道带宽限制的实时通信
- 视频电话和流媒体为示例用例
|
| 最大比特率 (MBR) |
- 限制比特率,同时保持灵活性,并可能在设定的目标内上下反弹
- 当场景中的活动在最大限制内增加时,比特率也会提高
- 集成了智能位分配 (SBA) 功能,以更低的比特率实现更出色的质量
|
**长帧参考 (LTR) 支持**
视频压缩的工作原理是消除帧内部(帧内)和帧之间(帧间)的冗余。以前,用于作为派生未来帧的基础的编码帧称为参考帧。
下面是两种类型的参考帧,它们允许高级编码应用程序控制参考帧的存储和引用方式:
- 短帧参考 (STR):最近的帧以最新到最旧的方式保留在一个引用缓冲区列表中。编码器使用 STR 自动管理帧以供参考,并在不再使用时将其从存储列表中删除。
- 长帧参考 (LTR):应用程序可以保存、使用和删除的帧。LTR 帧用于提高视频通信的质量并确保错误恢复能力。可以使用 LTR 帧标记的最大帧数取决于设备功能。
LTR 帧在容易出错的通道中非常有用。在容易出错的通道中参考 LTR 可减少由于通道损失而产生漂移误差的几率。接收方必须确认是否已成功接收 LTR,并可以在发生错误时请求新的 LTR。网络协议支持校验和检查以及解码器损坏标志,可以对此进行确认。在接收方确认已成功接收到 LTR 前,可以从发送方生成新的 LTR 帧。
LTR 帧在带场景切换的视频中也很实用,因为可以保留带上一个场景的 LTR。如果回到该场景,则可以有效利用相应 LTR。
在新的图片组 (GOP) 开始时,编码器会自动填充 LTR slots,并且第一个 slot (slot# 0) 会使用 IDR 帧填充。但是,应用程序可以显式发送 LTR 标记请求,以标记相应 slots 中的 LTR 帧。下图显示了 LTR 使用的流程图,以及如何在 H.264 或 HEVC 编码器上标记和使用 LTR 帧:
Figure : 长帧参考编码

**动态编码器属性**
Adreno VPU 编码器支持比特率、帧率和同步帧等属性的动态更改。这种支持使应用程序能够无缝更改属性,并且有助于改善视觉体验,使视频数据适应网络条件,并最大限度地减少传输过程中的数据丢失。
## QCS6490 视频功能和特性
QCS6490 上的 Adreno VPU 是第六代超高清视频处理单元,提供以下功能:
| 功能 | 功能 |
| --- | --- |
| 视频解码 | H.264/HEVC/VP9 最高支持 4096 × 2160 @ 60 fps |
| 视频编码 | H.264/HEVC 最高支持 4096 × 2160 @ 30 fps |
| 视频并发 |
- 1920 × 1088 @ 60 fps 解码和 1920 × 1088 @ 60 fps 编码
- 3840 × 2160 @ 30 fps 解码和 1920 × 1088 @ 30 fps 解码
- 4096 × 2160 @ 30 fps 编码和 1280 × 720 @ 30 fps 编码
|
| HFR 录制 | 1280 × 720 @ 480 fps 或 1920 × 1088 @ 240 fps |
| 每秒的最大宏块数 | 2088960
- 可以使用以下公式计算每秒的最大宏块数:(对齐宽度 × 对齐高度 × fps)/(宏块大小)。例如,(4096 × 2176 × 60)/256 = 2088960
|
| 10 位播放 | HEVC 和 VP9 |
Table : Adreno VPU 解码器功能
| 解码器标准 | 支持的配置文件和级别 | 最小/最大分辨率、最大帧率和比特率 | 支持的最大分辨率、帧率和比特率 | 限制/不支持的工具 |
| :---: | :---: | :---: | :---: | :---: |
| HEVC |
- Main profile 8 位,高达 level 5.1
- Main profile 10 位,高达 level 5.1,HLG 机制
| |
- 1280 × 720 @ 480 fps,100 Mbps
- 1920 × 1088 @ 240 fps,100 Mbps
- 3840 × 2160 @ 60 fps,100 Mbps
- 4096 × 2160 @ 60 fps,100 Mbps
| |
| H.264 | Constrained baseline, baseline, main, high, constrained high profiles;高达 5.2 level |
- 最小分辨率:96 × 96
- 最大分辨率:4096 × 2160 或 2160 × 4096
- 最大帧率:480 fps
- 最大比特率:100 Mbps
|
- 1280 × 720 @ 480 fps,100 Mbps
- 1920 × 1088 @ 240 fps,100 Mbps
- 3840 × 2160 @ 60 fps,100 Mbps
- 4096 × 2160 @ 60 fps,100 Mbps
|
- 灵活的宏块顺序 (FMO)
- 任意分片顺序 (ASO)
- 冗余分片 (RS)
- 数据分区
- 每帧最多 10 个分片
- 不支持隔行内容
|
| VP9 |
- Profile 0;8 位,高达 level 5.1
- Profile 2;10 位,高达 level 5.1,HLG/PQ 机制
|
- 最小分辨率:96 × 96
- 最大分辨率:4096 × 2160 或 2160 × 4096
- 最大帧率:480 fps
- 最大比特率:100 Mbps
|
- 1280 × 720 @ 480 fps,100 Mbps
- 1920 × 1088 @ 240 fps,100 Mbps
- 3840 × 2160 @ 60 fps,100 Mbps
- 4096 × 2160 @ 60 fps,100 Mbps
| Profile 2;不支持 12 位 |
Table : Adreno VPU 编码器功能
| 编码器标准 | 支持的配置文件、等级和 RC 模式 | 最小/最大分辨率、最大帧率和最大比特率 | 支持的分辨率、帧率、比特率 | 限制/不支持的工具 |
| :---: | :---: | :---: | :---: | :---: |
| H.264 |
- Constrained baseline, baseline, main, high, constrained high profiles;高达 5 level
- VBR(可变 bitrate)、CBR(固定 bitrate)、MBR
|
- 最小分辨率:128 × 128
- 最大分辨率:4096 × 2160 或 2160 × 4096
- 最大帧率:240 fps
- 最大比特率:100 Mbps
|
- 1280 × 720 @ 240 fps,100 Mbps
- 1920 × 1088 @ 120 fps,100 Mbps
- 3840 × 2160 @ 30 fps,100 Mbps
- 4096 × 2160 @ 30 fps,100 Mbps
| 无 |
| HEVC |
- Main profile 8 位,高达 5.0 level
- 主/高层级 VBR、CBR、MBR
|
- 最小分辨率:128 × 128
- 最大分辨率:4096 × 2160 或 2160 × 4096
- 最大帧率:240 fps
- 最大比特率:100 Mbps
|
- 1280 × 720 @ 240 fps,100 Mbps
- 1920 × 1088 @ 120 fps,100 Mbps
- 3840 × 2160 @ 30 fps,100 Mbps
- 4096 × 2160 @ 30 fps,100 Mbps
| 只有宽度 ≥ 960 的帧才能启用垂直图块 |
Table : Adreno VPU 功能说明
| 功能 | 说明 | 编解码器 | 备注 |
| :---: | :---: | :---: | :---: |
| 编码器输入颜色格式 | NV12 和 QC08C | H.264 和 HEVC | – |
| 解码器输出颜色格式 | NV12、QC08C 和 QC10C | H.264、HEVC 和 VP9 | – |
| 旋转 | 在对帧进行编码之前,支持 90、180 和 270 度旋转 | H.264 和 HEVC | 仅支持静态旋转 |
| 翻转 | 在对帧进行编码之前,支持水平和垂直翻转 | H.264 和 HEVC | 支持静态和动态翻转 |
| B 帧编码 | 最高 1920 × 1088 @ 60 fps 编码 | H.264 和 HEVC | 两个 P 帧之间支持的最大 B 帧数为一 |
| 分层 P 帧编码 | 多达 5 层 | H.264 和 HEVC | – |
| 初始 QP 覆盖 | 支持 I、P 和 B 帧 | H.264 和 HEVC | – |
| 分片编码 | 是 | H.264 和 HEVC | 根据每个分片的位数或每个分片的宏块数支持分片边界 |
| 内部刷新 | 随机刷新模式 | H.264 和 HEVC |
- 仅在 8 位编码中支持
- 仅在 CBR RC 模式下支持
|
| 码率控制 | CBR、VBR 和 MBR | H.264 和 HEVC | – |
| 长帧参考 (LTR) | 两帧 | H.264 和 HEVC | 仅在 CBR RC 模式下支持 |
| 编码器的动态属性 | 同步帧、比特率和 fps | H.264 和 HEVC | – |
| 多通道支持 | 最多 16 个实例 | H.264、HEVC 和 VP9 | 取决于最大宏块能力 |
Last Published: Aug 22, 2024
[Previous Topic
入门指南](https://docs.qualcomm.com/bundle/publicresource/80-70014-20Y/topics/samples.md) [Next Topic
架构](https://docs.qualcomm.com/bundle/publicresource/80-70014-20Y/topics/architecture.md)