19bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/*
22b06e56031ef8bd1b5155ec3225f37248d4833b4Basavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project
39bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
49bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Licensed under the Apache License, Version 2.0 (the "License");
59bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * you may not use this file except in compliance with the License.
69bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * You may obtain a copy of the License at
79bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
89bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *      http://www.apache.org/licenses/LICENSE-2.0
99bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Unless required by applicable law or agreed to in writing, software
119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * distributed under the License is distributed on an "AS IS" BASIS,
129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * See the License for the specific language governing permissions and
149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * limitations under the License.
159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapackage android.media.videoeditor;
199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
20600acf14ff12eaf139f0ac644fb7e17849af65faHong Tengimport android.media.videoeditor.VideoEditorProfile;
219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.util.Pair;
22600acf14ff12eaf139f0ac644fb7e17849af65faHong Tengimport java.lang.System;
239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/**
249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This class defines all properties of a media file such as supported height,
259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * aspect ratio, bitrate for export function.
269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@hide}
279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapublic class MediaProperties {
299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Supported heights
319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int HEIGHT_144 = 144;
33bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava    public static final int HEIGHT_288 = 288;
349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int HEIGHT_360 = 360;
359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int HEIGHT_480 = 480;
369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int HEIGHT_720 = 720;
37600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public static final int HEIGHT_1080 = 1080;
389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Supported aspect ratios
419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_UNDEFINED = 0;
439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_3_2 = 1;
449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_16_9 = 2;
459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_4_3 = 3;
469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_5_3 = 4;
479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ASPECT_RATIO_11_9 = 5;
489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  The array of supported aspect ratios
519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final int[] ASPECT_RATIOS = new int[] {
539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ASPECT_RATIO_3_2,
549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ASPECT_RATIO_16_9,
559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ASPECT_RATIO_4_3,
569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ASPECT_RATIO_5_3,
579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ASPECT_RATIO_11_9
589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Supported resolutions for specific aspect ratios
629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings({"unchecked"})
649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final Pair<Integer, Integer>[] ASPECT_RATIO_3_2_RESOLUTIONS =
659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair[] {
669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(720, HEIGHT_480),
67600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        new Pair<Integer, Integer>(1080, HEIGHT_720)
689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings({"unchecked"})
719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final Pair<Integer, Integer>[] ASPECT_RATIO_4_3_RESOLUTIONS =
729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair[] {
739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(640, HEIGHT_480),
749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(960, HEIGHT_720)
759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings({"unchecked"})
789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final Pair<Integer, Integer>[] ASPECT_RATIO_5_3_RESOLUTIONS =
799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair[] {
809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(800, HEIGHT_480)
819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings({"unchecked"})
849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final Pair<Integer, Integer>[] ASPECT_RATIO_11_9_RESOLUTIONS =
859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair[] {
86bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava        new Pair<Integer, Integer>(176, HEIGHT_144),
87bcbf68583e38eeb79266f9f3a8c3d1b17f75a8c2Santosh Madhava        new Pair<Integer, Integer>(352, HEIGHT_288)
889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings({"unchecked"})
919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final Pair<Integer, Integer>[] ASPECT_RATIO_16_9_RESOLUTIONS =
929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair[] {
939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(848, HEIGHT_480),
949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        new Pair<Integer, Integer>(1280, HEIGHT_720),
95600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        new Pair<Integer, Integer>(1920, HEIGHT_1080),
969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Bitrate values (in bits per second)
1009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_28K = 28000;
1029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_40K = 40000;
1039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_64K = 64000;
1049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_96K = 96000;
1059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_128K = 128000;
1069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_192K = 192000;
1079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_256K = 256000;
1089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_384K = 384000;
1099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_512K = 512000;
1109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_800K = 800000;
1119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_2M = 2000000;
1129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_5M = 5000000;
1139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int BITRATE_8M = 8000000;
1149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  The array of supported bitrates
1179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final int[] SUPPORTED_BITRATES = new int[] {
1199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_28K,
1209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_40K,
1219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_64K,
1229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_96K,
1239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_128K,
1249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_192K,
1259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_256K,
1269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_384K,
1279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_512K,
1289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_800K,
1299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_2M,
1309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_5M,
1319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        BITRATE_8M
1329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
1339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Video codec types
1369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int VCODEC_H263 = 1;
1383ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public static final int VCODEC_H264 = 2;
1393ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public static final int VCODEC_MPEG4 = 3;
1409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  The array of supported video codecs
1439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final int[] SUPPORTED_VCODECS = new int[] {
1453ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        VCODEC_H264,
1469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        VCODEC_H263,
1479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        VCODEC_MPEG4,
1489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
1499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1503ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
1513ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The H264 profile, the values are same as the one in OMX_Video.h
1523ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
1533ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class H264Profile {
1543ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileBaseline = 0x01; /**< Baseline profile */
1553ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileMain     = 0x02; /**< Main profile */
1563ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileExtended = 0x04; /**< Extended profile */
1573ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileHigh     = 0x08; /**< High profile */
1583ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileHigh10   = 0x10; /**< High 10 profile */
1593ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileHigh422  = 0x20; /**< High 4:2:2 profile */
1603ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileHigh444  = 0x40; /**< High 4:4:4 profile */
1613ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264ProfileUnknown  = 0x7FFFFFFF;
1623ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury   }
1633ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
1643ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The H264 level, the values are same as the one in OMX_Video.h
1653ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
1663ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class H264Level {
1673ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level1   = 0x01; /**< Level 1 */
1683ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level1b  = 0x02; /**< Level 1b */
1693ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level11  = 0x04; /**< Level 1.1 */
1703ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level12  = 0x08; /**< Level 1.2 */
1713ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level13  = 0x10; /**< Level 1.3 */
1723ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level2   = 0x20; /**< Level 2 */
1733ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level21  = 0x40; /**< Level 2.1 */
1743ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level22  = 0x80; /**< Level 2.2 */
1753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level3   = 0x100; /**< Level 3 */
1763ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level31  = 0x200; /**< Level 3.1 */
1773ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level32  = 0x400; /**< Level 3.2 */
1783ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level4   = 0x800; /**< Level 4 */
1793ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level41  = 0x1000; /**< Level 4.1 */
1803ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level42  = 0x2000; /**< Level 4.2 */
1813ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level5   = 0x4000; /**< Level 5 */
1823ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264Level51  = 0x8000; /**< Level 5.1 */
1833ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H264LevelUnknown = 0x7FFFFFFF;
1843ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
1853ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
1863ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The H263 profile, the values are same as the one in OMX_Video.h
1873ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
1883ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class H263Profile {
1893ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileBaseline            = 0x01;
1903ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileH320Coding          = 0x02;
1913ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileBackwardCompatible  = 0x04;
1923ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileISWV2               = 0x08;
1933ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileISWV3               = 0x10;
1943ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileHighCompression     = 0x20;
1953ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileInternet            = 0x40;
1963ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileInterlace           = 0x80;
1973ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileHighLatency       = 0x100;
1983ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263ProfileUnknown          = 0x7FFFFFFF;
1993ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
2003ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
2013ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The H263 level, the values are same as the one in OMX_Video.h
2023ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
2033ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class H263Level {
2043ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level10  = 0x01;
2053ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level20  = 0x02;
2063ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level30  = 0x04;
2073ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level40  = 0x08;
2083ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level45  = 0x10;
2093ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level50  = 0x20;
2103ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level60  = 0x40;
2113ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263Level70  = 0x80;
2123ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int H263LevelUnknown = 0x7FFFFFFF;
2133ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
2143ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
2153ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The mpeg4 profile, the values are same as the one in OMX_Video.h
2163ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
2173ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class MPEG4Profile {
2183ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileSimple           = 0x01;
2193ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileSimpleScalable   = 0x02;
2203ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileCore             = 0x04;
2213ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileMain             = 0x08;
2223ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileNbit             = 0x10;
2233ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileScalableTexture  = 0x20;
2243ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileSimpleFace       = 0x40;
2253ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileSimpleFBA        = 0x80;
2263ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileBasicAnimated    = 0x100;
2273ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileHybrid           = 0x200;
2283ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileAdvancedRealTime = 0x400;
2293ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileCoreScalable     = 0x800;
2303ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileAdvancedCoding   = 0x1000;
2313ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileAdvancedCore     = 0x2000;
2323ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileAdvancedScalable = 0x4000;
2333ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileAdvancedSimple   = 0x8000;
2343ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4ProfileUnknown          = 0x7FFFFFFF;
2353ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
2363ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
2373ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     *  The mpeg4 level, the values are same as the one in OMX_Video.h
2383ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
2393ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public final class MPEG4Level {
2403ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level0  = 0x01; /**< Level 0 */
2413ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level0b = 0x02; /**< Level 0b */
2423ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level1  = 0x04; /**< Level 1 */
2433ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level2  = 0x08; /**< Level 2 */
2443ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level3  = 0x10; /**< Level 3 */
2453ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level4  = 0x20; /**< Level 4 */
2463ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level4a = 0x40; /**< Level 4a */
2473ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4Level5  = 0x80; /**< Level 5 */
2483ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        public static final int MPEG4LevelUnknown = 0x7FFFFFFF;
2493ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
2509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
2519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Audio codec types
2529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
2539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_NO_AUDIO = 0;
2549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_AMRNB = 1;
2559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_AAC_LC = 2;
2569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_AAC_PLUS = 3;
2579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_ENHANCED_AAC_PLUS = 4;
2589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_MP3 = 5;
2599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_EVRC = 6;
2609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    // 7 value is used for PCM
2619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_AMRWB = 8;
2629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int ACODEC_OGG = 9;
2639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
2649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
2652b06e56031ef8bd1b5155ec3225f37248d4833b4Basavapatna Dattaguru     *  The array of supported audio codecs
2669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
2679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final int[] SUPPORTED_ACODECS = new int[] {
2689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ACODEC_AAC_LC,
2699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ACODEC_AMRNB,
2709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        ACODEC_AMRWB
2719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
2729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
2739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
2749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Samples per frame for each audio codec
2759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
2769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int SAMPLES_PER_FRAME_AAC = 1024;
2779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int SAMPLES_PER_FRAME_MP3 = 1152;
2789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int SAMPLES_PER_FRAME_AMRNB = 160;
2799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int SAMPLES_PER_FRAME_AMRWB = 320;
2809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
2819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int DEFAULT_SAMPLING_FREQUENCY = 32000;
2829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int DEFAULT_CHANNEL_COUNT = 2;
2839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
2849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
2859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  File format types
2869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
2879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int FILE_3GP = 0;
2889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int FILE_MP4 = 1;
289f58ba6506959947d2e646833789c859ae50e6767James Dong    public static final int FILE_AMR = 2;
2909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int FILE_MP3 = 3;
2919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    // 4 is for PCM
2929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int FILE_JPEG = 5;
2934e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi    // 6 is for BMP
2944e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi    // 7 is for GIF
2954e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi    public static final int FILE_PNG = 8;
2964e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi    // 9 is for ARGB8888
2974e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi    public static final int FILE_M4V = 10;
2989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int FILE_UNSUPPORTED = 255;
2994e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi
3009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
3017b3f26328bb2555a1728db38780a4cb3be00a893Danny Fernandes     * Undefined video codec profiles
3027b3f26328bb2555a1728db38780a4cb3be00a893Danny Fernandes     */
3037b3f26328bb2555a1728db38780a4cb3be00a893Danny Fernandes    public static final int UNDEFINED_VIDEO_PROFILE = 255;
3047b3f26328bb2555a1728db38780a4cb3be00a893Danny Fernandes
3057b3f26328bb2555a1728db38780a4cb3be00a893Danny Fernandes    /**
3069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * The array of the supported file formats
3079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private static final int[] SUPPORTED_VIDEO_FILE_FORMATS = new int[] {
3099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        FILE_3GP,
3104e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi        FILE_MP4,
3114e7032052137345450bfd2b7a4a9a05ecde17076Dharmaray Kundargi        FILE_M4V
3129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    };
3139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
3159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * The maximum count of audio tracks supported
3169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int AUDIO_MAX_TRACK_COUNT = 1;
3189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /** The maximum volume supported (100 means that no amplification is
3209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * supported, i.e. attenuation only)
3219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int AUDIO_MAX_VOLUME_PERCENT = 100;
3239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
3259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * This class cannot be instantiated
3269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private MediaProperties() {
3289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
3299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
3319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of supported aspect ratios
3329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int[] getAllSupportedAspectRatios() {
3349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return ASPECT_RATIOS;
3359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
3369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
3389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the supported resolutions for the specified aspect ratio.
3399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
3409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param aspectRatio The aspect ratio for which the resolutions are
3419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *        requested
3429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of width and height pairs
3439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
3449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static Pair<Integer, Integer>[] getSupportedResolutions(int aspectRatio) {
3459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        final Pair<Integer, Integer>[] resolutions;
3469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        switch (aspectRatio) {
3479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case ASPECT_RATIO_3_2: {
3489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                resolutions = ASPECT_RATIO_3_2_RESOLUTIONS;
3499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
3509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case ASPECT_RATIO_4_3: {
3539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                resolutions = ASPECT_RATIO_4_3_RESOLUTIONS;
3549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
3559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case ASPECT_RATIO_5_3: {
3589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                resolutions = ASPECT_RATIO_5_3_RESOLUTIONS;
3599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
3609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case ASPECT_RATIO_11_9: {
3639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                resolutions = ASPECT_RATIO_11_9_RESOLUTIONS;
3649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
3659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case ASPECT_RATIO_16_9: {
3689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                resolutions = ASPECT_RATIO_16_9_RESOLUTIONS;
3699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
3709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
3729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            default: {
3739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                throw new IllegalArgumentException("Unknown aspect ratio: " + aspectRatio);
3749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
3759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        }
3769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
377600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        /** Check the platform specific maximum export resolution */
378600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        VideoEditorProfile veProfile = VideoEditorProfile.get();
379600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        if (veProfile == null) {
380600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng            throw new RuntimeException("Can't get the video editor profile");
381600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        }
382600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        final int maxWidth = veProfile.maxOutputVideoFrameWidth;
383600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        final int maxHeight = veProfile.maxOutputVideoFrameHeight;
384600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        Pair<Integer, Integer>[] tmpResolutions = new Pair[resolutions.length];
385600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        int numSupportedResolution = 0;
386600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        int i = 0;
387600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
388600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        /** Get supported resolution list */
389600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        for (i = 0; i < resolutions.length; i++) {
390600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng            if ((resolutions[i].first <= maxWidth) &&
391600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                (resolutions[i].second <= maxHeight)) {
392600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                tmpResolutions[numSupportedResolution] = resolutions[i];
393600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                numSupportedResolution++;
394600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng            }
395600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        }
396600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        final Pair<Integer, Integer>[] supportedResolutions =
397600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng            new Pair[numSupportedResolution];
398600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        System.arraycopy(tmpResolutions, 0,
399600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng            supportedResolutions, 0, numSupportedResolution);
400600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
401600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        return supportedResolutions;
4029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of supported video codecs
4069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int[] getSupportedVideoCodecs() {
4089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return SUPPORTED_VCODECS;
4099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of supported audio codecs
4139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int[] getSupportedAudioCodecs() {
4159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return SUPPORTED_ACODECS;
4169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of supported file formats
4209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int[] getSupportedVideoFileFormat() {
4229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return SUPPORTED_VIDEO_FILE_FORMATS;
4239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The array of supported video bitrates
4279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int[] getSupportedVideoBitrates() {
4299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return SUPPORTED_BITRATES;
4309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The maximum value for the audio volume
4349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int getSupportedMaxVolume() {
4369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return MediaProperties.AUDIO_MAX_VOLUME_PERCENT;
4379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
4399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
4409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The maximum number of audio tracks supported
4419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
4429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static int getSupportedAudioTrackCount() {
4439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return MediaProperties.AUDIO_MAX_TRACK_COUNT;
4449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
4459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava}
446