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)
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" )
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})
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;
webrtc_display_s *display;
+#ifdef TIZEN_FEATURE_SNAPSHOT
struct {
GstPad *sink_pad;
gulong sink_pad_probe_id;
void *callback;
void *user_data;
} snapshot;
-
+#endif
struct {
gchar *path;
FILE *fp;
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
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
%else
-DTIZEN_FEATURE_DNS=on \
%endif
+%if "%{without_snapshot}" == "1"
+-DTIZEN_FEATURE_SNAPSHOT=off \
+%else
+-DTIZEN_FEATURE_SNAPSHOT=on \
+%endif
make %{?jobs:-j%jobs}
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;
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)
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)
return _get_packet_drop_probability(webrtc, sender, probability);
}
-//LCOV_EXCL_STOP
\ No newline at end of file
+//LCOV_EXCL_STOP
_remove_probe_from_pad_for_dump(sink);
+#ifdef TIZEN_FEATURE_SNAPSHOT
g_mutex_clear(&sink->snapshot.mutex);
-
+#endif
g_free(sink);
}
(*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);
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;
return _capture_video_frame(sink);
}
-
+#endif
//LCOV_EXCL_STOP