From d64c7c806d1d1eb4b256c2820206d28237107a71 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Tue, 29 Dec 2020 15:30:38 +0900 Subject: [PATCH] [tizencamerasrc] Set capture count and interval to HAL [Version] 1.16.2-18 [Issue Type] Update Change-Id: I49683f24f33ad59f205a2bfd486559aad2031593 Signed-off-by: Jeongmo Yang --- packaging/gst-plugins-tizen.spec | 2 +- tizencamerasrc/src/gsttizencamerasrc.c | 63 +++++++++++++--------------------- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/packaging/gst-plugins-tizen.spec b/packaging/gst-plugins-tizen.spec index 4032719..06d2f5f 100644 --- a/packaging/gst-plugins-tizen.spec +++ b/packaging/gst-plugins-tizen.spec @@ -5,7 +5,7 @@ Name: gst-plugins-tizen Version: 1.16.2 Summary: GStreamer tizen plugins (common) -Release: 17 +Release: 18 Group: Multimedia/Framework Url: http://gstreamer.freedesktop.org/ License: LGPL-2.1+ diff --git a/tizencamerasrc/src/gsttizencamerasrc.c b/tizencamerasrc/src/gsttizencamerasrc.c index c5e9e08..2cff9cc 100644 --- a/tizencamerasrc/src/gsttizencamerasrc.c +++ b/tizencamerasrc/src/gsttizencamerasrc.c @@ -1333,46 +1333,37 @@ static gboolean gst_tizencamerasrc_capture_start(GstTizenCameraSrc *camerasrc) 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; } @@ -1390,12 +1381,8 @@ static gboolean gst_tizencamerasrc_capture_stop(GstTizenCameraSrc *camerasrc) } 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!"); @@ -2707,8 +2694,6 @@ static void gst_tizencamerasrc_class_init(GstTizenCameraSrcClass *klass) static void gst_tizencamerasrc_init(GstTizenCameraSrc *camerasrc) { - int ret = 0; - GST_INFO_OBJECT(camerasrc, "ENTERED"); camerasrc->hal_intf_handle = NULL; -- 2.7.4