From: Michal Sojka Date: Fri, 27 Nov 2009 07:37:34 +0000 (+0100) Subject: Create receive endpoints for incomming streams X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/ffmpeg.git/commitdiff_plain/a9d1337e0ddde15598a5c383a41f39a4f57e6078 Create receive endpoints for incomming streams --- diff --git a/libavformat/frsh.c b/libavformat/frsh.c index 5044ca26f..90e6f6020 100644 --- a/libavformat/frsh.c +++ b/libavformat/frsh.c @@ -49,7 +49,7 @@ typedef struct { int dest_addr_len; frsh_send_endpoint_t sepoint; - frsh_send_endpoint_t repoint; + frsh_receive_endpoint_t repoint; frsh_vres_id_t vres; frsh_send_endpoint_protocol_info_t send_pinfo; frsh_contract_t contract; @@ -60,21 +60,6 @@ typedef struct { #define FRSH_TX_BUF_SIZE 32768 #define FRSH_MAX_PKT_SIZE 65536 -static int frsh_set_multicast_ttl(int sockfd, int mcastTTL, struct sockaddr *addr) -{ - return 0; -} - -static int frsh_join_multicast_group(int sockfd, struct sockaddr *addr) -{ - return 0; -} - -static int frsh_leave_multicast_group(int sockfd, struct sockaddr *addr) -{ - return 0; -} - static int frsh_set_url(struct sockaddr_in *addr, const char *hostname, int port) { /* set the destination address */ @@ -92,16 +77,18 @@ static int is_multicast_address(struct sockaddr_in *addr) } static int -frsh_socket_create(FRSHContext *s, struct sockaddr_in *addr, int *addr_len) +frsh_output_socket_create(FRSHContext *s) { static long int netcont_num = 0; int ret,frsh_fd; char netcont_name[20]; + struct sockaddr_in addr; + int addr_len; - addr->sin_family = AF_INET; - addr->sin_addr.s_addr = htonl (INADDR_ANY); - addr->sin_port = htons(s->local_port); - *addr_len = sizeof(struct sockaddr_in); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = htonl (INADDR_ANY); + addr.sin_port = htons(s->local_port); + addr_len = sizeof(addr); /* set params for contract */ frsh_network_bytes_to_budget(FRSH_NETPF_FWP, avformat_frsh_budget, &s->budget); @@ -129,7 +116,7 @@ frsh_socket_create(FRSHContext *s, struct sockaddr_in *addr, int *addr_len) FRSH_CT_REGULAR); //if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_basic_params"); if (ret) return -1; - snprintf(netcont_name, sizeof(netcont_name), "ffmpeg%02d", ++netcont_num); + snprintf(netcont_name, sizeof(netcont_name), "ffmpeg%02ld", ++netcont_num); ret = frsh_contract_set_resource_and_label(&s->contract,FRSH_RT_NETWORK, FRSH_NETPF_FWP, s->label[0] ? s->label : netcont_name); @@ -150,6 +137,18 @@ frsh_socket_create(FRSHContext *s, struct sockaddr_in *addr, int *addr_len) return frsh_fd; } +static int +frsh_input_socket_create(FRSHContext *s) +{ + frsh_receive_endpoint_protocol_info_t pi = { NULL, 0 }; + frsh_endpoint_queueing_info_t qi = { .queue_size=0, .queue_policy=FRSH_QRP_OLDEST }; + + return frsh_receive_endpoint_create(FRSH_NETPF_FWP, s->local_port, qi, pi, + &s->repoint); +} + + + static int frsh_port(struct sockaddr_in *addr, int len) { return ntohs(addr->sin_port); @@ -275,7 +274,10 @@ static int frsh_open(URLContext *h, const char *uri, int flags) frsh_set_remote_url(h, uri); } - frsh_fd = frsh_socket_create(s, &my_addr, &len); + if (is_output) + frsh_fd = frsh_output_socket_create(s); + else + frsh_fd = frsh_input_socket_create(s); if (frsh_fd < 0) goto fail; #if 0