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

Side by Side Diff: patched-ffmpeg-mt/libavformat/udp.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 * UDP prototype streaming system 2 * UDP prototype streaming system
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard 3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 * 4 *
5 * This file is part of FFmpeg. 5 * This file is part of FFmpeg.
6 * 6 *
7 * FFmpeg is free software; you can redistribute it and/or 7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public 8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version. 10 * version 2.1 of the License, or (at your option) any later version.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 service = sport; 152 service = sport;
153 } 153 }
154 if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) { 154 if ((hostname) && (hostname[0] != '\0') && (hostname[0] != '?')) {
155 node = hostname; 155 node = hostname;
156 } 156 }
157 memset(&hints, 0, sizeof(hints)); 157 memset(&hints, 0, sizeof(hints));
158 hints.ai_socktype = type; 158 hints.ai_socktype = type;
159 hints.ai_family = family; 159 hints.ai_family = family;
160 hints.ai_flags = flags; 160 hints.ai_flags = flags;
161 if ((error = getaddrinfo(node, service, &hints, &res))) { 161 if ((error = getaddrinfo(node, service, &hints, &res))) {
162 res = NULL;
162 av_log(NULL, AV_LOG_ERROR, "udp_resolve_host: %s\n", gai_strerror(error) ); 163 av_log(NULL, AV_LOG_ERROR, "udp_resolve_host: %s\n", gai_strerror(error) );
163 } 164 }
164 165
165 return res; 166 return res;
166 } 167 }
167 168
168 static int udp_set_url(struct sockaddr_storage *addr, 169 static int udp_set_url(struct sockaddr_storage *addr,
169 const char *hostname, int port) 170 const char *hostname, int port)
170 { 171 {
171 struct addrinfo *res0; 172 struct addrinfo *res0;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 * @param s1 media file context 258 * @param s1 media file context
258 * @param uri of the remote server 259 * @param uri of the remote server
259 * @return zero if no error. 260 * @return zero if no error.
260 */ 261 */
261 int udp_set_remote_url(URLContext *h, const char *uri) 262 int udp_set_remote_url(URLContext *h, const char *uri)
262 { 263 {
263 UDPContext *s = h->priv_data; 264 UDPContext *s = h->priv_data;
264 char hostname[256]; 265 char hostname[256];
265 int port; 266 int port;
266 267
267 url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri) ; 268 ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, u ri);
268 269
269 /* set the destination address */ 270 /* set the destination address */
270 s->dest_addr_len = udp_set_url(&s->dest_addr, hostname, port); 271 s->dest_addr_len = udp_set_url(&s->dest_addr, hostname, port);
271 if (s->dest_addr_len < 0) { 272 if (s->dest_addr_len < 0) {
272 return AVERROR(EIO); 273 return AVERROR(EIO);
273 } 274 }
274 s->is_multicast = is_multicast_address(&s->dest_addr); 275 s->is_multicast = is_multicast_address(&s->dest_addr);
275 276
276 return 0; 277 return 0;
277 } 278 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 const char *p; 313 const char *p;
313 char buf[256]; 314 char buf[256];
314 struct sockaddr_storage my_addr; 315 struct sockaddr_storage my_addr;
315 int len; 316 int len;
316 317
317 h->is_streamed = 1; 318 h->is_streamed = 1;
318 h->max_packet_size = 1472; 319 h->max_packet_size = 1472;
319 320
320 is_output = (flags & URL_WRONLY); 321 is_output = (flags & URL_WRONLY);
321 322
322 if(!ff_network_init())
323 return AVERROR(EIO);
324
325 s = av_mallocz(sizeof(UDPContext)); 323 s = av_mallocz(sizeof(UDPContext));
326 if (!s) 324 if (!s)
327 return AVERROR(ENOMEM); 325 return AVERROR(ENOMEM);
328 326
329 h->priv_data = s; 327 h->priv_data = s;
330 s->ttl = 16; 328 s->ttl = 16;
331 s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_MAX_PKT_SIZE; 329 s->buffer_size = is_output ? UDP_TX_BUF_SIZE : UDP_MAX_PKT_SIZE;
332 330
333 p = strchr(uri, '?'); 331 p = strchr(uri, '?');
334 if (p) { 332 if (p) {
335 s->reuse_socket = find_info_tag(buf, sizeof(buf), "reuse", p); 333 s->reuse_socket = find_info_tag(buf, sizeof(buf), "reuse", p);
336 if (find_info_tag(buf, sizeof(buf), "ttl", p)) { 334 if (find_info_tag(buf, sizeof(buf), "ttl", p)) {
337 s->ttl = strtol(buf, NULL, 10); 335 s->ttl = strtol(buf, NULL, 10);
338 } 336 }
339 if (find_info_tag(buf, sizeof(buf), "localport", p)) { 337 if (find_info_tag(buf, sizeof(buf), "localport", p)) {
340 s->local_port = strtol(buf, NULL, 10); 338 s->local_port = strtol(buf, NULL, 10);
341 } 339 }
342 if (find_info_tag(buf, sizeof(buf), "pkt_size", p)) { 340 if (find_info_tag(buf, sizeof(buf), "pkt_size", p)) {
343 h->max_packet_size = strtol(buf, NULL, 10); 341 h->max_packet_size = strtol(buf, NULL, 10);
344 } 342 }
345 if (find_info_tag(buf, sizeof(buf), "buffer_size", p)) { 343 if (find_info_tag(buf, sizeof(buf), "buffer_size", p)) {
346 s->buffer_size = strtol(buf, NULL, 10); 344 s->buffer_size = strtol(buf, NULL, 10);
347 } 345 }
348 } 346 }
349 347
350 /* fill the dest addr */ 348 /* fill the dest addr */
351 url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri) ; 349 ff_url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, u ri);
352 350
353 /* XXX: fix url_split */ 351 /* XXX: fix ff_url_split */
354 if (hostname[0] == '\0' || hostname[0] == '?') { 352 if (hostname[0] == '\0' || hostname[0] == '?') {
355 /* only accepts null hostname if input */ 353 /* only accepts null hostname if input */
356 if (flags & URL_WRONLY) 354 if (flags & URL_WRONLY)
357 goto fail; 355 goto fail;
358 } else { 356 } else {
359 udp_set_remote_url(h, uri); 357 udp_set_remote_url(h, uri);
360 } 358 }
361 359
362 if (s->is_multicast && !(h->flags & URL_WRONLY)) 360 if (s->is_multicast && !(h->flags & URL_WRONLY))
363 s->local_port = port; 361 s->local_port = port;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 return size; 472 return size;
475 } 473 }
476 474
477 static int udp_close(URLContext *h) 475 static int udp_close(URLContext *h)
478 { 476 {
479 UDPContext *s = h->priv_data; 477 UDPContext *s = h->priv_data;
480 478
481 if (s->is_multicast && !(h->flags & URL_WRONLY)) 479 if (s->is_multicast && !(h->flags & URL_WRONLY))
482 udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr); 480 udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr);
483 closesocket(s->udp_fd); 481 closesocket(s->udp_fd);
484 ff_network_close();
485 av_free(s); 482 av_free(s);
486 return 0; 483 return 0;
487 } 484 }
488 485
489 URLProtocol udp_protocol = { 486 URLProtocol udp_protocol = {
490 "udp", 487 "udp",
491 udp_open, 488 udp_open,
492 udp_read, 489 udp_read,
493 udp_write, 490 udp_write,
494 NULL, /* seek */ 491 NULL, /* seek */
495 udp_close, 492 udp_close,
496 .url_get_file_handle = udp_get_file_handle, 493 .url_get_file_handle = udp_get_file_handle,
497 }; 494 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698