# 视频架构

视频软件栈由一个客户端应用程序组成，该应用程序使用 V4L2 框架与 Adreno VPU 交互。

下图显示了解码器和编码器的软件架构：左图展示了解码器架构，右图展示了编码器架构。

<!--?xml version="1.0" encoding="UTF-8"?-->
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1289" height="613.5" viewbox="0 0 1289 613.5" aria-label="../../_images/Video-decoder-encoder-architecture.svg">
  <defs>
    <style>.svg-1 .cls-1,.svg-1 .cls-2,.svg-1 .cls-3,.svg-1 .cls-4 { fill: none }
.svg-1 .cls-1,.svg-1 .cls-5,.svg-1 .cls-6 { stroke-linecap: square }
.svg-1 .cls-1,.svg-1 .cls-5,.svg-1 .cls-6,.svg-1 .cls-7 { stroke-miterlimit: 3 }
.svg-1 .cls-1,.svg-1 .cls-3 { stroke: #2a2aea }
.svg-1 .cls-8 { letter-spacing: -.05em }
.svg-1 .cls-8,.svg-1 .cls-9,.svg-1 .cls-10,.svg-1 .cls-11,.svg-1 .cls-12,.svg-1 .cls-13,.svg-1 .cls-14 { font-family: Roboto-Regular, Roboto }
.svg-1 .cls-2,.svg-1 .cls-3 { stroke-miterlimit: 10 }
.svg-1 .cls-2,.svg-1 .cls-4 { stroke: #000 }
.svg-1 .cls-5 { stroke: #fafafa }
.svg-1 .cls-5,.svg-1 .cls-15 { fill: #d2d7e1 }
.svg-1 .cls-16 { font-size: 9px }
.svg-1 .cls-16,.svg-1 .cls-17,.svg-1 .cls-18,.svg-1 .cls-19,.svg-1 .cls-9,.svg-1 .cls-11,.svg-1 .cls-20,.svg-1 .cls-21,.svg-1 .cls-22,.svg-1 .cls-14 { isolation: isolate }
.svg-1 .cls-16,.svg-1 .cls-17,.svg-1 .cls-19,.svg-1 .cls-23,.svg-1 .cls-22 { font-family: MicrosoftYaHeiUI, "Microsoft YaHei UI" }
.svg-1 .cls-24,.svg-1 .cls-19,.svg-1 .cls-21,.svg-1 .cls-6,.svg-1 .cls-14 { fill: #fff }
.svg-1 .cls-25 { fill: #007884 }
.svg-1 .cls-17,.svg-1 .cls-19,.svg-1 .cls-9,.svg-1 .cls-21 { font-size: 12px }
.svg-1 .cls-26 { letter-spacing: 0em }
.svg-1 .cls-27,.svg-1 .cls-9,.svg-1 .cls-7 { fill: #2a2aea }
.svg-1 .cls-28,.svg-1 .cls-13 { letter-spacing: 0em }
.svg-1 .cls-4 { stroke-dasharray: 7 5; stroke-linecap: round; stroke-linejoin: round }
.svg-1 .cls-29 { font-family: NotoKufiArabic-Regular, "Noto Kufi Arabic" }
.svg-1 .cls-10 { letter-spacing: 0em }
.svg-1 .cls-11,.svg-1 .cls-20,.svg-1 .cls-22,.svg-1 .cls-14 { font-size: 10px }
.svg-1 .cls-30 { fill-rule: evenodd }
.svg-1 .cls-31 { fill: #fafafa }
.svg-1 .cls-6 { stroke: #4d4d4d }
.svg-1 .cls-7 { stroke: #fff }</style>
  </defs>
  <rect class="cls-31" x=".5" y=".5" width="1288" height="612.5" rx="7.5" ry="7.5"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-11" transform="translate(1126.14 595.77)"><tspan x="0" y="0">Qualcomm</tspan></text>
      </g>
    </g>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(1214.65 595.79)"><tspan x="0" y="0">开源</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape73-1">
    <rect class="cls-6" x="646.55" y="14.06" width="626.31" height="557.44" rx="3.99" ry="3.99"></rect>
  </g>
  <g id="shape72-3">
    <rect class="cls-6" x="13.42" y="13.67" width="626.31" height="557.83" rx="3.99" ry="3.99"></rect>
  </g>
  <rect class="cls-25" x="58.86" y="31.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-21" transform="translate(154.58 62.11)"><tspan class="cls-23" x="0" y="0">应用程序</tspan><tspan class="cls-12" x="48" y="0"> </tspan><tspan class="cls-10" x="50.97" y="0">(</tspan><tspan class="cls-12" x="55.19" y="0">V4L2, GSt</tspan><tspan class="cls-13" x="107.3" y="0">r</tspan><tspan class="cls-12" x="111.25" y="0">eamer)</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-25" x="58.86" y="247.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-21" transform="translate(211.3 278.02)"><tspan class="cls-12" x="0" y="0">V4L2</tspan><tspan class="cls-23" x="27.57" y="0" xml:space="preserve"> 框架</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-27" x="58.86" y="373.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-21" transform="translate(180.92 404.11)"><tspan class="cls-12" x="0" y="0">Ad</tspan><tspan class="cls-13" x="14.6" y="0">r</tspan><tspan class="cls-12" x="18.54" y="0">eno VPU</tspan><tspan class="cls-23" x="64.32" y="0" xml:space="preserve"> 驱动程序</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-1" x="58.86" y="499.5" width="360" height="54" rx="4" ry="4"></rect>
  <text class="cls-9" transform="translate(171.75 530.09)"><tspan x="0" y="0">Ad</tspan><tspan class="cls-28" x="14.6" y="0">r</tspan><tspan x="18.54" y="0">eno VPU</tspan></text>
  <g id="shape6-17">
    <path class="cls-4" d="M13.36,229.22h624.97"></path>
  </g>
  <g id="shape7-20">
    <path class="cls-4" d="M13.36,445.51h624.97"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(580.43 220.1)"><tspan x="0" y="0">用户空间</tspan></text>
      </g>
    </g>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(580.43 437.26)"><tspan x="0" y="0">内核空间</tspan></text>
      </g>
    </g>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(600.43 459.76)"><tspan x="0" y="0">硬件</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-27" x="328.36" y="508.5" width="81" height="36" rx="4" ry="4"></rect>
  <g id="lend4">
    <path class="cls-30" d="M206.37,240.46l-3.52,7.04-3.52-7.04h7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(183.11 169.74)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape27-44">
    <g id="lend4-2">
      <path class="cls-30" d="M206.37,366.46l-3.52,7.04-3.52-7.04h7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(183.09 340.2)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-3">
    <path class="cls-30" d="M206.37,492.46l-3.52,7.04-3.52-7.04h7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-16" transform="translate(184.37 466.59)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-4">
    <path class="cls-30" d="M307.33,92.54l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-20" transform="translate(291.84 169.66)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape30-67">
    <g id="lend4-5">
      <path class="cls-30" d="M307.33,308.54l3.52-7.04,3.52,7.04h-7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-20" transform="translate(291.84 340.2)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-6">
    <path class="cls-30" d="M307.33,434.54l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-20" transform="translate(291.84 466.81)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-5" x="490.86" y="31.5" width="135" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-17" transform="translate(540.36 61.7)"><tspan x="0" y="0">显示器</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape36-90">
    <g id="lend4-7">
      <path class="cls-30" d="M483.82,54.99l7.04,3.52-7.04,3.52v-7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-20" transform="translate(429.91 53.51)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV </tspan><tspan class="cls-23" x="20.86" y="0">缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-8">
    <path class="cls-30" d="M92.98,92.54l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(75.98 111.06)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="lend4-9">
    <path class="cls-30" d="M92.98,157.8l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-16" transform="translate(77.98 174.62)"><tspan x="0" y="0">容器文件</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape48-113">
    <rect class="cls-25" x="668.36" y="30.38" width="360" height="54" rx="4" ry="4"></rect>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-21" transform="translate(787.66 60.98)"><tspan class="cls-23" x="0" y="0">应用程序</tspan><tspan class="cls-29" x="48" y="0"> </tspan><tspan class="cls-10" x="52.08" y="0">(</tspan><tspan class="cls-12" x="56.3" y="0">V4L2, GSt</tspan><tspan class="cls-13" x="108.41" y="0">r</tspan><tspan class="cls-12" x="112.36" y="0">eamer)</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="cls-25" x="668.36" y="247.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-21" transform="translate(820.41 278.11)"><tspan class="cls-12" x="0" y="0">V4L2</tspan><tspan class="cls-23" x="27.57" y="0" xml:space="preserve"> 框架</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-27" x="668.36" y="373.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-21" transform="translate(787.42 404.11)"><tspan class="cls-12" x="0" y="0">Ad</tspan><tspan class="cls-13" x="14.6" y="0">r</tspan><tspan class="cls-12" x="18.54" y="0">eno VPU </tspan><tspan class="cls-23" x="67.29" y="0">驱动程序</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-3" x="668.36" y="499.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <text class="cls-9" transform="translate(780.92 530.09)"><tspan x="0" y="0">Ad</tspan><tspan class="cls-28" x="14.6" y="0">r</tspan><tspan x="18.54" y="0">eno VPU</tspan></text>
    </g>
  </g>
  <g id="shape52-125">
    <path class="cls-4" d="M646.55,229.22h626.31"></path>
  </g>
  <g id="shape53-128">
    <path class="cls-4" d="M647.5,445.51h625.36"></path>
  </g>
  <g id="shape54-131">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(1214.02 220.1)"><tspan x="0" y="0">用户空间</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape55-134">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(1214.02 437.34)"><tspan x="0" y="0">内核空间</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape56-137">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(1234.02 460.16)"><tspan x="0" y="0">硬件</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="cls-7" x="938.36" y="507.5" width="81" height="37" rx="4" ry="4"></rect>
  <g id="lend4-10">
    <path class="cls-30" d="M815.88,241.97l-3.52,7.04-3.52-7.04h7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-20" transform="translate(793.36 169.02)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape63-161">
    <g id="lend4-11">
      <path class="cls-30" d="M815.88,366.46l-3.52,7.04-3.52-7.04h7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-20" transform="translate(793.35 340.2)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape64-168">
    <g id="lend4-12">
      <path class="cls-30" d="M815.88,492.46l-3.52,7.04-3.52-7.04h7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <g class="cls-18">
            <text class="cls-20" transform="translate(792.63 467.2)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV </tspan><tspan class="cls-23" x="20.86" y="0">缓存</tspan></text>
          </g>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-13">
    <path class="cls-30" d="M916.84,91.42l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(899.6 169.02)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape66-183">
    <g id="lend4-14">
      <path class="cls-30" d="M916.84,308.54l3.52-7.04,3.52,7.04h-7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(900.6 340.2)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape67-190">
    <g id="lend4-15">
      <path class="cls-30" d="M916.84,434.54l3.52-7.04,3.52,7.04h-7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(900.6 467.2)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="cls-15" x="668.36" y="129.38" width="93.86" height="23.4" rx="4.2" ry="4.2"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-22" transform="translate(695.87 144.09)"><tspan x="0" y="0">摄像头源</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-25" x="1125.11" y="30.38" width="135" height="54" rx="4" ry="4"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-19" transform="translate(1162.61 60.98)"><tspan x="0" y="0">文件复用器</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape70-203">
    <g id="lend4-16">
      <path class="cls-30" d="M1118.07,53.86l7.04,3.52-7.04,3.52v-7.04"></path>
    </g>
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-22" transform="translate(1054.68 52.39)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-17">
    <path class="cls-30" d="M709.9,91.42l3.52-7.04,3.52,7.04h-7.04"></path>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <text class="cls-20" transform="translate(695.2 111.5)"><tspan class="cls-8" x="0" y="0">Y</tspan><tspan class="cls-12" x="5.54" y="0">UV</tspan><tspan class="cls-23" x="18.38" y="0" xml:space="preserve"> 缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="cls-25" x="58.86" y="127.36" width="75.29" height="23.4" rx="3.76" ry="3.76"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-14" transform="translate(76.14 141.98)"><tspan x="0" y="0">Demu</tspan><tspan class="cls-26" x="26.13" y="0">x</tspan><tspan x="30.99" y="0">er</tspan></text>
      </g>
    </g>
  </g>
  <rect class="cls-15" x="58.86" y="188.62" width="75.29" height="23.4" rx="3.76" ry="3.76"></rect>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <text class="cls-11" transform="translate(73.18 203.24)"><tspan x="0" y="0">FileSou</tspan><tspan class="cls-28" x="32.83" y="0">r</tspan><tspan x="36.12" y="0">ce</tspan></text>
      </g>
    </g>
  </g>
  <line class="cls-2" x1="96.5" y1="92.54" x2="96.5" y2="103.33"></line>
  <line class="cls-2" x1="96.5" y1="114.5" x2="96.5" y2="127.36"></line>
  <line class="cls-2" x1="713.42" y1="91.42" x2="713.42" y2="100.83"></line>
  <line class="cls-2" x1="713.42" y1="114.5" x2="713.42" y2="129.38"></line>
  <line class="cls-2" x1="483.82" y1="58.51" x2="418.86" y2="58.51"></line>
  <line class="cls-2" x1="202.85" y1="174.62" x2="202.85" y2="241.97"></line>
  <line class="cls-2" x1="202.85" y1="344.78" x2="202.85" y2="367.33"></line>
  <line class="cls-2" x1="202.85" y1="301.46" x2="202.85" y2="330.67"></line>
  <line class="cls-2" x1="202.85" y1="471" x2="202.85" y2="492.82"></line>
  <line class="cls-2" x1="202.85" y1="426.95" x2="202.85" y2="456.89"></line>
  <line class="cls-2" x1="202.85" y1="85.5" x2="202.85" y2="159.83"></line>
  <line class="cls-2" x1="310.85" y1="173.33" x2="310.85" y2="247.54"></line>
  <line class="cls-2" x1="310.85" y1="91.08" x2="310.85" y2="158"></line>
  <line class="cls-2" x1="812.36" y1="174.62" x2="812.36" y2="241.97"></line>
  <line class="cls-2" x1="812.36" y1="85.5" x2="812.36" y2="159.83"></line>
  <line class="cls-2" x1="1028.36" y1="57.38" x2="1118.07" y2="57.38"></line>
  <line class="cls-2" x1="920.36" y1="173.33" x2="920.36" y2="247.54"></line>
  <line class="cls-2" x1="920.36" y1="91.08" x2="920.36" y2="158"></line>
  <line class="cls-2" x1="96.5" y1="156.94" x2="96.5" y2="166.11"></line>
  <line class="cls-2" x1="96.5" y1="177.44" x2="96.5" y2="188.62"></line>
  <line class="cls-2" x1="310.85" y1="308.46" x2="310.85" y2="330.67"></line>
  <line class="cls-2" x1="310.85" y1="344.26" x2="310.85" y2="373.5"></line>
  <line class="cls-2" x1="812.36" y1="344.78" x2="812.36" y2="367.33"></line>
  <line class="cls-2" x1="812.36" y1="301.46" x2="812.36" y2="330.67"></line>
  <line class="cls-2" x1="920.36" y1="308.46" x2="920.36" y2="330.67"></line>
  <line class="cls-2" x1="920.36" y1="344.26" x2="920.36" y2="373.5"></line>
  <line class="cls-2" x1="310.85" y1="434.54" x2="310.85" y2="456.75"></line>
  <line class="cls-2" x1="310.85" y1="470.34" x2="310.85" y2="499.58"></line>
  <line class="cls-2" x1="812.36" y1="471" x2="812.36" y2="492.82"></line>
  <line class="cls-2" x1="812.36" y1="426.95" x2="812.36" y2="456.89"></line>
  <line class="cls-2" x1="920.36" y1="434.54" x2="920.36" y2="456.75"></line>
  <line class="cls-2" x1="920.36" y1="470.34" x2="920.36" y2="499.58"></line>
  <rect class="cls-27" x="1102.68" y="584.44" width="16.95" height="16.95" rx="2" ry="2"></rect>
  <rect class="cls-1" x="1079" y="584.44" width="16.95" height="16.95" rx="2" ry="2"></rect>
  <rect class="cls-25" x="1191.68" y="584.44" width="16.95" height="16.95" rx="2" ry="2"></rect>
  <path class="cls-15" d="M1281,1c3.86,0,7,3.14,7,7v597.5c0,3.86-3.14,7-7,7H8c-3.86,0-7-3.14-7-7V8c0-3.86,3.14-7,7-7h1273M1281,0H8C3.58,0,0,3.58,0,8v597.5c0,4.42,3.58,8,8,8h1273c4.42,0,8-3.58,8-8V8c0-4.42-3.58-8-8-8h0Z"></path>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <g class="cls-18">
          <path class="cls-24" d="M346.81,521.92h-2.98l-.67,1.86h-.97l2.71-7.11h.82l2.72,7.11h-.96l-.68-1.86ZM344.11,521.15h2.42l-1.21-3.33-1.21,3.33Z"></path>
          <path class="cls-24" d="M349.05,521.09c0-.81.19-1.46.58-1.96.38-.49.89-.74,1.51-.74s1.11.21,1.47.63v-2.75h.9v7.5h-.83l-.04-.57c-.36.44-.86.66-1.51.66s-1.11-.25-1.5-.75-.58-1.16-.58-1.96v-.07ZM349.95,521.19c0,.6.12,1.07.37,1.41s.59.51,1.03.51c.57,0,.99-.26,1.25-.77v-2.43c-.27-.5-.69-.75-1.25-.75-.44,0-.79.17-1.04.51s-.37.85-.37,1.52Z"></path>
          <path class="cls-24" d="M357.46,519.3c-.14-.02-.28-.03-.44-.03-.59,0-.99.25-1.21.76v3.75h-.9v-5.28h.88v.61c.31-.47.73-.71,1.27-.71.18,0,.31.02.4.07v.84Z"></path>
          <path class="cls-24" d="M360.39,523.88c-.72,0-1.3-.24-1.75-.71-.45-.47-.67-1.1-.67-1.89v-.17c0-.52.1-.99.3-1.4.2-.41.48-.73.84-.97.36-.23.75-.35,1.17-.35.69,0,1.22.23,1.6.68s.57,1.1.57,1.94v.38h-3.58c.01.52.17.94.46,1.26.29.32.66.48,1.11.48.32,0,.59-.07.81-.2s.42-.3.58-.52l.55.43c-.44.68-1.11,1.02-1.99,1.02ZM360.28,519.14c-.36,0-.67.13-.92.4-.25.26-.4.64-.46,1.12h2.65v-.07c-.03-.46-.15-.81-.37-1.07-.22-.25-.52-.38-.9-.38Z"></path>
          <path class="cls-24" d="M364.35,518.49l.03.66c.4-.51.93-.76,1.58-.76,1.12,0,1.68.63,1.69,1.89v3.49h-.9v-3.5c0-.38-.09-.66-.26-.84s-.44-.27-.8-.27c-.29,0-.55.08-.77.23s-.39.36-.52.62v3.76h-.9v-5.28h.85Z"></path>
          <path class="cls-24" d="M368.77,521.09c0-.52.1-.98.31-1.4s.49-.73.85-.96.78-.34,1.24-.34c.72,0,1.3.25,1.75.75s.67,1.16.67,1.99v.06c0,.51-.1.98-.3,1.38-.2.41-.48.73-.84.96s-.79.34-1.26.34c-.72,0-1.3-.25-1.74-.75s-.67-1.16-.67-1.98v-.06ZM369.68,521.19c0,.59.14,1.06.41,1.41s.64.53,1.09.53.82-.18,1.09-.54c.27-.36.41-.86.41-1.51,0-.58-.14-1.05-.41-1.41-.27-.36-.64-.54-1.1-.54s-.81.18-1.08.53-.41.86-.41,1.52Z"></path>
          <path class="cls-24" d="M379.69,522.53l2.03-5.86h1.03l-2.64,7.11h-.83l-2.63-7.11h1.02l2.02,5.86Z"></path>
          <path class="cls-24" d="M384.63,520.99v2.78h-.94v-7.11h2.62c.78,0,1.39.2,1.83.6s.66.92.66,1.58c0,.69-.22,1.22-.65,1.59-.43.37-1.05.56-1.85.56h-1.67ZM384.63,520.23h1.68c.5,0,.89-.12,1.15-.35s.4-.58.4-1.03c0-.42-.13-.76-.4-1.02-.27-.25-.63-.39-1.1-.4h-1.74v2.79Z"></path>
          <path class="cls-24" d="M395.01,516.67v4.83c0,.67-.21,1.22-.63,1.65s-.99.67-1.7.72h-.25c-.78,0-1.4-.2-1.86-.62s-.7-1-.7-1.73v-4.84h.93v4.81c0,.51.14.91.42,1.2.28.28.69.43,1.21.43s.94-.14,1.22-.42.42-.68.42-1.2v-4.82h.94Z"></path>
          <path class="cls-24" d="M359.59,527.97h8.54v9.11h-.73v-.51h-7.07v.52h-.74v-9.12ZM367.4,528.68h-7.07v7.18h7.07v-7.18ZM361.78,531.93h1.71v-1.18h-2.58v-.66h2.58v-1.13h.72v1.13h2.59v.66h-2.59v1.18h1.73v3.16h-.7v-.4h-2.75v.4h-.7v-3.16ZM365.24,532.58h-2.75v1.47h2.75v-1.47Z"></path>
          <path class="cls-24" d="M368.97,532.35c.9-1.33,1.62-2.94,2.17-4.82l.8.23c-.24.76-.5,1.47-.78,2.13v7.15h-.77v-5.54c-.33.62-.69,1.18-1.06,1.69-.1-.28-.21-.56-.35-.85ZM371.91,532.94h3.39v-2.47h-1.86c-.26.7-.55,1.33-.86,1.88-.19-.18-.4-.35-.64-.52.62-1.09,1.07-2.3,1.37-3.64l.79.22c-.13.49-.26.94-.41,1.38h1.62v-2.27h.78v2.27h2.33v.68h-2.33v2.47h2.66v.68h-2.66v3.42h-.78v-3.42h-3.39v-.68Z"></path>
        </g>
      </g>
    </g>
  </g>
  <g class="cls-18">
    <g class="cls-18">
      <g class="cls-18">
        <path class="cls-24" d="M957.05,521.92h-2.98l-.67,1.86h-.97l2.71-7.11h.82l2.72,7.11h-.96l-.68-1.86ZM954.35,521.15h2.42l-1.21-3.33-1.21,3.33Z"></path>
        <path class="cls-24" d="M959.29,521.09c0-.81.19-1.46.58-1.96.38-.49.89-.74,1.51-.74s1.11.21,1.47.63v-2.75h.9v7.5h-.83l-.04-.57c-.36.44-.86.66-1.51.66s-1.11-.25-1.5-.75-.58-1.16-.58-1.96v-.07ZM960.19,521.19c0,.6.12,1.07.37,1.41.25.34.59.51,1.03.51.57,0,.99-.26,1.25-.77v-2.43c-.27-.5-.69-.75-1.25-.75-.44,0-.79.17-1.04.51-.25.34-.37.85-.37,1.52Z"></path>
        <path class="cls-24" d="M967.7,519.3c-.14-.02-.29-.03-.44-.03-.59,0-1,.25-1.21.76v3.75h-.9v-5.28h.88v.61c.31-.47.73-.71,1.27-.71.18,0,.31.02.4.07v.84Z"></path>
        <path class="cls-24" d="M970.63,523.88c-.72,0-1.3-.24-1.75-.71-.45-.47-.67-1.1-.67-1.89v-.17c0-.52.1-.99.3-1.4.2-.41.48-.73.84-.97.36-.23.75-.35,1.17-.35.69,0,1.22.23,1.6.68s.57,1.1.57,1.94v.38h-3.58c.01.52.17.94.46,1.26.29.32.66.48,1.11.48.32,0,.59-.07.81-.2.22-.13.42-.3.58-.52l.55.43c-.44.68-1.11,1.02-1.99,1.02ZM970.52,519.14c-.37,0-.67.13-.92.4-.25.26-.4.64-.46,1.12h2.65v-.07c-.03-.46-.15-.81-.37-1.07-.22-.25-.52-.38-.9-.38Z"></path>
        <path class="cls-24" d="M974.59,518.49l.03.66c.4-.51.93-.76,1.58-.76,1.12,0,1.68.63,1.69,1.89v3.49h-.9v-3.5c0-.38-.09-.66-.26-.84s-.44-.27-.8-.27c-.29,0-.55.08-.77.23-.22.16-.39.36-.52.62v3.76h-.9v-5.28h.85Z"></path>
        <path class="cls-24" d="M979.01,521.09c0-.52.1-.98.3-1.4.2-.41.49-.73.85-.96.36-.22.78-.34,1.24-.34.72,0,1.3.25,1.75.75s.67,1.16.67,1.99v.06c0,.51-.1.98-.3,1.38-.2.41-.48.73-.84.96s-.79.34-1.26.34c-.72,0-1.3-.25-1.74-.75s-.67-1.16-.67-1.98v-.06ZM979.92,521.19c0,.59.14,1.06.41,1.41.27.35.64.53,1.09.53s.82-.18,1.09-.54c.27-.36.41-.86.41-1.51,0-.58-.14-1.05-.41-1.41-.27-.36-.64-.54-1.1-.54s-.81.18-1.08.53-.41.86-.41,1.52Z"></path>
        <path class="cls-24" d="M989.92,522.53l2.03-5.86h1.03l-2.64,7.11h-.83l-2.63-7.11h1.02l2.02,5.86Z"></path>
        <path class="cls-24" d="M994.87,520.99v2.78h-.94v-7.11h2.62c.78,0,1.39.2,1.83.6.44.4.66.92.66,1.58,0,.69-.22,1.22-.65,1.59-.43.37-1.05.56-1.85.56h-1.67ZM994.87,520.23h1.68c.5,0,.88-.12,1.15-.35.27-.24.4-.58.4-1.03,0-.42-.13-.76-.4-1.02-.27-.25-.63-.39-1.1-.4h-1.74v2.79Z"></path>
        <path class="cls-24" d="M1005.25,516.67v4.83c0,.67-.21,1.22-.63,1.65-.42.43-.99.67-1.7.72h-.25c-.78,0-1.4-.2-1.86-.62-.46-.42-.7-1-.7-1.73v-4.84h.93v4.81c0,.51.14.91.42,1.2.28.28.69.43,1.21.43s.94-.14,1.22-.42c.28-.28.42-.68.42-1.2v-4.82h.94Z"></path>
        <path class="cls-24" d="M969.83,527.97h8.54v9.11h-.73v-.51h-7.07v.52h-.74v-9.12ZM977.64,528.68h-7.07v7.18h7.07v-7.18ZM972.02,531.93h1.71v-1.18h-2.58v-.66h2.58v-1.13h.72v1.13h2.59v.66h-2.59v1.18h1.73v3.16h-.7v-.4h-2.75v.4h-.7v-3.16ZM975.48,532.58h-2.75v1.47h2.75v-1.47Z"></path>
        <path class="cls-24" d="M979.21,532.35c.9-1.33,1.62-2.94,2.17-4.82l.8.23c-.24.76-.5,1.47-.78,2.13v7.15h-.77v-5.54c-.33.62-.69,1.18-1.06,1.69-.1-.28-.21-.56-.35-.85ZM982.15,532.94h3.39v-2.47h-1.86c-.26.7-.55,1.33-.86,1.88-.19-.18-.4-.35-.64-.52.62-1.09,1.07-2.3,1.37-3.64l.79.22c-.13.49-.26.94-.41,1.38h1.62v-2.27h.78v2.27h2.33v.68h-2.33v2.47h2.66v.68h-2.66v3.42h-.78v-3.42h-3.39v-.68Z"></path>
      </g>
    </g>
  </g>
</svg>

**图：视频解码器和编码器软件架构**

下表列出了视频软件架构的组件：

| 组件 | 说明 |
| --- | --- |
| 用户应用程序 | 它与基于 GStreamer/V4L2 的解码器的文件源和编码器的摄像头源进行交互 |
| V4L2 框架 | <ul class="simple"><br><li><p>与用户应用程序和 Adreno VPU 驱动程序交互</p></li><br><li><p>负责处理事件、回调和缓存管理</p></li><br></ul> |
| Adreno VPU 驱动程序 | <ul class="simple"><br><li><p>用作视频内核模式驱动程序 (KMD) 的入口点</p></li><br><li><p>控制 Adreno VPU 的编码器和解码器的通用驱动程序</p></li><br><li><p>使用主机固件接口 (HFI) 管理视频驱动程序状态机、缓存分配、时钟/总线管理以及与 Adreno VPU 的通信</p></li><br></ul> |
| Adreno VPU | 用作硬件加速引擎，以最小的功耗解码和编码视频 |

## 视频功能摘要

Adreno VPU 提供以下视频解码和编码功能：

| 用例 | 功能 | QCS6490 | Qualcomm Dragonwing ^™^ IQ-9075/Qualcomm Dragonwing ^™^ IQ-8275 |
| --- | --- | --- | --- |
| **Codec** | H.264（8 位解码器） | ✔ | ✔ |
| **Codec** | HEVC（8 位解码器） | ✔ | ✔ |
| **Codec** | HEVC（10 位解码器） | ✔ | ✔ |
| **Codec** | VP9（8 位解码器） | ✔ | ✔ |
| **Codec** | VP9（10 位解码器） | ✔ | ✔ |
| **Codec** | AV1（8 位解码器） | ✖ | ✔ |
| **Codec** | AV1（10 位解码器） | ✖ | ✔ |
| **Codec** | H.264（8 位编码器） | ✔ | ✔ |
| **Codec** | HEVC（8 位编码器） | ✔ | ✔ |
| **功能** | [B 帧编码](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#beframeencode) | ✔ | ✔ |
| **功能** | [编码器初始 QP 覆盖](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#qpoverride) | ✔ | ✔ |
| **功能** | [Hierarchical-P 编码](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#hierarchical) | ✔ | ✖ |
| **功能** | [slice 编码](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#sliceencode) | ✔ | ✖ |
| **功能** | [Intra-refresh](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#interarefresh) | ✔ | ✖ |
| **功能** | [预处理](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#videoencoder) | ✔ | ✖ |
| **功能** | [码率控制](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#ratecontrol) | ✔ | ✔ |
| **功能** | [长期参考帧 (LTR)](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#longterm) | ✔ | ✖ |
| **功能** | [动态属性](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#dynamicencoder) | ✔ | ✔ |
| **并发** | 多实例支持 | ✔ | ✔ |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |

## 视频功能

Tab QCS6490
Tab IQ-8275
Tab IQ-9075

QCS6490 上的 Adreno VPU 是第六代视频处理单元，具有以下功能：

> 
> 
> | 功能 | 能力 |
> | --- | --- |
> | 视频解码 | H.264/HEVC/VP9：最高 4096 × 2160 (60 fps) |
> | 视频编码 | H.264/HEVC：最高 4096 × 2160 (30 fps) |
> | 多通道能力 | <ul class="simple"><br><li><p>8 路 1920 × 1088 (30 fps 解码)</p></li><br><li><p>16 路 1280 × 720 (30 fps 解码)</p></li><br><li><p>4 路 1920 × 1088 (30 fps 编码)</p></li><br><li><p>8 路 1280 × 720 (30 fps 编码)</p></li><br></ul> |
> | 高帧率采集 | 1280 × 720 (480 fps) 或 1920 × 1088 (240 fps) |
> | 每秒最大宏块数 | 2088960<br><br><br>可以使用以下公式计算每秒的最大宏块数：<br><br><br>（对齐宽度 × 对齐高度 × fps）/（宏块大小）<br><br><br>例如，(4096×2176×60)/256=2088960 |
> 
> 
> 
> 有关 QCS6490 解码和编码功能的更多信息，请参阅[高级视频规格](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#qcs6490)。

Dragonwing IQ-8275 上的 Adreno VPU 是第七代视频处理单元，具有以下功能：

> 
> 
> | **功能** | **能力** |
> | --- | --- |
> | 视频解码 | <ul class="simple"><br><li><p>H.264/HEVC/VP9：最高 3840 × 2160 (120 fps)</p></li><br><li><p>AV1：最高 3840 × 2160 (60 fps)</p></li><br></ul> |
> | 视频编码 | H.264/HEVC：最高 4096 × 2160 (60 fps) |
> | 多通道能力 | <ul class="simple"><br><li><p>16 路 1920 × 1088 (30 fps 解码)</p></li><br><li><p>16 路 1280 × 720 (30 fps 编码)</p></li><br></ul> |
> | 高帧率采集 | 1920 × 1088 (240 fps) 或 3840 × 2160 (60 fps) |
> | 每秒最大宏块数 | 3916800<br><br><br><br>> <br>> <br>> 可以使用以下公式计算每秒的最大宏块数：<br>> <br>> <br>> （对齐宽度 × 对齐高度 × fps）/（宏块大小）<br>> <br>> <br>> 例如，(3840 × 2176 × 120)/256 = 3916800 |
> 
> 
> 
> 有关 Dragonwing IQ-8275 解码和编码功能的更多信息，请参阅[高级视频规格](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#qcs8275)。

QCS9075 上的 Adreno VPU 是第七代视频处理单元，具有以下功能：

| 功能 | 能力 |
| --- | --- |
| 视频解码 | <ul class="simple"><br><li><p>H.264/HEVC/AV1：最高 7680 × 4320 (60 fps)；或者 3840 × 2160 (240 fps)。</p></li><br><li><p>VP9：最高 3840 × 2160 (240 fps)</p></li><br></ul> |
| 视频编码 | H.264/HEVC：最高 7680 × 4320 (30 fps) |
| 多通道能力 | <ul class="simple"><br><li><p>32 路 1920 × 1088 (30 fps 解码)</p></li><br><li><p>32 路 1280 × 720 (30 fps 编码)</p></li><br><li><p>24 路 1920 × 1088 (30 fps 编码)</p></li><br><li><p>8 路 3840 × 2160 (30 fps 解码)</p></li><br></ul> |
| 高帧率采集 | 1920 × 1088 (480 fps) 或 3840 × 2160 (120 fps) |
| 每秒最大宏块数 | 7833600<br><br><br><br>> <br>> <br>> 可以使用以下公式计算每秒的最大宏块数：<br>> <br>> <br>> （对齐宽度 × 对齐高度 × fps）/（宏块大小）<br>> <br>> <br>> 例如，(3840 × 2176 × 240)/256 = 7833600 |

有关 Dragonwing IQ-9075 解码和编码功能的更多信息，请参阅[高级视频规格](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#qcs9075)。

## 后续步骤

- [高级视频规格](https://docs.qualcomm.com/doc/80-70020-20SC/topic/feature-descriptions.html#section-tmv-51x-k1c-eputla-02-14-24-1638-44-607)

Last Published: Jul 23, 2025

[Previous Topic
启用视频](https://docs.qualcomm.com/bundle/publicresource/80-70020-20SC/topics/getting-started.md) [Next Topic
构建视频源组件](https://docs.qualcomm.com/bundle/publicresource/80-70020-20SC/topics/software.md)

Source: [https://docs.qualcomm.com/doc/80-70020-20SC/topic/architecture.html](https://docs.qualcomm.com/doc/80-70020-20SC/topic/architecture.html)