summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/Android.mk4
-rw-r--r--media/libmediaplayerservice/MetadataRetrieverClient.cpp22
-rw-r--r--media/libmediaplayerservice/MetadataRetrieverClient.h4
3 files changed, 29 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index ecd1d2e..8fa8e8e 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -43,7 +43,9 @@ LOCAL_SHARED_LIBRARIES := \
libstagefright_omx \
libstagefright_color_conversion
-ifneq ($(BOARD_USES_ECLAIR_LIBCAMERA),true)
+ifeq ($(BOARD_USES_ECLAIR_LIBCAMERA),true)
+ LOCAL_CFLAGS += -DUSE_ECLAIR_MEMORYDEALER
+else
LOCAL_SHARED_LIBRARIES += \
libsurfaceflinger_client
endif
diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.cpp b/media/libmediaplayerservice/MetadataRetrieverClient.cpp
index 550b84d..2df6451 100644
--- a/media/libmediaplayerservice/MetadataRetrieverClient.cpp
+++ b/media/libmediaplayerservice/MetadataRetrieverClient.cpp
@@ -28,8 +28,12 @@
#include <string.h>
#include <cutils/atomic.h>
#include <cutils/properties.h>
+#ifdef USE_ECLAIR_MEMORYDEALER
+#include <binder/MemoryDealer.h>
+#else
#include <binder/MemoryBase.h>
#include <binder/MemoryHeapBase.h>
+#endif
#include <android_runtime/ActivityManager.h>
#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
@@ -249,13 +253,22 @@ sp<IMemory> MetadataRetrieverClient::captureFrame()
return NULL;
}
size_t size = sizeof(VideoFrame) + frame->mSize;
+#ifdef USE_ECLAIR_MEMORYDEALER
+ mThumbnailDealer = new MemoryDealer(size);
+ if (mThumbnailDealer == NULL) {
+#else
sp<MemoryHeapBase> heap = new MemoryHeapBase(size, 0, "MetadataRetrieverClient");
if (heap == NULL) {
+#endif
LOGE("failed to create MemoryDealer");
delete frame;
return NULL;
}
+#ifdef USE_ECLAIR_MEMORYDEALER
+ mThumbnail = mThumbnailDealer->allocate(size);
+#else
mThumbnail = new MemoryBase(heap, 0, size);
+#endif
if (mThumbnail == NULL) {
LOGE("not enough memory for VideoFrame size=%u", size);
delete frame;
@@ -288,13 +301,22 @@ sp<IMemory> MetadataRetrieverClient::extractAlbumArt()
return NULL;
}
size_t size = sizeof(MediaAlbumArt) + albumArt->mSize;
+#ifdef USE_ECLAIR_MEMORYDEALER
+ mAlbumArtDealer = new MemoryDealer(size);
+ if (mAlbumArtDealer == NULL) {
+#else
sp<MemoryHeapBase> heap = new MemoryHeapBase(size, 0, "MetadataRetrieverClient");
if (heap == NULL) {
+#endif
LOGE("failed to create MemoryDealer object");
delete albumArt;
return NULL;
}
+#ifdef USE_ECLAIR_MEMORYDEALER
+ mAlbumArt = mAlbumArtDealer->allocate(size);
+#else
mAlbumArt = new MemoryBase(heap, 0, size);
+#endif
if (mAlbumArt == NULL) {
LOGE("not enough memory for MediaAlbumArt size=%u", size);
delete albumArt;
diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.h b/media/libmediaplayerservice/MetadataRetrieverClient.h
index 4aab94f..e84dbb9 100644
--- a/media/libmediaplayerservice/MetadataRetrieverClient.h
+++ b/media/libmediaplayerservice/MetadataRetrieverClient.h
@@ -63,6 +63,10 @@ private:
int mMode;
// Keep the shared memory copy of album art and capture frame (for thumbnail)
+#ifdef USE_ECLAIR_MEMORYDEALER
+ sp<MemoryDealer> mAlbumArtDealer;
+ sp<MemoryDealer> mThumbnailDealer;
+#endif
sp<IMemory> mAlbumArt;
sp<IMemory> mThumbnail;
};