diff options
author | Mike J. Chen <mjchen@sta.samsung.com> | 2010-10-28 20:13:40 -0700 |
---|---|---|
committer | Simon Wilson <simonwilson@google.com> | 2010-10-29 19:34:31 -0700 |
commit | b625b09e0537a552feab85e42db4ebd7d384bcb7 (patch) | |
tree | fb662cbd691e9423a85d502a908c1ef509e32f7f /libcamera | |
parent | b3320b82a1300fb446beb35e035b014f963ea81e (diff) | |
download | device_samsung_crespo-b625b09e0537a552feab85e42db4ebd7d384bcb7.zip device_samsung_crespo-b625b09e0537a552feab85e42db4ebd7d384bcb7.tar.gz device_samsung_crespo-b625b09e0537a552feab85e42db4ebd7d384bcb7.tar.bz2 |
S5PC11X: libcamera: fix new CTS failures and use of closed fd
* put back fps high limit for front camera to 30 because
CTS showed it was getting frames faster than the advertised
limit of 15. since this is just a range, and user can't
request a specific frame rate anyway, there's no harm in
advertising that we "might" return faster frame rates.
* move stopRecord() in deinit to after m_cam_fd is closed,
since it uses it
* fix framerate check in setParameter() since now front and
back have different default frame rates
Change-Id: Id4a3eb35b99890782644a4c4315c637a57ae50bb
Signed-off-by: Mike J. Chen <mjchen@sta.samsung.com>
Diffstat (limited to 'libcamera')
-rw-r--r-- | libcamera/SecCamera.cpp | 16 | ||||
-rw-r--r-- | libcamera/SecCameraHWInterface.cpp | 15 |
2 files changed, 20 insertions, 11 deletions
diff --git a/libcamera/SecCamera.cpp b/libcamera/SecCamera.cpp index c336a69..55baef7 100644 --- a/libcamera/SecCamera.cpp +++ b/libcamera/SecCamera.cpp @@ -186,7 +186,7 @@ static int fimc_poll(struct pollfd *events) { int ret; - /* 10 second delay is because sensor can take a long time + /* 10 second delay is because sensor can take a long time * to do auto focus and capture in dark settings */ ret = poll(events, 1, 10000); @@ -859,20 +859,28 @@ void SecCamera::DeinitCamera() m_jpeg_fd = 0; } #endif + +#ifdef DUAL_PORT_RECORDING + stopRecord(); +#endif + + /* close m_cam_fd after stopRecord() because stopRecord() + * uses m_cam_fd to change frame rate + */ LOGE("DeinitCamera: m_cam_fd(%d)", m_cam_fd); if (m_cam_fd > -1) { close(m_cam_fd); m_cam_fd = -1; } -#ifdef DUAL_PORT_RECORDING - stopRecord(); +#ifdef DUAL_PORT_RECORDING LOGE("DeinitCamera: m_cam_fd2(%d)", m_cam_fd2); if (m_cam_fd2 > -1) { close(m_cam_fd2); m_cam_fd2 = -1; } #endif + if (m_cam_fd_temp != -1) { close(m_cam_fd_temp); m_cam_fd_temp = -1; @@ -985,7 +993,7 @@ int SecCamera::startPreview(void) CHECK(ret); #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION - LOGV("%s: get the first frame of the preview\n", __func__); + LOGV("%s: got the first frame of the preview\n", __func__); #endif /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */ #ifndef SWP1_CAMERA_ADD_ADVANCED_FUNCTION diff --git a/libcamera/SecCameraHWInterface.cpp b/libcamera/SecCameraHWInterface.cpp index 1e941b8..a5b86d8 100644 --- a/libcamera/SecCameraHWInterface.cpp +++ b/libcamera/SecCameraHWInterface.cpp @@ -320,8 +320,8 @@ void CameraHardwareSec::initDefaultParameters(int cameraId) p.set(CameraParameters::KEY_FOCAL_LENGTH, "3.43"); } else { - p.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, "(7500,15000)"); - p.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, "7500,15000"); + p.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, "(7500,30000)"); + p.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, "7500,30000"); p.set(CameraParameters::KEY_FOCAL_LENGTH, "0.9"); } @@ -1082,7 +1082,7 @@ int CameraHardwareSec::pictureThread() mStateLock.lock(); mCaptureInProgress = false; mStateLock.unlock(); - return UNKNOWN_ERROR; + return UNKNOWN_ERROR; } LOGI("snapshotandjpeg done\n"); } @@ -1092,7 +1092,7 @@ int CameraHardwareSec::pictureThread() mStateLock.lock(); mCaptureInProgress = false; mStateLock.unlock(); - return UNKNOWN_ERROR; + return UNKNOWN_ERROR; } jpeg_data = mSecCamera->yuv2Jpeg((unsigned char*)phyAddr, 0, &jpeg_size, @@ -1217,7 +1217,7 @@ PostviewOverlayEnd: LOGV("JpegExifSize=%d", JpegExifSize); if (JpegExifSize < 0) { - return UNKNOWN_ERROR; + return UNKNOWN_ERROR; } unsigned char *ExifStart = (unsigned char *)JpegHeap->base() + 2; @@ -1665,8 +1665,9 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) /* ignore any fps request, we're determine fps automatically based * on scene mode. don't return an error because it causes CTS failure. */ - if (new_frame_rate != 30) { - LOGW("WARN(%s): request for frame rate setting (%d) not allowed\n", __func__, new_frame_rate); + if (new_frame_rate != mParameters.getPreviewFrameRate()) { + LOGW("WARN(%s): request for preview frame %d not allowed, != %d\n", + __func__, new_frame_rate, mParameters.getPreviewFrameRate()); } // rotation |