70 char host[1024], path[1024], url[1024], announce_addr[50] =
"";
72 int port = 9875, base_port = 5004, i, pos = 0, same_port = 0, ttl = 255;
76 socklen_t addrlen =
sizeof(localaddr);
89 option_list = strrchr(path,
'?');
93 port = strtol(buf,
NULL, 10);
96 same_port = strtol(buf,
NULL, 10);
99 ttl = strtol(buf,
NULL, 10);
102 av_strlcpy(announce_addr, buf,
sizeof(announce_addr));
106 if (!announce_addr[0]) {
108 memset(&hints, 0,
sizeof(hints));
117 av_strlcpy(announce_addr,
"224.2.127.254",
sizeof(announce_addr));
118 #if HAVE_STRUCT_SOCKADDR_IN6
123 av_strlcpy(announce_addr,
"ff0e::2:7ffe",
sizeof(announce_addr));
128 "address family\n", host);
156 av_strlcpy(contexts[i]->filename, url,
sizeof(contexts[i]->filename));
160 "?ttl=%d&connect=1", ttl);
169 if (getsockname(udp_fd, (
struct sockaddr*) &localaddr, &addrlen)) {
188 sap->
ann[pos] = (1 << 5);
189 #if HAVE_STRUCT_SOCKADDR_IN6
191 sap->
ann[pos] |= 0x10;
198 memcpy(&sap->
ann[pos], &((
struct sockaddr_in*)&localaddr)->sin_addr,
199 sizeof(
struct in_addr));
200 pos +=
sizeof(
struct in_addr);
201 #if HAVE_STRUCT_SOCKADDR_IN6
203 memcpy(&sap->
ann[pos], &((
struct sockaddr_in6*)&localaddr)->sin6_addr,
204 sizeof(
struct in6_addr));
205 pos +=
sizeof(
struct in6_addr);
210 pos += strlen(&sap->
ann[pos]) + 1;
219 pos += strlen(&sap->
ann[pos]);
245 if (ret < 0 && ret !=
AVERROR(ECONNREFUSED))
256 .priv_data_size =
sizeof(
struct SAPState),