Skip to content
Snippets Groups Projects
Commit d6bb9e7a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Ensure MSM7627A camera and camcorder preview work on gecko"

parents a63f1de8 679bce5d
No related branches found
No related tags found
No related merge requests found
diff --git a/QCameraHWI.cpp b/QCameraHWI.cpp
index f79a8d2..9b20e7a 100755
--- a/QCameraHWI.cpp
+++ b/QCameraHWI.cpp
@@ -1025,16 +1025,24 @@ bool QCameraHardwareInterface::preview_parm_config (cam_ctrl_dimension_t* dim,
cam_format_t value = getPreviewFormat();
- if(value != NOT_FOUND && value != dim->prev_format ) {
+ if (value == NOT_FOUND){
+ //Setting to default Format.
+ value = CAMERA_YUV_420_NV21;
+ }
+
+ if(value != dim->prev_format ) {
//Setting to Parameter requested by the Upper layer
dim->prev_format = value;
- }else if (value == NOT_FOUND){
- //Setting to default Format.
- dim->prev_format = CAMERA_YUV_420_NV21;
+ matching = false;
}
+
mPreviewFormat = dim->prev_format;
- dim->prev_padding_format = getPreviewPadding( );
+ cam_pad_format_t padding = getPreviewPadding( );
+ if (padding != dim->prev_padding_format) {
+ dim->prev_padding_format = padding;
+ matching = false;
+ }
dim->enc_format = CAMERA_YUV_420_NV12;
dim->orig_video_width = mDimension.orig_video_width;
@@ -1370,18 +1378,32 @@ status_t QCameraHardwareInterface::startRecording()
//remember recordinghint value set by app
mAppRecordingHint = mRecordingHint;
if (mRecordingHint == FALSE) {
- LOGE("%s: start recording when hint is false, stop preview first", __func__);
- stopPreviewInternal();
- mPreviewState = QCAMERA_HAL_PREVIEW_STOPPED;
+ LOGI("%s: start recording when hint is false", __func__);
+
+ cam_ctrl_dimension_t dimension = {0};
+
+ ret = cam_config_get_parm(mCameraId, MM_CAMERA_PARM_DIMENSION,&dimension);
+ if (MM_CAMERA_OK != ret) {
+ LOGE("%s: error - can't get preview dimension!", __func__);
+ ret = BAD_VALUE;
+ break;
+ }
+
+ if(!preview_parm_config(&dimension, mParameters)) {
+ LOGI("%s: reinit preview", __func__);
+ stopPreviewInternal();
+ mPreviewState = QCAMERA_HAL_PREVIEW_STOPPED;
+
+ // start preview again
+ mPreviewState = QCAMERA_HAL_PREVIEW_START;
+ if (startPreview2() == NO_ERROR)
+ mPreviewState = QCAMERA_HAL_PREVIEW_STARTED;
+ }
// Set recording hint to TRUE
mRecordingHint = TRUE;
setRecordingHintValue(mRecordingHint);
- // start preview again
- mPreviewState = QCAMERA_HAL_PREVIEW_START;
- if (startPreview2() == NO_ERROR)
- mPreviewState = QCAMERA_HAL_PREVIEW_STARTED;
}
ret = mStreamRecord->start();
if (MM_CAMERA_OK != ret){
diff --git a/QCameraHWI_Parm.cpp b/QCameraHWI_Parm.cpp
index aadce4d..4db646a 100755
--- a/QCameraHWI_Parm.cpp
+++ b/QCameraHWI_Parm.cpp
@@ -352,8 +352,6 @@ static const str_map recording_Hints[] = {
static const str_map preview_formats[] = {
{CameraParameters::PIXEL_FORMAT_YUV420SP, HAL_PIXEL_FORMAT_YCrCb_420_SP},
{CameraParameters::PIXEL_FORMAT_YUV420SP_ADRENO, HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO},
- {CameraParameters::PIXEL_FORMAT_YV12, HAL_PIXEL_FORMAT_YV12},
- {CameraParameters::PIXEL_FORMAT_YUV420P,HAL_PIXEL_FORMAT_YV12},
{CameraParameters::PIXEL_FORMAT_NV12, HAL_PIXEL_FORMAT_YCbCr_420_SP}
};
diff --git a/QCameraHWI_Preview.cpp b/QCameraHWI_Preview.cpp
index 5f0c3cf..d0c79b4 100755
--- a/QCameraHWI_Preview.cpp
+++ b/QCameraHWI_Preview.cpp
@@ -219,6 +219,18 @@ status_t QCameraStream_preview::getBufferFromSurface() {
mHalCamCtrl->mPreviewMemory.private_buffer_handle[cnt]->offset);
}
+ // Cancel minUndequeuedBufs.
+ for (int cnt = kPreviewBufferCount; cnt < mHalCamCtrl->mPreviewMemory.buffer_count; cnt++) {
+ if (GENLOCK_NO_ERROR != genlock_unlock_buffer((native_handle_t *)(*(mHalCamCtrl->mPreviewMemory.buffer_handle[cnt])))) {
+ LOGE("%s: genlock_unlock_buffer failed", __FUNCTION__);
+ return -EINVAL;
+ }
+ mHalCamCtrl->mPreviewMemory.local_flag[cnt] = BUFFER_NOT_OWNED;
+ err = mPreviewWindow->cancel_buffer(mPreviewWindow,
+ mHalCamCtrl->mPreviewMemory.buffer_handle[cnt]);
+ LOGE("Cancelling preview buffer and set not owned 0x%x", *(mHalCamCtrl->mPreviewMemory.buffer_handle[cnt]));
+ }
+
memset(&mHalCamCtrl->mMetadata, 0, sizeof(mHalCamCtrl->mMetadata));
memset(mHalCamCtrl->mFace, 0, sizeof(mHalCamCtrl->mFace));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment