summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNipun Kwatra <nkwatra@google.com>2010-09-09 16:25:08 -0700
committerNipun Kwatra <nkwatra@google.com>2010-09-10 14:22:11 -0700
commit9d619542bea7d4c376a5a8b4a55c795a796adef3 (patch)
tree925230ba48a7fec87d014def9eee6cdc317b004b
parent4af0dfd6cbc13fa6a89ec1430cbe6f619cd64d8a (diff)
downloadframeworks_base-9d619542bea7d4c376a5a8b4a55c795a796adef3.zip
frameworks_base-9d619542bea7d4c376a5a8b4a55c795a796adef3.tar.gz
frameworks_base-9d619542bea7d4c376a5a8b4a55c795a796adef3.tar.bz2
Adding hasProfile.
- Added hasProfile to CamcorderProfile and JNI. - Added hasCamcorderProfile to MediaProfiles. - using android.hardware.Camera.CAMERA_ID_DEFAULT for default camera in get(). Change-Id: Ib57bb49ae79492d7cbc0ec6c7b6efcbf74f80013
-rw-r--r--include/media/MediaProfiles.h8
-rw-r--r--media/java/android/media/CamcorderProfile.java25
-rw-r--r--media/jni/android_media_MediaProfiles.cpp16
-rw-r--r--media/libmedia/MediaProfiles.cpp23
4 files changed, 65 insertions, 7 deletions
diff --git a/include/media/MediaProfiles.h b/include/media/MediaProfiles.h
index df64ce8..183bb1e 100644
--- a/include/media/MediaProfiles.h
+++ b/include/media/MediaProfiles.h
@@ -79,6 +79,12 @@ public:
camcorder_quality quality) const;
/**
+ * Returns true if a profile for the given camera at the given quality exists,
+ * or false if not.
+ */
+ bool hasCamcorderProfile(int cameraId, camcorder_quality quality) const;
+
+ /**
* Returns the output file formats supported.
*/
Vector<output_format> getOutputFileFormats() const;
@@ -263,6 +269,8 @@ private:
Vector<int> mLevels;
};
+ int getCamcorderProfileIndex(int cameraId, camcorder_quality quality) const;
+
// Debug
static void logVideoCodec(const VideoCodec& codec);
static void logAudioCodec(const AudioCodec& codec);
diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java
index 4a59166..e9ad8ee 100644
--- a/media/java/android/media/CamcorderProfile.java
+++ b/media/java/android/media/CamcorderProfile.java
@@ -173,7 +173,7 @@ public class CamcorderProfile
* @see #get(int, int)
*/
public static CamcorderProfile get(int quality) {
- return get(0, quality);
+ return get(android.hardware.Camera.CAMERA_ID_DEFAULT, quality);
}
/**
@@ -205,6 +205,27 @@ public class CamcorderProfile
return native_get_camcorder_profile(cameraId, quality);
}
+ /**
+ * Returns true if camcorder profile exists for the default camera at
+ * the given quality level.
+ * @param quality the target quality level for the camcorder profile
+ * @hide
+ */
+ public static boolean hasProfile(int quality) {
+ return hasProfile(android.hardware.Camera.CAMERA_ID_DEFAULT, quality);
+ }
+
+ /**
+ * Returns true if camcorder profile exists for the given camera at
+ * the given quality level.
+ * @param cameraId the id for the camera
+ * @param quality the target quality level for the camcorder profile
+ * @hide
+ */
+ public static boolean hasProfile(int cameraId, int quality) {
+ return native_has_camcorder_profile(cameraId, quality);
+ }
+
static {
System.loadLibrary("media_jni");
native_init();
@@ -242,4 +263,6 @@ public class CamcorderProfile
private static native final void native_init();
private static native final CamcorderProfile native_get_camcorder_profile(
int cameraId, int quality);
+ private static native final boolean native_has_camcorder_profile(
+ int cameraId, int quality);
}
diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp
index 5aae853..08a6de1 100644
--- a/media/jni/android_media_MediaProfiles.cpp
+++ b/media/jni/android_media_MediaProfiles.cpp
@@ -212,6 +212,20 @@ android_media_MediaProfiles_native_get_camcorder_profile(JNIEnv *env, jobject th
audioChannels);
}
+static jboolean
+android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality)
+{
+ LOGV("native_has_camcorder_profile: %d %d", id, quality);
+ if (!((quality >= CAMCORDER_QUALITY_LOW && quality <= CAMCORDER_QUALITY_1080P) ||
+ (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LOW &&
+ quality <= CAMCORDER_QUALITY_TIME_LAPSE_1080P))) {
+ return false;
+ }
+
+ camcorder_quality q = static_cast<camcorder_quality>(quality);
+ return sProfiles->hasCamcorderProfile(id, q);
+}
+
static jint
android_media_MediaProfiles_native_get_num_video_decoders(JNIEnv *env, jobject thiz)
{
@@ -291,6 +305,8 @@ static JNINativeMethod gMethodsForCamcorderProfileClass[] = {
{"native_init", "()V", (void *)android_media_MediaProfiles_native_init},
{"native_get_camcorder_profile", "(II)Landroid/media/CamcorderProfile;",
(void *)android_media_MediaProfiles_native_get_camcorder_profile},
+ {"native_has_camcorder_profile", "(II)Z",
+ (void *)android_media_MediaProfiles_native_has_camcorder_profile},
};
static JNINativeMethod gMethodsForDecoderCapabilitiesClass[] = {
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index 37a33ed..81647e0 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -715,13 +715,8 @@ Vector<audio_decoder> MediaProfiles::getAudioDecoders() const
return decoders; // copy out
}
-int MediaProfiles::getCamcorderProfileParamByName(const char *name,
- int cameraId,
- camcorder_quality quality) const
+int MediaProfiles::getCamcorderProfileIndex(int cameraId, camcorder_quality quality) const
{
- LOGV("getCamcorderProfileParamByName: %s for camera %d, quality %d",
- name, cameraId, quality);
-
int index = -1;
for (size_t i = 0, n = mCamcorderProfiles.size(); i < n; ++i) {
if (mCamcorderProfiles[i]->mCameraId == cameraId &&
@@ -730,6 +725,17 @@ int MediaProfiles::getCamcorderProfileParamByName(const char *name,
break;
}
}
+ return index;
+}
+
+int MediaProfiles::getCamcorderProfileParamByName(const char *name,
+ int cameraId,
+ camcorder_quality quality) const
+{
+ LOGV("getCamcorderProfileParamByName: %s for camera %d, quality %d",
+ name, cameraId, quality);
+
+ int index = getCamcorderProfileIndex(cameraId, quality);
if (index == -1) {
LOGE("The given camcorder profile camera %d quality %d is not found",
cameraId, quality);
@@ -752,6 +758,11 @@ int MediaProfiles::getCamcorderProfileParamByName(const char *name,
return -1;
}
+bool MediaProfiles::hasCamcorderProfile(int cameraId, camcorder_quality quality) const
+{
+ return (getCamcorderProfileIndex(cameraId, quality) != -1);
+}
+
Vector<int> MediaProfiles::getImageEncodingQualityLevels(int cameraId) const
{
Vector<int> result;