1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.media.videoeditor;
17
18/**
19 * The VideoEditorProfile class is used to retrieve the
20 * predefined videoeditor profile settings for videoeditor applications.
21 * These settings are read-only.
22 *
23 * <p>The videoeditor profile specifies the following set of parameters:
24 * <ul>
25 * <li> max input video frame width
26 * <li> max input video frame height
27 * <li> max output video frame width
28 * <li> max output video frame height
29 * </ul>
30 * {@hide}
31 */
32public class VideoEditorProfile
33{
34    static {
35        System.loadLibrary("media_jni");
36        native_init();
37    }
38    /**
39     * The max input video frame width
40     */
41    public int maxInputVideoFrameWidth;
42
43    /**
44     * The max input video frame height
45     */
46    public int maxInputVideoFrameHeight;
47
48    /**
49     * The max ouput video frame width
50     */
51    public int maxOutputVideoFrameWidth;
52
53    /**
54     * The max ouput video frame height
55     */
56    public int maxOutputVideoFrameHeight;
57
58    /**
59     * Returns the videoeditor profile
60     */
61    public static VideoEditorProfile get() {
62        return native_get_videoeditor_profile();
63    }
64
65    /**
66     * Returns the supported profile by given video codec
67     */
68    public static int getExportProfile(int vidCodec) {
69        int profile = -1;
70
71        switch (vidCodec) {
72            case MediaProperties.VCODEC_H263:
73            case MediaProperties.VCODEC_H264:
74            case MediaProperties.VCODEC_MPEG4:
75                 profile = native_get_videoeditor_export_profile(vidCodec);
76                 break;
77            default :
78               throw new IllegalArgumentException("Unsupported video codec" + vidCodec);
79        }
80
81        return profile;
82    }
83
84    /**
85     * Returns the supported level by given video codec
86     */
87    public static int getExportLevel(int vidCodec) {
88        int level = -1;
89
90        switch (vidCodec) {
91            case MediaProperties.VCODEC_H263:
92            case MediaProperties.VCODEC_H264:
93            case MediaProperties.VCODEC_MPEG4:
94                 level = native_get_videoeditor_export_level(vidCodec);
95                 break;
96            default :
97               throw new IllegalArgumentException("Unsupported video codec" + vidCodec);
98        }
99
100        return level;
101    }
102
103    // Private constructor called by JNI
104    private VideoEditorProfile(int inputWidth,
105                             int inputHeight,
106                             int outputWidth,
107                             int outputHeight) {
108
109        this.maxInputVideoFrameWidth = inputWidth;
110        this.maxInputVideoFrameHeight = inputHeight;
111        this.maxOutputVideoFrameWidth = outputWidth;
112        this.maxOutputVideoFrameHeight = outputHeight;
113    }
114
115    // Methods implemented by JNI
116    private static native final void native_init();
117    private static native final VideoEditorProfile
118        native_get_videoeditor_profile();
119    private static native final int native_get_videoeditor_export_profile(int codec);
120    private static native final int native_get_videoeditor_export_level(int level);
121
122}
123