GST_INFO_OBJECT(camerasrc, "ENTERED - mode %d", camerasrc->mode);
- if (camerasrc->mode == VIDEO_IN_MODE_PREVIEW) {
- /* set preview buffer running flag to FALSE to release preview buffer immediately */
- g_mutex_lock(&camerasrc->preview_buffer_lock);
-
- if (camerasrc->preview_buffer_running) {
- camerasrc->preview_buffer_running = FALSE;
- } else {
- GST_ERROR_OBJECT(camerasrc, "buffer NOT running");
- g_mutex_unlock(&camerasrc->preview_buffer_lock);
- return FALSE;
- }
-
- g_mutex_unlock(&camerasrc->preview_buffer_lock);
-
- GST_INFO_OBJECT(camerasrc, "start capture");
-
- ret = camera_hal_interface_start_capture(camerasrc->hal_intf_handle, _camera_capture_cb, camerasrc);
- if (ret != CAMERA_ERROR_NONE) {
- GST_ERROR_OBJECT(camerasrc, "camera_hal_interface_start_capture failed 0x%x", ret);
- camerasrc->preview_buffer_running = TRUE;
- return FALSE;
- }
+ if (camerasrc->mode != VIDEO_IN_MODE_PREVIEW) {
+ GST_WARNING_OBJECT(camerasrc, "Wrong state[%d]!", camerasrc->mode);
+ return FALSE;
+ }
- camerasrc->mode = VIDEO_IN_MODE_CAPTURE;
+ GST_INFO_OBJECT(camerasrc, "start capture - count %d, interval %d",
+ camerasrc->cap_count, camerasrc->cap_interval);
- g_mutex_lock(&camerasrc->preview_buffer_lock);
+ ret = camera_hal_interface_set_command(camerasrc->hal_intf_handle,
+ CAMERA_COMMAND_CAPTURE_COUNT, (void *)&camerasrc->cap_count);
+ if (ret != CAMERA_ERROR_NONE)
+ GST_WARNING_OBJECT(camerasrc, "set capture count failed 0x%x", ret);
- camerasrc->preview_buffer_running = TRUE;
+ if (camerasrc->cap_count > 1) {
+ ret = camera_hal_interface_set_command(camerasrc->hal_intf_handle,
+ CAMERA_COMMAND_CAPTURE_INTERVAL, (void *)&camerasrc->cap_interval);
+ if (ret != CAMERA_ERROR_NONE)
+ GST_WARNING_OBJECT(camerasrc, "set capture interval failed 0x%x", ret);
+ }
- g_cond_signal(&camerasrc->preview_buffer_cond);
+ ret = camera_hal_interface_start_capture(camerasrc->hal_intf_handle, _camera_capture_cb, camerasrc);
+ if (ret != CAMERA_ERROR_NONE) {
+ GST_ERROR_OBJECT(camerasrc, "start capture failed 0x%x", ret);
+ return FALSE;
+ }
- g_mutex_unlock(&camerasrc->preview_buffer_lock);
+ camerasrc->mode = VIDEO_IN_MODE_CAPTURE;
- GST_INFO_OBJECT(camerasrc, "CAPTURE STARTED!");
+ GST_INFO_OBJECT(camerasrc, "CAPTURE STARTED!");
- return TRUE;
- } else {
- GST_WARNING_OBJECT(camerasrc, "Wrong state[%d]!", camerasrc->mode);
- return FALSE;
- }
+ return TRUE;
}
}
g_mutex_lock(&camerasrc->preview_buffer_lock);
-
- camerasrc->preview_buffer_running = TRUE;
camerasrc->mode = VIDEO_IN_MODE_PREVIEW;
-
g_cond_signal(&camerasrc->preview_buffer_cond);
-
g_mutex_unlock(&camerasrc->preview_buffer_lock);
GST_INFO_OBJECT(camerasrc, "CAPTURE STOPPED!");
static void gst_tizencamerasrc_init(GstTizenCameraSrc *camerasrc)
{
- int ret = 0;
-
GST_INFO_OBJECT(camerasrc, "ENTERED");
camerasrc->hal_intf_handle = NULL;