static void build_udp_url(char *buf, int buf_size,
const char *hostname, int port,
int local_port, int ttl,
- int max_packet_size)
+ int max_packet_size,
+ const char *label)
{
snprintf(buf, buf_size, "udp://%s:%d", hostname, port);
if (local_port >= 0)
url_add_option(buf, buf_size, "ttl=%d", ttl);
if (max_packet_size >=0)
url_add_option(buf, buf_size, "pkt_size=%d", max_packet_size);
+ if (label)
+ url_add_option(buf, buf_size, "contract_label=%s", label);
}
/**
}
build_udp_url(buf, sizeof(buf),
- hostname, port, local_port, ttl, max_packet_size);
+ hostname, port, local_port, ttl, max_packet_size, "RTP");
if (url_open(&s->rtp_hd, buf, flags) < 0)
goto fail;
local_port = udp_get_local_port(s->rtp_hd);
/* well, should suppress localport in path */
build_udp_url(buf, sizeof(buf),
- hostname, port + 1, local_port + 1, ttl, max_packet_size);
+ hostname, port + 1, local_port + 1, ttl, max_packet_size, "RTCP");
if (url_open(&s->rtcp_hd, buf, flags) < 0)
goto fail;
#include <sys/time.h>
#include <frsh.h>
+#include <frsh_core_types.h>
+
long int udp_budget, udp_period;
typedef struct {
frsh_vres_id_t vres;
frsh_send_endpoint_protocol_info_t send_pinfo;
frsh_contract_t contract;
+ frsh_contract_label_t label;
frsh_rel_time_t budget, period;
} UDPContext;
FRSH_CT_REGULAR);
//if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params");
if (ret) return -1;
- snprintf(netcont_name, sizeof(netcont_name), "net_cont%d", ++netcont_num);
+ snprintf(netcont_name, sizeof(netcont_name), "ffmpeg%02d", ++netcont_num);
ret = frsh_contract_set_resource_and_label(&s->contract,FRSH_RT_NETWORK,
- FRSH_NETPF_FWP, netcont_name);
+ FRSH_NETPF_FWP,
+ s->label[0] ? s->label : netcont_name);
//if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
if (ret) return -1;
if (find_info_tag(buf, sizeof(buf), "buffer_size", p)) {
s->buffer_size = strtol(buf, NULL, 10);
}
+ if (!find_info_tag(s->label, sizeof(s->label),
+ "contract_label", p)) {
+ s->label[0]=0;
+ }
}
/* fill the dest addr */