diff options
author | Ethan Chen <intervigil@gmail.com> | 2013-11-21 13:02:24 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-10-30 04:13:38 -0700 |
commit | 7623a6547c0d8446a2d2556b360b8b06276ade02 (patch) | |
tree | 0acc281e38473b0847cbfc7487933977aed565a1 /services | |
parent | 09fd358ac4c58964b6bb59ad0c197d8736288247 (diff) | |
download | frameworks_av-7623a6547c0d8446a2d2556b360b8b06276ade02.zip frameworks_av-7623a6547c0d8446a2d2556b360b8b06276ade02.tar.gz frameworks_av-7623a6547c0d8446a2d2556b360b8b06276ade02.tar.bz2 |
Camera: Support obtaining camera memory from MemoryHeapIon
* Exynos 5 devices want the ION file descriptor from MemoryHeapIon
Change-Id: I9e445cf24c15713f713181667e7b7caa1a96592e
Diffstat (limited to 'services')
-rw-r--r-- | services/camera/libcameraservice/Android.mk | 4 | ||||
-rw-r--r-- | services/camera/libcameraservice/device1/CameraHardwareInterface.h | 21 |
2 files changed, 25 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libcameraservice/Android.mk index e8ef24e..45b8f9f 100644 --- a/services/camera/libcameraservice/Android.mk +++ b/services/camera/libcameraservice/Android.mk @@ -79,6 +79,10 @@ LOCAL_C_INCLUDES += \ LOCAL_CFLAGS += -Wall -Wextra +ifeq ($(BOARD_NEEDS_MEMORYHEAPION),true) + LOCAL_CFLAGS += -DUSE_MEMORY_HEAP_ION +endif + LOCAL_MODULE:= libcameraservice include $(BUILD_SHARED_LIBRARY) diff --git a/services/camera/libcameraservice/device1/CameraHardwareInterface.h b/services/camera/libcameraservice/device1/CameraHardwareInterface.h index 49dacbf..d9b8609 100644 --- a/services/camera/libcameraservice/device1/CameraHardwareInterface.h +++ b/services/camera/libcameraservice/device1/CameraHardwareInterface.h @@ -26,6 +26,9 @@ #include <camera/CameraParameters.h> #include <system/window.h> #include "hardware/camera.h" +#ifdef USE_MEMORY_HEAP_ION +#include <binder/MemoryHeapIon.h> +#endif namespace android { @@ -501,7 +504,11 @@ private: mBufSize(buf_size), mNumBufs(num_buffers) { +#ifdef USE_MEMORY_HEAP_ION + mHeap = new MemoryHeapIon(fd, buf_size * num_buffers); +#else mHeap = new MemoryHeapBase(fd, buf_size * num_buffers); +#endif commonInitialization(); } @@ -509,7 +516,11 @@ private: mBufSize(buf_size), mNumBufs(num_buffers) { +#ifdef USE_MEMORY_HEAP_ION + mHeap = new MemoryHeapIon(buf_size * num_buffers); +#else mHeap = new MemoryHeapBase(buf_size * num_buffers); +#endif commonInitialization(); } @@ -541,14 +552,24 @@ private: camera_memory_t handle; }; +#ifdef USE_MEMORY_HEAP_ION + static camera_memory_t* __get_memory(int fd, size_t buf_size, uint_t num_bufs, + void *ion_fd) + { +#else static camera_memory_t* __get_memory(int fd, size_t buf_size, uint_t num_bufs, void *user __attribute__((unused))) { +#endif CameraHeapMemory *mem; if (fd < 0) mem = new CameraHeapMemory(buf_size, num_bufs); else mem = new CameraHeapMemory(fd, buf_size, num_bufs); +#ifdef USE_MEMORY_HEAP_ION + if (ion_fd) + *((int *) ion_fd) = mem->mHeap->getHeapID(); +#endif mem->incStrong(mem); return &mem->handle; } |