# Features
Source: [https://docs.qualcomm.com/doc/80-70015-20/topic/features.html](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html)
The Adreno VPU provides the following video decoding and encoding features:
| Use case | Feature | QCS6490 | QCS9075 |
| --- | --- | --- | --- |
| **Codecs** | H.264 (8‑bit decoder) | Yes | Yes |
| **Codecs** | HEVC (8‑bit decoder) | Yes | Yes |
| **Codecs** | HEVC (10‑bit decoder) | Yes | Yes |
| **Codecs** | VP9 (8‑bit decoder) | Yes | Yes |
| **Codecs** | VP9 (10‑bit decoder) | Yes | Yes |
| **Codecs** | AV1 (8‑bit decoder) | No | Yes |
| **Codecs** | AV1 (10‑bit decoder) | No | Yes |
| **Codecs** | H.264 (8‑bit encoder) | Yes | Yes |
| **Codecs** | HEVC (8‑bit encoder) | Yes | Yes |
| **Features** | [B-frame
encode](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_gv4_f4s_q1c_eputla_03-06-24-1242-21-896) | Yes | Yes |
| **Features** | [Encoder
initial QP override](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_k41_y1t_q1c_eputla_03-06-24-1419-9-910) | Yes | Yes |
| **Features** | [Hierarchical-P encode](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_zvc_1bt_q1c_eputla_03-06-24-1419-46-611) | Yes | No |
| **Features** | [Slice
encode](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_szx_dbt_q1c_eputla_03-06-24-1420-53-632) | Yes | No |
| **Features** | [Intra-refresh](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_wb2_3bt_q1c_eputla_03-06-24-1422-8-48) | Yes | No |
| **Features** | [Preprocessing](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_vh4_3bt_q1c_eputla_03-06-24-1422-14-963) | Yes | No |
| **Features** | [Rate
control](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_tf5_gbt_q1c_eputla_03-06-24-1421-43-813) | Yes | Yes |
| **Features** | [Long
term reference (LTR)](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_mpl_nbt_q1c_eputla_03-06-24-1423-41-14) | Yes | No |
| **Features** | [Dynamic
properties](https://docs.qualcomm.com/doc/80-70015-20/topic/features.html#concept_i4r_c5h_bzb__p_ykm_qbt_q1c_eputla_03-06-24-1424-34-300) | Yes | Yes |
| **Concurrency** | Multi-instance support | Yes | Yes |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
## Feature descriptions
The supported decode and encode features are detailed as follows:
**B-frame encode**
B-frame is a type of frame that uses both earlier and future frames as data reference
to obtain the highest amount of data compression. The Adreno VPU can encode frames
with adaptive B type to obtain the highest possible compression without compromising
on the video quality.
**Encoder initial QP override**
Video encoding involves mapping signal levels to discrete values that are easily
compressed. Quantization is a lossy process, and the levels of quantization govern
the quality compared to compression. Encoders start with a default Quantization
Parameter (QP) at the beginning. Based on the configured bit rate and scene
complexity, encoders arrive at the right QP value by continuously monitoring the
complexity and redundancy across frames. It might take a few seconds for the encoder
to reach a steady state and predict the correct QP value that matches the target bit
rate (also known as rate convergence).
**Hierarchical-P encode**
With the Hierarchical-P (Hier-P) feature, the encoder organizes the frames into
multiple layers, with frames of one layer referencing only frames from the lower
layers as shown in the following figure. The lowest layer, also known as layer 0 or
the base layer, is the only exception.
Figure : Hier-P layer encoding pattern

In this figure, TL-0 represents the base layer, and the remaining layers represent
the enhancement layers. Hier-P improves error resilience and temporal scalability.
The Hier-P feature is useful for video telephony (VT) or videoconferencing
applications that involve channel errors. Hier-P allows you to control error
propagation by selectively dropping the enhancement layers.
**Slice encode**
Encoders can compress a frame with an independently decodable Group-of-Blocks (GOBs),
also known as slices. If there is a data loss or corruption, each slice is
independently decodable, and is intended to be a unit of recovery. The following are
the advantages of introducing slices in an encoded frame:
- A corrupt slice can be ignored and skipped to a next slice, thus restricting
the corruption to a part of the frame instead of the entire frame.
- Slices can be sized to fit within a network packet to help with
transmission.
- Erroneous slices can be retransmitted instead of sending the whole
frame.
- Applications can use slices to reduce latency in real-time communication.
Slices can be transmitted and decoded in parallel, without having to wait
for the entire frame to be encoded.
Slices also work as resynchronization markers because the decoders can resume from
the next slice (marker) when there are bit errors. The H.264 and HEVC encoders
support slicing on Qualcomm Linux. A slice boundary can be specified as the number
of bits per slice or the number of macroblocks per slice.
**Intra refresh**
The intra-refresh feature helps in reducing the channel loss in streaming and casting
applications that favor a constant bit rate. The Adreno VPU supports random
intrarefresh mode.
**Video encoder preprocessing**
When a YUV frame must be rotated or flipped, applications can use the Adreno VPU to
perform the rotation or flip operations before encoding the YUV frame. The Adreno
VPU performs the rotation or flip operation without consuming extra power.
**Rate control**
The following table lists the supported rate control algorithms:
| Rate control mode | Description |
| --- | --- |
| Variable bit rate (VBR) |
Maximum resolution: 8192 × 4320 or 4320 × 8192
Minimum resolution: 96 × 96
Maximum resolution: 4096 × 2160 or 2160 × 4096
Maximum frame rate: 480 fps