return TRUE;
}
-/* Tell the driver what resolution we want to capture.
- */
-static gboolean
-cam_driver_set_capture_res (GstCameraSrc * camerasrc, guint width, guint height)
-{
- gboolean ret;
- // Just set the capture format
- struct v4l2_format fmt;
- mfld_driver.height = height;
- mfld_driver.width = width;
- cam_driver_dbg ("%s: set res to width %u, height %u\n", __func__, width,
- height);
-#if 0
- memset (&fmt, 0, sizeof (fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- fmt.fmt.pix.width = width;
- fmt.fmt.pix.height = height;
- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
- ret = ioctl (mfld_driver.fd, VIDIOC_S_FMT, &fmt);
- if (ret < 0)
- return FALSE;
- return TRUE;
-#endif
- return TRUE;
-}
#endif
/*
mfld_driver.height = height;
mfld_driver.fourcc = fourcc;
+ cam_driver_dbg ("%s: set res to width %u, height %u\n",
+ __func__, width, height);
+
mfldadvci->mode_spec_init ();
return CAM_ERR_NONE;
cam_driver_dbg ("%s: Error dqbuf %d\n", __func__, 2);
return CAM_ERR_SYS;
}
+ /* In case of small images we need to do extra flash to get
+ * auto exposure and auto white balance tuned for flash
+ */
+ if(mfld_driver.width < 2048 || mfld_driver.height < 1536) {
+ cam_driver_request_flash(fd, 1);
+ if (-1 == ioctl (fd, VIDIOC_QBUF, buffer)) {
+ cam_driver_dbg ("%s: Error qbuf %d\n", __func__, 1);
+ return CAM_ERR_SYS;
+ }
+ if (-1 == ioctl (fd, VIDIOC_DQBUF, buffer)) {
+ cam_driver_dbg ("%s: Error dqbuf %d\n", __func__, 1);
+ return CAM_ERR_SYS;
+ }
+
+ if (-1 == ioctl (fd, VIDIOC_QBUF, buffer)) {
+ cam_driver_dbg ("%s: Error qbuf %d\n", __func__, 2);
+ return CAM_ERR_SYS;
+ }
+ if (-1 == ioctl (fd, VIDIOC_DQBUF, buffer)) {
+ cam_driver_dbg ("%s: Error dqbuf %d\n", __func__, 2);
+ return CAM_ERR_SYS;
+ }
+ }
+
mfld_driver.flash_used = TRUE;
return CAM_ERR_NONE;
}
mfldadvci->AfSetWindows (1, window);
mfldadvci->AeSetWindow(window);
mfld_driver.window = *window;
+ cam_driver_dbg ("x_left:%d x_right:%d y_top:%d y_bottom:%d weight:%d\n",
+ mfld_driver.window.x_left, mfld_driver.window.x_right,
+ mfld_driver.window.y_top,
+ mfld_driver.window.y_bottom , mfld_driver.window.weight );
}
}