From f0d6a48c6ad852b84687127f14b1ffde02416dc4 Mon Sep 17 00:00:00 2001 From: Wu-cheng Li Date: Thu, 28 Jul 2011 05:30:59 +0800 Subject: Add frame metadata parameter to camera data_callback. bug:4460717 Change-Id: Ib47d7d7df20af8155a719f3dabefe030893bfebc --- services/camera/libcameraservice/CameraHardwareInterface.h | 4 +++- services/camera/libcameraservice/CameraHardwareStub.cpp | 6 +++--- services/camera/libcameraservice/CameraService.cpp | 2 +- services/camera/libcameraservice/CameraService.h | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) (limited to 'services/camera') diff --git a/services/camera/libcameraservice/CameraHardwareInterface.h b/services/camera/libcameraservice/CameraHardwareInterface.h index 09e88c4..31544b3 100644 --- a/services/camera/libcameraservice/CameraHardwareInterface.h +++ b/services/camera/libcameraservice/CameraHardwareInterface.h @@ -38,6 +38,7 @@ typedef void (*notify_callback)(int32_t msgType, typedef void (*data_callback)(int32_t msgType, const sp &dataPtr, + camera_frame_metadata_t *metadata, void* user); typedef void (*data_callback_timestamp)(nsecs_t timestamp, @@ -442,6 +443,7 @@ private: static void __data_cb(int32_t msg_type, const camera_memory_t *data, unsigned int index, + camera_frame_metadata_t *metadata, void *user) { LOGV("%s", __FUNCTION__); @@ -453,7 +455,7 @@ private: index, mem->mNumBufs); return; } - __this->mDataCb(msg_type, mem->mBuffers[index], __this->mCbUser); + __this->mDataCb(msg_type, mem->mBuffers[index], metadata, __this->mCbUser); } static void __data_cb_timestamp(nsecs_t timestamp, int32_t msg_type, diff --git a/services/camera/libcameraservice/CameraHardwareStub.cpp b/services/camera/libcameraservice/CameraHardwareStub.cpp index 07b5a37..863f19e 100644 --- a/services/camera/libcameraservice/CameraHardwareStub.cpp +++ b/services/camera/libcameraservice/CameraHardwareStub.cpp @@ -180,7 +180,7 @@ int CameraHardwareStub::previewThread() // Notify the client of a new frame. if (mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) - mDataCb(CAMERA_MSG_PREVIEW_FRAME, buffer, mCallbackCookie); + mDataCb(CAMERA_MSG_PREVIEW_FRAME, buffer, NULL, mCallbackCookie); // Advance the buffer pointer. mCurrentPreviewFrame = (mCurrentPreviewFrame + 1) % kBufferCount; @@ -290,14 +290,14 @@ int CameraHardwareStub::pictureThread() sp mem = new MemoryBase(mRawHeap, 0, w * h * 3 / 2); FakeCamera cam(w, h); cam.getNextFrameAsYuv420((uint8_t *)mRawHeap->base()); - mDataCb(CAMERA_MSG_RAW_IMAGE, mem, mCallbackCookie); + mDataCb(CAMERA_MSG_RAW_IMAGE, mem, NULL, mCallbackCookie); } if (mMsgEnabled & CAMERA_MSG_COMPRESSED_IMAGE) { sp heap = new MemoryHeapBase(kCannedJpegSize); sp mem = new MemoryBase(heap, 0, kCannedJpegSize); memcpy(heap->base(), kCannedJpeg, kCannedJpegSize); - mDataCb(CAMERA_MSG_COMPRESSED_IMAGE, mem, mCallbackCookie); + mDataCb(CAMERA_MSG_COMPRESSED_IMAGE, mem, NULL, mCallbackCookie); } return NO_ERROR; } diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp index 96b26e7..b03649e 100644 --- a/services/camera/libcameraservice/CameraService.cpp +++ b/services/camera/libcameraservice/CameraService.cpp @@ -988,7 +988,7 @@ void CameraService::Client::notifyCallback(int32_t msgType, int32_t ext1, } void CameraService::Client::dataCallback(int32_t msgType, - const sp& dataPtr, void* user) { + const sp& dataPtr, camera_frame_metadata_t *metadata, void* user) { LOG2("dataCallback(%d)", msgType); sp client = getClientFromCookie(user); diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h index c5fefb8..af7f06e 100644 --- a/services/camera/libcameraservice/CameraService.h +++ b/services/camera/libcameraservice/CameraService.h @@ -140,7 +140,8 @@ private: // these are static callback functions static void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void* user); - static void dataCallback(int32_t msgType, const sp& dataPtr, void* user); + static void dataCallback(int32_t msgType, const sp& dataPtr, + camera_frame_metadata_t *metadata, void* user); static void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp& dataPtr, void* user); // convert client from cookie static sp getClientFromCookie(void* user); -- cgit v1.1