Exemplo n.º 1
0
int handle_init(void * p_handler)
{
    if (metric_init() != 0) 
    {
        ERROR_LOG("ERROR: metric_init() in switch_proto");
        return -1;
    }

    DEBUG_LOG("switch proto inited");

    return 0;
}
Exemplo n.º 2
0
int stream_alloc(struct stream **sp, const struct config_avt *cfg,
		 struct call *call, struct sdp_session *sdp_sess,
		 const char *name, int label,
		 const struct mnat *mnat, struct mnat_sess *mnat_sess,
		 const struct menc *menc, struct menc_sess *menc_sess,
		 const char *cname,
		 stream_rtp_h *rtph, stream_rtcp_h *rtcph, void *arg)
{
	struct stream *s;
	int err;

	if (!sp || !cfg || !call || !rtph)
		return EINVAL;

	s = mem_zalloc(sizeof(*s), stream_destructor);
	if (!s)
		return ENOMEM;

	s->cfg   = *cfg;
	s->call  = call;
	s->rtph  = rtph;
	s->rtcph = rtcph;
	s->arg   = arg;
	s->pseq  = -1;
	s->rtcp  = s->cfg.rtcp_enable;

	err = stream_sock_alloc(s, call_af(call));
	if (err) {
		warning("stream: failed to create socket for media '%s'"
			" (%m)\n", name, err);
		goto out;
	}

	err = str_dup(&s->cname, cname);
	if (err)
		goto out;

	/* Jitter buffer */
	if (cfg->jbuf_del.min && cfg->jbuf_del.max) {

		err = jbuf_alloc(&s->jbuf, cfg->jbuf_del.min,
				 cfg->jbuf_del.max);
		if (err)
			goto out;
	}

	err = sdp_media_add(&s->sdp, sdp_sess, name,
			    sa_port(rtp_local(s->rtp)),
			    (menc && menc->sdp_proto) ? menc->sdp_proto :
			    sdp_proto_rtpavp);
	if (err)
		goto out;

	if (label) {
		err |= sdp_media_set_lattr(s->sdp, true,
					   "label", "%d", label);
	}

	/* RFC 5506 */
	if (s->rtcp)
		err |= sdp_media_set_lattr(s->sdp, true, "rtcp-rsize", NULL);

	/* RFC 5576 */
	if (s->rtcp) {
		err |= sdp_media_set_lattr(s->sdp, true,
					   "ssrc", "%u cname:%s",
					   rtp_sess_ssrc(s->rtp), cname);
	}

	/* RFC 5761 */
	if (cfg->rtcp_mux)
		err |= sdp_media_set_lattr(s->sdp, true, "rtcp-mux", NULL);

	if (err)
		goto out;

	if (mnat) {
		err = mnat->mediah(&s->mns, mnat_sess, IPPROTO_UDP,
				   rtp_sock(s->rtp),
				   s->rtcp ? rtcp_sock(s->rtp) : NULL,
				   s->sdp);
		if (err)
			goto out;
	}

	if (menc) {
		s->menc  = menc;
		s->mencs = mem_ref(menc_sess);
		err = menc->mediah(&s->mes, menc_sess,
				   s->rtp,
				   IPPROTO_UDP,
				   rtp_sock(s->rtp),
				   s->rtcp ? rtcp_sock(s->rtp) : NULL,
				   s->sdp);
		if (err)
			goto out;
	}

	if (err)
		goto out;

	s->pt_enc = -1;

	metric_init(&s->metric_tx);
	metric_init(&s->metric_rx);

	list_append(call_streaml(call), &s->le, s);

 out:
	if (err)
		mem_deref(s);
	else
		*sp = s;

	return err;
}
Exemplo n.º 3
0
int
main (void)
{
    g_val_t val;
    int check, i;

    /* Initialize libmetrics */
    metric_init ();

    /* Loop through a few times to make sure everything works */
    for (check = 0; check < NUM_TESTS; check++)
    {
        fprintf(stderr,"============= Running test #%d of %d =================\n", check+1, NUM_TESTS);

        /* Run through the metric list */
        for (i = 0; metrics[i].func != NULL; i++)
        {
            fprintf (stderr, "%20s = ", metrics[i].name);
            val = metrics[i].func ();
#if 0
            if (!val)
            {
                fprintf (stderr, "NOT IMPLEMENTED ON THIS PLATFORM");
            }
            else
#endif
            {
                switch (metrics[i].type)
                {
                case g_string:
                    fprintf (stderr, "%s (g_string)", val.str);
                    break;
                case g_int8:
                    fprintf (stderr, "%d (g_int8)", (int) val.int8);
                    break;
                case g_uint8:
                    fprintf (stderr, "%d (g_uint8)", (unsigned int) val.uint8);
                    break;
                case g_int16:
                    fprintf (stderr, "%d (g_int16)", (int) val.int16);
                    break;
                case g_uint16:
                    fprintf (stderr, "%d (g_uint16)",
                             (unsigned int) val.uint16);
                    break;
                case g_int32:
                    fprintf (stderr, "%d (g_int32)", (int) val.int32);
                    break;
                case g_uint32:
                    fprintf (stderr, "%u (g_uint32)", val.uint32);
                    break;
                case g_float:
                    fprintf (stderr, "%f (g_float)", val.f);
                    break;
                case g_double:
                    fprintf (stderr, "%f (g_double)", val.d);
                    break;
                case g_timestamp:
                    fprintf (stderr, "%u (g_timestamp)", val.uint32);
                    break;
                }
            }
            fprintf (stderr, "\n");
        }

        if(check != (NUM_TESTS - 1))
            sleep(SLEEP_TIME);
    }

    return 0;
}