* commit '8525fe8d0a5a886704307055ef211fc911997783': Switch to a type-safe album art interface.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user