void owr_data_channel_close(OwrDataChannel *data_channel) { GHashTable *args; g_return_if_fail(data_channel); args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "data_channel", data_channel); g_object_ref(data_channel); _owr_schedule_with_hash_table((GSourceFunc)data_channel_close, args); }
void _owr_data_channel_set_ready_state(OwrDataChannel *data_channel, OwrDataChannelReadyState state) { GHashTable *args; g_object_ref(data_channel); args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "data_channel", data_channel); g_hash_table_insert(args, "state", GUINT_TO_POINTER(state)); _owr_schedule_with_hash_table((GSourceFunc)set_ready_state, args); }
/** * owr_session_force_remote_candidate: * @session: The session on which the candidate will be forced. * @candidate: (transfer none): the candidate to forcibly set * * Forces the transport agent to use the given candidate. Calling this function will disable all * further ICE processing. Keep-alives will continue to be sent. */ void owr_session_force_remote_candidate(OwrSession *session, OwrCandidate *candidate) { GHashTable *args; g_return_if_fail(OWR_IS_SESSION(session)); g_return_if_fail(OWR_IS_CANDIDATE(candidate)); args = _owr_create_schedule_table(OWR_MESSAGE_ORIGIN(session)); g_hash_table_insert(args, "session", session); g_hash_table_insert(args, "candidate", candidate); g_hash_table_insert(args, "forced", GINT_TO_POINTER(TRUE)); g_object_ref(session); g_object_ref(candidate); _owr_schedule_with_hash_table((GSourceFunc)add_remote_candidate, args); }
void owr_window_registry_unregister(OwrWindowRegistry *window_registry, const gchar *tag) { GHashTable *args; g_return_if_fail(OWR_IS_WINDOW_REGISTRY(window_registry)); g_return_if_fail(tag); args = _owr_create_schedule_table(OWR_MESSAGE_ORIGIN(window_registry)); g_hash_table_insert(args, "window_registry", window_registry); g_hash_table_insert(args, "tag", g_strdup(tag)); g_object_ref(window_registry); _owr_schedule_with_hash_table((GSourceFunc)do_unregister, args); }
/** * owr_get_capture_sources: * @types: * @callback: (scope async): * @user_data: (allow-none): */ void owr_get_capture_sources(OwrMediaType types, OwrCaptureSourcesCallback callback, gpointer user_data) { GHashTable *args; OwrCaptureSourcesCallback *callbacks; g_return_if_fail(callback); callbacks = g_new(OwrCaptureSourcesCallback, 1); callbacks[0] = callback; args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "callback", callbacks); g_hash_table_insert(args, "media_types", GUINT_TO_POINTER(types)); g_hash_table_insert(args, "user_data", user_data); _owr_schedule_with_hash_table((GSourceFunc)capture_sources_callback, args); }
static void tee_pad_removed_cb(GstElement *tee, GstPad *old_pad, gpointer user_data) { OwrMediaSource *media_source = user_data; OWR_UNUSED(old_pad); /* Only the fakesink is left, shutdown */ if (tee->numsrcpads == 1) { GHashTable *args; args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "media_source", media_source); g_object_ref (media_source); _owr_schedule_with_hash_table((GSourceFunc)shutdown_media_source, args); } }
/** * owr_media_renderer_set_source: * @renderer: * @source: (transfer none) (allow-none): * * Returns: */ void owr_media_renderer_set_source(OwrMediaRenderer *renderer, OwrMediaSource *source) { GHashTable *args; g_return_if_fail(OWR_IS_MEDIA_RENDERER(renderer)); g_return_if_fail(!source || OWR_IS_MEDIA_SOURCE(source)); args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "renderer", renderer); g_hash_table_insert(args, "source", source); g_object_ref(renderer); if (source) g_object_ref(source); _owr_schedule_with_hash_table((GSourceFunc)set_source, args); }
static void tee_pad_removed_cb(GstElement *tee, GstPad *old_pad, gpointer user_data) { OwrMediaSource *media_source = user_data; OWR_UNUSED(old_pad); /* No sink is left, shutdown */ if (!tee->numsrcpads) { GHashTable *args; args = _owr_create_schedule_table(OWR_MESSAGE_ORIGIN(media_source)); g_hash_table_insert(args, "media_source", media_source); g_object_ref(media_source); _owr_schedule_with_hash_table((GSourceFunc)shutdown_media_source, args); } }
/** * owr_data_channel_send_binary: * @data_channel: * @data: (array length=length): * @length: * */ void owr_data_channel_send_binary(OwrDataChannel *data_channel, const guint8 *data, guint16 length) { GHashTable *args; guint8 *data_out; OwrDataChannelPrivate *priv = data_channel->priv; g_return_if_fail(data_channel); g_return_if_fail(data); priv->bytes_sent += length; data_out = g_malloc(length); memcpy(data_out, data, length); args = g_hash_table_new(g_str_hash, g_str_equal); g_hash_table_insert(args, "data_channel", data_channel); g_hash_table_insert(args, "data", data_out); g_hash_table_insert(args, "length", GUINT_TO_POINTER(length)); g_hash_table_insert(args, "is_binary", GUINT_TO_POINTER(TRUE)); g_object_ref(data_channel); _owr_schedule_with_hash_table((GSourceFunc)data_channel_send, args); }
/** * owr_session_force_candidate_pair: * @session: The session on which the candidate will be forced. * @local_candidate: (transfer none): the local candidate to forcibly set * @remote_candidate: (transfer none): the remote candidate to forcibly set * * Forces the transport agent to use the given candidate pair. Calling this * function will disable all further ICE processing. Keep-alives will continue * to be sent. */ void owr_session_force_candidate_pair(OwrSession *session, OwrComponentType ctype, OwrCandidate *local_candidate, OwrCandidate *remote_candidate) { GHashTable *args; g_return_if_fail(OWR_IS_SESSION(session)); g_return_if_fail(OWR_IS_CANDIDATE(local_candidate)); g_return_if_fail(OWR_IS_CANDIDATE(remote_candidate)); args = _owr_create_schedule_table(OWR_MESSAGE_ORIGIN(session)); g_hash_table_insert(args, "session", session); g_hash_table_insert(args, "component-type", GUINT_TO_POINTER(ctype)); g_hash_table_insert(args, "local-candidate", local_candidate); g_hash_table_insert(args, "remote-candidate", remote_candidate); g_object_ref(session); g_object_ref(local_candidate); g_object_ref(remote_candidate); _owr_schedule_with_hash_table((GSourceFunc)add_candidate_pair, args); }
/** * owr_session_add_remote_candidate: * @session: the session on which the candidate will be added. * @candidate: (transfer none): the candidate to add * * Adds a remote candidate for this session. * */ void owr_session_add_remote_candidate(OwrSession *session, OwrCandidate *candidate) { GHashTable *args; g_return_if_fail(session); g_return_if_fail(candidate); if (session->priv->rtcp_mux && _owr_candidate_get_component_type(candidate) == OWR_COMPONENT_TYPE_RTCP) { g_warning("Trying to adding RTCP component on an rtcp_muxing session. Aborting"); return; } args = _owr_create_schedule_table(OWR_MESSAGE_ORIGIN(session)); g_hash_table_insert(args, "session", session); g_hash_table_insert(args, "candidate", candidate); g_object_ref(session); g_object_ref(candidate); _owr_schedule_with_hash_table((GSourceFunc)add_remote_candidate, args); }