diff options
Diffstat (limited to 'media/jni/android_media_MediaScanner.cpp')
-rw-r--r-- | media/jni/android_media_MediaScanner.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/media/jni/android_media_MediaScanner.cpp b/media/jni/android_media_MediaScanner.cpp index d21b442..321c2e3 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,20 @@ android_media_MediaScanner_extractAlbumArt( } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - char* data = mp->extractAlbumArt(fd); - if (!data) { + MediaAlbumArt* mediaAlbumArt = mp->extractAlbumArt(fd); + if (mediaAlbumArt == NULL) { return NULL; } - jsize len = *((uint32_t*)data); - jbyteArray array = env->NewByteArray(len); + jbyteArray array = env->NewByteArray(mediaAlbumArt->size()); if (array != NULL) { - jbyte* bytes = env->GetByteArrayElements(array, NULL); - memcpy(bytes, data + 4, len); - env->ReleaseByteArrayElements(array, bytes, 0); + const jbyte* data = + reinterpret_cast<const jbyte*>(mediaAlbumArt->data()); + env->SetByteArrayRegion(array, 0, mediaAlbumArt->size(), data); } 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. |