<?xml version="1.0" encoding="utf-8" ?>
<!--
    Copyright (c) 2018-2022 Qualcomm Technologies, Inc.
    All Rights Reserved.
    Confidential and Proprietary - Qualcomm Technologies, Inc.

    Not a Contribution.

    Copyright (C) 2012-2018 The Linux Foundation. All rights reserved.
    Copyright (C) 2012-2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<!--
"performance-point"
    Vendor-guaranteed performance advertised to the applications
        <Limit name="performance-point-widthxheight" value="fps" />

    -For each of the resolutions, the advertised fps is the max supported,
    with HW-friendly color format and considering video-only.
    -Performance for any intermediate resolution will be that of the
    next-higher-advertised-resolution.

    standard sizes: 480p/576p (SD), 720p (HD), 1080p (FHD), 2160p (UHD)
    standard frame rates: 24, 25, 30, 48+, 50, 60, 100*, 120*, 200*, 240* fps
        * HD+ only
        + SD only
    - All supported standard performance points are listed (unless they are
    covered by another listed standard performance point)
    - Non-standard performance points are listed along with all the standard
    performance points covered by them.
    - Mbps calculation: As macro block size given is 16x16 = 256
    Formula to calculate mbps: ((W*H)/256)*fps
    i.e. Size 3840x2160 with frame rate 120, ((3840*2160)/256)* 120 = 3888000

-->

<!--
 Non-Secure decoder capabilities
 (MB is defined as 16x16)
 _____________________________________________________________________
 | Codec       | W       H       fps     Mbps    MB/s        Max MB/s|
 |_____________|_____________________________________________________|
 | h264        | 1920    1088    480     220     3916800     7776000 |
 |             | 3820    2160    240     220     7735500             |
 |             | 4096    2160    120     220     4147200             |
 |             | 7680    4320    60      220     7776000             |
 | hevc        | 1920    1088    480     160     3916800     7776000 |
 |             | 3820    2160    240     160     7735500             |
 |             | 4096    2160    120     160     4147200             |
 |             | 7680    4320    60      160     7776000             |
 | vp9         | 1280    720     200     100      720000     7776000 |
 |             | 1920    1088    120     100      979200             |
 |             | 3840    2160    60      100     1944000             |
 |             | 4096    2160    60      100     2073600             |
 |             | 7680    4320    60      100     7776000             |
 | av1         | 1920    1088    480     160     3916800     7776000 |
 |             | 3820    2160    240     160     7735500             |
 |             | 4096    2160    120     160     4147200             |
 |             | 7680    4320    60      160     7776000             |
 |_____________|_____________________________________________________|

 Secure decoder capabilities
 (MB is defined as 16x16)
 __________________________________________________________________
 | Codec    | W       H       fps     Mbps    MB/s        Max MB/s|
 |__________|_____________________________________________________|
 | h264     | 1280    720     60      40      216000      2073600 |
 |          | 1920    1088    60      40      489600              |
 |          | 3840    2160    60      40      1944000             |
 |          | 4096    2160    60      40      2073600             |
 |          | 4096    2304    30      40      1105920             |
 | hevc     | 1280    720     60      40      216000      2073600 |
 |          | 1920    1088    60      40      489600              |
 |          | 3840    2160    60      40      1944000             |
 |          | 4096    2160    60      40      2073600             |
 |          | 4096    2304    30      40      1105920             |
 | vp9      | 1280    720     60      40      216000      2073600 |
 |          | 1920    1088    60      40      489600              |
 |          | 3840    2160    60      40      1944000             |
 |          | 4096    2160    60      40      2073600             |
 |          | 4096    2304    30      40      1105920             |
 | av1      | 1280    720     60      40      216000      2073600 |
 |          | 1920    1088    60      40      489600              |
 |          | 3840    2160    60      40      1944000             |
 |          | 4096    2160    60      40      2073600             |
 |          | 4096    2304    30      40      1105920             |
 |__________|_____________________________________________________|

 Non-Secure encoder capabilities (Secure not supported)
 (MB is defined as 16x16)
 __________________________________________________________________
 | Codec    | W       H       fps     Mbps    MB/s        Max MB/s|
 |__________|_____________________________________________________|
 | h264     | 1280    720     480     220     1728000     3916800 |
 |          | 1920    1088    480     220     3916800             |
 |          | 3840    2160    120     220     3888000             |
 |          | 4096    2160    60      220     2073600             |
 |          | 8192    4320    24      220     3317760             |
 | hevc     | 1280    720     480     160     1728000     3916800 |
 |          | 1920    1088    480     160     3916800             |
 |          | 3840    2160    120     160     3888000             |
 |          | 4096    2160    60      160     2073600             |
 |          | 8192    4320    24      160     3317760             |
 |__________|_____________________________________________________|
-->

<MediaCodecs>
    <Include href="media_codecs_c2_audio.xml" />
    <Settings>
        <Setting name="max-video-encoder-input-buffers" value="11" />
    </Settings>
    <Decoders>
        <!-- C2 decoders -->
        <MediaCodec name="c2.qti.avc.decoder" type="video/avc">
            <Alias name="OMX.qcom.video.decoder.avc"/>
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" range="36-7776000" />
            <Limit name="bitrate" range="1-220000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="adaptive-playback" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-3840x2160" value="240" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="60" />
            <Limit name="performance-point-8192x4320" value="48" />
        </MediaCodec>
        <MediaCodec name="c2.qti.avc.decoder.low_latency" type="video/avc">
            <Alias name="OMX.qcom.video.decoder.avc.low_latency"/>
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" range="36-3916800" />
            <Limit name="bitrate" range="1-70000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="adaptive-playback" />
            <Feature name="low-latency" />
            <Limit name="performance-point-1280x720" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
            <Limit name="performance-point-8192x4320" value="15" />
        </MediaCodec>
        <MediaCodec name="c2.qti.avc.decoder.secure" type="video/avc" >
            <Alias name="OMX.qcom.video.decoder.avc.secure"/>
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-34560" />
            <Limit name="blocks-per-second" min="36" max="2073600" />
            <Limit name="bitrate" range="1-40000000" />
            <Limit name="frame-rate" range="1-60" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="3" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.decoder" type="video/hevc" >
            <Alias name="OMX.qcom.video.decoder.hevc"/>
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" min="36" max="7776000" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Feature name="adaptive-playback" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-3840x2160" value="240" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="60" />
            <Limit name="performance-point-8192x4320" value="48" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.decoder.low_latency" type="video/hevc" >
            <Alias name="OMX.qcom.video.decoder.hevc.low_latency"/>
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" min="36" max="3916800" />
            <Limit name="bitrate" range="1-70000000" />
            <Limit name="frame-rate" range="1-480" />
            <Feature name="adaptive-playback" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="performance-point-1280x720" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
            <Limit name="performance-point-8192x4320" value="15" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.decoder.secure" type="video/hevc" >
            <Alias name="OMX.qcom.video.decoder.hevc.secure"/>
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-34560" />
            <Limit name="blocks-per-second" min="36" max="2073600" />
            <Limit name="bitrate" range="1-40000000" />
            <Limit name="frame-rate" range="1-60" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="3" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <MediaCodec name="c2.qti.vp9.decoder" type="video/x-vnd.on2.vp9" >
            <Alias name="OMX.qcom.video.decoder.vp9"/>
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-36864" />
            <Limit name="blocks-per-second" min="36" max="2211840" />
            <Limit name="bitrate" range="1-100000000" />
            <Limit name="frame-rate" range="1-120" />
            <Feature name="adaptive-playback" />
            <Limit name="concurrent-instances" max="6" />
            <Limit name="performance-point-1920x1080" value="200" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <MediaCodec name="c2.qti.vp9.decoder.low_latency" type="video/x-vnd.on2.vp9" >
            <Alias name="OMX.qcom.video.decoder.vp9.low_latency"/>
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-36864" />
            <Limit name="blocks-per-second" min="36" max="2211840" />
            <Limit name="bitrate" range="1-30000000" />
            <Limit name="frame-rate" range="1-120" />
            <Feature name="adaptive-playback" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="6" />
            <Limit name="performance-point-1920x1080" value="200" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <MediaCodec name="c2.qti.vp9.decoder.secure" type="video/x-vnd.on2.vp9" >
            <Alias name="OMX.qcom.video.decoder.vp9.secure"/>
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-36864" />
            <Limit name="blocks-per-second" min="36" max="2211840" />
            <Limit name="bitrate" range="1-40000000" />
            <Limit name="frame-rate" range="1-60" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="3" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <MediaCodec name="c2.qti.av1.decoder" type="video/av01" >
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" min="36" max="7776000" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Feature name="adaptive-playback" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-3840x2160" value="240" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="60" />
            <Limit name="performance-point-8192x4320" value="48" />
        </MediaCodec>
        <MediaCodec name="c2.qti.av1.decoder.low_latency" type="video/av01" >
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" min="36" max="3916800" />
            <Limit name="bitrate" range="1-70000000" />
            <Limit name="frame-rate" range="1-480" />
            <Feature name="adaptive-playback" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="performance-point-1280x720" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
            <Limit name="performance-point-8192x4320" value="15" />
        </MediaCodec>
        <MediaCodec name="c2.qti.av1.decoder.secure" type="video/av01" >
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="1x1" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-34560" />
            <Limit name="blocks-per-second" min="36" max="2073600" />
            <Limit name="bitrate" range="1-40000000" />
            <Limit name="frame-rate" range="1-60" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="3" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        <!--
        <MediaCodec name="c2.qti.dv.decoder" type="video/dolby-vision" >
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="blocks-per-second" min="36" max="7776000" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Feature name="adaptive-playback" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="performance-point-1280x720" value="480" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-3840x2160" value="240" />
            <Limit name="performance-point-4096x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="60" />
            <Limit name="performance-point-8192x4320" value="48" />
        </MediaCodec>
        <MediaCodec name="c2.qti.dv.decoder.secure" type="video/dolby-vision" >
            <Limit name="size" min="96x96" max="4096x4096" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="block-count" range="36-34560" />
            <Limit name="blocks-per-second" min="36" max="2073600" />
            <Limit name="bitrate" range="1-40000000" />
            <Limit name="frame-rate" range="1-60" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
            <Feature name="low-latency" />
            <Limit name="concurrent-instances" max="3" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-4096x2304" value="60" />
        </MediaCodec>
        -->
    </Decoders>
    <Encoders>
        <!-- C2 encoders -->
        <MediaCodec name="c2.qti.avc.encoder" type="video/avc">
            <Alias name="OMX.qcom.video.encoder.avc"/>
            <Limit name="size" min="128x128" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="3916800" />
            <Limit name="block-count" range="64-138240" />
            <Limit name="bitrate" range="1-220000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="complexity" range="0-100"  default="100" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="intra-refresh" />
            <Feature name="encoding-statistics" />
            <Feature name="video-minimum-quality" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.encoder" type="video/hevc">
            <Alias name="OMX.qcom.video.encoder.hevc"/>
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="3916800" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="complexity" range="0-100"  default="100" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="intra-refresh" />
            <Feature name="encoding-statistics" />
            <Feature name="video-minimum-quality" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.encoder.hdr" type="video/hevc">
            <Limit name="size" min="128x128" max="4096x2176" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="1958400" />
            <Limit name="block-count" range="36-34816" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-60" />
            <Limit name="complexity" range="0-100"  default="100" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="intra-refresh" />
            <Feature name="hdr-editing" />
            <Feature name="encoding-statistics" />
            <Feature name="video-minimum-quality" />
            <Limit name="performance-point-3840x2160" value="60" />
            <Limit name="performance-point-1920x1080" value="240" />
        </MediaCodec>
        <MediaCodec name="c2.qti.hevc.encoder.cq" type="video/hevc">
            <Alias name="OMX.qcom.video.encoder.hevc.cq"/>
            <Limit name="size" min="128x128" max="512x512" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="3916800" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="quality" range="0-100" default="80" />
            <Feature name="bitrate-modes" value="CQ" />
            <Limit name="performance-point-512x512" value="3825" />
        </MediaCodec>
        <MediaCodec name="c2.qti.heic.encoder" type="image/vnd.android.heic">
            <Alias name="OMX.qcom.video.encoder.heic"/>
            <Limit name="size" min="512x512" max="16384x16384" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="3916800" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-20" />
            <Limit name="concurrent-instances" max="16" />
            <Limit name="quality" range="0-100" default="80" />
            <Feature name="bitrate-modes" value="CQ" />
            <Limit name="performance-point-16384x8192" value="3" />
            <Limit name="performance-point-1920x1080" value="6" />
        </MediaCodec>
        <!--
        <MediaCodec name="c2.qti.dv.encoder" type="video/dolby-vision">
            <Limit name="size" min="96x96" max="8192x8192" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" min="64" max="3916800" />
            <Limit name="block-count" range="36-138240" />
            <Limit name="bitrate" range="1-160000000" />
            <Limit name="frame-rate" range="1-480" />
            <Limit name="complexity" range="0-100"  default="100" />
            <Limit name="concurrent-instances" max="16" />
            <Feature name="bitrate-modes" value="VBR,CBR" />
            <Feature name="intra-refresh" />
            <Feature name="encoding-statistics" />
            <Feature name="video-minimum-quality" />
            <Limit name="performance-point-1280x720" value="480" />
            <Limit name="performance-point-1920x1080" value="480" />
            <Limit name="performance-point-1920x1080" value="240" />
            <Limit name="performance-point-3840x2160" value="120" />
            <Limit name="performance-point-7680x4320" value="30" />
        </MediaCodec>
        -->
    </Encoders>
</MediaCodecs>
