# Architecture
Source: [https://docs.qualcomm.com/doc/80-70014-20/topic/architecture.html](https://docs.qualcomm.com/doc/80-70014-20/topic/architecture.html)
The video software stack consists of a client application that interacts with the Adreno
VPU using the V4L2 framework. The following figures show the software architecture for
decoder and encoder:
Figure : Video decoder software architecture
Figure : Video encoder software architecture
The following table lists the components of the video software architecture:
| Component | Description |
| --- | --- |
| User application |
Based on V4L2/GStreamer that interacts with the FileSource for decoder and the CameraSource for encoder.
|
| 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 |
A hardware accelerated engine that performs the video decoding and encoding operations with minimal power consumption.