am 8525fe8d: am 1a3908e9: Merge "Switch to a type-safe album art interface."

* commit '8525fe8d0a5a886704307055ef211fc911997783':
  Switch to a type-safe album art interface.
This commit is contained in:
Elliott Hughes
2014-06-12 00:06:20 +00:00
committed by Android Git Automerger
2 changed files with 10 additions and 14 deletions

View File

@@ -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"
@@ -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

View File

@@ -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: