> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced video specifications

For more information on the video decode and encode capabilities such as the supported profiles, levels, resolutions, frame rates, bit rates, and limitations, select the following tabs:

<Tabs>
  <Tab title="QCS6490">
    <div
      style={{
  border: '2px solid #0050D8', borderRadius: '16px', padding: '24px', marginTop: '15px',
  backgroundColor: '#FFFFFF', boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
    >
      {/* Table 2: Feature Descriptions */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU feature description for QCS6490
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Feature</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Description</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Codecs</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Remarks</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Encoder input color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12 and QC08C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Decoder output color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12, QC08C, and QC10C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264, HEVC, and VP9
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                QC10C is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Rotation
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports 90, 180, and 270-degree rotation before encoding the frame
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports static rotation only
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Flip
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports horizontal and vertical flip before encoding the frame
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Supports static and dynamic flip. Flip is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                B-Frame encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Up to 1920 × 1088 at 60 fps encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                The maximum number of B-Frames supported between two P-Frames is one and is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Hierarchical-P encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Up to 5 layers
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Hierarchical-P encode is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Initial QP override
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports I-Frames, P-Frames, and B-Frames
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Initial QP override is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Slice encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Yes
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                The number of bits per slice or the number of macroblocks per slice determines the slice boundary support. Slice is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Intra-refresh
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Random refresh mode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Supported only in 8-bit encoding</li>
                  <li>Supported only in the CBR RC mode</li>
                  <li>Intra-refresh is supported only on <code>qcom-multimedia-proprietary-image</code></li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Rate control
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                CBR, VBR, and MBR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Rate control is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                LTR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                2 frames
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Supported in CBR RC mode and only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Dynamic properties for encoder
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Sync frame, bit rate, and fps
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Supported in CBR and VBR RC modes and only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      <div style={{ padding: '12px', backgroundColor: '#F3F4F6', borderRadius: '8px', borderLeft: '4px solid #0050D8', marginBottom: '30px', fontSize: '13px' }}>
        <strong>Note:</strong> End-to-end functionality using [Qualcomm IM SDK](https://dragonwingdocs.qualcomm.com/SDKs/IMSDK) is validated up to 3840 × 2160 resolution.
      </div>

      {/* Table 3: Decoder Capabilities */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU decoder capabilities for QCS6490
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Decoder Standard</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Supported Profile and Level</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Minimum/Maximum resolution, Maximum frame rate, and bit rate</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Maximum supported resolution, frame rate, and bit rate</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Limitations</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600' }}>HEVC</td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Main profile 8-bit up to level 5.1</li>
                  <li>Main profile 10-bit, up to level 5.1, HLG schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Minimum resolution:<br />96 x 96</li>
                  <li>Maximum resolution:<br /> 4096 x 2160 or 2160x4096</li>
                  <li>Maximum frame rate:<br /> 480 fps</li>
                  <li>Maximum bit rate:<br /> 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>1280 x 720 at 480 fps, 100 Mbps</li>
                  <li>1920 x 1088 at 240 fps, 100 Mbps</li>
                  <li>3840 x 2160 at 60 fps, 100 Mbps</li>
                  <li>4096 x 2169 at 60 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Maximum 128 slices per frame</li>
                  <li>Individual slice-based decoding</li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600' }}>H.264</td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                Constrained baseline, baseline, main, high, constrained high profiles; up to level 5.2
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum framerate: 480 fps</li>
                  <li>Maximum bitrate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>1280 × 720 at 480 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 240 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 100 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Flexible macroblock order (FMO)</li>
                  <li>Arbitrary slice ordering (ASO)</li>
                  <li>Redundant slices (RS)</li>
                  <li>Data partition</li>
                  <li>Maximum 10 slices per frame</li>
                  <li>Interlaced content isn't supported</li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600' }}>VP9</td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Profile 0; 8-bit up to level 5.1</li>
                  <li>Profile 2; 10-bit up to level 5.1, HLG/PQ schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum framerate: 480 fps</li>
                  <li>Maximum bitrate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>1280 × 720 at 480 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 240 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 100 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                Profile 2; 12-bit isn't supported
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      {/* Table 4: Encoder Capabilities */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU encoder capabilities for QCS6490
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Encoder standard</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Supported profile and level and RC modes</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Minimum/Maximum resolution, maximum frame rate, and maximum bit rate</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Supported resolution, frame rate, bit rate</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Limitations</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600' }}>H.264</td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Constrained baseline, baseline, main, high, constrained high profiles; up to level 5</li>
                  <li>VBR, CBR, MBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Minimum resolution: 128 × 128</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum framerate: 240 fps</li>
                  <li>Maximum bitrate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                  <li>4096 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>None</td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600' }}>HEVC</td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Main profile 8-bit, up to level 5.0</li>
                  <li>Main/High tier VBR, CBR, MBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>Minimum resolution: 128 × 128</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum framerate: 240 fps</li>
                  <li>Maximum bitrate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                <ul>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                  <li>4096 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6' }}>
                Vertical tiling is only enabled for frame width 960
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </Tab>

  <Tab title="IQ-8275">
    <div
      style={{
  border: '2px solid #0050D8', borderRadius: '16px', padding: '24px', marginTop: '15px',
  backgroundColor: '#FFFFFF', boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
    >
      {/* Table 2: Feature Descriptions */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU feature description for Dragonwing IQ-8275
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Feature</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Description</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Codecs</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Limitations</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Encoder input color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12 and QC08C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Decoder output color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12, QC08C, and QC10C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264, HEVC, VP9 and AV1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                QC10C is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                B-Frame encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Up to 1920 × 1088 at 120 fps encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                The maximum number of B-Frames supported between two P-Frames is one. B-Frame is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Initial QP override
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports I-Frames, P-Frames, and B-Frames
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Rate control
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                CBR and VBR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Dynamic properties for encoder
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Sync frame, bit rate, and fps
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Supported in CBR and VBR RC modes. Dynamic properties are supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      <div style={{ padding: '12px', backgroundColor: '#F3F4F6', borderRadius: '8px', borderLeft: '4px solid #0050D8', marginBottom: '30px', fontSize: '13px' }}>
        <strong>Note:</strong> End-to-end functionality using [Qualcomm IM SDK](https://dragonwingdocs.qualcomm.com/SDKs/IMSDK). is validated up to 3840 × 2160 resolution.
      </div>

      {/* Table 3: Decoder Capabilities */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU decoder capabilities for Dragonwing IQ-8275
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Decoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile and level
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/Maximum resolution, maximum frame rate, and maximum bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Maximum supported resolution, frame rate, and bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main profile 8-bit, up to level 5.1 Main tier, high tier</li>
                  <li>Main10, profile up to level 5.1 Main/High tier, HLG schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps (IBP/IPP)</li>
                  <li>4096 × 2160 at 60 fps, 120 Mbps (IBP/IPP)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual slice-based decoding
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Constrained baseline, Baseline, main, high, constrained high profiles; up to level 5.2
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps (IBP/IPP)</li>
                  <li>4096 × 2160 at 60 fps, 120 Mbps (IBP/IPP)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Flexible macroblock order (FMO)</li>
                  <li>Arbitrary slice ordering (ASO)</li>
                  <li>Redundant slices (RS)</li>
                  <li>Data partition</li>
                  <li>Individual slice-based decoding</li>
                  <li>Non-progressive-only content up to 1920 × 1088</li>
                  <li>Best effort B-Frame decode is: 3840 × 2160 at 120 fps</li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                VP9
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Profile 0; 8-bit, up to level 5.1</li>
                  <li>Profile2, 10-bit, up to level 5.1, HLG/PQ schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 120 fps</li>
                  <li>Maximum bit rate: 50 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 120 fps, 50 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 50 Mbps</li>
                  <li>3840 × 2160 at 120 fps, 50 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 50 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Profile 2, 12-bit isn't supported</li>
                  <li>Individual slice-based decoding</li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                AV1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main (Profile-0)</li>
                  <li>Maximum level: 5.1</li>
                  <li>HLG/PQ schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 120 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 120 Mbps</li>
                  <li>1920 × 1088 at 240 fps, 120 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 120 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 120 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual slice-based decoding
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      {/* Table 4: Encoder Capabilities */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU encoder capabilities for Dragonwing IQ-8275
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Encoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile, level, and RC mode
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/Maximum resolution, maximum frame rate, and maximum bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Maximum supported resolution, frame rate, and bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Constrained baseline, baseline, main, high, constrained high profiles; up to level 5.2</li>
                  <li>VBR and CBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 128 × 128</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                  <li>Maximum operating rate: 480</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 88 Mbps</li>
                  <li>1920 × 1088 at 240 fps, 128 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 80 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 92 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Main profile 8-bit, up to level 5.1 Main/High tier VBR and CBR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2160 or 2160 × 4096</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                  <li>Maximum operating rate: 480</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 62 Mbps</li>
                  <li>1920 × 1088 at 240 fps, 90 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 56 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 64 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Multislice is enabled</li>
                </ul>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </Tab>

  <Tab title="IQ-9075">
    <div
      style={{
  border: '2px solid #0050D8', borderRadius: '16px', padding: '24px', marginTop: '15px',
  backgroundColor: '#FFFFFF', boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
    >
      {/* Table: Feature Descriptions */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU feature description for Dragonwing IQ-9075
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Feature</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Description</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Codecs</th>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center' }}>Limitations</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Encoder input color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12 and QC08C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Decoder output color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12, QC08C, and QC10C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264, HEVC, VP9 and AV1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                QC10C is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                B-Frame encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Up to 3840 × 2160 at 60 fps encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                The maximum number of B-Frames supported between two P-Frames is one. B-Frame encode is supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Initial QP override
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports for I-Frames, P-Frames, and B-Frames
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Rate control
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                CBR and VBR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Dynamic properties for encoder
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Sync frame, bit rate, and fps
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top', wordBreak: 'break-word' }}>
                Supported in CBR and VBR RC modes. Dynamic properties are supported only on <code>qcom-multimedia-proprietary-image</code>
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      <div style={{ backgroundColor: '#F3F4F6', padding: '12px', borderRadius: '8px', borderLeft: '4px solid #0050D8', marginBottom: '30px' }}>
        <strong>Note:</strong> End-to-end functionality using [Qualcomm IM SDK](https://dragonwingdocs.qualcomm.com/SDKs/IMSDK) is validated up to 3840 × 2160 resolution.
      </div>

      {/* Table: Decoder Capabilities IQ-9075 */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU decoder capabilities for Dragonwing IQ-9075
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Decoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile and level
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/maximum resolution, Maximum frame rate, and bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Maximum supported resolution, frame rate, and bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main profile 8-bit, up to level 6.2, main tier, high tier</li>
                  <li>Main10 profile up to level 6.2 Main/High tier HLG schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 8192 × 4320 or 4320 × 8192</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>3840 × 2160 at 240 fps, 80 Mbps (IBP/IPP)</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps (IBP/IPP)</li>
                  <li>4096 × 2160 at 120 fps, 80 Mbps (IBP/IPP)</li>
                  <li>7680 × 4320 at 30 fps, 120 Mbps (IBP/IPP)</li>
                  <li>7680 × 4320 at 60 fps, 80 Mbps (IBP/IPP)</li>
                  <li>8192 × 4320 at 30 fps, 120 Mbps (IBP/IPP)</li>
                  <li>8192 × 4320 at 48 fps, 80 Mbps (IBP/IPP)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual slice-based decoding
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Constrained baseline, baseline, main, high, constrained high profiles; up to level 6.1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 8192 × 4320 or 4320 × 8192</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 220 Mbps (CAVLC), 160 Mbps (CABAC)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps (IBP/IPP)</li>
                  <li>3840 × 2160 at 240 fps, 80 Mbps (IPP)</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps (IBP/IPP)</li>
                  <li>4096 × 2160 at 120 fps, 80 Mbps (IPP)</li>
                  <li>7680 × 4320 at 60 fps, 80 Mbps (IPP)</li>
                  <li>7680 × 4320 at 30 fps, 120 Mbps (IBP/IPP)</li>
                  <li>8192 × 4320 at 30 fps, 120 Mbps (IPP)</li>
                  <li>8192 × 4320 at 48 fps, 80 Mbps (IPP)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Flexible macroblock order (FMO)</li>
                  <li>Arbitrary slice ordering (ASO)</li>
                  <li>Redundant slices (RS)</li>
                  <li>Data partition</li>
                  <li>Individual slice-based decoding</li>
                  <li>Non-progressive-only content up to 1920 × 1088</li>

                  <li>
                    Best effort B-Frame decodes are:

                    <ul style={{ marginTop: '4px', paddingLeft: '18px' }}>
                      <li>3840 × 2160 at 240 fps</li>
                      <li>4096 × 2160 at 120 fps</li>
                      <li>7680 × 4320 at 60 fps</li>
                      <li>8192 × 4320 at 30/48 fps</li>
                    </ul>
                  </li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                VP9
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Profile 0; 8-bit up to level 5.1</li>
                  <li>Profile2, 10-bit, up to level 5.1, HLG/PQ schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 4096 × 2304 or 2304 × 4096</li>
                  <li>Maximum frame rate: 120 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 120 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 60 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 240 fps, 30 Mbps</li>
                  <li>4096 × 2160 at 60 fps, 100 Mbps</li>
                  <li>4096 × 2304 at 60 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Profile 2, 12-bit isn't supported
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                AV1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main (Profile-0), 8-bit and 10-bit</li>
                  <li>Maximum level: 6.1</li>
                  <li>HLG/PQ schemes</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 8192 × 4320 or 4320 × 8192</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 120 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 120 Mbps</li>
                  <li>1920 × 1088 at 480 fps, 120 Mbps</li>
                  <li>3840 × 2160 at 240 fps, 120 Mbps</li>
                  <li>3840 × 2160 at 120 fps, 120 Mbps</li>
                  <li>4096 × 2160 at 120 fps, 120 Mbps</li>
                  <li>7680 × 4320 at 30 fps, 120 Mbps</li>
                  <li>7680 × 4320 at 60 fps, 120 Mbps</li>
                  <li>8192 × 4320 at 30 fps, 120 Mbps</li>
                  <li>8192 × 4320 at 48 fps, 120 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual slice-based decoding
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      {/* Table: Decoder Capabilities IQ-9075 */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU decoder capabilities for Dragonwing IQ-9075
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Encoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile, level, and RC modes
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/Maximum resolution, maximum frame rate, and maximum bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported resolution, frame rate, bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Constrained baseline, baseline, main, high, constrained high profiles; up to level 6.0</li>
                  <li>VBR and CBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 128 × 128</li>
                  <li>Maximum resolution: 8192 × 4320 or 4320 × 8192</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 220 Mbps (CAVLC), 160 Mbps (CABAC)</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps</li>
                  <li>7680 × 4320 at 30 fps, 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual encoded slice delivery per buffer
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main profile 8-bit, up to level 6.0, 6.1, Main/High tier</li>
                  <li>VBR and CBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 8192 × 4320 or 4320 × 8192</li>
                  <li>Maximum frame rate: 480 fps</li>
                  <li>Maximum bit rate: 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 480 fps, 160 Mbps</li>
                  <li>1920 × 1088 at 480 fps, 160 Mbps</li>
                  <li>3840 × 2160 at 120 fps, 160 Mbps</li>
                  <li>7680 × 4320 at 30 fps, 160 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Individual encoded slice delivery per buffer</li>
                  <li>Multislice is enabled</li>
                </ul>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </Tab>

  <Tab title="QCS615">
    <div
      style={{
  border: '2px solid #0050D8', borderRadius: '16px', padding: '24px', marginTop: '15px',
  backgroundColor: '#FFFFFF', boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
    >
      {/* Table: Feature Descriptions */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU feature description for QCS615
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Feature
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Description
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Codecs
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Encoder input color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Decoder output color formats
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                NV12 and QC08C
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264, HEVC, and VP9
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Hierarchical-P encode
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Up to 5 layers
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Initial QP override
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Supports for I-Frames, P-Frames, and B-Frames
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Rate control
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                CBR and VBR
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                Dynamic properties for encoder
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Sync frame
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                H.264 and HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      {/* Table: Decoder Capabilities QCS615 */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8', marginBottom: '30px' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU decoder capabilities for QCS615
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Decoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile and level
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/Maximum resolution, maximum frame rate, and maximum bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Maximum supported resolution, frame rate, and bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Main profile 8-bit, up to level 6
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 3840 × 2160 or 2160 × 3840</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Individual slice-based decoding
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Constrained baseline, baseline, main, high</li>
                  <li>Constrained high profiles; up to level 5.2</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 3840 × 2160 or 2160 × 3840</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Flexible macroblock order (FMO)</li>
                  <li>Arbitrary slice ordering (ASO)</li>
                  <li>Redundant slices (RS)</li>
                  <li>Data partition</li>
                  <li>Individual slice-based decoding</li>
                  <li>Interlaced content is not supported</li>
                </ul>
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                VP9
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                Profile 0; 8-bit up to level 5.1
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 3840 × 2160 or 2160 × 3840</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>
          </tbody>
        </table>
      </div>

      {/* Table: Encoder Capabilities QCS615 */}

      <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8' }}>
        <div style={{ background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)', color: 'white', padding: '14px', textAlign: 'center', fontWeight: 'bold' }}>
          Table: Adreno VPU encoder capabilities for QCS615
        </div>

        <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: '#ffffff', fontSize: '14px' }}>
          <thead>
            <tr style={{ backgroundColor: '#F1F5F9' }}>
              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Encoder standard
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported profile, level, and RC modes
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Minimum/Maximum resolution, maximum frame rate, and maximum bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Supported resolution, frame rate, bit rate
              </th>

              <th style={{ border: '1px solid #E5E7EB', padding: '10px', textAlign: 'center', verticalAlign: 'top' }}>
                Limitations
              </th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                H.264
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Constrained baseline, baseline, main, high, constrained high profiles; up to level 5.2</li>
                  <li>VBR and CBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 3840 × 2160 or 2160 × 3840</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>

            <tr>
              <td style={{ border: '1px solid #E5E7EB', padding: '10px', fontWeight: '600', verticalAlign: 'top' }}>
                HEVC
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Main profile 8-bit, up to level 6.0, Main/High tier</li>
                  <li>VBR and CBR</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>Minimum resolution: 96 × 96</li>
                  <li>Maximum resolution: 3840 × 2160 or 2160 × 3840</li>
                  <li>Maximum frame rate: 240 fps</li>
                  <li>Maximum bit rate: 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                <ul style={{ margin: '0', paddingLeft: '18px' }}>
                  <li>1280 × 720 at 240 fps, 100 Mbps</li>
                  <li>1920 × 1088 at 120 fps, 100 Mbps</li>
                  <li>3840 × 2160 at 30 fps, 100 Mbps</li>
                </ul>
              </td>

              <td style={{ border: '1px solid #E5E7EB', padding: '10px', lineHeight: '1.6', verticalAlign: 'top' }}>
                None
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </Tab>
</Tabs>

## **Feature descriptions**

The supported encoder feature descriptions are as follows:

**B-Frame encode**

B-Frame uses both the earlier and the future frames as reference data to obtain the highest amount of data compression. The Adreno VPU encodes frames with adaptive B type to obtain the highest possible compression without compromising video quality.

**Encoder initial QP override**

Video encoding compresses signal levels by mapping them to discrete values. Quantization is a lossy process, and the levels of quantization govern the quality compared to compression. Encoders start with a default Quantization Parameter (QP) at the beginning. Based on the configured bit rate and scene complexity, encoders determine the right QP value by continuously monitoring the complexity and redundancy across frames. The encoder takes a few seconds to reach a steady state and predict the correct QP value that matches the target bit rate, also known as rate convergence.

**Hierarchical-P encode**

In the Hierarchical-P (Hier-P) feature, the encoder organizes the frames into many layers, with frames of one layer referencing frames only from the lower layers. The lowest layer, also known as layer 0 or the base layer, is the only exception.

The following image shows the layer encoding pattern:

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Video/media/qli-video-technology/Layer-encoding.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=da3d6450c79edd7cd1c9420cdabb1b72" alt="Figure: Hier-P layer encoding pattern" width="683" height="416" data-path="Technologies/Video/media/qli-video-technology/Layer-encoding.svg" />

  <p className="text-sm text-gray-700">
    Figure: Hier-P layer encoding pattern
  </p>
</div>

In the image, TL-0 represents the base layer, and the remaining layers represent the enhancement layers. Hier-P improves error resilience and temporal scalability. The Hier-P feature is useful for video telephony (VT) or videoconferencing applications that involve channel errors. Hier-P allows you to control error propagation by selectively dropping the enhancement layers.

**Slice encode**

Encoders can compress a frame with an independently decodable Group-of-blocks (GOB), also known as slices. If there is a data loss or corruption, each slice is independently decodable and intends to be a unit of recovery. The advantages of introducing slices in an encoded frame are:

* Encoder ignores a corrupt slice and skips to the next slice, thus restricting the corruption to a part of the frame instead of the entire frame.
* Encoder sizes the slices to fit them within a network packet to help with transmission.
* Encoder retransmits erroneous slices instead of sending the entire frame.
* Applications use slices to reduce latency in real-time communication. Applications transmit and decode slices in parallel, eliminating the need to wait for the entire frame to encode.

Slices also work as resynchronization markers because the decoders can resume from the next slice (marker) when there are bit errors. The H.264 and HEVC encoders support slicing on Qualcomm Linux. The number of bits per slice or the number of macroblocks per slice is a slice boundary.

**Intra-refresh**

The intra-refresh feature reduces the channel loss in streaming and casting applications that favor a constant bit rate. The Adreno VPU supports random intra-refresh mode.

**Video encoder preprocessing**

Applications can use the Adreno VPU to rotate or flip a YUV frame before encoding it. The Adreno VPU rotates or flips the YUV frame without consuming extra power.

**Rate control**

The following table lists the supported rate control algorithms:

**Table: Supported rate control algorithms**

<div
  style={{
border: '2px solid #0050D8',
borderRadius: '16px',
padding: '24px',
marginTop: '25px',
backgroundColor: '#FFFFFF',
boxShadow: '0 0 25px rgba(0, 80, 216, 0.15)'
}}
>
  <div style={{ borderRadius: '12px', overflow: 'hidden', border: '2px solid #0050D8' }}>
    <div
      style={{
  background: 'linear-gradient(90deg, #0050D8 0%, #0037A5 100%)',
  color: 'white',
  padding: '14px',
  textAlign: 'center',
  fontWeight: 'bold',
  fontSize: '15px'
}}
    >
      Table: Supported rate control algorithms
    </div>

    <table style={{ width: '100%', borderCollapse: 'collapse', backgroundColor: 'white' }}>
      <thead>
        <tr style={{ backgroundColor: '#F8FAFC' }}>
          <th style={{ border: '1px solid #E5E7EB', padding: '16px', textAlign: 'center', width: '30%' }}>
            <span style={{ backgroundColor: '#0050D8', color: 'white', padding: '6px 16px', borderRadius: '20px', fontSize: '12px', fontWeight: 'bold', textTransform: 'uppercase', display: 'inline-block' }}>Rate control mode</span>
          </th>

          <th style={{ border: '1px solid #E5E7EB', padding: '16px', textAlign: 'center' }}>
            <span style={{ backgroundColor: '#0050D8', color: 'white', padding: '6px 16px', borderRadius: '20px', fontSize: '12px', fontWeight: 'bold', textTransform: 'uppercase', display: 'inline-block' }}>Description</span>
          </th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#111827', fontWeight: '600', verticalAlign: 'top' }}>
            Variable bit rate (VBR)
          </td>

          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#374151', lineHeight: '1.5' }}>
            <ul style={{ margin: '0', paddingLeft: '1.2rem' }}>
              <li>Minimizes the frame-by-frame video quality fluctuation</li>
              <li>Camcorder and Wi-Fi display are the example use cases</li>
            </ul>
          </td>
        </tr>

        <tr>
          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#111827', fontWeight: '600', verticalAlign: 'top' }}>
            Constant bit rate (CBR)
          </td>

          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#374151', lineHeight: '1.5' }}>
            <ul style={{ margin: '0', paddingLeft: '1.2rem' }}>
              <li>Reduces bit rate fluctuation</li>
              <li>Used for real-time communication with channel bandwidth limitation</li>
              <li>Video telephony and streaming are the example use cases</li>
            </ul>
          </td>
        </tr>

        <tr>
          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#111827', fontWeight: '600', verticalAlign: 'top' }}>
            Maximum bit rate (MBR)
          </td>

          <td style={{ border: '1px solid #E5E7EB', padding: '14px 16px', color: '#374151', lineHeight: '1.5' }}>
            <ul style={{ margin: '0', paddingLeft: '1.2rem' }}>
              <li>Limits the bit rate while maintaining flexibility and may bounce up and down within the set target</li>
              <li>Bit rate increases when the activity in a scene increases within a maximum limit</li>
              <li>Integrated with a smart bit allocation (SBA) feature to achieve better quality at a lower bit rate</li>
            </ul>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

**Long-term reference (LTR) support**

Video compression works by eliminating redundancies within the frame (intra-frame) and between the frames (inter-frame). Earlier, the encoded frames that used to serve as a basis to derive future frames were known as reference frames.

The following reference frames allow advanced encoding applications to control the way a reference frame is stored and referred:

* **Short-term reference (STR)**: The encoder maintains the recent frames in a reference buffer list from the newest to the oldest. The encoder automatically manages frames using STRs for reference, and deletes them from a stored list when they're no longer used.
* **Long-term reference (LTR)**: Frames that the application can save, use, and remove. The LTR frames help improve quality and ensure error resiliency in video communication. The maximum number of frames that can be marked with LTR frames depends on the device capability.

LTR frames are useful in error-prone channels. Referring to LTR in error-prone channels reduces the possibility of drift errors due to channel losses. The receiver must confirm that the LTR is received successfully and that it can request a new LTR when an error occurs. The network protocols have checksums that can confirm this behavior, along with the decoder corruption flags. New LTR frames are generated from the sender until the receiver confirms that a successful LTR is received.

LTR frames are also useful in videos with scene changes where an LTR with the earlier scene is preserved. If that scene comes back, then the LTR can be used effectively.

At the start of a new Group-of-pictures (GOP), the encoder automatically fills the LTR slots, with the first slot (slot number 0) containing an IDR frame. Applications can explicitly send an LTR mark request to mark the LTR frames in the appropriate slots.

The following flow diagram shows LTR usage and how to mark and use LTR frames on an H.264 or HEVC encoder:

<div className="flex flex-col items-center gap-2">
  <img src="https://mintcdn.com/qualcomm-prod/h7j64QujhJHkLxyj/Technologies/Video/media/qli-video-technology/LTR-support-feature.svg?fit=max&auto=format&n=h7j64QujhJHkLxyj&q=85&s=27ac08de2331e32336434ab68bd70bd1" alt="Figure: LTR encoding" width="1244" height="722" data-path="Technologies/Video/media/qli-video-technology/LTR-support-feature.svg" />

  <p className="text-sm text-gray-700">
    Figure: LTR encoding
  </p>
</div>

**Dynamic encoder properties**

The Adreno VPU encoder supports dynamic change of properties such as bit rate, frame rate, and sync frame. This support allows the application to change the properties and helps in improved visual experience, video data adjusting to network conditions, and minimizing the loss of data during transmission.
