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/**
225a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * MediaCodecList class can be used to enumerate available codecs,
235a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * find a codec supporting a given format and query the capabilities
245a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber * of a given codec.
2560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber */
265a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huberfinal public class MediaCodecList {
2760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    /**
2860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber     * Count the number of available codecs.
2960d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber     */
3060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    public static native final int getCodecCount();
3107ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber
3260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    public static final MediaCodecInfo getCodecInfoAt(int index) {
3360d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber        if (index < 0 || index > getCodecCount()) {
3460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber            throw new IllegalArgumentException();
3560d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber        }
3607ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber
3760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber        return new MediaCodecInfo(index);
3860d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    }
395a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber
4060d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    /* package private */ static native final String getCodecName(int index);
4107ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber
4260d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    /* package private */ static native final boolean isEncoder(int index);
435a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber
4460d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    /* package private */ static native final String[] getSupportedTypes(int index);
4507ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber
4660d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber    /* package private */ static native final MediaCodecInfo.CodecCapabilities
4760d610bf103379277a4b29a7ead4f013f6128e4eAndreas Huber        getCodecCapabilities(int index, String type);
485a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber
495a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber    private static native final void native_init();
505a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber
515a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber    private MediaCodecList() {}
525a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber
535a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber    static {
545a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber        System.loadLibrary("media_jni");
555a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber        native_init();
565a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber    }
575a04bf395514a9342dd26af519b88f4b3e309eb9Andreas Huber}
58