diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-10-30 14:17:23 +0200 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-11-26 20:18:39 +0200 |
commit | 9010f9444a792b248e6082007061b0c930248cea (patch) | |
tree | 765680002f9da36029a00b7a5a412bb60935a730 | |
parent | 6b2c36552251da51b7899b56d030015474580e4b (diff) | |
download | hardware_ti_omap4-9010f9444a792b248e6082007061b0c930248cea.tar.gz hardware_ti_omap4-9010f9444a792b248e6082007061b0c930248cea.tar.bz2 hardware_ti_omap4-9010f9444a792b248e6082007061b0c930248cea.zip |
CameraHal: Release reprocess input buffers
- Currently reprocess buffers are getting
acquired from a 'BufferQueue' via calls to
'update_and_get_current()'. Those buffers
are not getting properly released though.
Depends on frameworks/av I050800fa:
http://review.omapzoom.org/#/c/30198/
Change-Id: I841a78063bcf18f7ecf3882311ecc9dee3be6745
Signed-off-by: Emilian Peev <epeev@mm-sol.com>
-rw-r--r-- | camera/BufferSourceAdapter.cpp | 7 | ||||
-rw-r--r-- | camera/CameraHal.cpp | 7 | ||||
-rw-r--r-- | camera/inc/CameraHal.h | 1 |
3 files changed, 13 insertions, 2 deletions
diff --git a/camera/BufferSourceAdapter.cpp b/camera/BufferSourceAdapter.cpp index 01aa284..3c4e698 100644 --- a/camera/BufferSourceAdapter.cpp +++ b/camera/BufferSourceAdapter.cpp @@ -632,6 +632,7 @@ CameraBuffer* BufferSourceAdapter::getBufferList(int *num) { // TODO(XXX): Only supporting one input buffer at a time right now *num = 1; + mBufferCount = *num; mBuffers = new CameraBuffer [lnumBufs]; memset (mBuffers, 0, sizeof(CameraBuffer) * lnumBufs); @@ -639,7 +640,10 @@ CameraBuffer* BufferSourceAdapter::getBufferList(int *num) { return NULL; } - err = extendedOps()->update_and_get_buffer(mBufferSource, &handle, &mBuffers[0].stride); + err = extendedOps()->update_and_get_buffer(mBufferSource, + &handle, + &mBuffers[0].stride, + &mBuffers[0].privateData); if (err != 0) { CAMHAL_LOGEB("update and get buffer failed: %s (%d)", strerror(-err), -err); if ( ENODEV == err ) { @@ -877,6 +881,7 @@ void BufferSourceAdapter::handleFrameCallback(CameraFrame* frame) if (frame->mFrameType == CameraFrame::REPROCESS_INPUT_FRAME) { CAMHAL_LOGD("Unlock %p (buffer #%d)", handle, i); mapper.unlock(*handle); + extendedOps()->release_buffer(mBufferSource, mBuffers[i].privateData); return; } diff --git a/camera/CameraHal.cpp b/camera/CameraHal.cpp index e3bee43..37baec8 100644 --- a/camera/CameraHal.cpp +++ b/camera/CameraHal.cpp @@ -68,7 +68,11 @@ extern const char * const kYuvImagesOutputDirPath = "/data/misc/camera/YuV_PiCtU #ifdef OMAP_ENHANCEMENT_CPCAM -static int dummy_update_and_get_buffer(preview_stream_ops_t*, buffer_handle_t**, int*) { +static int dummy_update_and_get_buffer(preview_stream_ops_t*, buffer_handle_t**, int*,int*) { + return INVALID_OPERATION; +} + +static int dummy_release_buffer(preview_stream_ops_t*, int slot) { return INVALID_OPERATION; } @@ -107,6 +111,7 @@ static int dummy_get_current_size(preview_stream_ops_t*, static preview_stream_extended_ops_t dummyPreviewStreamExtendedOps = { #ifdef OMAP_ENHANCEMENT_CPCAM dummy_update_and_get_buffer, + dummy_release_buffer, dummy_get_buffer_dimension, dummy_get_buffer_format, dummy_set_metadata, diff --git a/camera/inc/CameraHal.h b/camera/inc/CameraHal.h index e5e6fdf..c4140e8 100644 --- a/camera/inc/CameraHal.h +++ b/camera/inc/CameraHal.h @@ -359,6 +359,7 @@ typedef struct _CameraBuffer { /* These are for buffers which include borders */ int offset; // where valid data starts int actual_size; // size of the entire buffer with borders + int privateData; } CameraBuffer; void * camera_buffer_get_omx_ptr (CameraBuffer *buffer); |