diff options
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/Android.mk | 4 | ||||
-rw-r--r-- | media/libmediaplayerservice/MetadataRetrieverClient.cpp | 22 | ||||
-rw-r--r-- | media/libmediaplayerservice/MetadataRetrieverClient.h | 4 |
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; }; |