- int fd = net_OpenDgram (obj, dhost, dport, shost, sport, AF_UNSPEC, tp);
+ int fd = -1, rtcp_fd = -1;
+
+ switch (tp)
+ {
+ case IPPROTO_UDP:
+ case IPPROTO_UDPLITE:
+ fd = net_OpenDgram (obj, dhost, (dport + 1) & ~1,
+ shost, (sport + 1) & ~1, AF_UNSPEC, tp);
+ if (fd == -1)
+ break;
+ rtcp_fd = net_OpenDgram (obj, dhost, dport | 1, shost,
+ sport ? (sport | 1) : 0, AF_UNSPEC, tp);
+ break;
+
+ case IPPROTO_DCCP:
+#ifndef SOCK_DCCP /* provisional API (FIXME) */
+# ifdef __linux__
+# define SOCK_DCCP 6
+# endif
+#endif
+#ifdef SOCK_DCCP
+ var_Create (obj, "dccp-service", VLC_VAR_STRING);
+ var_SetString (obj, "dccp-service", "RTPV"); /* FIXME: RTPA? */
+ fd = net_Connect (obj, shost, (sport + 1) & ~1, SOCK_DCCP, tp);
+#else
+ msg_Err (obj, "DCCP support not included");
+#endif
+ break;
+
+ case IPPROTO_TCP:
+ fd = net_Connect (obj, shost, (sport + 1) & ~1, SOCK_STREAM, tp);
+ break;
+ }
+