diff options
| author | Jianhong Jiang <jianhong@google.com> | 2009-06-08 08:50:42 -0700 |
|---|---|---|
| committer | Jianhong Jiang <jianhong@google.com> | 2009-06-08 08:50:42 -0700 |
| commit | 2bcda90c0234f67f210a96f195b355493ca7d1ff (patch) | |
| tree | ccc9334fe1faca406e67d4bb1822d8195dba5c35 /media/jni | |
| parent | be512bff60626efc9a4b85d271d6210b9115e5fc (diff) | |
| download | frameworks_base-2bcda90c0234f67f210a96f195b355493ca7d1ff.zip frameworks_base-2bcda90c0234f67f210a96f195b355493ca7d1ff.tar.gz frameworks_base-2bcda90c0234f67f210a96f195b355493ca7d1ff.tar.bz2 | |
NJ-1409: (frameworks/base) Support new audio encoding types(AMR and AAC).
Diffstat (limited to 'media/jni')
| -rw-r--r-- | media/jni/android_media_MediaRecorder.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/media/jni/android_media_MediaRecorder.cpp b/media/jni/android_media_MediaRecorder.cpp index 7561af1..7bfeb83 100644 --- a/media/jni/android_media_MediaRecorder.cpp +++ b/media/jni/android_media_MediaRecorder.cpp @@ -165,7 +165,7 @@ static void android_media_MediaRecorder_setVideoSource(JNIEnv *env, jobject thiz, jint vs) { LOGV("setVideoSource(%d)", vs); - if (vs < VIDEO_SOURCE_DEFAULT || vs > VIDEO_SOURCE_CAMERA) { + if (vs < VIDEO_SOURCE_DEFAULT || vs >= VIDEO_SOURCE_LIST_END) { jniThrowException(env, "java/lang/IllegalArgumentException", "Invalid video source"); return; } @@ -177,10 +177,11 @@ static void android_media_MediaRecorder_setAudioSource(JNIEnv *env, jobject thiz, jint as) { LOGV("setAudioSource(%d)", as); - if (as < AUDIO_SOURCE_DEFAULT || as > AUDIO_SOURCE_MAX) { + if (as < AUDIO_SOURCE_DEFAULT || as >= AUDIO_SOURCE_LIST_END) { jniThrowException(env, "java/lang/IllegalArgumentException", "Invalid audio source"); return; } + sp<MediaRecorder> mr = getMediaRecorder(env, thiz); process_media_recorder_call(env, mr->setAudioSource(as), "java/lang/RuntimeException", "setAudioSource failed."); } @@ -201,7 +202,7 @@ static void android_media_MediaRecorder_setVideoEncoder(JNIEnv *env, jobject thiz, jint ve) { LOGV("setVideoEncoder(%d)", ve); - if (ve < VIDEO_ENCODER_DEFAULT || ve > VIDEO_ENCODER_MPEG_4_SP) { + if (ve < VIDEO_ENCODER_DEFAULT || ve >= VIDEO_ENCODER_LIST_END) { jniThrowException(env, "java/lang/IllegalArgumentException", "Invalid video encoder"); return; } @@ -213,7 +214,7 @@ static void android_media_MediaRecorder_setAudioEncoder(JNIEnv *env, jobject thiz, jint ae) { LOGV("setAudioEncoder(%d)", ae); - if (ae < AUDIO_ENCODER_DEFAULT || ae > AUDIO_ENCODER_AMR_NB) { + if (ae < AUDIO_ENCODER_DEFAULT || ae >= AUDIO_ENCODER_LIST_END) { jniThrowException(env, "java/lang/IllegalArgumentException", "Invalid audio encoder"); return; } @@ -222,6 +223,29 @@ android_media_MediaRecorder_setAudioEncoder(JNIEnv *env, jobject thiz, jint ae) } static void +android_media_MediaRecorder_setParameters(JNIEnv *env, jobject thiz, jstring params) +{ + LOGV("setParameters()"); + if (params == NULL) + { + LOGE("Invalid or empty params string. This parameter will be ignored."); + return; + } + + sp<MediaRecorder> mr = getMediaRecorder(env, thiz); + + const char* params8 = env->GetStringUTFChars(params, NULL); + if (params8 == NULL) + { + LOGE("Failed to covert jstring to String8. This parameter will be ignored."); + return; + } + + process_media_recorder_call(env, mr->setParameters(String8(params8)), "java/lang/RuntimeException", "setParameter failed."); + env->ReleaseStringUTFChars(params,params8); +} + +static void android_media_MediaRecorder_setOutputFileFD(JNIEnv *env, jobject thiz, jobject fileDescriptor, jlong offset, jlong length) { LOGV("setOutputFile"); @@ -384,6 +408,7 @@ static JNINativeMethod gMethods[] = { {"setOutputFormat", "(I)V", (void *)android_media_MediaRecorder_setOutputFormat}, {"setVideoEncoder", "(I)V", (void *)android_media_MediaRecorder_setVideoEncoder}, {"setAudioEncoder", "(I)V", (void *)android_media_MediaRecorder_setAudioEncoder}, + {"setParameters", "(Ljava/lang/String;)V", (void *)android_media_MediaRecorder_setParameters}, {"_setOutputFile", "(Ljava/io/FileDescriptor;JJ)V", (void *)android_media_MediaRecorder_setOutputFileFD}, {"setVideoSize", "(II)V", (void *)android_media_MediaRecorder_setVideoSize}, {"setVideoFrameRate", "(I)V", (void *)android_media_MediaRecorder_setVideoFrameRate}, |
