From: Sangchul Lee Date: Tue, 11 Apr 2023 06:03:38 +0000 (+0900) Subject: Apply new TIZEN_FEATURE_SNAPSHOT definition X-Git-Tag: accepted/tizen/unified/20230413.123708^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=57ef6442ea4b4d84b8ee96a4f9715dc9a0e346db;p=platform%2Fcore%2Fapi%2Fwebrtc.git Apply new TIZEN_FEATURE_SNAPSHOT definition [Version] 0.4.8 [Issue Type] Feature Change-Id: Ic5c67f3066c5157f76303bd17e8c3fe1fb46ba3f Signed-off-by: Sangchul Lee --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8dc4d0f9..364aebb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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}) diff --git a/include/webrtc_private.h b/include/webrtc_private.h index 3da66c58..24a2acf3 100644 --- a/include/webrtc_private.h +++ b/include/webrtc_private.h @@ -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; diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index d949a477..8aecccb2 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -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} diff --git a/src/webrtc.c b/src/webrtc.c index f7fb89c6..be3868b0 100644 --- a/src/webrtc.c +++ b/src/webrtc.c @@ -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) diff --git a/src/webrtc_internal.c b/src/webrtc_internal.c index d9ebbb5e..82a77b9b 100644 --- a/src/webrtc_internal.c +++ b/src/webrtc_internal.c @@ -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 diff --git a/src/webrtc_sink.c b/src/webrtc_sink.c index 51cb4d64..59328adc 100644 --- a/src/webrtc_sink.c +++ b/src/webrtc_sink.c @@ -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