The video software stack consists of a client application that interacts with the Adreno VPU using the V4L2 framework.The following figure shows the video software architecture for the decoder and the encoder. The image on the left shows the decoder architecture, and the image on the right shows the encoder architecture.
Figure: Video decoder and encoder software architecture
The following table lists the components of the video software architecture:
Table: Components of video software architecture
Component
Description
User application
Interacts with the FileSource for decoder and the Camera Source for encoder based on GStreamer/V4L2
V4L2 framework
Interacts with user application and the Adreno VPU driver
Handles events, callbacks, and buffer management
Adreno VPU driver
Acts as an entry point to the video kernel-mode driver (KMD)
Common driver for the encoder and decoder that controls the Adreno VPU
Manages the video driver state machine, buffer allocation, clock/bus management, and communication with Adreno VPU using the Host Firmware Interface (HFI)
Adreno VPU
Functions as a hardware accelerated engine that decodes and encodes video with minimal power consumption
The Adreno VPU on QCS6490 is a sixth-generation video processing unit that comes with the following capabilities:
Table: Adreno VPU features and capabilities for QCS6490
Feature
Capability
Video decode
Up to 4096 × 2160 at 60 fps for H.264/HEVC/VP9
Video encode
Up to 4096 × 2160 at 30 fps for H.264/HEVC
Multichannel Capability
Config#1
Config#2
8x of 1920 × 1088 at 30 fps
16x of 1280 × 720 at 30 fps
16x of 720 × 480 at 30 fps
8x of 1920 × 1088 at 30 fps
16x of 1280 × 720 at 30 fps
16x of 720 × 480 at 30 fps
High frame rate capture
1280 × 720 at 480 fps or 1920 × 1088 at 240 fps
Maximum macroblocks per second
2088960 The maximum number of macroblocks per second is calculated using the following formula: (alignedwidth×alignedheight×fps)/(macroblocksize)
Example: (4096 × 2176 × 60) / 256 = 2,088,960
The Adreno VPU on Dragonwing IQ-8275 is a seventh-generation video processing unit that comes with the following capabilities:
Table: Adreno VPU features and capabilities for IQ-8275
Feature
Capability
Video decode
Up to 3840 × 2160 at 120 fps for H.264/HEVC/VP9
Up to 3840 × 2160 at 60 fps for AV1
Video encode
Up to 4096 × 2160 at 60 fps for H.264/HEVC
Multichannel Capability
Config#1
Config#2
16x of 1920 × 1088 at 30 fps
16x of 1280 × 720 at 30 fps
16x of 720 × 480 at 30 fps
16x of 1920 × 1088 at 30 fps
24x of 1280 × 720 at 30 fps
24x of 720 × 480 at 30 fps
High framerate capture
1920 × 1088 at 240 fps or 3840 × 2160 at 60 fps
Maximum macroblocks per second
3916800 The maximum number of macroblocks per second is calculated using the following formula: (alignedwidth×alignedheight×fps)/(macroblocksize) For example, (3840 × 2176 × 120)/256 = 3916800
The Adreno VPU on Dragonwing IQ-9075 is a seventh-generation video processing unit that comes with the following capabilities:
Table: Adreno VPU features and capabilities for IQ-9075
Feature
Capability
Video decode
Up to 7680 × 4320 at 60 fps or 3840 × 2160 at 240 fps for H.264/HEVC/AV1
Up to 3840 × 2160 at 240 fps for VP9
Video encode
Up to 7680 × 4320 at 30 fps for H.264/HEVC
Multichannel Capability
Config#1
Config#2
16x of 1920 × 1088 at 30 fps
16x of 1280 × 720 at 30 fps
16x of 720 × 480 at 30 fps
32x of 1920 × 1088 at 30 fps
32x of 1280 × 720 at 30 fps
32x of 720 × 480 at 30 fps
High frame rate capture
1920 × 1088 at 480 fps or 3840 × 2160 at 120 fps
Maximum macroblocks per second
7833600 The maximum number of macroblocks per second is calculated using the following formula: (alignedwidth×alignedheight×fps)/(macroblocksize) For example, (3840 × 2176 × 240)/256 = 7833600
The Adreno VPU on QCS615 is a sixth-generation video processing unit that comes with the following capabilities:
Table: Adreno VPU features and capabilities for QCS615
Feature
Capability
Video decode
Up to 3840 × 2160 at 30 fps for H.264/HEVC/VP9
Video encode
Up to 3840 × 2160 at 30 fps for H.264/HEVC
Multichannel Capability
Config#1
4x of 1920 × 1088 at 30 fps
8x of 1280 × 720 at 30 fps
16x of 720 × 480 at 30 fps
High frame rate capture
1280 × 720 at 240 fps or 1920 × 1080 at 120 fps
Maximum macroblocks per second
976500 The maximum number of macroblocks per second is calculated using the following formula: (alignedwidth×alignedheight×fps)/(macroblocksize) For example, (3840 × 2176 × 30)/256 = 976500