#include <frsh.h>
#include <frsh_core_types.h>
-long int avformat_frsh_budget, avformat_frsh_period;
-
typedef struct {
int frsh_fd;
int ttl;
frsh_send_endpoint_protocol_info_t send_pinfo;
frsh_contract_t contract;
frsh_contract_label_t label;
- frsh_rel_time_t budget, period;
+ frsh_rel_time_t budget, period, deadline;
} FRSHContext;
#define FRSH_TX_BUF_SIZE 32768
addr_len = sizeof(addr);
/* set params for contract */
- frsh_network_bytes_to_budget(FRSH_NETPF_FWP, avformat_frsh_budget, &s->budget);
- s->period = fosa_msec_to_rel_time(avformat_frsh_period);
s->send_pinfo.body = NULL;
frsh_fd = frsh_send_endpoint_create(FRSH_NETPF_FWP,
//if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_resource_and_label");
if (ret) return -1;
+ if (frsh_rel_time_to_nsec(s->deadline) > 0) {
+ ret = frsh_contract_set_timing_reqs(&s->contract, false, &s->deadline);
+ if (ret) return -1;
+ }
+
ret = frsh_contract_negotiate(&s->contract, &s->vres);
//if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
if (ret) return -1;
"contract_label", p)) {
s->label[0]=0;
}
+ if (find_info_tag(buf, sizeof(buf), "budget", p)) {
+ frsh_network_bytes_to_budget(FRSH_NETPF_FWP, strtol(buf, NULL, 10), &s->budget);
+ }
+ if (find_info_tag(buf, sizeof(buf), "period", p)) {
+ s->period=frsh_msec_to_rel_time(strtol(buf, NULL, 10));
+ }
+ if (find_info_tag(buf, sizeof(buf), "deadline", p)) {
+ s->deadline=frsh_msec_to_rel_time(strtol(buf, NULL, 10));
+ }
}
/* fill the dest addr */
FRSHContext *s = h->priv_data;
int ret;
- ret = frsh_send_async(s->sepoint, buf, size);
+ ret = frsh_send_sync(s->sepoint, buf, size);
return ret;
}
frsh_send_endpoint_unbind(s->sepoint);
ret = frsh_contract_cancel(s->vres);
+ frsh_contract_destroy(s->contract);
return ret;
}
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+int frsh_rtp_budget=0, frsh_rtp_period_ms=0, frsh_rtp_deadline_ms=0;
+
/**
* @file libavformat/rtpproto.c
* RTP protocol
const char *hostname, int port,
int local_port, int ttl,
int max_packet_size,
- const char *label)
+ const char *label, int budget, int period_ms, int deadline_ms)
{
snprintf(buf, buf_size, URL_PROTO"://%s:%d", hostname, port);
if (local_port >= 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);
+ if (budget >=0)
+ url_add_option(buf, buf_size, "budget=%d", budget);
+ if (period_ms >=0)
+ url_add_option(buf, buf_size, "period=%d", period_ms);
+ if (deadline_ms >=0)
+ url_add_option(buf, buf_size, "deadline=%d", deadline_ms);
}
/**
}
build_udp_url(buf, sizeof(buf),
- hostname, port, local_port, ttl, max_packet_size, "RTP");
+ hostname, port, local_port, ttl, max_packet_size, "RTP",
+ frsh_rtp_budget, frsh_rtp_period_ms, frsh_rtp_deadline_ms);
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, "RTCP");
+ hostname, port + 1, local_port + 1, ttl, max_packet_size, "RTCP",
+ 1000, 100*1000, 0);
if (url_open(&s->rtcp_hd, buf, flags) < 0)
goto fail;