summaryrefslogtreecommitdiffstats
path: root/libcamera
diff options
context:
space:
mode:
authorMike J. Chen <mjchen@sta.samsung.com>2010-10-28 20:13:40 -0700
committerSimon Wilson <simonwilson@google.com>2010-10-29 19:34:31 -0700
commitb625b09e0537a552feab85e42db4ebd7d384bcb7 (patch)
treefb662cbd691e9423a85d502a908c1ef509e32f7f /libcamera
parentb3320b82a1300fb446beb35e035b014f963ea81e (diff)
downloaddevice_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.cpp16
-rw-r--r--libcamera/SecCameraHWInterface.cpp15
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