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