Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(714)

Side by Side Diff: patched-ffmpeg-mt/libavformat/os_support.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Various utilities for ffmpeg system 2 * Various utilities for ffmpeg system
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard 3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 * copyright (c) 2002 Francois Revol 4 * copyright (c) 2002 Francois Revol
5 * 5 *
6 * This file is part of FFmpeg. 6 * This file is part of FFmpeg.
7 * 7 *
8 * FFmpeg is free software; you can redistribute it and/or 8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version. 11 * version 2.1 of the License, or (at your option) any later version.
12 * 12 *
13 * FFmpeg is distributed in the hope that it will be useful, 13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details. 16 * Lesser General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU Lesser General Public 18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software 19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */ 21 */
22 22
23 /* needed by inet_aton() */ 23 /* needed by inet_aton() */
24 #define _SVID_SOURCE 24 #define _SVID_SOURCE
25 #define _DARWIN_C_SOURCE
25 26
26 #include "config.h" 27 #include "config.h"
27 #include "avformat.h" 28 #include "avformat.h"
28 #include <unistd.h> 29 #include <unistd.h>
29 #include <fcntl.h> 30 #include <fcntl.h>
30 #include <sys/time.h> 31 #include <sys/time.h>
31 #include "os_support.h" 32 #include "os_support.h"
32 33
33 #if CONFIG_NETWORK 34 #if CONFIG_NETWORK
34 #if !HAVE_POLL_H 35 #if !HAVE_POLL_H
35 #if HAVE_WINSOCK2_H 36 #if HAVE_WINSOCK2_H
36 #include <winsock2.h> 37 #include <winsock2.h>
37 #elif HAVE_SYS_SELECT_H 38 #elif HAVE_SYS_SELECT_H
38 #include <sys/select.h> 39 #include <sys/select.h>
39 #endif 40 #endif
40 #endif 41 #endif
41 42
42 #include "network.h" 43 #include "network.h"
43 44
44 #if !HAVE_INET_ATON 45 #if !HAVE_INET_ATON
45 #include <stdlib.h> 46 #include <stdlib.h>
46 #include <strings.h> 47 #include <strings.h>
47 48
48 int inet_aton (const char * str, struct in_addr * add) 49 int ff_inet_aton (const char * str, struct in_addr * add)
49 { 50 {
50 unsigned int add1 = 0, add2 = 0, add3 = 0, add4 = 0; 51 unsigned int add1 = 0, add2 = 0, add3 = 0, add4 = 0;
51 52
52 if (sscanf(str, "%d.%d.%d.%d", &add1, &add2, &add3, &add4) != 4) 53 if (sscanf(str, "%d.%d.%d.%d", &add1, &add2, &add3, &add4) != 4)
53 return 0; 54 return 0;
54 55
55 if (!add1 || (add1|add2|add3|add4) > 255) return 0; 56 if (!add1 || (add1|add2|add3|add4) > 255) return 0;
56 57
57 add->s_addr = htonl((add1 << 24) + (add2 << 16) + (add3 << 8) + add4); 58 add->s_addr = htonl((add1 << 24) + (add2 << 16) + (add3 << 8) + add4);
58 59
59 return 1; 60 return 1;
60 } 61 }
62 #else
63 int ff_inet_aton (const char * str, struct in_addr * add)
64 {
65 return inet_aton(str, add);
66 }
61 #endif /* !HAVE_INET_ATON */ 67 #endif /* !HAVE_INET_ATON */
62 68
63 #if !HAVE_GETADDRINFO 69 #if !HAVE_GETADDRINFO
64 int ff_getaddrinfo(const char *node, const char *service, 70 int ff_getaddrinfo(const char *node, const char *service,
65 const struct addrinfo *hints, struct addrinfo **res) 71 const struct addrinfo *hints, struct addrinfo **res)
66 { 72 {
67 struct hostent *h = NULL; 73 struct hostent *h = NULL;
68 struct addrinfo *ai; 74 struct addrinfo *ai;
69 struct sockaddr_in *sin; 75 struct sockaddr_in *sin;
70 76
71 #if HAVE_WINSOCK2_H 77 #if HAVE_WINSOCK2_H
72 int (WSAAPI *win_getaddrinfo)(const char *node, const char *service, 78 int (WSAAPI *win_getaddrinfo)(const char *node, const char *service,
73 const struct addrinfo *hints, 79 const struct addrinfo *hints,
74 struct addrinfo **res); 80 struct addrinfo **res);
75 HMODULE ws2mod = GetModuleHandle("ws2_32.dll"); 81 HMODULE ws2mod = GetModuleHandle("ws2_32.dll");
76 win_getaddrinfo = GetProcAddress(ws2mod, "getaddrinfo"); 82 win_getaddrinfo = GetProcAddress(ws2mod, "getaddrinfo");
77 if (win_getaddrinfo) 83 if (win_getaddrinfo)
78 return win_getaddrinfo(node, service, hints, res); 84 return win_getaddrinfo(node, service, hints, res);
79 #endif 85 #endif
80 86
87 *res = NULL;
81 sin = av_mallocz(sizeof(struct sockaddr_in)); 88 sin = av_mallocz(sizeof(struct sockaddr_in));
82 if (!sin) 89 if (!sin)
83 return EAI_FAIL; 90 return EAI_FAIL;
84 sin->sin_family = AF_INET; 91 sin->sin_family = AF_INET;
85 92
86 if (node) { 93 if (node) {
87 if (!inet_aton(node, &sin->sin_addr)) { 94 if (!ff_inet_aton(node, &sin->sin_addr)) {
88 if (hints && (hints->ai_flags & AI_NUMERICHOST)) { 95 if (hints && (hints->ai_flags & AI_NUMERICHOST)) {
89 av_free(sin); 96 av_free(sin);
90 return EAI_FAIL; 97 return EAI_FAIL;
91 } 98 }
92 h = gethostbyname(node); 99 h = gethostbyname(node);
93 if (!h) { 100 if (!h) {
94 av_free(sin); 101 av_free(sin);
95 return EAI_FAIL; 102 return EAI_FAIL;
96 } 103 }
97 memcpy(&sin->sin_addr, h->h_addr_list[0], sizeof(struct in_addr)); 104 memcpy(&sin->sin_addr, h->h_addr_list[0], sizeof(struct in_addr));
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 ent = getservbyport(sin->sin_port, flags & NI_DGRAM ? "udp" : "tcp") ; 203 ent = getservbyport(sin->sin_port, flags & NI_DGRAM ? "udp" : "tcp") ;
197 204
198 if (ent) { 205 if (ent) {
199 snprintf(serv, servlen, "%s", ent->s_name); 206 snprintf(serv, servlen, "%s", ent->s_name);
200 } else 207 } else
201 snprintf(serv, servlen, "%d", ntohs(sin->sin_port)); 208 snprintf(serv, servlen, "%d", ntohs(sin->sin_port));
202 } 209 }
203 210
204 return 0; 211 return 0;
205 } 212 }
213
214 const char *ff_gai_strerror(int ecode)
215 {
216 switch(ecode) {
217 case EAI_FAIL : return "A non-recoverable error occurred";
218 case EAI_FAMILY : return "The address family was not recognized or the addre ss length was invalid for the specified family";
219 case EAI_NONAME : return "The name does not resolve for the supplied paramet ers";
220 }
221
222 return "Unknown error";
223 }
206 #endif 224 #endif
207 225
208 /* resolve host with also IP address parsing */
209 int resolve_host(struct in_addr *sin_addr, const char *hostname)
210 {
211
212 if (!inet_aton(hostname, sin_addr)) {
213 #if HAVE_GETADDRINFO
214 struct addrinfo *ai, *cur;
215 struct addrinfo hints;
216 memset(&hints, 0, sizeof(hints));
217 hints.ai_family = AF_INET;
218 if (getaddrinfo(hostname, NULL, &hints, &ai))
219 return -1;
220 /* getaddrinfo returns a linked list of addrinfo structs.
221 * Even if we set ai_family = AF_INET above, make sure
222 * that the returned one actually is of the correct type. */
223 for (cur = ai; cur; cur = cur->ai_next) {
224 if (cur->ai_family == AF_INET) {
225 *sin_addr = ((struct sockaddr_in *)cur->ai_addr)->sin_addr;
226 freeaddrinfo(ai);
227 return 0;
228 }
229 }
230 freeaddrinfo(ai);
231 return -1;
232 #else
233 struct hostent *hp;
234 hp = gethostbyname(hostname);
235 if (!hp)
236 return -1;
237 memcpy(sin_addr, hp->h_addr_list[0], sizeof(struct in_addr));
238 #endif
239 }
240 return 0;
241 }
242
243 int ff_socket_nonblock(int socket, int enable) 226 int ff_socket_nonblock(int socket, int enable)
244 { 227 {
245 #if HAVE_WINSOCK2_H 228 #if HAVE_WINSOCK2_H
246 return ioctlsocket(socket, FIONBIO, &enable); 229 return ioctlsocket(socket, FIONBIO, &enable);
247 #else 230 #else
248 if (enable) 231 if (enable)
249 return fcntl(socket, F_SETFL, fcntl(socket, F_GETFL) | O_NONBLOCK); 232 return fcntl(socket, F_SETFL, fcntl(socket, F_GETFL) | O_NONBLOCK);
250 else 233 else
251 return fcntl(socket, F_SETFL, fcntl(socket, F_GETFL) & ~O_NONBLOCK); 234 return fcntl(socket, F_SETFL, fcntl(socket, F_GETFL) & ~O_NONBLOCK);
252 #endif 235 #endif
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 if (FD_ISSET(fds[i].fd, &read_set)) fds[i].revents |= POLLIN; 300 if (FD_ISSET(fds[i].fd, &read_set)) fds[i].revents |= POLLIN;
318 if (FD_ISSET(fds[i].fd, &write_set)) fds[i].revents |= POLLOUT; 301 if (FD_ISSET(fds[i].fd, &write_set)) fds[i].revents |= POLLOUT;
319 if (FD_ISSET(fds[i].fd, &exception_set)) fds[i].revents |= POLLERR; 302 if (FD_ISSET(fds[i].fd, &exception_set)) fds[i].revents |= POLLERR;
320 }; 303 };
321 304
322 return rc; 305 return rc;
323 } 306 }
324 #endif /* HAVE_POLL_H */ 307 #endif /* HAVE_POLL_H */
325 #endif /* CONFIG_FFSERVER */ 308 #endif /* CONFIG_FFSERVER */
326 309
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698