Ejemplo n.º 1
0
void add_candidate(OwrSession *session, char *ufrag, char *password, int type, int component, char *foundation, uint priority, int transport_type, char *address, uint port) {
	OwrCandidate *candidate = owr_candidate_new(type, component);
	g_object_set(candidate,
		"foundation", foundation,
		"ufrag", ufrag,
		"password", password,
		"transport-type", transport_type,
		"address", address,
		"port", port,
		"priority", priority,
		NULL);
	owr_session_add_remote_candidate(session, candidate);
}
Ejemplo n.º 2
0
static void got_candidate(OwrMediaSession *session_a, OwrCandidate *candidate, OwrMediaSession *session_b)
{
    GList *local_candidates;
    gchar *addr;
    guint port, component;
    guint rtp_port, rtcp_port;

    if (!local_addr || !remote_addr)
        owr_session_add_remote_candidate(OWR_SESSION(session_b), candidate);
    else {
        local_candidates = g_object_get_data(G_OBJECT(session_a), "local-candidates");
        local_candidates = g_list_prepend(local_candidates, candidate);
        g_object_set_data(G_OBJECT(session_a), "local-candidates", local_candidates);

        g_object_set(candidate, "ufrag", local_addr, "password", stun_pass, NULL);
    }
}
Ejemplo n.º 3
0
static void gathering_done(OwrSession *session)
{
    OwrMediaSession *msession = OWR_MEDIA_SESSION(session);
    OwrCandidate *rtp_candidate, *rtcp_candidate;
    GList *candidates;
    guint l_rtp_port, l_rtcp_port, r_rtp_port, r_rtcp_port;

    rtp_candidate = owr_candidate_new(OWR_CANDIDATE_TYPE_HOST, OWR_COMPONENT_TYPE_RTP);
    rtcp_candidate = owr_candidate_new(OWR_CANDIDATE_TYPE_HOST, OWR_COMPONENT_TYPE_RTCP);

    g_object_set(rtp_candidate, "address", remote_addr, "ufrag", remote_addr, "password", stun_pass, "foundation", "3", NULL);
    g_object_set(rtcp_candidate, "address", remote_addr, "ufrag", remote_addr, "password", stun_pass, "foundation", "3", NULL);

    if (msession == send_session_video) {
        l_rtp_port = 5120;
        l_rtcp_port = 5121;
        r_rtp_port = 5122;
        r_rtcp_port = 5123;
    } else if (msession == send_session_audio) {
        l_rtp_port = 5124;
        l_rtcp_port = 5125;
        r_rtp_port = 5126;
        r_rtcp_port = 5127;
    } else if (msession == recv_session_video) {
        l_rtp_port = 5122;
        l_rtcp_port = 5123;
        r_rtp_port = 5120;
        r_rtcp_port = 5121;
    } else if (msession == recv_session_audio) {
        l_rtp_port = 5126;
        l_rtcp_port = 5127;
        r_rtp_port = 5124;
        r_rtcp_port = 5125;
    }

    g_object_set(rtp_candidate, "port", r_rtp_port, NULL);
    g_object_set(rtcp_candidate, "port", r_rtcp_port, NULL);

    owr_session_add_remote_candidate(session, rtp_candidate);
    owr_session_add_remote_candidate(session, rtcp_candidate);

    for (candidates = g_object_get_data(G_OBJECT(session), "local-candidates"); candidates;
            candidates = g_list_next(candidates)) {
        OwrCandidate *local_candidate = candidates->data, *remote_candidate;
        OwrComponentType ctype;
        guint port = 0;
        gchar *addr;

        g_object_get(local_candidate, "address", &addr, "port", &port, "component-type", &ctype, NULL);

        if (!g_str_equal(addr, local_addr)) {
            g_free(addr);
            continue;
        }
        g_free(addr);

        if (port == l_rtp_port && ctype == OWR_COMPONENT_TYPE_RTP)
            remote_candidate = rtp_candidate;
        else if (port == l_rtcp_port && ctype == OWR_COMPONENT_TYPE_RTCP)
            remote_candidate = rtcp_candidate;
        else
            continue;

        owr_session_force_candidate_pair(session, ctype, local_candidate, remote_candidate);
    }
}
Ejemplo n.º 4
0
static void got_candidate(OwrSession *ignored, OwrCandidate *candidate, OwrSession *session)
{
    (void) ignored;
    owr_session_add_remote_candidate(OWR_SESSION(session), candidate);
}
Ejemplo n.º 5
0
static void got_candidate(OwrMediaSession *session_a, OwrCandidate *candidate, OwrMediaSession *session_b)
{
    owr_session_add_remote_candidate(OWR_SESSION(session_b), candidate);
}