2 * Copyright (C) 2006 Benjamin Zores
3 * Stream layer for MPEG over RTP, based on previous work from Dave Chapman
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
31 rtp_streaming_read (int fd
, char *buffer
,
32 int size
, streaming_ctrl_t
*streaming_ctrl
)
34 return read_rtp_from_server (fd
, buffer
, size
);
38 rtp_streaming_start (stream_t
*stream
)
40 streaming_ctrl_t
*streaming_ctrl
;
46 streaming_ctrl
= stream
->streaming_ctrl
;
51 fd
= udp_open_socket (streaming_ctrl
->url
);
57 streaming_ctrl
->streaming_read
= rtp_streaming_read
;
58 streaming_ctrl
->streaming_seek
= nop_streaming_seek
;
59 streaming_ctrl
->prebuffer_size
= 64 * 1024; /* 64 KBytes */
60 streaming_ctrl
->buffering
= 0;
61 streaming_ctrl
->status
= streaming_playing_e
;
67 rtp_stream_open (stream_t
*stream
, int mode
, void *opts
, int *file_format
)
70 extern int network_bandwidth
;
72 mp_msg (MSGT_OPEN
, MSGL_INFO
, "STREAM_RTP, URL: %s\n", stream
->url
);
73 stream
->streaming_ctrl
= streaming_ctrl_new ();
74 if (!stream
->streaming_ctrl
)
77 stream
->streaming_ctrl
->bandwidth
= network_bandwidth
;
78 url
= url_new (stream
->url
);
79 stream
->streaming_ctrl
->url
= check4proxies (url
);
83 mp_msg (MSGT_NETWORK
, MSGL_ERR
,
84 "You must enter a port number for RTP streams!\n");
85 streaming_ctrl_free (stream
->streaming_ctrl
);
86 stream
->streaming_ctrl
= NULL
;
88 return STREAM_UNSUPPORTED
;
91 if (rtp_streaming_start (stream
) < 0)
93 mp_msg (MSGT_NETWORK
, MSGL_ERR
, "rtp_streaming_start failed\n");
94 streaming_ctrl_free (stream
->streaming_ctrl
);
95 stream
->streaming_ctrl
= NULL
;
97 return STREAM_UNSUPPORTED
;
100 stream
->type
= STREAMTYPE_STREAM
;
101 fixup_network_stream_cache (stream
);
106 const stream_info_t stream_info_rtp
= {
107 "MPEG over RTP streaming",
109 "Dave Chapman, Benjamin Zores",
110 "native rtp support",
114 0 // Urls are an option string