*/
int webrtc_set_transceiver_direction(webrtc_h webrtc, unsigned int source_id, webrtc_media_type_e media_type, webrtc_transceiver_direction_e direction);
+/**
+ * @brief Set a display to the media track.
+ * @since_tizen 6.5
+ * @remarks Call this function within webrtc_track_added_cb(), otherwise #WEBRTC_ERROR_INVALID_OPERATION will be returned.
+ * @param[in] webrtc WebRTC handle
+ * @param[in] track_id The track id
+ * @param[in] type The display type
+ * @param[in] display The display handle
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #WEBRTC_ERROR_NONE Successful
+ * @retval #WEBRTC_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #WEBRTC_ERROR_INVALID_OPERATION Invalid operation
+ * @pre webrtc_track_added_cb() must be set by calling webrtc_set_track_added_cb().
+ * @see webrtc_set_track_added_cb()
+ * @see webrtc_unset_track_added_cb()
+ */
+int webrtc_set_display(webrtc_h webrtc, unsigned int track_id, webrtc_display_type_e type, webrtc_display_h display);
+
/**
* @brief Sets a STUN server URL.
* @since_tizen 6.5
GHashTable *data_channels;
+ bool inside_track_added_cb;
+
webrtc_callbacks_s error_cb;
webrtc_callbacks_s state_changed_cb;
webrtc_callbacks_s negotiation_needed_cb;
Name: capi-media-webrtc
Summary: A WebRTC library in Tizen Native API
-Version: 0.1.64
+Version: 0.1.66
Release: 0
Group: Multimedia/API
License: Apache-2.0
return ret;
}
+int webrtc_set_display(webrtc_h webrtc, unsigned int track_id, webrtc_display_type_e type, webrtc_display_h display)
+{
+ int ret = WEBRTC_ERROR_NONE;
+ webrtc_s *_webrtc = (webrtc_s*)webrtc;
+
+ RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
+ RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0");
+ RET_VAL_IF(display == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "display is NULL");
+
+ g_mutex_lock(&_webrtc->mutex);
+
+ RET_VAL_WITH_UNLOCK_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set");
+ RET_VAL_WITH_UNLOCK_IF(!_webrtc->inside_track_added_cb, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "this function should be called within the track added callback");
+
+ ret = _set_display_to_sink(webrtc, track_id, (unsigned int)type, (void *)display);
+ if (ret == WEBRTC_ERROR_NONE)
+ LOG_INFO("track_id[%u] type[%d] display[%p]", track_id, type, display);
+
+ g_mutex_unlock(&_webrtc->mutex);
+
+ return ret;
+}
+
int webrtc_set_stun_server(webrtc_h webrtc, const char *stun_server)
{
webrtc_s *_webrtc = (webrtc_s*)webrtc;
if (webrtc->track_added_cb.callback) {
LOG_DEBUG(">>> callback[%p], user_data[%p]", webrtc->track_added_cb.callback, webrtc->track_added_cb.user_data);
+ webrtc->inside_track_added_cb = true;
((webrtc_track_added_cb)(webrtc->track_added_cb.callback))((webrtc_h)webrtc,
is_video ? WEBRTC_MEDIA_TYPE_VIDEO : WEBRTC_MEDIA_TYPE_AUDIO, __get_id_from_name(name), webrtc->track_added_cb.user_data);
+ webrtc->inside_track_added_cb = false;
LOG_DEBUG("<<< end of the callback");
}
}