| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.media; |
| |
| /** |
| * The CamcorderProfile class is used to retrieve the |
| * predefined camcorder profile settings for camcorder applications. |
| * These settings are read-only. |
| * |
| * The compressed output from a recording session with a given |
| * CamcorderProfile contains two tracks: one for auido and one for video. |
| * |
| * <p>Each profile specifies the following set of parameters: |
| * <ul> |
| * <li> The file output format |
| * <li> Video codec format |
| * <li> Video bit rate in bits per second |
| * <li> Video frame rate in frames per second |
| * <li> Video frame width and height, |
| * <li> Audio codec format |
| * <li> Audio bit rate in bits per second, |
| * <li> Audio sample rate |
| * <li> Number of audio channels for recording. |
| * </ul> |
| */ |
| public class CamcorderProfile |
| { |
| /** |
| * The output from camcorder recording sessions can have different quality levels. |
| * |
| * Currently, we define two quality levels: high quality and low quality. |
| * A camcorder recording session with high quality level usually has higher output bit |
| * rate, better video and/or audio recording quality, larger video frame |
| * resolution and higher audio sampling rate, etc, than those with low quality |
| * level. |
| * |
| * Do not change these values/ordinals without updating their counterpart |
| * in include/media/MediaProfiles.h! |
| */ |
| public static final int QUALITY_LOW = 0; |
| public static final int QUALITY_HIGH = 1; |
| |
| /** |
| * Default recording duration in seconds before the session is terminated. |
| * This is useful for applications like MMS has limited file size requirement. |
| */ |
| public int duration; |
| |
| /** |
| * The quality level of the camcorder profile |
| */ |
| public int quality; |
| |
| /** |
| * The file output format of the camcorder profile |
| * @see android.media.MediaRecorder.OutputFormat |
| */ |
| public int fileFormat; |
| |
| /** |
| * The video encoder being used for the video track |
| * @see android.media.MediaRecorder.VideoEncoder |
| */ |
| public int videoCodec; |
| |
| /** |
| * The target video output bit rate in bits per second |
| */ |
| public int videoBitRate; |
| |
| /** |
| * The target video frame rate in frames per second |
| */ |
| public int videoFrameRate; |
| |
| /** |
| * The target video frame width in pixels |
| */ |
| public int videoFrameWidth; |
| |
| /** |
| * The target video frame height in pixels |
| */ |
| public int videoFrameHeight; |
| |
| /** |
| * The audio encoder being used for the audio track. |
| * @see android.media.MediaRecorder.AudioEncoder |
| */ |
| public int audioCodec; |
| |
| /** |
| * The target audio output bit rate in bits per second |
| */ |
| public int audioBitRate; |
| |
| /** |
| * The audio sampling rate used for the audio track |
| */ |
| public int audioSampleRate; |
| |
| /** |
| * The number of audio channels used for the audio track |
| */ |
| public int audioChannels; |
| |
| /** |
| * Returns the camcorder profile for the given quality level. |
| * @param quality the target quality level for the camcorder profile |
| */ |
| public static CamcorderProfile get(int quality) { |
| if (quality < QUALITY_LOW || quality > QUALITY_HIGH) { |
| String errMessage = "Unsupported quality level: " + quality; |
| throw new IllegalArgumentException(errMessage); |
| } |
| return native_get_camcorder_profile(quality); |
| } |
| |
| static { |
| System.loadLibrary("media_jni"); |
| native_init(); |
| } |
| |
| // Private constructor called by JNI |
| private CamcorderProfile(int duration, |
| int quality, |
| int fileFormat, |
| int videoCodec, |
| int videoBitRate, |
| int videoFrameRate, |
| int videoWidth, |
| int videoHeight, |
| int audioCodec, |
| int audioBitRate, |
| int audioSampleRate, |
| int audioChannels) { |
| |
| this.duration = duration; |
| this.quality = quality; |
| this.fileFormat = fileFormat; |
| this.videoCodec = videoCodec; |
| this.videoBitRate = videoBitRate; |
| this.videoFrameRate = videoFrameRate; |
| this.videoFrameWidth = videoWidth; |
| this.videoFrameHeight = videoHeight; |
| this.audioCodec = audioCodec; |
| this.audioBitRate = audioBitRate; |
| this.audioSampleRate = audioSampleRate; |
| this.audioChannels = audioChannels; |
| } |
| |
| // Methods implemented by JNI |
| private static native final void native_init(); |
| private static native final CamcorderProfile native_get_camcorder_profile(int quality); |
| } |