diff options
Diffstat (limited to 'media/jni')
-rw-r--r-- | media/jni/android_media_MediaScanner.cpp | 13 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpDatabase.cpp | 8 |
2 files changed, 10 insertions, 11 deletions
diff --git a/media/jni/android_media_MediaScanner.cpp b/media/jni/android_media_MediaScanner.cpp index d21b442..6730e0a 100644 --- a/media/jni/android_media_MediaScanner.cpp +++ b/media/jni/android_media_MediaScanner.cpp @@ -21,6 +21,7 @@ #include <utils/threads.h> #include <media/mediascanner.h> #include <media/stagefright/StagefrightMediaScanner.h> +#include <private/media/VideoFrame.h> #include "jni.h" #include "JNIHelp.h" @@ -347,21 +348,21 @@ android_media_MediaScanner_extractAlbumArt( } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - char* data = mp->extractAlbumArt(fd); - if (!data) { + MediaAlbumArt* mediaAlbumArt = + reinterpret_cast<MediaAlbumArt*>(mp->extractAlbumArt(fd)); + if (mediaAlbumArt != NULL) { return NULL; } - jsize len = *((uint32_t*)data); - jbyteArray array = env->NewByteArray(len); + jbyteArray array = env->NewByteArray(mediaAlbumArt->mSize); if (array != NULL) { jbyte* bytes = env->GetByteArrayElements(array, NULL); - memcpy(bytes, data + 4, len); + memcpy(bytes, &mediaAlbumArt->mData[0], mediaAlbumArt->mSize); env->ReleaseByteArrayElements(array, bytes, 0); } done: - free(data); + free(mediaAlbumArt); // if NewByteArray() returned NULL, an out-of-memory // exception will have been raised. I just want to // return null in that case. diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index d781336..19b54a6 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -433,16 +433,14 @@ MtpResponseCode MyMtpDatabase::getObjectPropertyValue(MtpObjectHandle handle, case MTP_TYPE_STR: { jstring stringValue = (jstring)env->GetObjectArrayElement(stringValuesArray, 0); + const char* str = (stringValue ? env->GetStringUTFChars(stringValue, NULL) : NULL); if (stringValue) { - const char* str = env->GetStringUTFChars(stringValue, NULL); - if (str == NULL) { - return MTP_RESPONSE_GENERAL_ERROR; - } packet.putString(str); env->ReleaseStringUTFChars(stringValue, str); } else { packet.putEmptyString(); } + env->DeleteLocalRef(stringValue); break; } default: @@ -515,7 +513,7 @@ MtpResponseCode MyMtpDatabase::setObjectPropertyValue(MtpObjectHandle handle, break; } default: - ALOGE("unsupported type in getObjectPropertyValue\n"); + ALOGE("unsupported type in setObjectPropertyValue\n"); return MTP_RESPONSE_INVALID_OBJECT_PROP_FORMAT; } |