]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Create receive endpoints for incomming streams
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 27 Nov 2009 07:37:34 +0000 (08:37 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 27 Nov 2009 07:37:34 +0000 (08:37 +0100)
libavformat/frsh.c

index 5044ca26fa77df7ae5a2b4a94683017be11956c4..90e6f6020d3676e4258fa470b823f1590ca6571b 100644 (file)
@@ -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