# 概述

Note

当前版本中涉及音频和摄像头子系统的视频用例不适用于 QCS8275，将在后续版本提供支持。

Qualcomm^®^ Adreno^™^ 视频处理单元 (VPU) 是一种硬件加速视频引擎，支持各种视频编解码器的视频解码和编码。应用程序可以使用 [Qualcomm® Intelligent Multimedia SDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-50/overview.html) (IM SDK) 或 V4L2 (Video4Linux2) 将视频处理的负载分配至 Adreno VPU，从而释放 CPU 和 GPU 的资源用于其他处理。

Note

请参阅 Qualcomm^®^ Linux^®^ 上支持的[硬件 SoC](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-115/soc.html)。

下图显示了视频软件架构中存在的模块。

<?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="st21"><v:documentproperties v:langid="1033">	<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: SimHei; font-size: 1.00001em }
.svg-1 .st4 { font-family: Microsoft YaHei; font-size: 1em }
.svg-1 .st5 { font-family: Arial; font-size: 1em }
.svg-1 .st6 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st7 { font-family: SimHei; font-size: 1em }
.svg-1 .st8 { fill: #3253dc; stroke: #3253dc; stroke-width: 0.25 }
.svg-1 .st9 { fill: #ffffff; font-family: Arial; font-size: 1.00001em }
.svg-1 .st10 { fill: none }
.svg-1 .st11 { stroke: #000000; stroke-dasharray: 7, 5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st12 { fill: none; stroke: none; stroke-width: 0.25 }
.svg-1 .st13 { fill: #000000; font-family: SimHei; font-size: 0.833336em; font-weight: bold }
.svg-1 .st14 { fill: none; stroke: #000000; stroke-width: 0.25 }
.svg-1 .st15 { fill: #ffffff; font-family: Arial; font-size: 0.833336em }
.svg-1 .st16 { fill: #000000; font-family: SimHei; font-size: 0.75em }
.svg-1 .st17 { marker-end: url("#mrkr4-53"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st18 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409081703624 }
.svg-1 .st19 { marker-start: url("#mrkr4-69"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st20 { fill: #ffffff; font-family: Arial; font-size: 0.75em }
.svg-1 .st21 { 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-53" class="st18" v:arrowtype="4" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.5200011405946,-3.5200011405946) "></use>	</marker>	<marker id="mrkr4-69" class="st18" v:arrowtype="4" v:arrowsize="2" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.5200011405946) "></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="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(18,-18.0001)">		<title>shape32-1</title>		<rect x="0" y="36.0003" width="670.5" height="424" class="st1"></rect>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(126.5,-378)">		<title> </title>		<desc>Applications (V4L2, GStreamer)</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<path d="M0 451 A9.0002 9.0002 -180 0 0 9 460 L351 460 A9.0002 9.0002 -180 0 0 360 451 L360 415 A9.0002 9.0002 -180 0					 0 351 406 L9 406 A9.0002 9.0002 -180 0 0 -0 415 L0 451 Z" class="st2"></path>		<text x="94.65" y="436.95" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用程序<tspan class="st4">（</tspan><tspan class="st5">V4L2</tspan><tspan class="st4">、</tspan><tspan class="st5">GStreamer</tspan><tspan class="st4">）</tspan></text>		</g>	<g id="shape3-11" v:mid="3" v:groupcontext="shape" transform="translate(126.5,-270)">		<title>shape2-6</title>		<desc>V4L2 framework</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<path d="M-0 451 A9.0002 9.0002 -180 0 0 9 460 L351 460 A9.0002 9.0002 -180 0 0 360 451 L360 415 A9.0002 9.0002 -180					 0 0 351 406 L9 406 A9.0002 9.0002 -180 0 0 -0 415 L0 451 Z" class="st2"></path>		<text x="152.32" y="436.9" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V4L2 <tspan class="st7">框架</tspan></text>		</g>	<g id="shape4-15" v:mid="4" v:groupcontext="shape" transform="translate(126.5,-180)">		<title>shape3-9</title>		<desc>Adreno VPU driver</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<path d="M0 451 A9.0002 9.0002 -180 0 0 9 460 L351 460 A9.0002 9.0002 -180 0 0 360 451 L360 415 A9.0002 9.0002 -180 0					 0 351 406 L9 406 A9.0002 9.0002 -180 0 0 -0 415 L0 451 Z" class="st8"></path>		<text x="120.98" y="436.9" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU <tspan class="st7">驱动程序</tspan></text>		</g>	<g id="shape5-19" v:mid="5" v:groupcontext="shape" transform="translate(126.5,-72.0001)">		<title>shape4-12</title>		<desc>Adreno VPU</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="180" cy="433" width="360.01" height="54"></v:textrect>		<path d="M0 451 A9.0002 9.0002 -180 0 0 9 460 L351 460 A9.0002 9.0002 -180 0 0 360 451 L360 415 A9.0002 9.0002 -180 0					 0 351 406 L9 406 A9.0002 9.0002 -180 0 0 -0 415 L0 451 Z" class="st8"></path>		<text x="146.65" y="436.6" class="st9" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU</text>		</g>	<g id="shape6-22" v:mid="6" v:groupcontext="shape" transform="translate(18.5,-342)">		<title>shape6-15</title>		<path d="M0 460 L648 460 L0 460 Z" class="st10"></path>		<path d="M0 460 L648 460" class="st11"></path>	</g>	<g id="shape7-25" v:mid="7" v:groupcontext="shape" transform="translate(18.5,-162)">		<title>shape7-18</title>		<path d="M0 460 L648 460 L0 460 Z" class="st10"></path>		<path d="M0 460 L648 460" class="st11"></path>	</g>	<g id="shape8-28" v:mid="8" v:groupcontext="shape" transform="translate(585.5,-342)">		<title>shape8-21</title>		<desc>User space</desc>		<v:userdefs></v:userdefs>		<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="st12"></rect>		<text x="20.42" y="454" class="st13" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>用户空间</text>		</g>	<g id="shape9-31" v:mid="9" v:groupcontext="shape" transform="translate(585.5,-162)">		<title>shape9-24</title>		<desc>Kernel space</desc>		<v:userdefs></v:userdefs>		<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="st12"></rect>		<text x="20.42" y="454" class="st13" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>内核空间</text>		</g>	<g id="shape10-34" v:mid="10" v:groupcontext="shape" transform="translate(590,-108)">		<title>shape10-27</title>		<desc>Hardware</desc>		<v:userdefs></v:userdefs>		<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="st12"></rect>		<text x="30.46" y="454" class="st13" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>硬件</text>		</g>	<g id="shape11-37" v:mid="11" v:groupcontext="shape" transform="translate(401,-81.0001)">		<title>shape11-30</title>		<desc>Adreno VPU firmware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(2,2,2,2)"></v:textblock>		<v:textrect cx="40.5" cy="442" width="81" height="36"></v:textrect>		<path d="M0 451 A9.0002 9.0002 -180 0 0 9 460 L72 460 A9.0002 9.0002 -180 0 0 81 451 L81 433 A9.0002 9.0002 -180 0 0					 72 424 L9 424 A9.0002 9.0002 -180 0 0 0 433 L0 451 Z" class="st14"></path>		<text x="12.71" y="438.5" class="st15" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU <tspan x="30.5" dy="1.275em" class="st7">固件</tspan></text>		</g>	<g id="shape12-41" v:mid="12" v:groupcontext="shape" transform="translate(616.625,-27.1251)">		<title>shape12-34</title>		<path d="M0 451 A9.0002 9.0002 -180 0 0 9 460 L54 460 A9.0002 9.0002 -180 0 0 63 451 A9.0002 9.0002 -180 0 0 54 442 L9					 442 A9.0002 9.0002 -180 0 0 -0 451 Z" class="st2"></path>	</g>	<g id="shape13-43" v:mid="13" v:groupcontext="shape" transform="translate(544.625,-26.8751)">		<title>shape13-36</title>		<path d="M-0 451 A9.0002 9.0002 -180 0 0 9 460 L54 460 A9.0002 9.0002 -180 0 0 63 451 A9.0002 9.0002 -180 0 0 54 442					 L9 442 A9.0002 9.0002 -180 0 0 0 451 Z" class="st8"></path>	</g>	<g id="shape14-45" v:mid="14" v:groupcontext="shape" transform="translate(616.375,-27.1251)">		<title>shape23-38</title>		<desc>Open source</desc>		<v:userdefs></v:userdefs>		<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="st12"></rect>		<text x="13.5" y="453.7" class="st16" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>开源代码</text>		</g>	<g id="shape15-48" v:mid="15" v:groupcontext="shape" transform="translate(694.5,82.0001) rotate(90)">		<title>shape26-41</title>		<path d="M0 460 L46.96 460 L54 460" class="st17"></path>	</g>	<g id="shape16-54" v:mid="16" v:groupcontext="shape" transform="translate(694.5,190) rotate(90)">		<title>shape27-47</title>		<path d="M0 460 L28.96 460 L36 460" class="st17"></path>	</g>	<g id="shape17-59" v:mid="17" v:groupcontext="shape" transform="translate(694.5,280) rotate(90)">		<title>shape28-52</title>		<path d="M0 460 L46.96 460 L54 460" class="st17"></path>	</g>	<g id="shape18-64" v:mid="18" v:groupcontext="shape" transform="translate(838.5,82.0001) rotate(90)">		<title>shape29-57</title>		<path d="M0 460 L6.68 460 L7.04 460 L54 460" class="st19"></path>	</g>	<g id="shape19-70" v:mid="19" v:groupcontext="shape" transform="translate(838.5,190) rotate(90)">		<title>shape30-63</title>		<path d="M0 460 L6.68 460 L7.04 460 L36 460" class="st19"></path>	</g>	<g id="shape20-75" v:mid="20" v:groupcontext="shape" transform="translate(838.5,280) rotate(90)">		<title>shape31-68</title>		<path d="M0 460 L6.68 460 L7.04 460 L54 460" class="st19"></path>	</g>	<g id="shape21-80" v:mid="21" v:groupcontext="shape" transform="translate(544.375,-26.8751)">		<title>shape21-73</title>		<desc>Qualcomm</desc>		<v:userdefs></v:userdefs>		<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="st12"></rect>		<text x="9.74" y="453.7" class="st20" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g></g>
</svg>

**图：视频软件的架构概述**

Last Published: Jan 24, 2025

[Next Topic
入门指南](https://docs.qualcomm.com/bundle/publicresource/80-70017-20SC/topics/getting-started.md)