summaryrefslogtreecommitdiff
path: root/camera/QCameraHWI_Preview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/QCameraHWI_Preview.cpp')
-rw-r--r--camera/QCameraHWI_Preview.cpp403
1 files changed, 25 insertions, 378 deletions
diff --git a/camera/QCameraHWI_Preview.cpp b/camera/QCameraHWI_Preview.cpp
index 658bd84..30927c5 100644
--- a/camera/QCameraHWI_Preview.cpp
+++ b/camera/QCameraHWI_Preview.cpp
@@ -1,5 +1,5 @@
/*
-** Copyright (c) 2011-2012 The Linux Foundation. All rights reserved.
+** Copyright (c) 2011-2012,2015 The Linux Foundation. All rights reserved.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
@@ -315,96 +315,6 @@ status_t QCameraStream_preview::putBufferToSurface() {
return NO_ERROR;
}
-
-status_t QCameraStream_preview::getBufferNoDisplay( )
-{
- int err = 0;
- status_t ret = NO_ERROR;
- int i, num_planes, frame_len, y_off, cbcr_off;
- cam_ctrl_dimension_t dim;
- uint32_t planes[VIDEO_MAX_PLANES];
-
- ALOGV("%s : E ", __FUNCTION__);
-
-
- ret = cam_config_get_parm(mCameraId, MM_CAMERA_PARM_DIMENSION, &dim);
- if(ret != NO_ERROR) {
- ALOGE("%s: display format %d is not supported", __func__, dim.prev_format);
- goto end;
- }
- mHalCamCtrl->mPreviewMemoryLock.lock();
- mHalCamCtrl->mNoDispPreviewMemory.buffer_count = kPreviewBufferCount;
- if(mHalCamCtrl->isZSLMode()) {
- if(mHalCamCtrl->getZSLQueueDepth() > kPreviewBufferCount - 3)
- mHalCamCtrl->mNoDispPreviewMemory.buffer_count =
- mHalCamCtrl->getZSLQueueDepth() + 3;
- }
-
- num_planes = dim.display_frame_offset.num_planes;
- for ( i = 0; i < num_planes; i++) {
- planes[i] = dim.display_frame_offset.mp[i].len;
- }
-
- frame_len = dim.picture_frame_offset.frame_len;
- y_off = dim.picture_frame_offset.mp[0].offset;
- cbcr_off = dim.picture_frame_offset.mp[1].offset;
- ALOGV("%s: main image: rotation = %d, yoff = %d, cbcroff = %d, size = %d, width = %d, height = %d",
- __func__, dim.rotation, y_off, cbcr_off, frame_len,
- dim.display_width, dim.display_height);
- if (mHalCamCtrl->initHeapMem(&mHalCamCtrl->mNoDispPreviewMemory,
- mHalCamCtrl->mNoDispPreviewMemory.buffer_count,
- frame_len, y_off, cbcr_off, MSM_PMEM_MAINIMG,
- NULL,NULL, num_planes, planes) < 0) {
- ret = NO_MEMORY;
- goto end;
- };
-
- memset(&mHalCamCtrl->mMetadata, 0, sizeof(mHalCamCtrl->mMetadata));
- memset(mHalCamCtrl->mFace, 0, sizeof(mHalCamCtrl->mFace));
-
- ALOGV(" %s : X ",__FUNCTION__);
-end:
- //mDisplayLock.unlock();
- mHalCamCtrl->mPreviewMemoryLock.unlock();
-
- return NO_ERROR;
-}
-
-status_t QCameraStream_preview::freeBufferNoDisplay()
-{
- int err = 0;
- status_t ret = NO_ERROR;
-
- ALOGV(" %s : E ", __FUNCTION__);
-
- //mDisplayLock.lock();
- mHalCamCtrl->mPreviewMemoryLock.lock();
- for (int cnt = 0; cnt < mHalCamCtrl->mNoDispPreviewMemory.buffer_count; cnt++) {
- if (cnt < mHalCamCtrl->mNoDispPreviewMemory.buffer_count) {
- if (NO_ERROR != mHalCamCtrl->sendUnMappingBuf(MSM_V4L2_EXT_CAPTURE_MODE_PREVIEW,
- cnt, mCameraId, CAM_SOCK_MSG_TYPE_FD_UNMAPPING)) {
- ALOGE("%s: sending data Msg Failed", __func__);
- }
- if(mHalCamCtrl->isZSLMode()) {
- if (NO_ERROR != mHalCamCtrl->sendUnMappingBuf(MSM_V4L2_EXT_CAPTURE_MODE_THUMBNAIL, cnt, mCameraId,
- CAM_SOCK_MSG_TYPE_FD_UNMAPPING)) {
- ALOGE("%s: Send socket msg to Unmap Failed", __func__);
- }
- }
- }
- }
- mHalCamCtrl->releaseHeapMem(&mHalCamCtrl->mNoDispPreviewMemory);
- memset(&mHalCamCtrl->mNoDispPreviewMemory, 0, sizeof(mHalCamCtrl->mNoDispPreviewMemory));
- if (mDisplayBuf.preview.buf.mp != NULL) {
- delete[] mDisplayBuf.preview.buf.mp;
- mDisplayBuf.preview.buf.mp = NULL;
- }
-
- mHalCamCtrl->mPreviewMemoryLock.unlock();
- ALOGV(" %s : X ",__FUNCTION__);
- return NO_ERROR;
-}
-
void QCameraStream_preview::notifyROIEvent(fd_roi_t roi)
{
camera_memory_t *data = mHalCamCtrl->mGetMemory(-1, 1, 1, NULL);
@@ -547,7 +457,6 @@ status_t QCameraStream_preview::initDisplayBuffers()
mHalCamCtrl->mPreviewMemoryLock.lock();
memset(&mHalCamCtrl->mPreviewMemory, 0, sizeof(mHalCamCtrl->mPreviewMemory));
mHalCamCtrl->mPreviewMemoryLock.unlock();
- memset(&mNotifyBuffer, 0, sizeof(mNotifyBuffer));
/* get preview size, by qury mm_camera*/
memset(&dim, 0, sizeof(cam_ctrl_dimension_t));
@@ -593,14 +502,14 @@ status_t QCameraStream_preview::initDisplayBuffers()
/*allocate memory for the buffers*/
for(int i = 0; i < mDisplayStreamBuf.num; i++){
- if (mHalCamCtrl->mPreviewMemory.private_buffer_handle[i] == NULL)
- continue;
+ if (mHalCamCtrl->mPreviewMemory.private_buffer_handle[i] == NULL)
+ continue;
mDisplayStreamBuf.frame[i].fd = mHalCamCtrl->mPreviewMemory.private_buffer_handle[i]->fd;
mDisplayStreamBuf.frame[i].cbcr_off = planes[0];
mDisplayStreamBuf.frame[i].y_off = 0;
mDisplayStreamBuf.frame[i].path = OUTPUT_TYPE_P;
- mHalCamCtrl->mPreviewMemory.addr_offset[i] =
- mHalCamCtrl->mPreviewMemory.private_buffer_handle[i]->offset;
+ mHalCamCtrl->mPreviewMemory.addr_offset[i] =
+ mHalCamCtrl->mPreviewMemory.private_buffer_handle[i]->offset;
mDisplayStreamBuf.frame[i].buffer =
(long unsigned int)mHalCamCtrl->mPreviewMemory.camera_memory[i]->data;
mDisplayStreamBuf.frame[i].ion_alloc.len = mHalCamCtrl->mPreviewMemory.private_buffer_handle[i]->size;
@@ -658,6 +567,11 @@ status_t QCameraStream_preview::initDisplayBuffers()
mDisplayBuf.preview.buf.mp[i].planes[j-1].length;
}
+ if (mHalCamCtrl->mPreviewMemory.local_flag[i] == BUFFER_NOT_OWNED) {
+ mDisplayBuf.preview.no_enqueue_flag[i] = 1;
+ } else {
+ mDisplayBuf.preview.no_enqueue_flag[i] = 0;
+ }
for (int j = 0; j < num_planes; j++)
ALOGV("Planes: %d length: %d userptr: %lu offset: %d\n", j,
mDisplayBuf.preview.buf.mp[i].planes[j].length,
@@ -680,151 +594,6 @@ error:
return ret;
}
-status_t QCameraStream_preview::initPreviewOnlyBuffers()
-{
- status_t ret = NO_ERROR;
- int width = 0; /* width of channel */
- int height = 0; /* height of channel */
- uint32_t frame_len = 0; /* frame planner length */
- int buffer_num = 4; /* number of buffers for display */
- const char *pmem_region;
- uint8_t num_planes = 0;
- uint32_t planes[VIDEO_MAX_PLANES];
-
- cam_ctrl_dimension_t dim;
-
- ALOGV("%s:BEGIN",__func__);
- memset(&mHalCamCtrl->mMetadata, 0, sizeof(camera_frame_metadata_t));
- mHalCamCtrl->mPreviewMemoryLock.lock();
- memset(&mHalCamCtrl->mNoDispPreviewMemory, 0, sizeof(mHalCamCtrl->mNoDispPreviewMemory));
- mHalCamCtrl->mPreviewMemoryLock.unlock();
- memset(&mNotifyBuffer, 0, sizeof(mNotifyBuffer));
-
-/* get preview size, by qury mm_camera*/
- memset(&dim, 0, sizeof(cam_ctrl_dimension_t));
- ret = cam_config_get_parm(mCameraId, MM_CAMERA_PARM_DIMENSION, &dim);
- if (MM_CAMERA_OK != ret) {
- ALOGE("%s: error - can't get camera dimension!", __func__);
- ALOGV("%s: X", __func__);
- return BAD_VALUE;
- }else {
- width = dim.display_width;
- height = dim.display_height;
- }
-
- ret = getBufferNoDisplay( );
- if(ret != NO_ERROR) {
- ALOGE("%s: cannot get memory from surface texture client, ret = %d", __func__, ret);
- return ret;
- }
-
- /* set 4 buffers for display */
- memset(&mDisplayStreamBuf, 0, sizeof(mDisplayStreamBuf));
- mHalCamCtrl->mPreviewMemoryLock.lock();
- this->mDisplayStreamBuf.num = mHalCamCtrl->mNoDispPreviewMemory.buffer_count;
- this->myMode=myMode; /*Need to assign this in constructor after translating from mask*/
- num_planes = dim.display_frame_offset.num_planes;
- for (int i = 0; i < num_planes; i++) {
- planes[i] = dim.display_frame_offset.mp[i].len;
- }
- this->mDisplayStreamBuf.frame_len = dim.display_frame_offset.frame_len;
-
- memset(&mDisplayBuf, 0, sizeof(mDisplayBuf));
- mDisplayBuf.preview.buf.mp = new mm_camera_mp_buf_t[mDisplayStreamBuf.num];
- if (!mDisplayBuf.preview.buf.mp) {
- ALOGE("%s Error allocating memory for mplanar struct ", __func__);
- }
- memset(mDisplayBuf.preview.buf.mp, 0,
- mDisplayStreamBuf.num * sizeof(mm_camera_mp_buf_t));
-
- /*allocate memory for the buffers*/
- void *vaddr = NULL;
- for(int i = 0; i < mDisplayStreamBuf.num; i++){
- if (mHalCamCtrl->mNoDispPreviewMemory.camera_memory[i] == NULL)
- continue;
- mDisplayStreamBuf.frame[i].fd = mHalCamCtrl->mNoDispPreviewMemory.fd[i];
- mDisplayStreamBuf.frame[i].cbcr_off = planes[0];
- mDisplayStreamBuf.frame[i].y_off = 0;
- mDisplayStreamBuf.frame[i].path = OUTPUT_TYPE_P;
- mDisplayStreamBuf.frame[i].buffer =
- (long unsigned int)mHalCamCtrl->mNoDispPreviewMemory.camera_memory[i]->data;
- mDisplayStreamBuf.frame[i].ion_dev_fd = mHalCamCtrl->mNoDispPreviewMemory.main_ion_fd[i];
- mDisplayStreamBuf.frame[i].fd_data = mHalCamCtrl->mNoDispPreviewMemory.ion_info_fd[i];
-
- ALOGV("%s: idx = %d, fd = %d, size = %d, cbcr_offset = %d, y_offset = %d, "
- "vaddr = 0x%x", __func__, i, mDisplayStreamBuf.frame[i].fd,
- frame_len,
- mDisplayStreamBuf.frame[i].cbcr_off, mDisplayStreamBuf.frame[i].y_off,
- (uint32_t)mDisplayStreamBuf.frame[i].buffer);
-
- if (NO_ERROR != mHalCamCtrl->sendMappingBuf(
- MSM_V4L2_EXT_CAPTURE_MODE_PREVIEW,
- i,
- mDisplayStreamBuf.frame[i].fd,
- mHalCamCtrl->mNoDispPreviewMemory.size,
- mCameraId, CAM_SOCK_MSG_TYPE_FD_MAPPING)) {
- ALOGE("%s: sending mapping data Msg Failed", __func__);
- }
-
- if(mHalCamCtrl->isZSLMode()) {
- if (NO_ERROR != mHalCamCtrl->sendMappingBuf(
- MSM_V4L2_EXT_CAPTURE_MODE_THUMBNAIL,
- i,
- mDisplayStreamBuf.frame[i].fd,
- mHalCamCtrl->mNoDispPreviewMemory.size,
- mCameraId, CAM_SOCK_MSG_TYPE_FD_MAPPING)) {
- ALOGE("%s: sending mapping data Msg Failed", __func__);
- }
- }
- mDisplayBuf.preview.buf.mp[i].frame = mDisplayStreamBuf.frame[i];
- mDisplayBuf.preview.buf.mp[i].frame_offset = mDisplayStreamBuf.frame[i].y_off;
- mDisplayBuf.preview.buf.mp[i].num_planes = num_planes;
-
- /* Plane 0 needs to be set seperately. Set other planes
- * in a loop. */
- mDisplayBuf.preview.buf.mp[i].planes[0].length = planes[0];
- mDisplayBuf.preview.buf.mp[i].planes[0].m.userptr = mDisplayStreamBuf.frame[i].fd;
- mDisplayBuf.preview.buf.mp[i].planes[0].data_offset = 0;
- mDisplayBuf.preview.buf.mp[i].planes[0].reserved[0] =
- mDisplayBuf.preview.buf.mp[i].frame_offset;
- for (int j = 1; j < num_planes; j++) {
- mDisplayBuf.preview.buf.mp[i].planes[j].length = planes[j];
- mDisplayBuf.preview.buf.mp[i].planes[j].m.userptr =
- mDisplayStreamBuf.frame[i].fd;
- mDisplayBuf.preview.buf.mp[i].planes[j].data_offset = 0;
- mDisplayBuf.preview.buf.mp[i].planes[j].reserved[0] =
- mDisplayBuf.preview.buf.mp[i].planes[j-1].reserved[0] +
- mDisplayBuf.preview.buf.mp[i].planes[j-1].length;
- }
-
- for (int j = 0; j < num_planes; j++)
- ALOGV("Planes: %d length: %d userptr: %lu offset: %d\n", j,
- mDisplayBuf.preview.buf.mp[i].planes[j].length,
- mDisplayBuf.preview.buf.mp[i].planes[j].m.userptr,
- mDisplayBuf.preview.buf.mp[i].planes[j].reserved[0]);
- }/*end of for loop*/
-
- /* register the streaming buffers for the channel*/
- mDisplayBuf.ch_type = MM_CAMERA_CH_PREVIEW;
- mDisplayBuf.preview.num = mDisplayStreamBuf.num;
- mHalCamCtrl->mPreviewMemoryLock.unlock();
- ALOGV("%s:END",__func__);
- return NO_ERROR;
-
-end:
- if (MM_CAMERA_OK == ret ) {
- ALOGV("%s: X - NO_ERROR ", __func__);
- return NO_ERROR;
- }
-
- ALOGV("%s: out of memory clean up", __func__);
- /* release the allocated memory */
-
- ALOGV("%s: X - BAD_VALUE ", __func__);
- return BAD_VALUE;
-}
-
-
void QCameraStream_preview::dumpFrameToFile(struct msm_frame* newFrame)
{
#if 0
@@ -909,10 +678,9 @@ status_t QCameraStream_preview::processPreviewFrameWithDisplay(
mHalCamCtrl->dumpFrameToFile(frame->def.frame, HAL_DUMP_FRM_PREVIEW);
mHalCamCtrl->mPreviewMemoryLock.lock();
- mNotifyBuffer[frame->def.idx] = *frame;
- ALOGV("Enqueue buf handle %p\n",
- mHalCamCtrl->mPreviewMemory.buffer_handle[frame->def.idx]);
+ ALOGV("Enqueue buf handle %p, index %d\n",
+ mHalCamCtrl->mPreviewMemory.buffer_handle[frame->def.idx], frame->def.idx);
ALOGV("%s: camera call genlock_unlock", __FUNCTION__);
if (BUFFER_LOCKED == mHalCamCtrl->mPreviewMemory.local_flag[frame->def.idx]) {
@@ -989,10 +757,10 @@ status_t QCameraStream_preview::processPreviewFrameWithDisplay(
&buffer_handle, &tmp_stride);
if (err == NO_ERROR && buffer_handle != NULL) {
- ALOGV("%s: dequed buf hdl =%p", __func__, *buffer_handle);
for(i = 0; i < mHalCamCtrl->mPreviewMemory.buffer_count; i++) {
if(mHalCamCtrl->mPreviewMemory.buffer_handle[i] == buffer_handle) {
mHalCamCtrl->mPreviewMemory.local_flag[i] = BUFFER_UNLOCKED;
+ ALOGV("%s: dequed buf hdl =%p, index = %d", __func__, *buffer_handle, i);
break;
}
}
@@ -1006,9 +774,14 @@ status_t QCameraStream_preview::processPreviewFrameWithDisplay(
// return -EINVAL;
} else {
mHalCamCtrl->mPreviewMemory.local_flag[i] = BUFFER_LOCKED;
-
- if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, &mNotifyBuffer[i])) {
- ALOGE("BUF DONE FAILED");
+ mm_camera_ch_data_buf_t notify;
+ memset(&notify, 0, sizeof(mm_camera_ch_data_buf_t));
+ notify.type = MM_CAMERA_CH_PREVIEW;
+ notify.def.idx = i;
+ notify.def.frame = &mDisplayStreamBuf.frame[i];
+ ALOGV("%s: queueing buffer idx is %d", __func__, i);
+ if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, &notify)) {
+ ALOGE("%s: BUF DONE FAILED");
}
}
}
@@ -1126,126 +899,10 @@ status_t QCameraStream_preview::processPreviewFrameWithDisplay(
return NO_ERROR;
}
-
-status_t QCameraStream_preview::processPreviewFrameWithOutDisplay(
- mm_camera_ch_data_buf_t *frame)
-{
- ALOGV("%s",__func__);
- int err = 0;
- int msgType = 0;
- int i;
- camera_memory_t *data = NULL;
- camera_frame_metadata_t *metadata = NULL;
-
- Mutex::Autolock lock(mStopCallbackLock);
- if(!mActive) {
- ALOGV("Preview Stopped. Returning callback");
- return NO_ERROR;
- }
- if(mHalCamCtrl==NULL) {
- ALOGE("%s: X: HAL control object not set",__func__);
- /*Call buf done*/
- return BAD_VALUE;
- }
-
- if (UNLIKELY(mHalCamCtrl->mDebugFps)) {
- mHalCamCtrl->debugShowPreviewFPS();
- }
- //dumpFrameToFile(frame->def.frame);
- mHalCamCtrl->dumpFrameToFile(frame->def.frame, HAL_DUMP_FRM_PREVIEW);
-
- mHalCamCtrl->mPreviewMemoryLock.lock();
- mNotifyBuffer[frame->def.idx] = *frame;
-
- /* Save the last displayed frame. We'll be using it to fill the gap between
- when preview stops and postview start during snapshot.*/
- mLastQueuedFrame = &(mDisplayStreamBuf.frame[frame->def.idx]);
- mHalCamCtrl->mPreviewMemoryLock.unlock();
-
- mHalCamCtrl->mCallbackLock.lock();
- camera_data_callback pcb = mHalCamCtrl->mDataCb;
- mHalCamCtrl->mCallbackLock.unlock();
- ALOGV("Message enabled = 0x%x", mHalCamCtrl->mMsgEnabled);
-
- camera_memory_t *previewMem = NULL;
- int previewWidth, previewHeight;
- mHalCamCtrl->mParameters.getPreviewSize(&previewWidth, &previewHeight);
-
-#ifdef USE_ION
- struct ion_flush_data cache_inv_data;
- int ion_fd;
- ion_fd = frame->def.frame->ion_dev_fd;
- cache_inv_data.vaddr = (void *)frame->def.frame->buffer;
- cache_inv_data.fd = frame->def.frame->fd;
- cache_inv_data.handle = frame->def.frame->fd_data.handle;
- cache_inv_data.length = frame->def.frame->ion_alloc.len;
-
- if (mHalCamCtrl->cache_ops(ion_fd, &cache_inv_data,
- ION_IOC_CLEAN_INV_CACHES) < 0)
- ALOGE("%s: Cache clean for Preview buffer %p fd = %d failed", __func__,
- cache_inv_data.vaddr, cache_inv_data.fd);
-#endif
-
- if (pcb != NULL) {
- //Sending preview callback if corresponding Msgs are enabled
- if(mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) {
- msgType |= CAMERA_MSG_PREVIEW_FRAME;
- int previewBufSize;
- /* For CTS : Forcing preview memory buffer lenth to be
- 'previewWidth * previewHeight * 3/2'.
- Needed when gralloc allocated extra memory.*/
- //Can add this check for other formats as well.
- if( mHalCamCtrl->mPreviewFormat == CAMERA_YUV_420_NV21) {
- previewBufSize = previewWidth * previewHeight * 3/2;
- if(previewBufSize != mHalCamCtrl->mPreviewMemory.private_buffer_handle[frame->def.idx]->size) {
- previewMem = mHalCamCtrl->mGetMemory(mHalCamCtrl->mPreviewMemory.private_buffer_handle[frame->def.idx]->fd,
- previewBufSize, 1, mHalCamCtrl->mCallbackCookie);
- if (!previewMem || !previewMem->data) {
- ALOGE("%s: mGetMemory failed.\n", __func__);
- } else {
- data = previewMem;
- }
- } else
- data = mHalCamCtrl->mPreviewMemory.camera_memory[frame->def.idx];//mPreviewHeap->mBuffers[frame->def.idx];
- } else
- data = mHalCamCtrl->mPreviewMemory.camera_memory[frame->def.idx];//mPreviewHeap->mBuffers[frame->def.idx];
- } else {
- data = NULL;
- }
-
- if(mHalCamCtrl->mMsgEnabled & CAMERA_MSG_PREVIEW_METADATA){
- msgType |= CAMERA_MSG_PREVIEW_METADATA;
- metadata = &mHalCamCtrl->mMetadata;
- } else {
- metadata = NULL;
- }
- if(msgType) {
- mStopCallbackLock.unlock();
- if(mActive)
- pcb(msgType, data, 0, metadata, mHalCamCtrl->mCallbackCookie);
- if (previewMem)
- previewMem->release(previewMem);
- mStopCallbackLock.lock();
- }
-
- if(MM_CAMERA_OK != cam_evt_buf_done(mCameraId, &mNotifyBuffer[frame->def.idx])) {
- ALOGE("BUF DONE FAILED");
- }
-
- ALOGV("end of cb");
- }
-
- return NO_ERROR;
-}
-
status_t QCameraStream_preview::processPreviewFrame (
mm_camera_ch_data_buf_t *frame)
{
- if (mHalCamCtrl->isNoDisplayMode()) {
- return processPreviewFrameWithOutDisplay(frame);
- } else {
- return processPreviewFrameWithDisplay(frame);
- }
+ return processPreviewFrameWithDisplay(frame);
}
// ---------------------------------------------------------------------------
@@ -1322,14 +979,8 @@ status_t QCameraStream_preview::start()
previewFmt = mHalCamCtrl->getPreviewFormat();
setFormat(MM_CAMERA_CH_PREVIEW_MASK, previewFmt);
- if (mHalCamCtrl->isNoDisplayMode()) {
- if(NO_ERROR!=initPreviewOnlyBuffers()){
- return BAD_VALUE;
- }
- } else {
- if(NO_ERROR!=initDisplayBuffers()){
- return BAD_VALUE;
- }
+ if(NO_ERROR!=initDisplayBuffers()){
+ return BAD_VALUE;
}
ALOGV("Debug : %s : initDisplayBuffers",__func__);
@@ -1427,11 +1078,7 @@ end:
/* In case of a clean stop, we need to clean all buffers*/
ALOGV("Debug : %s : Buffer Unprepared",__func__);
/*free camera_memory handles and return buffer back to surface*/
- if (! mHalCamCtrl->isNoDisplayMode() ) {
- putBufferToSurface();
- } else {
- freeBufferNoDisplay( );
- }
+ putBufferToSurface();
ALOGV("%s: X", __func__);