MediaCodecInfo.java revision c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879
160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber/* 260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Copyright (C) 2012 The Android Open Source Project 360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * 460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * you may not use this file except in compliance with the License. 660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * You may obtain a copy of the License at 760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * 860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * 1060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Unless required by applicable law or agreed to in writing, software 1160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 1260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * See the License for the specific language governing permissions and 1460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * limitations under the License. 1560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 1660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 1760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huberpackage android.media; 1860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 19c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main/** 20c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * Provides information about a given media codec available on the device. You can 21c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * iterate through all codecs available by querying {@link MediaCodecList}. For example, 22c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * here's how to find an encoder that supports a given MIME type: 23c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <pre> 24c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * private static MediaCodecInfo selectCodec(String mimeType) { 25c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * int numCodecs = MediaCodecList.getCodecCount(); 26c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * for (int i = 0; i < numCodecs; i++) { 27c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i); 28c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * 29c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * if (!codecInfo.isEncoder()) { 30c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * continue; 31c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * } 32c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * 33c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * String[] types = codecInfo.getSupportedTypes(); 34c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * for (int j = 0; j < types.length; j++) { 35c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * if (types[j].equalsIgnoreCase(mimeType)) { 36c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * return codecInfo; 37c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * } 38c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * } 39c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * } 40c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * return null; 41c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * }</pre> 42c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * 43c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main */ 4460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huberpublic final class MediaCodecInfo { 4560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber private int mIndex; 4660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 4760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /* package private */ MediaCodecInfo(int index) { 4860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber mIndex = index; 4960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 5060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 5160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 5260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Retrieve the codec name. 5360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 5460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final String getName() { 5560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return MediaCodecList.getCodecName(mIndex); 5660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 5760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 5860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 5960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Query if the codec is an encoder. 6060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 6160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final boolean isEncoder() { 6260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return MediaCodecList.isEncoder(mIndex); 6360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 6460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 6560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 6660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Query the media types supported by the codec. 6760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 6860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final String[] getSupportedTypes() { 6960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return MediaCodecList.getSupportedTypes(mIndex); 7060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 7160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 72ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber /** 73c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * Encapsulates the capabilities of a given codec component. 74c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * For example, what profile/level combinations it supports and what colorspaces 75ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * it is capable of providing the decoded data in. 76c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <p>You can get an instance for a given {@link MediaCodecInfo} object with 77c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo#getCapabilitiesForType getCapabilitiesForType()}, passing a MIME type. 78ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber */ 7960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final class CodecCapabilities { 80ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // Enumerates supported profile/level combinations as defined 81ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // by the type of encoded data. These combinations impose restrictions 82ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // on video resolution, bitrate... and limit the available encoder tools 83ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // such as B-frame support, arithmetic coding... 8460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public CodecProfileLevel[] profileLevels; 8560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 8660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_COLOR_FORMATTYPE 8760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatMonochrome = 1; 8860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format8bitRGB332 = 2; 8960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format12bitRGB444 = 3; 9060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitARGB4444 = 4; 9160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitARGB1555 = 5; 9260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitRGB565 = 6; 9360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitBGR565 = 7; 9460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18bitRGB666 = 8; 9560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18bitARGB1665 = 9; 9660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format19bitARGB1666 = 10; 9760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitRGB888 = 11; 9860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitBGR888 = 12; 9960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitARGB1887 = 13; 10060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format25bitARGB1888 = 14; 10160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format32bitBGRA8888 = 15; 10260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format32bitARGB8888 = 16; 10360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV411Planar = 17; 10460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV411PackedPlanar = 18; 10560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420Planar = 19; 10660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420PackedPlanar = 20; 10760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420SemiPlanar = 21; 10860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422Planar = 22; 10960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422PackedPlanar = 23; 11060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422SemiPlanar = 24; 11160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYCbYCr = 25; 11260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYCrYCb = 26; 11360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatCbYCrY = 27; 11460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatCrYCbY = 28; 11560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV444Interleaved = 29; 11660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer8bit = 30; 11760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer10bit = 31; 11860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer8bitcompressed = 32; 11960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL2 = 33; 12060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL4 = 34; 12160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL8 = 35; 12260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL16 = 36; 12360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL24 = 37; 12460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL32 = 38; 12560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420PackedSemiPlanar = 39; 12660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422PackedSemiPlanar = 40; 12760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18BitBGR666 = 41; 12860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24BitARGB6666 = 42; 12960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24BitABGR6666 = 43; 13060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 13160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100; 13234f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden // COLOR_FormatSurface indicates that the data will be a GraphicBuffer metadata reference. 13334f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden // In OMX this is called OMX_COLOR_FormatAndroidOpaque. 13434f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden public final static int COLOR_FormatSurface = 0x7F000789; 13560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00; 13660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 13760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 13860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, color format values are drawn from 13960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * OMX_COLOR_FORMATTYPE. 14060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 14160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int[] colorFormats; 14260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber }; 14360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 144c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main /** 145c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * Encapsulates the profiles available for a codec component. 146c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <p>You can get a set of {@link MediaCodecInfo.CodecProfileLevel} objects for a given 147c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo} object from the 148c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo.CodecCapabilities#profileLevels} field. 149c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main */ 15060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final class CodecProfileLevel { 15160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_AVCPROFILETYPE 15260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileBaseline = 0x01; 15360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileMain = 0x02; 15460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileExtended = 0x04; 15560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh = 0x08; 15660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh10 = 0x10; 15760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh422 = 0x20; 15860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh444 = 0x40; 15960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 16060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_AVCLEVELTYPE 16160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel1 = 0x01; 16260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel1b = 0x02; 16360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel11 = 0x04; 16460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel12 = 0x08; 16560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel13 = 0x10; 16660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel2 = 0x20; 16760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel21 = 0x40; 16860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel22 = 0x80; 16960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel3 = 0x100; 17060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel31 = 0x200; 17160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel32 = 0x400; 17260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel4 = 0x800; 17360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel41 = 0x1000; 17460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel42 = 0x2000; 17560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel5 = 0x4000; 17660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel51 = 0x8000; 17760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 17860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_H263PROFILETYPE 17960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileBaseline = 0x01; 18060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileH320Coding = 0x02; 18160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileBackwardCompatible = 0x04; 18260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileISWV2 = 0x08; 18360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileISWV3 = 0x10; 18460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileHighCompression = 0x20; 18560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileInternet = 0x40; 18660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileInterlace = 0x80; 18760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileHighLatency = 0x100; 18860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 18960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_H263LEVELTYPE 19060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level10 = 0x01; 19160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level20 = 0x02; 19260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level30 = 0x04; 19360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level40 = 0x08; 19460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level45 = 0x10; 19560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level50 = 0x20; 19660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level60 = 0x40; 19760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level70 = 0x80; 19860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 19960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_MPEG4PROFILETYPE 20060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimple = 0x01; 20160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleScalable = 0x02; 20260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileCore = 0x04; 20360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileMain = 0x08; 20460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileNbit = 0x10; 20560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileScalableTexture = 0x20; 20660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleFace = 0x40; 20760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleFBA = 0x80; 20860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileBasicAnimated = 0x100; 20960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileHybrid = 0x200; 21060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedRealTime = 0x400; 21160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileCoreScalable = 0x800; 21260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedCoding = 0x1000; 21360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedCore = 0x2000; 21460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedScalable = 0x4000; 21560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedSimple = 0x8000; 21660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 21760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_MPEG4LEVELTYPE 21860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level0 = 0x01; 21960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level0b = 0x02; 22060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level1 = 0x04; 22160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level2 = 0x08; 22260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level3 = 0x10; 22360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level4 = 0x20; 22460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level4a = 0x40; 22560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level5 = 0x80; 22660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 22760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_AUDIO_AACPROFILETYPE 22860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectMain = 1; 22960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLC = 2; 23060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectSSR = 3; 23160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLTP = 4; 23260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectHE = 5; 23360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectScalable = 6; 23460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectERLC = 17; 23560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLD = 23; 23660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectHE_PS = 29; 23760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectELD = 39; 23860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 239e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin // from OMX_VIDEO_VP8LEVELTYPE 240e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version0 = 0x01; 241e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version1 = 0x02; 242e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version2 = 0x04; 243e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version3 = 0x08; 244e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 245e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin // from OMX_VIDEO_VP8PROFILETYPE 246e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8ProfileMain = 0x01; 247e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 248e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 24960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 25060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, depending on the type of media 25160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, 252e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin * OMX_VIDEO_MPEG4PROFILETYPE or OMX_VIDEO_VP8PROFILETYPE. 25360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 25460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int profile; 25560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 25660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 25760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, depending on the type of media 25860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE 259e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin * OMX_VIDEO_MPEG4LEVELTYPE or OMX_VIDEO_VP8LEVELTYPE. 26060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 26160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int level; 26260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber }; 26360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 264ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber /** 265ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * Enumerates the capabilities of the codec component. Since a single 266ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * component can support data of a variety of types, the type has to be 267ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * specified to yield a meaningful result. 268c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * @param type The MIME type to query 269ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber */ 27060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final CodecCapabilities getCapabilitiesForType( 27160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber String type) { 27260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return MediaCodecList.getCodecCapabilities(mIndex, type); 27360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 27460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber} 275