# 视频架构

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

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

<!--?xml version="1.0" encoding="UTF-8"?-->
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" width="1289" height="613.5" version="1.1" viewbox="0 0 1289 613.5" aria-label="视频解码器和视频编码器架构的并排视图。">
  <!-- Generator: Adobe Illustrator 29.5.0, SVG Export Plug-In . SVG Version: 2.1.0 Build 137)  -->
  <defs>
    <style>.svg-1 .st0,.svg-1 .st1,.svg-1 .st2,.svg-1 .st3 { fill: none }
.svg-1 .st0,.svg-1 .st4,.svg-1 .st5 { stroke-linecap: square }
.svg-1 .st0,.svg-1 .st4,.svg-1 .st5,.svg-1 .st6 { stroke-miterlimit: 3 }
.svg-1 .st0,.svg-1 .st2 { stroke: #2a2aea }
.svg-1 .st1,.svg-1 .st2 { stroke-miterlimit: 10 }
.svg-1 .st1,.svg-1 .st3 { stroke: #000 }
.svg-1 .st4 { stroke: #fafafa }
.svg-1 .st4,.svg-1 .st7 { fill: #d2d7e1 }
.svg-1 .st8,.svg-1 .st9,.svg-1 .st10,.svg-1 .st5,.svg-1 .st11 { fill: #fff }
.svg-1 .st8,.svg-1 .st12,.svg-1 .st13,.svg-1 .st14,.svg-1 .st15,.svg-1 .st16,.svg-1 .st17,.svg-1 .st18,.svg-1 .st10,.svg-1 .st11 { isolation: isolate }
.svg-1 .st8,.svg-1 .st12,.svg-1 .st13,.svg-1 .st19,.svg-1 .st17 { font-family: SimHei, SimHei }
.svg-1 .st8,.svg-1 .st15,.svg-1 .st17,.svg-1 .st10 { font-size: 12px }
.svg-1 .st20 { font-family: Roboto-Light, Roboto; font-weight: 300 }
.svg-1 .st21 { fill: #007884 }
.svg-1 .st12 { font-size: 9px }
.svg-1 .st13,.svg-1 .st16,.svg-1 .st18,.svg-1 .st11 { font-size: 10px }
.svg-1 .st22,.svg-1 .st15,.svg-1 .st6 { fill: #2a2aea }
.svg-1 .st15,.svg-1 .st16,.svg-1 .st23,.svg-1 .st11 { font-family: Roboto-Regular, Roboto }
.svg-1 .st3 { stroke-dasharray: 7 5; stroke-linecap: round; stroke-linejoin: round }
.svg-1 .st24 { fill-rule: evenodd }
.svg-1 .st25 { fill: #fafafa }
.svg-1 .st5 { stroke: #4d4d4d }
.svg-1 .st6 { stroke: #fff }</style>
  </defs>
  <rect class="st25" x=".5" y=".5" width="1288" height="612.5" rx="7.5" ry="7.5"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st16" transform="translate(1126.1 595.8)"><tspan x="0" y="0">Qualcomm</tspan></text>
      </g>
    </g>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(1214.7 595.8)"><tspan x="0" y="0">开源</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape73-1">
    <rect class="st5" x="646.5" y="14.1" width="626.3" height="557.4" rx="4" ry="4"></rect>
  </g>
  <g id="shape72-3">
    <rect class="st5" x="13.4" y="13.7" width="626.3" height="557.8" rx="4" ry="4"></rect>
  </g>
  <rect class="st21" x="58.9" y="31.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st10" transform="translate(154.6 62.1)"><tspan class="st19" x="0" y="0">应用程序</tspan><tspan class="st23" x="48" y="0" xml:space="preserve"> (V4L2, GStreamer)</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st21" x="58.9" y="247.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st10" transform="translate(211.6 278)"><tspan class="st23" x="0" y="0">V4L2 </tspan><tspan class="st19" x="30.5" y="0">框架</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st22" x="58.9" y="373.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st10" transform="translate(180.9 404.1)"><tspan class="st23" x="0" y="0">Adreno VPU </tspan><tspan class="st19" x="67.4" y="0">驱动程序</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st0" x="58.9" y="499.5" width="360" height="54" rx="4" ry="4"></rect>
  <text class="st15" transform="translate(171.8 530.1)"><tspan x="0" y="0">Adreno VPU</tspan></text>
  <g id="shape6-17">
    <path class="st3" d="M13.4,229.2h625"></path>
  </g>
  <g id="shape7-20">
    <path class="st3" d="M13.4,445.5h625"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(580.4 220.1)"><tspan x="0" y="0">用户空间</tspan></text>
      </g>
    </g>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(580.4 437.3)"><tspan x="0" y="0">内核空间</tspan></text>
      </g>
    </g>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(600.4 459.8)"><tspan x="0" y="0">硬件</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st22" x="328.4" y="508.5" width="81" height="36" rx="4" ry="4"></rect>
  <g id="lend4">
    <path class="st24" d="M206.4,240.5l-3.5,7-3.5-7h7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(183.1 169.8)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape27-44">
    <g id="lend4-2">
      <path class="st24" d="M206.4,366.5l-3.5,7-3.5-7h7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(183.1 340.2)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-3">
    <path class="st24" d="M206.4,492.5l-3.5,7-3.5-7h7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st12" transform="translate(184.4 466.6)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-4">
    <path class="st24" d="M307.3,92.5l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st18" transform="translate(291.8 169.7)"><tspan class="st23" x="0" y="0">YUV</tspan><tspan class="st20" x="18.9" y="0"> </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape30-67">
    <g id="lend4-5">
      <path class="st24" d="M307.3,308.5l3.5-7,3.5,7h-7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st18" transform="translate(291.8 340.2)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-6">
    <path class="st24" d="M307.3,434.5l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st18" transform="translate(291.8 466.8)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st4" x="490.9" y="31.5" width="135" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st17" transform="translate(540.4 61.7)"><tspan x="0" y="0">显示器</tspan></text>
      </g>
    </g>
  </g>
  <g id="lend4-8">
    <path class="st24" d="M93,92.5l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(76 111.1)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="lend4-9">
    <path class="st24" d="M93,157.8l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st12" transform="translate(78 174.6)"><tspan x="0" y="0">容器文件</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape48-113">
    <rect class="st21" x="668.4" y="30.4" width="360" height="54" rx="4" ry="4"></rect>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st10" transform="translate(787.7 61)"><tspan class="st19" x="0" y="0">应用程序</tspan><tspan class="st23" x="48" y="0" xml:space="preserve"> (V4L2, GStreamer)</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="st21" x="668.4" y="247.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st10" transform="translate(820.4 278.1)"><tspan class="st23" x="0" y="0">V4L2 </tspan><tspan class="st19" x="30.5" y="0">框架</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st22" x="668.4" y="373.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st10" transform="translate(787.4 404.1)"><tspan class="st23" x="0" y="0">Adreno VPU </tspan><tspan class="st19" x="67.4" y="0">驱动程序</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st2" x="668.4" y="499.5" width="360" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <text class="st15" transform="translate(780.9 530.1)"><tspan x="0" y="0">Adreno VPU</tspan></text>
    </g>
  </g>
  <g id="shape52-125">
    <path class="st3" d="M646.5,229.2h626.3"></path>
  </g>
  <g id="shape53-128">
    <path class="st3" d="M647.5,445.5h625.4"></path>
  </g>
  <g id="shape54-131">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(1214 220.1)"><tspan x="0" y="0">用户空间</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape55-134">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(1214 437.4)"><tspan x="0" y="0">内核空间</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape56-137">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(1234 460.2)"><tspan x="0" y="0">硬件</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="st6" x="938.4" y="507.5" width="81" height="37" rx="4" ry="4"></rect>
  <g id="lend4-10">
    <path class="st24" d="M815.9,242l-3.5,7-3.5-7h7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st18" transform="translate(793.4 169)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape63-161">
    <g id="lend4-11">
      <path class="st24" d="M815.9,366.5l-3.5,7-3.5-7h7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st18" transform="translate(793.3 340.2)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="shape64-168">
    <g id="lend4-12">
      <path class="st24" d="M815.9,492.5l-3.5,7-3.5-7h7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <g class="st14">
            <text class="st18" transform="translate(792.6 467.2)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
          </g>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-13">
    <path class="st24" d="M916.8,91.4l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(899.6 169)"><tspan x="0" y="0">码流缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape66-183">
    <g id="lend4-14">
      <path class="st24" d="M916.8,308.5l3.5-7,3.5,7h-7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" 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="st24" d="M916.8,434.5l3.5-7,3.5,7h-7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(900.6 467.2)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="st7" x="668.4" y="129.4" width="93.9" height="23.4" rx="4.2" ry="4.2"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st13" transform="translate(695.9 144.1)"><tspan x="0" y="0">摄像头源</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st21" x="1125.1" y="30.4" width="135" height="54" rx="4" ry="4"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st8" transform="translate(1162.6 61)"><tspan x="0" y="0">文件复用器</tspan></text>
      </g>
    </g>
  </g>
  <g id="shape70-203">
    <g id="lend4-16">
      <path class="st24" d="M1118.1,53.9l7,3.5-7,3.5v-7"></path>
    </g>
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st13" transform="translate(1054.7 52.4)"><tspan x="0" y="0">码流缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <g id="lend4-17">
    <path class="st24" d="M709.9,91.4l3.5-7,3.5,7h-7"></path>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <text class="st18" transform="translate(695.2 111.5)"><tspan class="st23" x="0" y="0">YUV </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
        </g>
      </g>
    </g>
  </g>
  <rect class="st21" x="58.9" y="127.4" width="75.3" height="23.4" rx="3.8" ry="3.8"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st11" transform="translate(76.3 142)"><tspan x="0" y="0">Demuxer</tspan></text>
      </g>
    </g>
  </g>
  <rect class="st7" x="58.9" y="188.6" width="75.3" height="23.4" rx="3.8" ry="3.8"></rect>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st16" transform="translate(72.8 203.2)"><tspan x="0" y="0">FileSource</tspan></text>
      </g>
    </g>
  </g>
  <line class="st1" x1="96.5" y1="92.5" x2="96.5" y2="103.3"></line>
  <line class="st1" x1="96.5" y1="114.5" x2="96.5" y2="127.4"></line>
  <line class="st1" x1="713.4" y1="91.4" x2="713.4" y2="100.8"></line>
  <line class="st1" x1="713.4" y1="114.5" x2="713.4" y2="129.4"></line>
  <line class="st1" x1="483.8" y1="58.5" x2="418.9" y2="58.5"></line>
  <line class="st1" x1="202.9" y1="174.6" x2="202.9" y2="242"></line>
  <line class="st1" x1="202.9" y1="344.8" x2="202.9" y2="367.3"></line>
  <line class="st1" x1="202.9" y1="301.5" x2="202.9" y2="330.7"></line>
  <line class="st1" x1="202.9" y1="471" x2="202.9" y2="492.8"></line>
  <line class="st1" x1="202.9" y1="427" x2="202.9" y2="456.9"></line>
  <line class="st1" x1="202.9" y1="85.5" x2="202.9" y2="159.8"></line>
  <line class="st1" x1="310.9" y1="173.3" x2="310.9" y2="247.5"></line>
  <line class="st1" x1="310.9" y1="91.1" x2="310.9" y2="158"></line>
  <line class="st1" x1="812.4" y1="174.6" x2="812.4" y2="242"></line>
  <line class="st1" x1="812.4" y1="85.5" x2="812.4" y2="159.8"></line>
  <line class="st1" x1="1028.4" y1="57.4" x2="1118.1" y2="57.4"></line>
  <line class="st1" x1="920.4" y1="173.3" x2="920.4" y2="247.5"></line>
  <line class="st1" x1="920.4" y1="91.1" x2="920.4" y2="158"></line>
  <line class="st1" x1="96.5" y1="156.9" x2="96.5" y2="166.1"></line>
  <line class="st1" x1="96.5" y1="177.4" x2="96.5" y2="188.6"></line>
  <line class="st1" x1="310.9" y1="308.5" x2="310.9" y2="330.7"></line>
  <line class="st1" x1="310.9" y1="344.3" x2="310.9" y2="373.5"></line>
  <line class="st1" x1="812.4" y1="344.8" x2="812.4" y2="367.3"></line>
  <line class="st1" x1="812.4" y1="301.5" x2="812.4" y2="330.7"></line>
  <line class="st1" x1="920.4" y1="308.5" x2="920.4" y2="330.7"></line>
  <line class="st1" x1="920.4" y1="344.3" x2="920.4" y2="373.5"></line>
  <line class="st1" x1="310.9" y1="434.5" x2="310.9" y2="456.8"></line>
  <line class="st1" x1="310.9" y1="470.3" x2="310.9" y2="499.6"></line>
  <line class="st1" x1="812.4" y1="471" x2="812.4" y2="492.8"></line>
  <line class="st1" x1="812.4" y1="427" x2="812.4" y2="456.9"></line>
  <line class="st1" x1="920.4" y1="434.5" x2="920.4" y2="456.8"></line>
  <line class="st1" x1="920.4" y1="470.3" x2="920.4" y2="499.6"></line>
  <rect class="st22" x="1102.7" y="584.4" width="16.9" height="17" rx="2" ry="2"></rect>
  <rect class="st0" x="1079" y="584.4" width="17" height="17" rx="2" ry="2"></rect>
  <rect class="st21" x="1191.7" y="584.4" width="16.9" height="17" rx="2" ry="2"></rect>
  <path class="st7" d="M1281,1c3.9,0,7,3.1,7,7v597.5c0,3.9-3.1,7-7,7H8c-3.9,0-7-3.1-7-7V8c0-3.9,3.1-7,7-7h1273M1281,0H8C3.6,0,0,3.6,0,8v597.5c0,4.4,3.6,8,8,8h1273c4.4,0,8-3.6,8-8V8c0-4.4-3.6-8-8-8h0Z"></path>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <g class="st14">
          <path class="st9" d="M346.8,521.9h-3l-.7,1.9h-1l2.7-7.1h.8l2.7,7.1h-1l-.7-1.9ZM344.1,521.2h2.4l-1.2-3.3-1.2,3.3Z"></path>
          <path class="st9" d="M349,521.1c0-.8.2-1.5.6-2,.4-.5.9-.7,1.5-.7s1.1.2,1.5.6v-2.8h.9v7.5h-.8v-.6c-.4.4-.9.7-1.6.7s-1.1-.3-1.5-.8-.6-1.2-.6-2h0ZM349.9,521.2c0,.6.1,1.1.4,1.4s.6.5,1,.5,1-.3,1.3-.8v-2.4c-.3-.5-.7-.7-1.2-.7s-.8.2-1,.5-.4.8-.4,1.5Z"></path>
          <path class="st9" d="M357.5,519.3c-.1,0-.3,0-.4,0-.6,0-1,.3-1.2.8v3.8h-.9v-5.3h.9v.6c.3-.5.7-.7,1.3-.7s.3,0,.4,0v.8Z"></path>
          <path class="st9" d="M360.4,523.9c-.7,0-1.3-.2-1.7-.7-.4-.5-.7-1.1-.7-1.9v-.2c0-.5.1-1,.3-1.4.2-.4.5-.7.8-1,.4-.2.7-.3,1.2-.3.7,0,1.2.2,1.6.7s.6,1.1.6,1.9v.4h-3.6c0,.5.2.9.5,1.3.3.3.7.5,1.1.5s.6,0,.8-.2.4-.3.6-.5l.6.4c-.4.7-1.1,1-2,1ZM360.3,519.1c-.4,0-.7.1-.9.4-.2.3-.4.6-.5,1.1h2.6c0-.5-.1-.9-.4-1.1-.2-.3-.5-.4-.9-.4Z"></path>
          <path class="st9" d="M364.3,518.5v.7c.4-.5,1-.8,1.6-.8,1.1,0,1.7.6,1.7,1.9v3.5h-.9v-3.5c0-.4,0-.7-.3-.8s-.4-.3-.8-.3-.6,0-.8.2-.4.4-.5.6v3.8h-.9v-5.3h.9Z"></path>
          <path class="st9" d="M368.8,521.1c0-.5.1-1,.3-1.4s.5-.7.8-1,.8-.3,1.2-.3c.7,0,1.3.2,1.7.7s.7,1.2.7,2h0c0,.6,0,1-.3,1.4-.2.4-.5.7-.8,1s-.8.3-1.3.3c-.7,0-1.3-.2-1.7-.7s-.7-1.2-.7-2h0ZM369.7,521.2c0,.6.1,1.1.4,1.4s.6.5,1.1.5.8-.2,1.1-.5c.3-.4.4-.9.4-1.5s-.1-1-.4-1.4c-.3-.4-.6-.5-1.1-.5s-.8.2-1.1.5-.4.9-.4,1.5Z"></path>
          <path class="st9" d="M379.7,522.5l2-5.9h1l-2.6,7.1h-.8l-2.6-7.1h1l2,5.9Z"></path>
          <path class="st9" d="M384.6,521v2.8h-.9v-7.1h2.6c.8,0,1.4.2,1.8.6s.7.9.7,1.6-.2,1.2-.6,1.6c-.4.4-1,.6-1.9.6h-1.7ZM384.6,520.2h1.7c.5,0,.9-.1,1.2-.4s.4-.6.4-1-.1-.8-.4-1c-.3-.3-.6-.4-1.1-.4h-1.7v2.8Z"></path>
          <path class="st9" d="M395,516.7v4.8c0,.7-.2,1.2-.6,1.6s-1,.7-1.7.7h-.2c-.8,0-1.4-.2-1.9-.6s-.7-1-.7-1.7v-4.8h.9v4.8c0,.5.1.9.4,1.2.3.3.7.4,1.2.4s.9-.1,1.2-.4.4-.7.4-1.2v-4.8h.9Z"></path>
          <path class="st9" d="M367.9,530.2v4.2c0,.8,0,1.6,0,2.3h-.8v-.5h-6.6v.6h-.8c0-.8,0-1.6,0-2.5v-4.1c0-.8,0-1.5,0-2.2h8.2c0,.7,0,1.4,0,2.2ZM367.1,535.5v-6.8h-6.6v6.8h6.6ZM366.5,531.1c-.2,0-.7,0-1.3,0h-.9v1.1h1.7c0,.4,0,.9,0,1.3s0,.8,0,1.3h-4.2c0-.4,0-.8,0-1.2s0-.9,0-1.4h1.7v-1.1h-1c-.2,0-.7,0-1.2,0v-.7c.6,0,1,0,1.2,0h1c0-.4,0-.8,0-1.2h.8c0,.4,0,.8,0,1.2h.9c.5,0,1,0,1.3,0v.7ZM365.2,534.1v-1.3h-2.7v1.3h2.7Z"></path>
          <path class="st9" d="M370.7,530.8c-.3.4-.6.8-.9,1.3-.1-.3-.3-.5-.5-.6.5-.5.9-1,1.3-1.7.4-.7.7-1.4,1-2.2.3.2.6.4.8.4-.2.2-.5.7-.9,1.5v5.3c0,.8,0,1.5,0,1.9h-.8c0-.4,0-1,0-1.8v-4.1ZM373.4,529.9h1.5v-.8c0-.7,0-1.1,0-1.3h.8c0,.2,0,.6,0,1.3v.8h1.2c.3,0,.7,0,.9,0v.7c-.3,0-.6,0-.9,0h-1.2v2.1h1.3c.4,0,.9,0,1.4,0v.7c-.4,0-.9,0-1.4,0h-1.2v2c0,.4,0,.8,0,1.3h-.8c0-.5,0-.9,0-1.3v-2h-1.5c-.4,0-1,0-1.6,0v-.7c.6,0,1,0,1.4,0h1.7v-2.1h-1.8c0,.2-.3.7-.7,1.4,0,0-.3-.2-.7-.4.3-.4.5-.8.7-1.3.2-.5.4-1.1.5-1.9.2.1.5.2.9.4-.1.1-.3.5-.5,1.1Z"></path>
        </g>
      </g>
    </g>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <path class="st9" d="M957,521.9h-3l-.7,1.9h-1l2.7-7.1h.8l2.7,7.1h-1l-.7-1.9ZM954.4,521.2h2.4l-1.2-3.3-1.2,3.3Z"></path>
        <path class="st9" d="M959.3,521.1c0-.8.2-1.5.6-2,.4-.5.9-.7,1.5-.7s1.1.2,1.5.6v-2.8h.9v7.5h-.8v-.6c-.4.4-.9.7-1.6.7s-1.1-.3-1.5-.8-.6-1.2-.6-2h0ZM960.2,521.2c0,.6.1,1.1.4,1.4.2.3.6.5,1,.5s1-.3,1.3-.8v-2.4c-.3-.5-.7-.7-1.2-.7s-.8.2-1,.5c-.2.3-.4.8-.4,1.5Z"></path>
        <path class="st9" d="M967.7,519.3c-.1,0-.3,0-.4,0-.6,0-1,.3-1.2.8v3.8h-.9v-5.3h.9v.6c.3-.5.7-.7,1.3-.7s.3,0,.4,0v.8Z"></path>
        <path class="st9" d="M970.6,523.9c-.7,0-1.3-.2-1.7-.7-.4-.5-.7-1.1-.7-1.9v-.2c0-.5,0-1,.3-1.4.2-.4.5-.7.8-1,.4-.2.8-.3,1.2-.3.7,0,1.2.2,1.6.7s.6,1.1.6,1.9v.4h-3.6c0,.5.2.9.5,1.3.3.3.7.5,1.1.5s.6,0,.8-.2c.2-.1.4-.3.6-.5l.6.4c-.4.7-1.1,1-2,1ZM970.5,519.1c-.4,0-.7.1-.9.4-.2.3-.4.6-.5,1.1h2.6c0-.5-.2-.9-.4-1.1-.2-.3-.5-.4-.9-.4Z"></path>
        <path class="st9" d="M974.6,518.5v.7c.4-.5,1-.8,1.6-.8,1.1,0,1.7.6,1.7,1.9v3.5h-.9v-3.5c0-.4,0-.7-.3-.8s-.4-.3-.8-.3-.6,0-.8.2c-.2.2-.4.4-.5.6v3.8h-.9v-5.3h.9Z"></path>
        <path class="st9" d="M979,521.1c0-.5.1-1,.3-1.4.2-.4.5-.7.8-1,.4-.2.8-.3,1.2-.3.7,0,1.3.2,1.7.7s.7,1.2.7,2h0c0,.6,0,1-.3,1.4-.2.4-.5.7-.8,1s-.8.3-1.3.3c-.7,0-1.3-.2-1.7-.7s-.7-1.2-.7-2h0ZM979.9,521.2c0,.6.1,1.1.4,1.4.3.4.6.5,1.1.5s.8-.2,1.1-.5c.3-.4.4-.9.4-1.5s-.1-1-.4-1.4c-.3-.4-.6-.5-1.1-.5s-.8.2-1.1.5-.4.9-.4,1.5Z"></path>
        <path class="st9" d="M989.9,522.5l2-5.9h1l-2.6,7.1h-.8l-2.6-7.1h1l2,5.9Z"></path>
        <path class="st9" d="M994.9,521v2.8h-.9v-7.1h2.6c.8,0,1.4.2,1.8.6.4.4.7.9.7,1.6s-.2,1.2-.6,1.6c-.4.4-1,.6-1.9.6h-1.7ZM994.9,520.2h1.7c.5,0,.9-.1,1.2-.4.3-.2.4-.6.4-1s-.1-.8-.4-1c-.3-.3-.6-.4-1.1-.4h-1.7v2.8Z"></path>
        <path class="st9" d="M1005.2,516.7v4.8c0,.7-.2,1.2-.6,1.6-.4.4-1,.7-1.7.7h-.2c-.8,0-1.4-.2-1.9-.6-.5-.4-.7-1-.7-1.7v-4.8h.9v4.8c0,.5.1.9.4,1.2.3.3.7.4,1.2.4s.9-.1,1.2-.4c.3-.3.4-.7.4-1.2v-4.8h.9Z"></path>
        <path class="st9" d="M978.1,530.2v4.2c0,.8,0,1.6,0,2.3h-.8v-.5h-6.6v.6h-.8c0-.8,0-1.6,0-2.5v-4.1c0-.8,0-1.5,0-2.2h8.2c0,.7,0,1.4,0,2.2ZM977.4,535.5v-6.8h-6.6v6.8h6.6ZM976.7,531.1c-.2,0-.7,0-1.3,0h-.9v1.1h1.7c0,.4,0,.9,0,1.3s0,.8,0,1.3h-4.2c0-.4,0-.8,0-1.2s0-.9,0-1.4h1.7v-1.1h-1c-.2,0-.7,0-1.2,0v-.7c.6,0,1,0,1.2,0h1c0-.4,0-.8,0-1.2h.8c0,.4,0,.8,0,1.2h.9c.5,0,1,0,1.3,0v.7ZM975.5,534.1v-1.3h-2.7v1.3h2.7Z"></path>
        <path class="st9" d="M980.9,530.8c-.3.4-.6.8-.9,1.3-.1-.3-.3-.5-.5-.6.5-.5.9-1,1.3-1.7.4-.7.7-1.4,1-2.2.3.2.6.4.8.4-.2.2-.5.7-.9,1.5v5.3c0,.8,0,1.5,0,1.9h-.8c0-.4,0-1,0-1.8v-4.1ZM983.7,529.9h1.5v-.8c0-.7,0-1.1,0-1.3h.8c0,.2,0,.6,0,1.3v.8h1.2c.3,0,.7,0,.9,0v.7c-.3,0-.6,0-.9,0h-1.2v2.1h1.3c.4,0,.9,0,1.4,0v.7c-.4,0-.9,0-1.4,0h-1.2v2c0,.4,0,.8,0,1.3h-.8c0-.5,0-.9,0-1.3v-2h-1.5c-.4,0-1,0-1.6,0v-.7c.6,0,1,0,1.4,0h1.7v-2.1h-1.8c0,.2-.3.7-.7,1.4,0,0-.3-.2-.7-.4.3-.4.5-.8.7-1.3.2-.5.4-1.1.5-1.9.2.1.5.2.9.4-.1.1-.3.5-.5,1.1Z"></path>
      </g>
    </g>
  </g>
  <g class="st14">
    <g class="st14">
      <g class="st14">
        <text class="st18" transform="translate(429.8 53.5)"><tspan class="st23" x="0" y="0">YUV</tspan><tspan class="st20" x="18.9" y="0"> </tspan><tspan class="st19" x="21.3" y="0">缓存</tspan></text>
      </g>
    </g>
  </g>
  <g id="lend4-161" data-name="lend4-16">
    <path class="st24" d="M483.8,55l7,3.5-7,3.5v-7"></path>
  </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-70022-20SC/topic/feature-descriptions.html#beframeencode) | ✔ | ✔ |
| **功能** | [编码器初始 QP 覆盖](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#qpoverride) | ✔ | ✔ |
| **功能** | [Hierarchical-P 编码](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#hierarchical) | ✔ | ✖ |
| **功能** | [slice 编码](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#sliceencode) | ✔ | ✖ |
| **功能** | [Intra-refresh](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#interarefresh) | ✔ | ✖ |
| **功能** | [预处理](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#videoencoder) | ✔ | ✖ |
| **功能** | [码率控制](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#ratecontrol) | ✔ | ✔ |
| **功能** | [长期参考帧 (LTR)](https://docs.qualcomm.com/doc/80-70022-20SC/topic/feature-descriptions.html#longterm) | ✔ | ✖ |
| **功能** | [动态属性](https://docs.qualcomm.com/doc/80-70022-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-70022-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-70022-20SC/topic/feature-descriptions.html#qcs8275)。

Dragonwing IQ-9075 上的 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-70022-20SC/topic/feature-descriptions.html#qcs9075)。

## 后续步骤

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

Last Published: Nov 03, 2025

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

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