From fcc59393c2711ba35dfc09da2ec5d746b5ce621e Mon Sep 17 00:00:00 2001 From: Tyler Luu Date: Thu, 21 Jun 2012 14:22:06 -0500 Subject: Camera_test: Pre-set buffer source - Change camera_test to pre-set all buffer sources during start preview instead of during takePicture/reprocess. - Omit pre-setting tap-in/-outs if the client doesn't use raw picture format. Depends on frameworks/native change I20c0f4a8: http://review.omapzoom.org/#/c/28901/ Change-Id: I8c0d29ffc5b21c56a2d79bc80cab910f55c7ca21 Signed-off-by: Tyler Luu Signed-off-by: Vladimir Petrov --- test/CameraHal/camera_test_bufferqueue.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'test/CameraHal/camera_test_bufferqueue.h') diff --git a/test/CameraHal/camera_test_bufferqueue.h b/test/CameraHal/camera_test_bufferqueue.h index 68b9b34..8833535 100644 --- a/test/CameraHal/camera_test_bufferqueue.h +++ b/test/CameraHal/camera_test_bufferqueue.h @@ -96,8 +96,17 @@ public: mFW->onFrameAvailable(); } - virtual void setBuffer() { + virtual void setBuffer(android::ShotParameters ¶ms) { mCamera->setBufferSource(NULL, mBufferQueue); + { + String8 id = mBufferQueue->getId(); + + if (!id.isEmpty()) { + params.set(KEY_TAP_OUT_SURFACES, id); + } else { + params.remove(KEY_TAP_OUT_SURFACES); + } + } } virtual void onHandled(sp &gbuf, unsigned int slot) { @@ -124,10 +133,19 @@ public: mWindowTapIn = new SurfaceTextureClient(surfaceTexture); } - virtual void setInput(buffer_info_t bufinfo, const char *format) { + virtual void setInput(buffer_info_t bufinfo, const char *format, android::ShotParameters ¶ms) { mBufferQueue->setDefaultBufferSize(bufinfo.width, bufinfo.height); - BufferSourceInput::setInput(bufinfo, format); + BufferSourceInput::setInput(bufinfo, format, params); mCamera->setBufferSource(mBufferQueue, NULL); + { + String8 id = mBufferQueue->getId(); + + if (!id.isEmpty()) { + params.set(KEY_TAP_IN_SURFACE, id); + } else { + params.remove(KEY_TAP_IN_SURFACE); + } + } } private: -- cgit v1.1 From 04cb6b811376b5b956d2f9d2ba10f0729ce7ddca Mon Sep 17 00:00:00 2001 From: Vladimir Petrov Date: Thu, 16 Aug 2012 19:13:03 +0300 Subject: Camera_test: Add support to release tap in/outs - Tell Camera hardware to release buffer sources befor sestroying them. Change-Id: I2a7e1c801516b14c9277a415d377131cc4443f6a Signed-off-by: Vladimir Petrov --- test/CameraHal/camera_test_bufferqueue.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'test/CameraHal/camera_test_bufferqueue.h') diff --git a/test/CameraHal/camera_test_bufferqueue.h b/test/CameraHal/camera_test_bufferqueue.h index 8833535..f696f67 100644 --- a/test/CameraHal/camera_test_bufferqueue.h +++ b/test/CameraHal/camera_test_bufferqueue.h @@ -55,8 +55,10 @@ public: mFW = new FrameConsumer(); mBufferQueue->setSynchronousMode(true); mBufferQueue->consumerConnect(mFW); + mCamera->setBufferSource(NULL, mBufferQueue); } virtual ~BQ_BufferSourceThread() { + mCamera->releaseBufferSource(NULL, mBufferQueue); } virtual bool threadLoop() { @@ -97,7 +99,6 @@ public: } virtual void setBuffer(android::ShotParameters ¶ms) { - mCamera->setBufferSource(NULL, mBufferQueue); { String8 id = mBufferQueue->getId(); @@ -124,19 +125,17 @@ public: BQ_BufferSourceInput(int tex_id, sp camera) : BufferSourceInput(camera), mTexId(tex_id) { mBufferQueue = new BufferQueue(true, 1); - } - virtual ~BQ_BufferSourceInput() { - } - - virtual void init() { sp surfaceTexture = mBufferQueue; mWindowTapIn = new SurfaceTextureClient(surfaceTexture); + mCamera->setBufferSource(mBufferQueue, NULL); + } + virtual ~BQ_BufferSourceInput() { + mCamera->releaseBufferSource(mBufferQueue, NULL); } virtual void setInput(buffer_info_t bufinfo, const char *format, android::ShotParameters ¶ms) { mBufferQueue->setDefaultBufferSize(bufinfo.width, bufinfo.height); BufferSourceInput::setInput(bufinfo, format, params); - mCamera->setBufferSource(mBufferQueue, NULL); { String8 id = mBufferQueue->getId(); -- cgit v1.1 From 931ef476c8ca23d0ad8f98a4edf1ac63de8ca1c9 Mon Sep 17 00:00:00 2001 From: Tyler Luu Date: Tue, 5 Jun 2012 18:42:48 -0500 Subject: Camera_test: BQ: Add support for writing cropped - Add support for writing cropped buffers in camera_test return from surface texture. Camera_test needs to calculate the crop rectangle from the transform matrix. Using the calculated values camera_test will write the buffer accordingly. Change-Id: I8884f06a98ddf404343424a4bec4a82a22dc01fe Signed-off-by: Tyler Luu Signed-off-by: Vladimir Petrov --- test/CameraHal/camera_test_bufferqueue.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test/CameraHal/camera_test_bufferqueue.h') diff --git a/test/CameraHal/camera_test_bufferqueue.h b/test/CameraHal/camera_test_bufferqueue.h index f696f67..a7a2ef5 100644 --- a/test/CameraHal/camera_test_bufferqueue.h +++ b/test/CameraHal/camera_test_bufferqueue.h @@ -80,11 +80,12 @@ public: // the first time we acquire it. We are expected to hold a reference to // it there after... mBufferSlots[slot].mGraphicBuffer = item.mGraphicBuffer; + mBufferSlots[slot].mCrop = item.mCrop; } showMetadata(item.mMetadata); printf("\n"); graphic_buffer = mBufferSlots[item.mBuf].mGraphicBuffer; - mDeferThread->add(graphic_buffer, mCounter++, item.mBuf); + mDeferThread->add(graphic_buffer, item.mCrop, mCounter++, item.mBuf); restartCapture(); return true; } -- cgit v1.1 From 005d358cbcf413658d3e5204b699d9bf7367c256 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Tue, 30 Oct 2012 14:21:59 +0200 Subject: Camera_test: Free all previously added buffer slots - Incrementally adding new buffer slots to a 'BufferQueue' will eventually hit the limit of available buffer slots. To avoid that before adding new ones, we reset the buffer count, which should free all previously added slots. Change-Id: I6f466baf49e03be977a63dd75a2ab6168dbc9add Signed-off-by: Emilian Peev --- test/CameraHal/camera_test_bufferqueue.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'test/CameraHal/camera_test_bufferqueue.h') diff --git a/test/CameraHal/camera_test_bufferqueue.h b/test/CameraHal/camera_test_bufferqueue.h index a7a2ef5..cc53086 100644 --- a/test/CameraHal/camera_test_bufferqueue.h +++ b/test/CameraHal/camera_test_bufferqueue.h @@ -136,6 +136,9 @@ public: virtual void setInput(buffer_info_t bufinfo, const char *format, android::ShotParameters ¶ms) { mBufferQueue->setDefaultBufferSize(bufinfo.width, bufinfo.height); + // Reset buffer slots, any remaining buffers slots that were + // previously added should get flushed. + mBufferQueue->setBufferCount(android::BufferQueue::NUM_BUFFER_SLOTS); BufferSourceInput::setInput(bufinfo, format, params); { String8 id = mBufferQueue->getId(); -- cgit v1.1