--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright (C) 2012 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.
+-->
+
+<!--
+<!DOCTYPE MediaCodecs [
+<!ELEMENT MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!ATTLIST MediaCodec name CDATA #REQUIRED>
+<!ATTLIST MediaCodec type CDATA>
+<!ELEMENT Type EMPTY>
+<!ATTLIST Type name CDATA #REQUIRED>
+<!ELEMENT Quirk EMPTY>
+<!ATTLIST Quirk name CDATA #REQUIRED>
+]>
+
+There's a simple and a complex syntax to declare the availability of a
+media codec:
+
+A codec that properly follows the OpenMax spec and therefore doesn't have any
+quirks and that only supports a single content type can be declared like so:
+
+ <MediaCodec name="OMX.foo.bar" type="something/interesting" />
+
+If a codec has quirks OR supports multiple content types, the following syntax
+can be used:
+
+ <MediaCodec name="OMX.foo.bar" >
+ <Type name="something/interesting" />
+ <Type name="something/else" />
+ ...
+ <Quirk name="requires-allocate-on-input-ports" />
+ <Quirk name="requires-allocate-on-output-ports" />
+ <Quirk name="output-buffers-are-unreadable" />
+ </MediaCodec>
+
+Only the three quirks included above are recognized at this point:
+
+"requires-allocate-on-input-ports"
+ must be advertised if the component does not properly support specification
+ of input buffers using the OMX_UseBuffer(...) API but instead requires
+ OMX_AllocateBuffer to be used.
+
+"requires-allocate-on-output-ports"
+ must be advertised if the component does not properly support specification
+ of output buffers using the OMX_UseBuffer(...) API but instead requires
+ OMX_AllocateBuffer to be used.
+
+"output-buffers-are-unreadable"
+ must be advertised if the emitted output buffers of a decoder component
+ are not readable, i.e. use a custom format even though abusing one of
+ the official OMX colorspace constants.
+ Clients of such decoders will not be able to access the decoded data,
+ naturally making the component much less useful. The only use for
+ a component with this quirk is to render the output to the screen.
+ Audio decoders MUST NOT advertise this quirk.
+ Video decoders that advertise this quirk must be accompanied by a
+ corresponding color space converter for thumbnail extraction,
+ matching surfaceflinger support that can render the custom format to
+ a texture and possibly other code, so just DON'T USE THIS QUIRK.
+
+-->
+
+<MediaCodecs>
+ <Decoders>
+ <MediaCodec name="OMX.amlogic.hevc.decoder.awesome" type="video/hevc" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="9" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.hevc.decoder.awesome.secure" type="video/hevc" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Feature name="secure-playback" required="true" />
+ <Feature name="tunneled-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.avc.decoder.awesome" type="video/avc" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="9" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.avc.decoder.awesome.secure" type="video/avc" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Feature name="secure-playback" required="true" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.mpeg4.decoder.awesome" type="video/mp4v-es" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.h263.decoder.awesome" type="video/3gpp" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.mpeg2.decoder.awesome" type="video/mpeg2" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.vc1.decoder.awesome" type="video/vc1" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.wvc1.decoder.awesome" type="video/wvc1" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.wmv3.decoder.awesome" type="video/wmv3" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.mswmv3.decoder.awesome" type="video/x-ms-wmv" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.mjpeg.decoder.awesome" type="video/mjpeg" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.vp9.decoder.awesome" type="video/x-vnd.on2.vp9" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="9" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.vp9.decoder.awesome.secure" type="video/x-vnd.on2.vp9" >
+ <Limit name="size" min="64x64" max="3840x2160" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Feature name="secure-playback" required="true" />
+ <Feature name="tunneled-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.avs.decoder.awesome" type="video/avs" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="972000" />
+ <Limit name="bitrate" range="1-300000000" />
+ <Feature name="adaptive-playback" />
+ <Limit name="concurrent-instances" max="1" />
+ </MediaCodec>
+ <MediaCodec name="OMX.amlogic.vp6.decoder.sw" type="video/x-vnd.on2.vp6" />
+ <MediaCodec name="OMX.amlogic.vp6a.decoder.sw" type="video/x-vnd.on2.vp6a" />
+ <MediaCodec name="OMX.amlogic.vp6f.decoder.sw" type="video/x-vnd.on2.vp6f" />
+ <MediaCodec name="OMX.amlogic.rm10.decoder.sw" type="video/rm10" />
+ <MediaCodec name="OMX.amlogic.rm20.decoder.sw" type="video/rm20" />
+ <MediaCodec name="OMX.amlogic.rm30.decoder.sw" type="video/rm30" />
+ <MediaCodec name="OMX.amlogic.rm40.decoder.sw" type="video/rm40" />
+ <MediaCodec name="OMX.amlogic.wmv2.decoder.sw" type="video/wmv2" />
+ <MediaCodec name="OMX.amlogic.wmv1.decoder.sw" type="video/wmv1" />
+ <MediaCodec name="OMX.google.ffmpeg.decoder.sw" type="audio/ffmpeg" />
+ <MediaCodec name="OMX.google.amrnb.decoder" type="audio/3gpp" />
+ <MediaCodec name="OMX.google.amrwb.decoder" type="audio/amr-wb" />
+ <MediaCodec name="OMX.google.aac.decoder" type="audio/mp4a-latm" />
+ <MediaCodec name="OMX.google.adif.decoder" type="audio/aac-adif" />
+ <MediaCodec name="OMX.google.latm.decoder" type="audio/aac-latm" />
+ <MediaCodec name="OMX.google.adts.decoder" type="audio/adts" />
+ <MediaCodec name="OMX.google.g711.alaw.decoder" type="audio/g711-alaw" />
+ <MediaCodec name="OMX.google.g711.mlaw.decoder" type="audio/g711-mlaw" />
+ <MediaCodec name="OMX.google.adpcm.ima.decoder" type="audio/adpcm-ima" />
+ <MediaCodec name="OMX.google.adpcm.ms.decoder" type="audio/adpcm-ms" />
+ <MediaCodec name="OMX.google.vorbis.decoder" type="audio/vorbis" />
+ <MediaCodec name="OMX.google.alac.decoder" type="audio/alac" />
+ <MediaCodec name="OMX.google.wma.decoder" type="audio/wma" />
+ <MediaCodec name="OMX.google.wmapro.decoder" type="audio/wmapro" />
+ <MediaCodec name="OMX.google.ape.decoder" type="audio/ape" />
+ <MediaCodec name="OMX.google.truehd.decoder" type="audio/truehd" />
+ <MediaCodec name="OMX.google.raw.decoder" type="audio/raw" />
+ <MediaCodec name="OMX.google.dtshd.decoder" type="audio/dtshd" />
+ <MediaCodec name="OMX.google.opus.decoder" type="audio/opus">
+ <Limit name="channel-count" max="8" />
+ <Limit name="sample-rate" ranges="48000" />
+ <Limit name="bitrate" range="6000-510000" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.flac.decoder" type="audio/flac" />
+ <MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es" />
+ <MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" />
+ <MediaCodec name="OMX.google.h264.decoder" type="video/avc">
+ <!-- profiles and levels: ProfileBaseline : Level51 -->
+ <Limit name="size" min="2x2" max="2048x2048" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="block-count" range="1-8160" />
+ <Limit name="blocks-per-second" range="1-489600" />
+ <Limit name="bitrate" range="1-40000000" />
+ <Feature name="adaptive-playback" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.hevc.decoder" type="video/hevc">
+ <!-- profiles and levels: ProfileMain : MainTierLevel51 -->
+ <Limit name="size" min="2x2" max="4096x4096" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="8x8" />
+ <Limit name="block-count" range="1-196608" /> <!-- max 4096x3072 -->
+ <Limit name="blocks-per-second" range="1-2000000" />
+ <Limit name="bitrate" range="1-10000000" />
+ <Feature name="adaptive-playback" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp8.decoder" type="video/x-vnd.on2.vp8">
+ <Limit name="size" min="2x2" max="2048x2048" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="block-count" range="1-8160" />
+ <Limit name="blocks-per-second" range="1-500000" />
+ <Limit name="bitrate" range="1-40000000" />
+ <Feature name="adaptive-playback" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp9.decoder" type="video/x-vnd.on2.vp9">
+ <Limit name="size" min="2x2" max="1280x1280" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="block-count" range="1-3600" />
+ <Limit name="blocks-per-second" range="1-108000" />
+ <Limit name="bitrate" range="1-5000000" />
+ <Feature name="adaptive-playback" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.mp3.decoder" >
+ <Type name="audio/mpeg" />
+ <Quirk name="needs-flush-before-disable" />
+ <Quirk name="requires-flush-complete-emulation" />
+ </MediaCodec>
+
+ </Decoders>
+
+ <Settings>
+ <Setting name="max-video-encoder-input-buffers" value="9" />
+ <Setting name="supports-multiple-secure-codecs" value="false" />
+ <Setting name="supports-secure-with-non-secure-codec" value="true" />
+ </Settings>
+
+ <Encoders>
+ <MediaCodec name="OMX.google.amrnb.encoder" type="audio/3gpp" />
+ <MediaCodec name="OMX.google.amrwb.encoder" type="audio/amr-wb" />
+ <MediaCodec name="OMX.google.aac.encoder" type="audio/mp4a-latm" />
+ <MediaCodec name="OMX.google.flac.encoder" type="audio/flac" />
+
+ <MediaCodec name="OMX.amlogic.video.encoder.avc" type="video/avc" >
+ <Limit name="size" min="64x64" max="1920x1088" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="244800" />
+ <Limit name="bitrate" range="1-20000000" />
+ <Limit name="concurrent-instances" max="3" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" >
+ <Limit name="size" min="176x144" max="640x480" />
+ <Limit name="alignment" value="16x16" />
+ <Limit name="block-size" value="16x16" />
+ <Limit name="blocks-per-second" min="1" max="1485" />
+ <Limit name="bitrate" range="192000-1440000" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" >
+ <Limit name="size" min="176x144" max="352x288" />
+ <Limit name="alignment" value="16x16" />
+ </MediaCodec>
+ <MediaCodec name="OMX.google.vp8.encoder" type="video/x-vnd.on2.vp8">
+ <!-- profiles and levels: ProfileMain : Level_Version0-3 -->
+ <Limit name="size" min="2x2" max="896x896" />
+ <Limit name="alignment" value="2x2" />
+ <Limit name="bitrate" range="1-40000000" />
+ <Feature name="bitrate-modes" value="VBR,CBR" />
+ </MediaCodec>
+ </Encoders>
+</MediaCodecs>