annotate stream/stream_rtp.c @ 27409:e2de11109139

If (has outline) blur(outline) else blur(glyph). If there is an outline, the glyph itself should not be blurred. Keeps the border between glyph and outline clear (unblurred), which is probably how it should be. Patch by Diogo Franco (diogomfranco gmail com).
author eugeni
date Thu, 07 Aug 2008 22:20:58 +0000
parents a26e50cae389
children 0f1b5b68af32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
1 /*
26737
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
2 * stream layer for MPEG over RTP, based on previous work from Dave Chapman
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
3 *
26737
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
4 * Copyright (C) 2006 Benjamin Zores
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
5 *
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
6 * This file is part of MPlayer.
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
7 *
26737
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
8 * MPlayer is free software; you can redistribute it and/or modify
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
9 * it under the terms of the GNU General Public License as published by
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
11 * (at your option) any later version.
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
12 *
26737
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
13 * MPlayer is distributed in the hope that it will be useful,
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
16 * GNU General Public License for more details.
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
17 *
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
18 * You should have received a copy of the GNU General Public License along
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
19 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 25211
diff changeset
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
21 */
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
22
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
23 #include "config.h"
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
24
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
25 #include <stdlib.h>
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
26 #include <string.h>
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
27
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
28 #include "stream.h"
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
29 #include "url.h"
19318
a3ddd3320b47 removed udp socket creation code from rtp stack to a new dedicated udp helper file
ben
parents: 19313
diff changeset
30 #include "udp.h"
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
31 #include "rtp.h"
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
32
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
33 static int
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
34 rtp_streaming_read (int fd, char *buffer,
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
35 int size, streaming_ctrl_t *streaming_ctrl)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
36 {
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
37 return read_rtp_from_server (fd, buffer, size);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
38 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
39
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
40 static int
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
41 rtp_streaming_start (stream_t *stream)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
42 {
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
43 streaming_ctrl_t *streaming_ctrl;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
44 int fd;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
45
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
46 if (!stream)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
47 return -1;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
48
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
49 streaming_ctrl = stream->streaming_ctrl;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
50 fd = stream->fd;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
51
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
52 if (fd < 0)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
53 {
19318
a3ddd3320b47 removed udp socket creation code from rtp stack to a new dedicated udp helper file
ben
parents: 19313
diff changeset
54 fd = udp_open_socket (streaming_ctrl->url);
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
55 if (fd < 0)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
56 return -1;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
57 stream->fd = fd;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
58 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
59
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
60 streaming_ctrl->streaming_read = rtp_streaming_read;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
61 streaming_ctrl->streaming_seek = nop_streaming_seek;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
62 streaming_ctrl->prebuffer_size = 64 * 1024; /* 64 KBytes */
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
63 streaming_ctrl->buffering = 0;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
64 streaming_ctrl->status = streaming_playing_e;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
65
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
66 return 0;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
67 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
68
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
69 static int
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
70 rtp_stream_open (stream_t *stream, int mode, void *opts, int *file_format)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
71 {
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
72 URL_t *url;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
73 extern int network_bandwidth;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
74
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
75 mp_msg (MSGT_OPEN, MSGL_INFO, "STREAM_RTP, URL: %s\n", stream->url);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
76 stream->streaming_ctrl = streaming_ctrl_new ();
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
77 if (!stream->streaming_ctrl)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
78 return STREAM_ERROR;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
79
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
80 stream->streaming_ctrl->bandwidth = network_bandwidth;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
81 url = url_new (stream->url);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
82 stream->streaming_ctrl->url = check4proxies (url);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
83
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
84 if (url->port == 0)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
85 {
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
86 mp_msg (MSGT_NETWORK, MSGL_ERR,
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
87 "You must enter a port number for RTP streams!\n");
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
88 streaming_ctrl_free (stream->streaming_ctrl);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
89 stream->streaming_ctrl = NULL;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
90
24257
d261f5109660 cosmetics: typo fix UNSUPORTED --> UNSUPPORTED
diego
parents: 19318
diff changeset
91 return STREAM_UNSUPPORTED;
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
92 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
93
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
94 if (rtp_streaming_start (stream) < 0)
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
95 {
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
96 mp_msg (MSGT_NETWORK, MSGL_ERR, "rtp_streaming_start failed\n");
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
97 streaming_ctrl_free (stream->streaming_ctrl);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
98 stream->streaming_ctrl = NULL;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
99
24257
d261f5109660 cosmetics: typo fix UNSUPORTED --> UNSUPPORTED
diego
parents: 19318
diff changeset
100 return STREAM_UNSUPPORTED;
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
101 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
102
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
103 stream->type = STREAMTYPE_STREAM;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
104 fixup_network_stream_cache (stream);
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
105
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
106 return STREAM_OK;
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
107 }
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
108
25211
c1d17bd6683c Mark all stream_info_t as const
reimar
parents: 24257
diff changeset
109 const stream_info_t stream_info_rtp = {
19313
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
110 "MPEG over RTP streaming",
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
111 "rtp",
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
112 "Dave Chapman, Benjamin Zores",
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
113 "native rtp support",
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
114 rtp_stream_open,
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
115 { "rtp", NULL},
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
116 NULL,
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
117 0 // Urls are an option string
0792ad01e9bf split rtp stack, udp input layer and rtp input layer from rtp.c
ben
parents:
diff changeset
118 };