15a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber/* 25a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * Copyright (C) 2012 The Android Open Source Project 35a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * 45a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 55a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * you may not use this file except in compliance with the License. 65a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * You may obtain a copy of the License at 75a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * 85a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 95a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * 105a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * Unless required by applicable law or agreed to in writing, software 115a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 125a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * See the License for the specific language governing permissions and 145a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * limitations under the License. 155a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber */ 165a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 175a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huberpackage android.media; 185a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 1960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huberimport android.media.MediaCodecInfo; 2060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber 215a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber/** 22c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * Allows you to enumerate available codecs, each specified as a {@link MediaCodecInfo} object, 235a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * find a codec supporting a given format and query the capabilities 245a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * of a given codec. 25c06bb7f5b9c6be9d121e3f5b4ee7cd31c99f6879Scott Main * <p>See {@link MediaCodecInfo} for sample usage. 2660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 275a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huberfinal public class MediaCodecList { 2860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /** 2960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber * Count the number of available codecs. 3060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */ 3160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static native final int getCodecCount(); 3207ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber 3360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber public static final MediaCodecInfo getCodecInfoAt(int index) { 3460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber if (index < 0 || index > getCodecCount()) { 3560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber throw new IllegalArgumentException(); 3660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 3707ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber 3860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber return new MediaCodecInfo(index); 3960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber } 405a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 4160d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /* package private */ static native final String getCodecName(int index); 4207ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber 4360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /* package private */ static native final boolean isEncoder(int index); 445a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 4560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /* package private */ static native final String[] getSupportedTypes(int index); 4607ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber 4760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber /* package private */ static native final MediaCodecInfo.CodecCapabilities 4860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber getCodecCapabilities(int index, String type); 495a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 5093077a2902a74256b7eb4795e1ef92bbc5c50f10Martin Storsjo /* package private */ static native final int findCodecByName(String codec); 5193077a2902a74256b7eb4795e1ef92bbc5c50f10Martin Storsjo 525a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber private static native final void native_init(); 535a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 545a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber private MediaCodecList() {} 555a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber 565a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber static { 575a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber System.loadLibrary("media_jni"); 585a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber native_init(); 595a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber } 605a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber} 61