1600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng/*
2600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * Copyright (C) 2011 The Android Open Source Project
3600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng *
4600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * Licensed under the Apache License, Version 2.0 (the "License");
5600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * you may not use this file except in compliance with the License.
6600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * You may obtain a copy of the License at
7600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng *
8600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng *      http://www.apache.org/licenses/LICENSE-2.0
9600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng *
10600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * Unless required by applicable law or agreed to in writing, software
11600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * distributed under the License is distributed on an "AS IS" BASIS,
12600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * See the License for the specific language governing permissions and
14600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * limitations under the License.
15600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng */
16600acf14ff12eaf139f0ac644fb7e17849af65faHong Tengpackage android.media.videoeditor;
17600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
18600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng/**
19600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * The VideoEditorProfile class is used to retrieve the
20600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * predefined videoeditor profile settings for videoeditor applications.
21600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * These settings are read-only.
22600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng *
23600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <p>The videoeditor profile specifies the following set of parameters:
24600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <ul>
25600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <li> max input video frame width
26600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <li> max input video frame height
27600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <li> max output video frame width
28600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * <li> max output video frame height
29600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * </ul>
30600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng * {@hide}
31600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng */
32600acf14ff12eaf139f0ac644fb7e17849af65faHong Tengpublic class VideoEditorProfile
33600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng{
343ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    static {
353ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        System.loadLibrary("media_jni");
363ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        native_init();
373ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
38600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    /**
39600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     * The max input video frame width
40600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     */
41600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public int maxInputVideoFrameWidth;
42600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
43600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    /**
44600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     * The max input video frame height
45600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     */
46600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public int maxInputVideoFrameHeight;
47600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
48600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    /**
49600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     * The max ouput video frame width
50600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     */
51600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public int maxOutputVideoFrameWidth;
52600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
53600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    /**
54600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     * The max ouput video frame height
55600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     */
56600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public int maxOutputVideoFrameHeight;
57600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
58600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    /**
59600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     * Returns the videoeditor profile
60600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng     */
61600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    public static VideoEditorProfile get() {
62600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        return native_get_videoeditor_profile();
63600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    }
64600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
653ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
663ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     * Returns the supported profile by given video codec
673ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
683ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public static int getExportProfile(int vidCodec) {
693ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        int profile = -1;
703ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
713ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        switch (vidCodec) {
723ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_H263:
733ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_H264:
743ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_MPEG4:
753ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                 profile = native_get_videoeditor_export_profile(vidCodec);
763ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                 break;
773ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            default :
783ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury               throw new IllegalArgumentException("Unsupported video codec" + vidCodec);
793ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        }
803ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
813ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        return profile;
823ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    }
833ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
843ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    /**
853ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     * Returns the supported level by given video codec
863ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury     */
873ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    public static int getExportLevel(int vidCodec) {
883ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        int level = -1;
893ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
903ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        switch (vidCodec) {
913ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_H263:
923ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_H264:
933ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            case MediaProperties.VCODEC_MPEG4:
948f7bf025067767313d4d012718ad7f7f8b9822cdRajneesh Chowdury                 level = native_get_videoeditor_export_level(vidCodec);
953ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury                 break;
963ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury            default :
973ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury               throw new IllegalArgumentException("Unsupported video codec" + vidCodec);
983ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        }
993ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
1003ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        return level;
101600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    }
102600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
103600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    // Private constructor called by JNI
104600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    private VideoEditorProfile(int inputWidth,
105600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                             int inputHeight,
106600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                             int outputWidth,
107600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng                             int outputHeight) {
108600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
109600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        this.maxInputVideoFrameWidth = inputWidth;
110600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        this.maxInputVideoFrameHeight = inputHeight;
111600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        this.maxOutputVideoFrameWidth = outputWidth;
112600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng        this.maxOutputVideoFrameHeight = outputHeight;
113600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    }
114600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng
115600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    // Methods implemented by JNI
116600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    private static native final void native_init();
117600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng    private static native final VideoEditorProfile
1183ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury        native_get_videoeditor_profile();
1193ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    private static native final int native_get_videoeditor_export_profile(int codec);
1203ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury    private static native final int native_get_videoeditor_export_level(int level);
1213ced044154945f9d60983032278e00fe28f4ab1bRajneesh Chowdury
122600acf14ff12eaf139f0ac644fb7e17849af65faHong Teng}
123