Loading media/jni/android_media_MediaMetadataRetriever.cpp +5 −8 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <utils/threads.h> #include <utils/threads.h> #include <core/SkBitmap.h> #include <core/SkBitmap.h> #include <media/mediametadataretriever.h> #include <media/mediametadataretriever.h> #include <media/mediascanner.h> #include <private/media/VideoFrame.h> #include <private/media/VideoFrame.h> #include "jni.h" #include "jni.h" Loading Loading @@ -326,17 +327,13 @@ static jbyteArray android_media_MediaMetadataRetriever_getEmbeddedPicture( return NULL; return NULL; } } unsigned int len = mediaAlbumArt->mSize; jbyteArray array = env->NewByteArray(mediaAlbumArt->size()); char* data = (char*) mediaAlbumArt + sizeof(MediaAlbumArt); jbyteArray array = env->NewByteArray(len); if (!array) { // OutOfMemoryError exception has already been thrown. if (!array) { // OutOfMemoryError exception has already been thrown. ALOGE("getEmbeddedPicture: OutOfMemoryError is thrown."); ALOGE("getEmbeddedPicture: OutOfMemoryError is thrown."); } else { } else { jbyte* bytes = env->GetByteArrayElements(array, NULL); const jbyte* data = if (bytes != NULL) { reinterpret_cast<const jbyte*>(mediaAlbumArt->data()); memcpy(bytes, data, len); env->SetByteArrayRegion(array, 0, mediaAlbumArt->size(), data); env->ReleaseByteArrayElements(array, bytes, 0); } } } // No need to delete mediaAlbumArt here // No need to delete mediaAlbumArt here Loading media/jni/android_media_MediaScanner.cpp +5 −6 Original line number Original line Diff line number Diff line Loading @@ -348,17 +348,16 @@ android_media_MediaScanner_extractAlbumArt( } } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); MediaAlbumArt* mediaAlbumArt = MediaAlbumArt* mediaAlbumArt = mp->extractAlbumArt(fd); reinterpret_cast<MediaAlbumArt*>(mp->extractAlbumArt(fd)); if (mediaAlbumArt == NULL) { if (mediaAlbumArt == NULL) { return NULL; return NULL; } } jbyteArray array = env->NewByteArray(mediaAlbumArt->mSize); jbyteArray array = env->NewByteArray(mediaAlbumArt->size()); if (array != NULL) { if (array != NULL) { jbyte* bytes = env->GetByteArrayElements(array, NULL); const jbyte* data = memcpy(bytes, &mediaAlbumArt->mData[0], mediaAlbumArt->mSize); reinterpret_cast<const jbyte*>(mediaAlbumArt->data()); env->ReleaseByteArrayElements(array, bytes, 0); env->SetByteArrayRegion(array, 0, mediaAlbumArt->size(), data); } } done: done: Loading Loading
media/jni/android_media_MediaMetadataRetriever.cpp +5 −8 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <utils/threads.h> #include <utils/threads.h> #include <core/SkBitmap.h> #include <core/SkBitmap.h> #include <media/mediametadataretriever.h> #include <media/mediametadataretriever.h> #include <media/mediascanner.h> #include <private/media/VideoFrame.h> #include <private/media/VideoFrame.h> #include "jni.h" #include "jni.h" Loading Loading @@ -326,17 +327,13 @@ static jbyteArray android_media_MediaMetadataRetriever_getEmbeddedPicture( return NULL; return NULL; } } unsigned int len = mediaAlbumArt->mSize; jbyteArray array = env->NewByteArray(mediaAlbumArt->size()); char* data = (char*) mediaAlbumArt + sizeof(MediaAlbumArt); jbyteArray array = env->NewByteArray(len); if (!array) { // OutOfMemoryError exception has already been thrown. if (!array) { // OutOfMemoryError exception has already been thrown. ALOGE("getEmbeddedPicture: OutOfMemoryError is thrown."); ALOGE("getEmbeddedPicture: OutOfMemoryError is thrown."); } else { } else { jbyte* bytes = env->GetByteArrayElements(array, NULL); const jbyte* data = if (bytes != NULL) { reinterpret_cast<const jbyte*>(mediaAlbumArt->data()); memcpy(bytes, data, len); env->SetByteArrayRegion(array, 0, mediaAlbumArt->size(), data); env->ReleaseByteArrayElements(array, bytes, 0); } } } // No need to delete mediaAlbumArt here // No need to delete mediaAlbumArt here Loading
media/jni/android_media_MediaScanner.cpp +5 −6 Original line number Original line Diff line number Diff line Loading @@ -348,17 +348,16 @@ android_media_MediaScanner_extractAlbumArt( } } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); MediaAlbumArt* mediaAlbumArt = MediaAlbumArt* mediaAlbumArt = mp->extractAlbumArt(fd); reinterpret_cast<MediaAlbumArt*>(mp->extractAlbumArt(fd)); if (mediaAlbumArt == NULL) { if (mediaAlbumArt == NULL) { return NULL; return NULL; } } jbyteArray array = env->NewByteArray(mediaAlbumArt->mSize); jbyteArray array = env->NewByteArray(mediaAlbumArt->size()); if (array != NULL) { if (array != NULL) { jbyte* bytes = env->GetByteArrayElements(array, NULL); const jbyte* data = memcpy(bytes, &mediaAlbumArt->mData[0], mediaAlbumArt->mSize); reinterpret_cast<const jbyte*>(mediaAlbumArt->data()); env->ReleaseByteArrayElements(array, bytes, 0); env->SetByteArrayRegion(array, 0, mediaAlbumArt->size(), data); } } done: done: Loading