Apply new TIZEN_FEATURE_SNAPSHOT definition 76/291176/1 accepted/tizen/unified/20230413.123708
authorSangchul Lee <sc11.lee@samsung.com>
Tue, 11 Apr 2023 06:03:38 +0000 (15:03 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 11 Apr 2023 06:32:29 +0000 (15:32 +0900)
[Version] 0.4.8
[Issue Type] Feature

Change-Id: Ic5c67f3066c5157f76303bd17e8c3fe1fb46ba3f
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
CMakeLists.txt
include/webrtc_private.h
packaging/capi-media-webrtc.spec
src/webrtc.c
src/webrtc_internal.c
src/webrtc_sink.c

index 8dc4d0f99e990096c545b4a6ea8df264598f31c7..364aebb0d82a20f51f088c0e6b14936ce3ffdb12 100644 (file)
@@ -13,7 +13,7 @@ INCLUDE_DIRECTORIES(${INC_DIR})
 SET(dependents "dlog glib-2.0 gstreamer-1.0 gstreamer-webrtc-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 \
                 gstreamer-allocators-1.0 libpulse json-glib-1.0 iniparser mm-common mm-display-interface capi-media-tool \
                 libtbm libwebsockets cynara-client libsmack capi-system-info libsoup-2.4 bundle capi-media-sound-manager \
-                mm-fileinfo mmutil-common mmutil-imgp mmutil-jpeg mmutil-magick")
+                mm-fileinfo")
 IF(NOT TIZEN_PROFILE_TV)
     SET(dependents "${dependents} mm-resource-manager")
     IF(TIZEN_FEATURE_UI)
@@ -29,6 +29,10 @@ IF(TIZEN_FEATURE_DNS)
     ADD_DEFINITIONS("-DTIZEN_FEATURE_DNS")
     SET(dependents "${dependents} dns_sd")
 ENDIF()
+IF(TIZEN_FEATURE_SNAPSHOT)
+    ADD_DEFINITIONS("-DTIZEN_FEATURE_SNAPSHOT")
+    SET(dependents "${dependents} mmutil-common mmutil-imgp mmutil-jpeg mmutil-magick")
+ENDIF()
 
 SET(pc_dependents "capi-base-common capi-media-sound-manager capi-media-tool bundle" )
 
@@ -63,6 +67,9 @@ ENDIF()
 IF(NOT TIZEN_FEATURE_DNS)
     LIST(REMOVE_ITEM SOURCES src/webrtc_dns.c)
 ENDIF()
+IF(NOT TIZEN_FEATURE_SNAPSHOT)
+    LIST(REMOVE_ITEM SOURCES src/webrtc_sink_snapshot.c)
+ENDIF()
 
 ADD_LIBRARY(${fw_name} SHARED ${SOURCES})
 
index 3da66c58cfc2cf5804eb8df9921a566a1a598d81..24a2acf30837900427fd2a0dca75ba57f29c9087 100644 (file)
@@ -516,11 +516,12 @@ typedef struct _webrtc_s {
        GHashTable *data_channels;
        GHashTable *track_build_contexts;
 
+#ifdef TIZEN_FEATURE_SNAPSHOT
        struct {
                GThread *thread;
                GAsyncQueue *queue;
        } snapshot;
-
+#endif
 #ifdef TIZEN_FEATURE_DNS
        struct {
                DNSServiceRef client;
@@ -617,6 +618,7 @@ typedef struct _webrtc_gst_slot_s {
 
        webrtc_display_s *display;
 
+#ifdef TIZEN_FEATURE_SNAPSHOT
        struct {
                GstPad *sink_pad;
                gulong sink_pad_probe_id;
@@ -627,7 +629,7 @@ typedef struct _webrtc_gst_slot_s {
                void *callback;
                void *user_data;
        } snapshot;
-
+#endif
        struct {
                gchar *path;
                FILE *fp;
index d949a477bba227fba8405f35b15a99f671e39d41..8aecccb215c408e891dd38434dc661790af88c9e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.4.7
+Version:    0.4.8
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
@@ -35,10 +35,12 @@ BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires:  pkgconfig(capi-media-sound-manager)
 BuildRequires:  pkgconfig(bundle)
 BuildRequires:  pkgconfig(mm-fileinfo)
+%if "%{without_snapshot}" != "1"
 BuildRequires:  pkgconfig(mmutil-common)
 BuildRequires:  pkgconfig(mmutil-imgp)
 BuildRequires:  pkgconfig(mmutil-jpeg)
 BuildRequires:  pkgconfig(mmutil-magick)
+%endif
 %if "%{without_dns}" != "1"
 BuildRequires:  pkgconfig(dns_sd)
 %endif
@@ -129,6 +131,11 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 %else
 -DTIZEN_FEATURE_DNS=on \
 %endif
+%if "%{without_snapshot}" == "1"
+-DTIZEN_FEATURE_SNAPSHOT=off \
+%else
+-DTIZEN_FEATURE_SNAPSHOT=on \
+%endif
 
 make %{?jobs:-j%jobs}
 
index f7fb89c61e457673d4c685d97aa23ffdee922c4d..be3868b0ee248a8e80f45799522fb1a8b5da3a16 100644 (file)
@@ -116,8 +116,10 @@ int webrtc_create(webrtc_h *webrtc)
                        LOG_WARNING("failed to _register_dns_service() but keep going");
        }
 #endif
+#ifdef TIZEN_FEATURE_SNAPSHOT
        if ((ret = _init_convert_thread(_webrtc)) != WEBRTC_ERROR_NONE)
                goto error;
+#endif
 
        if ((ret = _gst_init(_webrtc)) != WEBRTC_ERROR_NONE)
                goto error;
@@ -180,8 +182,9 @@ int webrtc_destroy(webrtc_h webrtc)
        g_clear_pointer(&d_locker, g_mutex_locker_free);
        _gst_destroy_pipeline(_webrtc);
 
+#ifdef TIZEN_FEATURE_SNAPSHOT
        _deinit_convert_thread(_webrtc);
-
+#endif
        _unload_ini(_webrtc);
 
 #if !defined(TIZEN_TV) && defined(TIZEN_FEATURE_UI)
index d9ebbb5edd09fc7755297d789ebaa2d1ad3af178..82a77b9be1c463c03f19cdc8aa44416c76038cb0 100644 (file)
@@ -115,8 +115,11 @@ int webrtc_take_snapshot(webrtc_h webrtc, unsigned int track_id, webrtc_snapshot
        locker = g_mutex_locker_new(&_webrtc->mutex);
 
        RET_VAL_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "track added callback was not set");
-
+#ifdef TIZEN_FEATURE_SNAPSHOT
        return _capture_video_frame_from_sink(_webrtc, track_id, format, option, callback, user_data);
+#else
+       return WEBRTC_ERROR_NOT_SUPPORTED;
+#endif
 }
 
 int webrtc_media_source_set_video_loopback_to_ecore_wl(webrtc_h webrtc, unsigned int source_id, void *ecore_wl_window, unsigned int *track_id)
@@ -246,4 +249,4 @@ int webrtc_get_rtp_packet_drop_probability(webrtc_h webrtc, bool sender, float *
 
        return _get_packet_drop_probability(webrtc, sender, probability);
 }
-//LCOV_EXCL_STOP
\ No newline at end of file
+//LCOV_EXCL_STOP
index 51cb4d643793d31a10f474c080327499642963f2..59328adc9e8da0e4cee38079f922244d4a3b9e13 100644 (file)
@@ -637,8 +637,9 @@ void _sink_slot_destroy_cb(gpointer data)
 
        _remove_probe_from_pad_for_dump(sink);
 
+#ifdef TIZEN_FEATURE_SNAPSHOT
        g_mutex_clear(&sink->snapshot.mutex);
-
+#endif
        g_free(sink);
 }
 
@@ -660,7 +661,9 @@ static int __alloc_sink_slot(webrtc_s *webrtc, const gchar *pad_name, bool forwa
        (*sink)->id = id;
        (*sink)->bin = GST_BIN(gst_bin_new(*name));
        (*sink)->webrtc = webrtc;
+#ifdef TIZEN_FEATURE_SNAPSHOT
        g_mutex_init(&((*sink)->snapshot.mutex));
+#endif
 
        LOG_DEBUG("webrtc[%p] sink[%p, id:%u, name:%s]", webrtc, *sink, id, *name);
 
@@ -1358,6 +1361,7 @@ int _get_video_resolution_from_sink(webrtc_s *webrtc, unsigned int track_id, int
        return WEBRTC_ERROR_NONE;
 }
 
+#ifdef TIZEN_FEATURE_SNAPSHOT
 int _capture_video_frame_from_sink(webrtc_s *webrtc, unsigned int track_id, int format, int option, webrtc_snapshot_cb callback, void *user_data)
 {
        webrtc_gst_slot_s *sink;
@@ -1386,5 +1390,5 @@ int _capture_video_frame_from_sink(webrtc_s *webrtc, unsigned int track_id, int
 
        return _capture_video_frame(sink);
 }
-
+#endif
 //LCOV_EXCL_STOP