# Overview

Source: [https://docs.qualcomm.com/doc/80-70015-20/topic/overview.html](https://docs.qualcomm.com/doc/80-70015-20/topic/overview.html)

Note: The video use cases with audio
                and camera subsystems are not available on QCS9075 for this release and will be
                updated during the December 2024 release.

The Qualcomm^®^ Adreno™ Video Processing Unit (VPU) is a hardware-accelerated
            video engine that supports video decoding and encoding for various video codecs.
            Applications can offload video operations to the Adreno VPU using V4L2 (Video4Linux2) or
                [Qualcomm^®^ Intelligent Multimedia
                SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-50/overview.html) (IM SDK), thereby freeing up the CPU and GPU for other operations.
Note: See [Hardware SoCs](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-115/soc.html) that are supported on
                    Qualcomm^®^ Linux^®^.

The following figure shows the modules present in the video software architecture.

Figure : High-level architecture of the video software
                
                <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export Highlevel video sw architecture.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="9.81944in" height="6.38889in" viewbox="0 0 707 460" xml:space="preserve" color-interpolation-filters="sRGB" class="st17"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(0):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f7f8fa; stroke: none; stroke-width: 0.25 }
.svg-1 .st2 { fill: #acbacf; stroke: #666666; stroke-width: 0.25 }
.svg-1 .st3 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st4 { fill: #3253dc; stroke: #3253dc; stroke-width: 0.25 }
.svg-1 .st5 { fill: #ffffff; font-family: Arial; font-size: 1.00001em }
.svg-1 .st6 { stroke: #000000; stroke-dasharray: 7, 5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st7 { fill: none; stroke: none; stroke-width: 0.25 }
.svg-1 .st8 { fill: #000000; font-family: Arial; font-size: 0.833336em; font-weight: bold }
.svg-1 .st9 { fill: none; stroke: #000000; stroke-width: 0.25 }
.svg-1 .st10 { fill: #ffffff; font-family: Arial; font-size: 0.833336em }
.svg-1 .st11 { font-size: 1em }
.svg-1 .st12 { fill: #000000; font-family: Arial; font-size: 0.75em }
.svg-1 .st13 { marker-end: url("#mrkr4-46"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st14 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-1 .st15 { marker-start: url("#mrkr4-62"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st16 { fill: #ffffff; font-family: Arial; font-size: 0.75em }
.svg-1 .st17 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-46" class="st14" v:arrowtype="4" v:arrowsize="2" v:setback="7.04" refx="-7.04" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.52,-3.52) "></use>	</marker>	<marker id="mrkr4-62" class="st14" v:arrowtype="4" v:arrowsize="2" v:setback="6.68" refx="6.68" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="msvThemeOrder" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape32-1" v:mid="32" v:groupcontext="shape" transform="translate(18,-18)">		<title></title>		<rect x="0" y="36" width="670.5" height="424" class="st1"></rect>	</g>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(126.5,-378)">		<title> </title>		<desc>Applications (V4L2, GStreamer)</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<rect x="0" y="406" width="360" height="54" rx="9" ry="9" class="st2"></rect>		<text x="95.3" y="436.6" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Applications (V4L2, GStreamer)</text>		</g>	<g id="shape2-6" v:mid="2" v:groupcontext="shape" transform="translate(126.5,-270)">		<title></title>		<desc>V4L2 framework</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<rect x="0" y="406" width="360" height="54" rx="9" ry="9" class="st2"></rect>		<text x="136.31" y="436.6" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V4L2 framework</text>		</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(126.5,-180)">		<title></title>		<desc>Adreno VPU driver</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<rect x="0" y="406" width="360" height="54" rx="9" ry="9" class="st4"></rect>		<text x="129.98" y="436.6" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU driver</text>		</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(126.5,-72)">		<title></title>		<desc>Adreno VPU</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<rect x="0" y="406" width="360" height="54" rx="9" ry="9" class="st4"></rect>		<text x="146.65" y="436.6" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU</text>		</g>	<g id="shape6-15" v:mid="6" v:groupcontext="shape" transform="translate(18.5,-342)">		<title></title>		<path d="M0 460 L648 460" class="st6"></path>	</g>	<g id="shape7-18" v:mid="7" v:groupcontext="shape" transform="translate(18.5,-162)">		<title></title>		<path d="M0 460 L648 460" class="st6"></path>	</g>	<g id="shape8-21" v:mid="8" v:groupcontext="shape" transform="translate(585.5,-342)">		<title></title>		<desc>User space</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="40.5" cy="451" width="81" height="18"></v:textrect>		<rect x="0" y="442" width="81" height="18" class="st7"></rect>		<text x="13.82" y="454" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>User space</text>		</g>	<g id="shape9-24" v:mid="9" v:groupcontext="shape" transform="translate(585.5,-162)">		<title></title>		<desc>Kernel space</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="40.5" cy="451" width="81" height="18"></v:textrect>		<rect x="0" y="442" width="81" height="18" class="st7"></rect>		<text x="9.37" y="454" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Kernel space</text>		</g>	<g id="shape10-27" v:mid="10" v:groupcontext="shape" transform="translate(590,-108)">		<title></title>		<desc>Hardware</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="40.5" cy="451" width="81" height="18"></v:textrect>		<rect x="0" y="442" width="81" height="18" class="st7"></rect>		<text x="17.71" y="454" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hardware</text>		</g>	<g id="shape11-30" v:mid="11" v:groupcontext="shape" transform="translate(401,-81)">		<title></title>		<desc>Adreno VPU firmware</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="40.5" cy="442" width="81" height="36"></v:textrect>		<rect x="0" y="424" width="81" height="36" rx="9" ry="9" class="st9"></rect>		<text x="12.71" y="439" class="st10" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU <tspan x="21.33" dy="1.2em" class="st11">firmware</tspan></text>		</g>	<g id="shape12-34" v:mid="12" v:groupcontext="shape" transform="translate(616.625,-27.125)">		<title></title>		<rect x="0" y="442" width="63" height="18" rx="9" ry="9" class="st2"></rect>	</g>	<g id="shape13-36" v:mid="13" v:groupcontext="shape" transform="translate(544.625,-26.875)">		<title></title>		<rect x="0" y="442" width="63" height="18" rx="9" ry="9" class="st4"></rect>	</g>	<g id="shape23-38" v:mid="23" v:groupcontext="shape" transform="translate(616.375,-27.125)">		<title></title>		<desc>Open source</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="31.5" cy="451" width="63" height="18"></v:textrect>		<rect x="0" y="442" width="63" height="18" class="st7"></rect>		<text x="5.73" y="453.7" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Open source</text>		</g>	<g id="shape26-41" v:mid="26" v:groupcontext="shape" transform="translate(694.5,82) rotate(90)">		<title></title>		<path d="M0 460 L46.96 460" class="st13"></path>	</g>	<g id="shape27-47" v:mid="27" v:groupcontext="shape" transform="translate(694.5,190) rotate(90)">		<title></title>		<path d="M0 460 L28.96 460" class="st13"></path>	</g>	<g id="shape28-52" v:mid="28" v:groupcontext="shape" transform="translate(694.5,280) rotate(90)">		<title></title>		<path d="M0 460 L46.96 460" class="st13"></path>	</g>	<g id="shape29-57" v:mid="29" v:groupcontext="shape" transform="translate(838.5,82) rotate(90)">		<title></title>		<path d="M6.68 460 L7.04 460 L54 460" class="st15"></path>	</g>	<g id="shape30-63" v:mid="30" v:groupcontext="shape" transform="translate(838.5,190) rotate(90)">		<title></title>		<path d="M6.68 460 L7.04 460 L36 460" class="st15"></path>	</g>	<g id="shape31-68" v:mid="31" v:groupcontext="shape" transform="translate(838.5,280) rotate(90)">		<title></title>		<path d="M6.68 460 L7.04 460 L54 460" class="st15"></path>	</g>	<g id="shape21-73" v:mid="21" v:groupcontext="shape" transform="translate(544.375,-26.875)">		<title></title>		<desc>Qualcomm</desc>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="31.5" cy="451" width="63" height="18"></v:textrect>		<rect x="0" y="442" width="63" height="18" class="st7"></rect>		<text x="9.74" y="453.7" class="st16" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g></g>
</svg>

Last Published: Oct 15, 2024

[Next Topic
Getting started](https://docs.qualcomm.com/bundle/publicresource/80-70015-20/topics/getting-started.md)