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 7580c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar * it is capable of providing the decoded data in, as well as some 7680c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar * codec-type specific capability flags. 77c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <p>You can get an instance for a given {@link MediaCodecInfo} object with 78c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo#getCapabilitiesForType getCapabilitiesForType()}, passing a MIME type. 79ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber */ 8060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final class CodecCapabilities { 81ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // Enumerates supported profile/level combinations as defined 82ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // by the type of encoded data. These combinations impose restrictions 83ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // on video resolution, bitrate... and limit the available encoder tools 84ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber // such as B-frame support, arithmetic coding... 8560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public CodecProfileLevel[] profileLevels; 8660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 8760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_COLOR_FORMATTYPE 8860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatMonochrome = 1; 8960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format8bitRGB332 = 2; 9060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format12bitRGB444 = 3; 9160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitARGB4444 = 4; 9260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitARGB1555 = 5; 9360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitRGB565 = 6; 9460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format16bitBGR565 = 7; 9560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18bitRGB666 = 8; 9660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18bitARGB1665 = 9; 9760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format19bitARGB1666 = 10; 9860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitRGB888 = 11; 9960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitBGR888 = 12; 10060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24bitARGB1887 = 13; 10160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format25bitARGB1888 = 14; 10260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format32bitBGRA8888 = 15; 10360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format32bitARGB8888 = 16; 10460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV411Planar = 17; 10560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV411PackedPlanar = 18; 10660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420Planar = 19; 10760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420PackedPlanar = 20; 10860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420SemiPlanar = 21; 10960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422Planar = 22; 11060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422PackedPlanar = 23; 11160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422SemiPlanar = 24; 11260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYCbYCr = 25; 11360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYCrYCb = 26; 11460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatCbYCrY = 27; 11560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatCrYCbY = 28; 11660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV444Interleaved = 29; 11760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer8bit = 30; 11860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer10bit = 31; 11960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatRawBayer8bitcompressed = 32; 12060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL2 = 33; 12160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL4 = 34; 12260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL8 = 35; 12360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL16 = 36; 12460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL24 = 37; 12560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatL32 = 38; 12660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV420PackedSemiPlanar = 39; 12760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_FormatYUV422PackedSemiPlanar = 40; 12860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format18BitBGR666 = 41; 12960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24BitARGB6666 = 42; 13060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_Format24BitABGR6666 = 43; 13160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 13260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100; 13334f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden // COLOR_FormatSurface indicates that the data will be a GraphicBuffer metadata reference. 13434f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden // In OMX this is called OMX_COLOR_FormatAndroidOpaque. 13534f17dd1f615c6285f4f344eb700923e2432e48eAndy McFadden public final static int COLOR_FormatSurface = 0x7F000789; 13660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final static int COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00; 13760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 13860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 13960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, color format values are drawn from 14060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * OMX_COLOR_FORMATTYPE. 14160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 14260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int[] colorFormats; 14380c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar 14480c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar private final static int FLAG_SupportsAdaptivePlayback = (1 << 0); 14580c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar private int flags; 14680c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar 14780c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar /** 14880c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar * <b>video decoder only</b>: codec supports seamless resolution changes. 14980c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar */ 15080c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar public final static String FEATURE_AdaptivePlayback = "adaptive-playback"; 15180c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar 15280c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar /** 15380c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar * Query codec feature capabilities. 15480c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar */ 15580c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar public final boolean isFeatureSupported(String name) { 15680c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar if (name.equals(FEATURE_AdaptivePlayback)) { 15780c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar return (flags & FLAG_SupportsAdaptivePlayback) != 0; 15880c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar } 15980c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar return false; 16080c4437ebfe3e679267a64e4c9d7bdd585b7afceLajos Molnar } 16160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber }; 16260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 163c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main /** 164c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * Encapsulates the profiles available for a codec component. 165c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <p>You can get a set of {@link MediaCodecInfo.CodecProfileLevel} objects for a given 166c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo} object from the 167c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * {@link MediaCodecInfo.CodecCapabilities#profileLevels} field. 168c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main */ 16960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final class CodecProfileLevel { 17060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_AVCPROFILETYPE 17160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileBaseline = 0x01; 17260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileMain = 0x02; 17360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileExtended = 0x04; 17460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh = 0x08; 17560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh10 = 0x10; 17660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh422 = 0x20; 17760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCProfileHigh444 = 0x40; 17860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 17960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_AVCLEVELTYPE 18060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel1 = 0x01; 18160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel1b = 0x02; 18260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel11 = 0x04; 18360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel12 = 0x08; 18460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel13 = 0x10; 18560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel2 = 0x20; 18660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel21 = 0x40; 18760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel22 = 0x80; 18860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel3 = 0x100; 18960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel31 = 0x200; 19060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel32 = 0x400; 19160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel4 = 0x800; 19260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel41 = 0x1000; 19360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel42 = 0x2000; 19460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel5 = 0x4000; 19560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AVCLevel51 = 0x8000; 19660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 19760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_H263PROFILETYPE 19860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileBaseline = 0x01; 19960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileH320Coding = 0x02; 20060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileBackwardCompatible = 0x04; 20160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileISWV2 = 0x08; 20260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileISWV3 = 0x10; 20360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileHighCompression = 0x20; 20460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileInternet = 0x40; 20560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileInterlace = 0x80; 20660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263ProfileHighLatency = 0x100; 20760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 20860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_H263LEVELTYPE 20960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level10 = 0x01; 21060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level20 = 0x02; 21160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level30 = 0x04; 21260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level40 = 0x08; 21360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level45 = 0x10; 21460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level50 = 0x20; 21560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level60 = 0x40; 21660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int H263Level70 = 0x80; 21760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 21860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_MPEG4PROFILETYPE 21960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimple = 0x01; 22060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleScalable = 0x02; 22160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileCore = 0x04; 22260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileMain = 0x08; 22360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileNbit = 0x10; 22460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileScalableTexture = 0x20; 22560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleFace = 0x40; 22660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileSimpleFBA = 0x80; 22760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileBasicAnimated = 0x100; 22860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileHybrid = 0x200; 22960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedRealTime = 0x400; 23060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileCoreScalable = 0x800; 23160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedCoding = 0x1000; 23260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedCore = 0x2000; 23360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedScalable = 0x4000; 23460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4ProfileAdvancedSimple = 0x8000; 23560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 23660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_VIDEO_MPEG4LEVELTYPE 23760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level0 = 0x01; 23860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level0b = 0x02; 23960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level1 = 0x04; 24060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level2 = 0x08; 24160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level3 = 0x10; 24260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level4 = 0x20; 24360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level4a = 0x40; 24460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int MPEG4Level5 = 0x80; 24560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 24660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber // from OMX_AUDIO_AACPROFILETYPE 24760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectMain = 1; 24860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLC = 2; 24960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectSSR = 3; 25060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLTP = 4; 25160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectHE = 5; 25260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectScalable = 6; 25360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectERLC = 17; 25460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectLD = 23; 25560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectHE_PS = 29; 25660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final int AACObjectELD = 39; 25760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 258e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin // from OMX_VIDEO_VP8LEVELTYPE 259e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version0 = 0x01; 260e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version1 = 0x02; 261e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version2 = 0x04; 262e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8Level_Version3 = 0x08; 263e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 264e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin // from OMX_VIDEO_VP8PROFILETYPE 265e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin public static final int VP8ProfileMain = 0x01; 266e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 267e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin 26860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 26960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, depending on the type of media 27060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * this can be OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, 271e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin * OMX_VIDEO_MPEG4PROFILETYPE or OMX_VIDEO_VP8PROFILETYPE. 27260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 27360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int profile; 27460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 27560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 27660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Defined in the OpenMAX IL specs, depending on the type of media 27760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * this can be OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE 278e72409fe779f620382c5bd0b82f4a32ac91d9fe4Kunter Gultekin * OMX_VIDEO_MPEG4LEVELTYPE or OMX_VIDEO_VP8LEVELTYPE. 27960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 28060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public int level; 28160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber }; 28260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 283ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber /** 284ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * Enumerates the capabilities of the codec component. Since a single 285ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * component can support data of a variety of types, the type has to be 286ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber * specified to yield a meaningful result. 287c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * @param type The MIME type to query 288ba9269a5855b6d9d581af09077caafbd45180b41Andreas Huber */ 28960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public final CodecCapabilities getCapabilitiesForType( 29060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber String type) { 29160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return MediaCodecList.getCodecCapabilities(mIndex, type); 29260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 29360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber} 294