am 92d0a64b: Merge "Add QVGA resolution to CamcorderProfile" into ics-factoryrom
* commit '92d0a64b909cd95e8f4ce587438b0cc6d2daeaa0': Add QVGA resolution to CamcorderProfile
This commit is contained in:
@@ -32,7 +32,8 @@ enum camcorder_quality {
|
|||||||
CAMCORDER_QUALITY_480P = 4,
|
CAMCORDER_QUALITY_480P = 4,
|
||||||
CAMCORDER_QUALITY_720P = 5,
|
CAMCORDER_QUALITY_720P = 5,
|
||||||
CAMCORDER_QUALITY_1080P = 6,
|
CAMCORDER_QUALITY_1080P = 6,
|
||||||
CAMCORDER_QUALITY_LIST_END = 6,
|
CAMCORDER_QUALITY_QVGA = 7,
|
||||||
|
CAMCORDER_QUALITY_LIST_END = 7,
|
||||||
|
|
||||||
CAMCORDER_QUALITY_TIME_LAPSE_LIST_START = 1000,
|
CAMCORDER_QUALITY_TIME_LAPSE_LIST_START = 1000,
|
||||||
CAMCORDER_QUALITY_TIME_LAPSE_LOW = 1000,
|
CAMCORDER_QUALITY_TIME_LAPSE_LOW = 1000,
|
||||||
@@ -42,7 +43,8 @@ enum camcorder_quality {
|
|||||||
CAMCORDER_QUALITY_TIME_LAPSE_480P = 1004,
|
CAMCORDER_QUALITY_TIME_LAPSE_480P = 1004,
|
||||||
CAMCORDER_QUALITY_TIME_LAPSE_720P = 1005,
|
CAMCORDER_QUALITY_TIME_LAPSE_720P = 1005,
|
||||||
CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1006,
|
CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1006,
|
||||||
CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1006,
|
CAMCORDER_QUALITY_TIME_LAPSE_QVGA = 1007,
|
||||||
|
CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1007,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -80,6 +80,16 @@ public class CamcorderProfile
|
|||||||
*/
|
*/
|
||||||
public static final int QUALITY_1080P = 6;
|
public static final int QUALITY_1080P = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quality level corresponding to the QVGA (320x240) resolution.
|
||||||
|
* {@hide}
|
||||||
|
*/
|
||||||
|
public static final int QUALITY_QVGA = 7;
|
||||||
|
|
||||||
|
// Start and end of quality list
|
||||||
|
private static final int QUALITY_LIST_START = QUALITY_LOW;
|
||||||
|
private static final int QUALITY_LIST_END = QUALITY_QVGA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Time lapse quality level corresponding to the lowest available resolution.
|
* Time lapse quality level corresponding to the lowest available resolution.
|
||||||
*/
|
*/
|
||||||
@@ -115,6 +125,16 @@ public class CamcorderProfile
|
|||||||
*/
|
*/
|
||||||
public static final int QUALITY_TIME_LAPSE_1080P = 1006;
|
public static final int QUALITY_TIME_LAPSE_1080P = 1006;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Time lapse quality level corresponding to the QVGA (320 x 240) resolution.
|
||||||
|
* {@hide}
|
||||||
|
*/
|
||||||
|
public static final int QUALITY_TIME_LAPSE_QVGA = 1007;
|
||||||
|
|
||||||
|
// Start and end of timelapse quality list
|
||||||
|
private static final int QUALITY_TIME_LAPSE_LIST_START = QUALITY_TIME_LAPSE_LOW;
|
||||||
|
private static final int QUALITY_TIME_LAPSE_LIST_END = QUALITY_TIME_LAPSE_QVGA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default recording duration in seconds before the session is terminated.
|
* Default recording duration in seconds before the session is terminated.
|
||||||
* This is useful for applications like MMS has limited file size requirement.
|
* This is useful for applications like MMS has limited file size requirement.
|
||||||
@@ -238,8 +258,10 @@ public class CamcorderProfile
|
|||||||
* @see #QUALITY_TIME_LAPSE_1080P
|
* @see #QUALITY_TIME_LAPSE_1080P
|
||||||
*/
|
*/
|
||||||
public static CamcorderProfile get(int cameraId, int quality) {
|
public static CamcorderProfile get(int cameraId, int quality) {
|
||||||
if (!((quality >= QUALITY_LOW && quality <= QUALITY_1080P) ||
|
if (!((quality >= QUALITY_LIST_START &&
|
||||||
(quality >= QUALITY_TIME_LAPSE_LOW && quality <= QUALITY_TIME_LAPSE_1080P))) {
|
quality <= QUALITY_LIST_END) ||
|
||||||
|
(quality >= QUALITY_TIME_LAPSE_LIST_START &&
|
||||||
|
quality <= QUALITY_TIME_LAPSE_LIST_END))) {
|
||||||
String errMessage = "Unsupported quality level: " + quality;
|
String errMessage = "Unsupported quality level: " + quality;
|
||||||
throw new IllegalArgumentException(errMessage);
|
throw new IllegalArgumentException(errMessage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,13 +161,19 @@ android_media_MediaProfiles_native_get_audio_encoder_cap(JNIEnv *env, jobject th
|
|||||||
return cap;
|
return cap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isCamcorderQualityKnown(int quality)
|
||||||
|
{
|
||||||
|
return ((quality >= CAMCORDER_QUALITY_LIST_START &&
|
||||||
|
quality <= CAMCORDER_QUALITY_LIST_END) ||
|
||||||
|
(quality >= CAMCORDER_QUALITY_TIME_LAPSE_LIST_START &&
|
||||||
|
quality <= CAMCORDER_QUALITY_TIME_LAPSE_LIST_END));
|
||||||
|
}
|
||||||
|
|
||||||
static jobject
|
static jobject
|
||||||
android_media_MediaProfiles_native_get_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality)
|
android_media_MediaProfiles_native_get_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality)
|
||||||
{
|
{
|
||||||
LOGV("native_get_camcorder_profile: %d %d", id, quality);
|
LOGV("native_get_camcorder_profile: %d %d", id, quality);
|
||||||
if (!((quality >= CAMCORDER_QUALITY_LOW && quality <= CAMCORDER_QUALITY_1080P) ||
|
if (!isCamcorderQualityKnown(quality)) {
|
||||||
(quality >= CAMCORDER_QUALITY_TIME_LAPSE_LOW &&
|
|
||||||
quality <= CAMCORDER_QUALITY_TIME_LAPSE_1080P))) {
|
|
||||||
jniThrowException(env, "java/lang/RuntimeException", "Unknown camcorder profile quality");
|
jniThrowException(env, "java/lang/RuntimeException", "Unknown camcorder profile quality");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -216,9 +222,7 @@ static jboolean
|
|||||||
android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality)
|
android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality)
|
||||||
{
|
{
|
||||||
LOGV("native_has_camcorder_profile: %d %d", id, quality);
|
LOGV("native_has_camcorder_profile: %d %d", id, quality);
|
||||||
if (!((quality >= CAMCORDER_QUALITY_LOW && quality <= CAMCORDER_QUALITY_1080P) ||
|
if (!isCamcorderQualityKnown(quality)) {
|
||||||
(quality >= CAMCORDER_QUALITY_TIME_LAPSE_LOW &&
|
|
||||||
quality <= CAMCORDER_QUALITY_TIME_LAPSE_1080P))) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ const MediaProfiles::NameToTagMap MediaProfiles::sCamcorderQualityNameMap[] = {
|
|||||||
{"480p", CAMCORDER_QUALITY_480P},
|
{"480p", CAMCORDER_QUALITY_480P},
|
||||||
{"720p", CAMCORDER_QUALITY_720P},
|
{"720p", CAMCORDER_QUALITY_720P},
|
||||||
{"1080p", CAMCORDER_QUALITY_1080P},
|
{"1080p", CAMCORDER_QUALITY_1080P},
|
||||||
|
{"qvga", CAMCORDER_QUALITY_QVGA},
|
||||||
|
|
||||||
{"timelapselow", CAMCORDER_QUALITY_TIME_LAPSE_LOW},
|
{"timelapselow", CAMCORDER_QUALITY_TIME_LAPSE_LOW},
|
||||||
{"timelapsehigh", CAMCORDER_QUALITY_TIME_LAPSE_HIGH},
|
{"timelapsehigh", CAMCORDER_QUALITY_TIME_LAPSE_HIGH},
|
||||||
@@ -74,7 +75,8 @@ const MediaProfiles::NameToTagMap MediaProfiles::sCamcorderQualityNameMap[] = {
|
|||||||
{"timelapsecif", CAMCORDER_QUALITY_TIME_LAPSE_CIF},
|
{"timelapsecif", CAMCORDER_QUALITY_TIME_LAPSE_CIF},
|
||||||
{"timelapse480p", CAMCORDER_QUALITY_TIME_LAPSE_480P},
|
{"timelapse480p", CAMCORDER_QUALITY_TIME_LAPSE_480P},
|
||||||
{"timelapse720p", CAMCORDER_QUALITY_TIME_LAPSE_720P},
|
{"timelapse720p", CAMCORDER_QUALITY_TIME_LAPSE_720P},
|
||||||
{"timelapse1080p", CAMCORDER_QUALITY_TIME_LAPSE_1080P}
|
{"timelapse1080p", CAMCORDER_QUALITY_TIME_LAPSE_1080P},
|
||||||
|
{"timelapseqvga", CAMCORDER_QUALITY_TIME_LAPSE_QVGA},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*static*/ void
|
/*static*/ void
|
||||||
@@ -1139,7 +1141,7 @@ int MediaProfiles::getStartTimeOffsetMs(int cameraId) const {
|
|||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
offsetTimeMs = mStartTimeOffsets.valueFor(cameraId);
|
offsetTimeMs = mStartTimeOffsets.valueFor(cameraId);
|
||||||
}
|
}
|
||||||
LOGV("%s: offsetTime=%d ms and cameraId=%d", offsetTimeMs, cameraId);
|
LOGV("offsetTime=%d ms and cameraId=%d", offsetTimeMs, cameraId);
|
||||||
return offsetTimeMs;
|
return offsetTimeMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user