diff options
author | Nipun Kwatra <nkwatra@google.com> | 2010-09-09 16:25:08 -0700 |
---|---|---|
committer | Nipun Kwatra <nkwatra@google.com> | 2010-09-10 14:22:11 -0700 |
commit | 9d619542bea7d4c376a5a8b4a55c795a796adef3 (patch) | |
tree | 925230ba48a7fec87d014def9eee6cdc317b004b | |
parent | 4af0dfd6cbc13fa6a89ec1430cbe6f619cd64d8a (diff) | |
download | frameworks_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.h | 8 | ||||
-rw-r--r-- | media/java/android/media/CamcorderProfile.java | 25 | ||||
-rw-r--r-- | media/jni/android_media_MediaProfiles.cpp | 16 | ||||
-rw-r--r-- | media/libmedia/MediaProfiles.cpp | 23 |
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; |