# 概述

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

对于各种视频编解码器，Qualcomm® Adreno™ 视频处理单元 (VPU) 支持基于硬件的视频解码和编码。基于 Qualcomm 的 SDK 中的视频编解码任务分载到视频引擎，以确保 CPU 和 GPU 可以自由地执行其他操作。

Adreno VPU 引擎的视频功能通过 Qualcomm Linux Intelligent Multimedia Software Development Kit (QIM SDK) 框架和 V4L2（用于 Linux 的视频，版本 2）API 公开。有关详细信息，参见 [Qualcomm Linux ntelligent Multimedia Software Development Kit (QIM SDK) 参考](https://docs.qualcomm.com/bundle/publicresource/topics/80-70014-50Y/overview.html)。

下图显示了视频软件的高级架构。基于 V4L2 或 GStreamer API 的应用程序可以使用 V4L2 API 框架将编码或解码分载到 Adreno VPU。

Figure : 视频软件的 high-level 架构
                <?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">
<!-- 由 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="10.3194in" height="7.50694in" viewbox="0 0 742.997 540.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st20"><v:documentproperties v:langid="2052">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(0):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #ffffff; stroke: #000000; stroke-width: 0.249999 }
.svg-1 .st2 { fill: #acbacf; stroke: #666666; stroke-width: 0.249999 }
.svg-1 .st3 { fill: #000000; font-family: 黑体; font-size: 1.00001em }
.svg-1 .st4 { font-family: Arial; font-size: 1em }
.svg-1 .st5 { fill: #000000; font-family: Arial; font-size: 1.00001em }
.svg-1 .st6 { font-family: 黑体; font-size: 1em }
.svg-1 .st7 { fill: #3253dc; stroke: #3253dc; stroke-width: 0.249999 }
.svg-1 .st8 { fill: #ffffff; font-family: Arial; font-size: 1.00001em }
.svg-1 .st9 { fill: none }
.svg-1 .st10 { stroke: #000000; stroke-dasharray: 6.99997, 4.99998; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st11 { fill: none; stroke: none; stroke-width: 0.249999 }
.svg-1 .st12 { fill: #000000; font-family: 黑体; font-size: 0.833336em; font-weight: bold }
.svg-1 .st13 { fill: none; stroke: #000000; stroke-width: 0.249999 }
.svg-1 .st14 { fill: #ffffff; font-family: Arial; font-size: 0.833336em }
.svg-1 .st15 { fill: #000000; font-family: 黑体; font-size: 0.75em }
.svg-1 .st16 { marker-end: url("#mrkr4-53"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st17 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409003314576 }
.svg-1 .st18 { marker-start: url("#mrkr4-69"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.999996 }
.svg-1 .st19 { fill: #ffffff; font-family: Arial; font-size: 0.75em }
.svg-1 .st20 { 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="st17" v:arrowtype="4" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-3.5200108533442,-3.5200108533442) "></use>	</marker>	<marker id="mrkr4-69" class="st17" v:arrowtype="4" v:arrowsize="2" v:setback="0" refx="0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.5200108533442) "></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="8.99996" v:shadowoffsety="-8.99996"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(17.9999,-18.0009)">		<title>shape32-1</title>		<rect x="0" y="36.5019" width="706.497" height="503.998" class="st1"></rect>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(148.749,-450.249)">		<title>shape1-3</title>		<desc>Applications (V4L2, GStreamer)</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="179.999" cy="513.499" width="360.01" height="53.9998"></v:textrect>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L351 540.5 A9.00017 9.00017 -180 0 0 360 531.5 L360 495.5 A9.00017					 9.00017 -180 0 0 351 486.5 L9 486.5 A9.00017 9.00017 -180 0 0 -0 495.5 L0 531.5 Z" class="st2"></path>		<text x="94.64" y="517.4" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>应用程序（<tspan class="st4">V</tspan><tspan class="st4">4</tspan><tspan class="st4">L</tspan><tspan class="st4">2</tspan>、<tspan class="st4">GStreamer</tspan>）</text>		</g>	<g id="shape3-11" v:mid="3" v:groupcontext="shape" transform="translate(148.749,-342.25)">		<title>shape2-6</title>		<desc>V4L2 framework</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="179.999" cy="513.499" width="360.01" height="53.9998"></v:textrect>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L351 540.5 A9.00017 9.00017 -180 0 0 360 531.5 L360 495.5 A9.00017					 9.00017 -180 0 0 351 486.5 L9 486.5 A9.00017 9.00017 -180 0 0 -0 495.5 L0 531.5 Z" class="st2"></path>		<text x="152.32" y="517.4" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V4L2 <tspan class="st6">框架</tspan></text>		</g>	<g id="shape4-15" v:mid="4" v:groupcontext="shape" transform="translate(148.749,-252.25)">		<title>shape3-9</title>		<desc>Adreno VPU driver</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="179.999" cy="513.499" width="360.01" height="53.9998"></v:textrect>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L351 540.5 A9.00017 9.00017 -180 0 0 360 531.5 L360 495.5 A9.00017					 9.00017 -180 0 0 351 486.5 L9 486.5 A9.00017 9.00017 -180 0 0 -0 495.5 L0 531.5 Z" class="st7"></path>		<text x="120.98" y="517.4" class="st8" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU <tspan class="st6">驱动程序</tspan></text>		</g>	<g id="shape5-19" v:mid="5" v:groupcontext="shape" transform="translate(148.749,-144.25)">		<title>shape4-12</title>		<desc>Adreno VPU</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="179.999" cy="513.499" width="360.01" height="53.9998"></v:textrect>		<path d="M-0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L351 540.5 A9.00017 9.00017 -180 0 0 360 531.5 L360 495.5 A9.00017					 9.00017 -180 0 0 351 486.5 L9 486.5 A9.00017 9.00017 -180 0 0 -0 495.5 L0 531.5 Z" class="st7"></path>		<text x="146.65" y="517.1" class="st8" 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(40.7498,-414.249)">		<title>shape6-15</title>		<path d="M0 540.5 L648 540.5 L0 540.5 Z" class="st9"></path>		<path d="M0 540.5 L648 540.5" class="st10"></path>	</g>	<g id="shape7-25" v:mid="7" v:groupcontext="shape" transform="translate(40.7498,-234.25)">		<title>shape7-18</title>		<path d="M0 540.5 L648 540.5 L0 540.5 Z" class="st9"></path>		<path d="M0 540.5 L648 540.5" class="st10"></path>	</g>	<g id="shape8-28" v:mid="8" v:groupcontext="shape" transform="translate(607.747,-414.249)">		<title>shape8-21</title>		<desc>User space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="40.4998" cy="531.499" width="81" height="17.9999"></v:textrect>		<rect x="0" y="522.5" width="80.9997" height="17.9999" class="st11"></rect>		<text x="20.42" y="534.75" class="st12" 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(607.747,-234.25)">		<title>shape9-24</title>		<desc>Kernel space</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="40.4998" cy="531.499" width="81" height="17.9999"></v:textrect>		<rect x="0" y="522.5" width="80.9997" height="17.9999" class="st11"></rect>		<text x="20.42" y="534.75" class="st12" 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(612.247,-180.25)">		<title>shape10-27</title>		<desc>Hardware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="40.4998" cy="531.499" width="81" height="17.9999"></v:textrect>		<rect x="0" y="522.5" width="80.9997" height="17.9999" class="st11"></rect>		<text x="30.46" y="534.75" class="st12" 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(423.248,-153.25)">		<title>shape11-30</title>		<desc>Adreno VPU firmware</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="40.4998" cy="522.499" width="81" height="35.9998"></v:textrect>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L72 540.5 A9.00017 9.00017 -180 0 0 81 531.5 L81 513.5 A9.00017 9.00017					 -180 0 0 72 504.5 L9 504.5 A9.00017 9.00017 -180 0 0 0 513.5 L0 531.5 Z" class="st13"></path>		<text x="12.71" y="519" class="st14" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Adreno VPU <tspan x="30.5" dy="1.275em" class="st6">固件</tspan></text>		</g>	<g id="shape12-41" v:mid="12" v:groupcontext="shape" transform="translate(647.997,-36.2508)">		<title>shape12-34</title>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L54 540.5 A9.00017 9.00017 -180 0 0 63 531.5 A9.00017 9.00017 -180					 0 0 54 522.5 L9 522.5 A9.00017 9.00017 -180 0 0 0 531.5 Z" class="st2"></path>	</g>	<g id="shape13-43" v:mid="13" v:groupcontext="shape" transform="translate(575.998,-36.0008)">		<title>shape13-36</title>		<path d="M0 531.5 A9.00017 9.00017 -180 0 0 9 540.5 L54 540.5 A9.00017 9.00017 -180 0 0 63 531.5 A9.00017 9.00017 -180					 0 0 54 522.5 L9 522.5 A9.00017 9.00017 -180 0 0 -0 531.5 Z" class="st7"></path>	</g>	<g id="shape14-45" v:mid="14" v:groupcontext="shape" transform="translate(647.747,-36.2508)">		<title>shape23-38</title>		<desc>Open source</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="31.4999" cy="531.499" width="63" height="17.9999"></v:textrect>		<rect x="0" y="522.5" width="62.9997" height="17.9999" class="st11"></rect>		<text x="13.5" y="534.42" class="st15" 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(797.249,90.2506) rotate(90)">		<title>shape26-41</title>		<path d="M0 540.5 L46.96 540.5 L54 540.5" class="st16"></path>	</g>	<g id="shape16-54" v:mid="16" v:groupcontext="shape" transform="translate(797.249,198.25) rotate(90)">		<title>shape27-47</title>		<path d="M0 540.5 L28.96 540.5 L36 540.5" class="st16"></path>	</g>	<g id="shape17-59" v:mid="17" v:groupcontext="shape" transform="translate(797.249,288.25) rotate(90)">		<title>shape28-52</title>		<path d="M0 540.5 L46.96 540.5 L54 540.5" class="st16"></path>	</g>	<g id="shape18-64" v:mid="18" v:groupcontext="shape" transform="translate(941.248,90.2506) rotate(90)">		<title>shape29-57</title>		<path d="M0 540.5 L6.68 540.5 L7.04 540.5 L54 540.5" class="st18"></path>	</g>	<g id="shape19-70" v:mid="19" v:groupcontext="shape" transform="translate(941.248,198.25) rotate(90)">		<title>shape30-63</title>		<path d="M0 540.5 L6.68 540.5 L7.04 540.5 L36 540.5" class="st18"></path>	</g>	<g id="shape20-75" v:mid="20" v:groupcontext="shape" transform="translate(941.248,288.25) rotate(90)">		<title>shape31-68</title>		<path d="M0 540.5 L6.68 540.5 L7.04 540.5 L54 540.5" class="st18"></path>	</g>	<g id="shape21-80" v:mid="21" v:groupcontext="shape" transform="translate(575.748,-36.0008)">		<title>shape21-73</title>		<desc>Qualcomm</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(1.99999,1.99999,1.99999,1.99999)"></v:textblock>		<v:textrect cx="31.4999" cy="531.499" width="63" height="17.9999"></v:textrect>		<rect x="0" y="522.5" width="62.9997" height="17.9999" class="st11"></rect>		<text x="9.74" y="534.2" class="st19" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Qualcomm</text>		</g></g>
</svg>

Note: Qualcomm Linux 平台可用来开发适用于 QCS6490 和 QCS5430 的应用程序。

Last Published: Aug 22, 2024

[Next Topic
入门指南](https://docs.qualcomm.com/bundle/publicresource/80-70014-20Y/topics/samples.md)