[MPlayer-cvslog] r19319 - in trunk/stream: Makefile rtp.c rtp.h stream.c stream_rtp.c stream_udp.c
ben
subversion at mplayerhq.hu
Fri Aug 4 20:32:36 CEST 2006
Author: ben
Date: Fri Aug 4 20:32:36 2006
New Revision: 19319
Added:
trunk/stream/stream_rtp.c
trunk/stream/stream_udp.c
Modified:
trunk/stream/Makefile
trunk/stream/rtp.c
trunk/stream/rtp.h
trunk/stream/stream.c
Log:
split rtp stack, udp input layer and rtp input layer from rtp.c
Modified: trunk/stream/Makefile
==============================================================================
--- trunk/stream/Makefile (original)
+++ trunk/stream/Makefile Fri Aug 4 20:32:36 2006
@@ -87,6 +87,8 @@
pnm.c \
rtp.c \
stream_rtsp.c \
+ stream_rtp.c \
+ stream_udp.c \
SRCS += realrtsp/asmrp.c \
realrtsp/real.c \
Modified: trunk/stream/rtp.c
==============================================================================
--- trunk/stream/rtp.c (original)
+++ trunk/stream/rtp.c Fri Aug 4 20:32:36 2006
@@ -30,7 +30,6 @@
#define DEBUG 1
#include "rtp.h"
-extern int network_bandwidth;
#define DEBUG 1
@@ -205,7 +204,7 @@
}
// Start listening on a UDP port. If multicast, join the group.
-static int rtp_open_socket( URL_t *url ) {
+int rtp_open_socket( URL_t *url ) {
int socket_server_fd, rxsockbufsz;
int err, err_len;
fd_set set;
@@ -315,36 +314,6 @@
return -1;
}
-static int rtp_streaming_read( int fd, char *buffer, int size, streaming_ctrl_t *streaming_ctrl ) {
- return read_rtp_from_server( fd, buffer, size );
-}
-
-static int rtp_streaming_start( stream_t *stream, int raw_udp ) {
- streaming_ctrl_t *streaming_ctrl;
- int fd;
-
- if( stream==NULL ) return -1;
- streaming_ctrl = stream->streaming_ctrl;
- fd = stream->fd;
-
- if( fd<0 ) {
- fd = rtp_open_socket( (streaming_ctrl->url) );
- if( fd<0 ) return -1;
- stream->fd = fd;
- }
-
- if(raw_udp)
- streaming_ctrl->streaming_read = nop_streaming_read;
- else
- streaming_ctrl->streaming_read = rtp_streaming_read;
- streaming_ctrl->streaming_seek = nop_streaming_seek;
- streaming_ctrl->prebuffer_size = 64*1024; // 64 KBytes
- streaming_ctrl->buffering = 0;
- streaming_ctrl->status = streaming_playing_e;
- return 0;
-}
-
-
static int getrtp2(int fd, struct rtpheader *rh, char** data, int* lengthData) {
static char buf[1600];
unsigned int intP;
@@ -382,53 +351,3 @@
return(0);
}
-
-
-static int open_s(stream_t *stream,int mode, void* opts, int* file_format) {
- URL_t *url;
- int udp = 0;
-
- mp_msg(MSGT_OPEN, MSGL_INFO, "STREAM_RTP, URL: %s\n", stream->url);
- stream->streaming_ctrl = streaming_ctrl_new();
- if( stream->streaming_ctrl==NULL ) {
- return STREAM_ERROR;
- }
- stream->streaming_ctrl->bandwidth = network_bandwidth;
- url = url_new(stream->url);
- stream->streaming_ctrl->url = check4proxies(url);
-
- if( url->port==0 ) {
- mp_msg(MSGT_NETWORK,MSGL_ERR,"You must enter a port number for RTP and UDP streams!\n");
- goto fail;
- }
- if(!strncmp(stream->url, "udp", 3))
- udp = 1;
-
- if(rtp_streaming_start(stream, udp) < 0) {
- mp_msg(MSGT_NETWORK,MSGL_ERR,"rtp_streaming_start(rtp) failed\n");
- goto fail;
- }
-
- stream->type = STREAMTYPE_STREAM;
- fixup_network_stream_cache(stream);
- return STREAM_OK;
-
-fail:
- streaming_ctrl_free( stream->streaming_ctrl );
- stream->streaming_ctrl = NULL;
- return STREAM_UNSUPORTED;
-}
-
-
-stream_info_t stream_info_rtp_udp = {
- "mpeg rtp and upd streaming",
- "rtp and udp",
- "Dave Chapman",
- "native rtp support",
- open_s,
- {"rtp", "udp", NULL},
- NULL,
- 0 // Urls are an option string
-};
-
-
Modified: trunk/stream/rtp.h
==============================================================================
--- trunk/stream/rtp.h (original)
+++ trunk/stream/rtp.h Fri Aug 4 20:32:36 2006
@@ -34,5 +34,6 @@
static int getrtp2(int fd, struct rtpheader *rh, char** data, int* lengthData);
int read_rtp_from_server(int fd, char *buffer, int length);
+int rtp_open_socket (URL_t *url);
#endif
Modified: trunk/stream/stream.c
==============================================================================
--- trunk/stream/stream.c (original)
+++ trunk/stream/stream.c Fri Aug 4 20:32:36 2006
@@ -47,7 +47,8 @@
extern stream_info_t stream_info_pnm;
extern stream_info_t stream_info_asf;
extern stream_info_t stream_info_rtsp;
-extern stream_info_t stream_info_rtp_udp;
+extern stream_info_t stream_info_rtp;
+extern stream_info_t stream_info_udp;
extern stream_info_t stream_info_http1;
extern stream_info_t stream_info_http2;
#endif
@@ -102,7 +103,8 @@
&stream_info_sdp,
&stream_info_rtsp_sip,
#endif
- &stream_info_rtp_udp,
+ &stream_info_rtp,
+ &stream_info_udp,
&stream_info_http2,
#endif
#ifdef HAS_DVBIN_SUPPORT
Added: trunk/stream/stream_rtp.c
==============================================================================
--- (empty file)
+++ trunk/stream/stream_rtp.c Fri Aug 4 20:32:36 2006
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2006 Benjamin Zores
+ * Stream layer for MPEG over RTP, based on previous work from Dave Chapman
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "stream.h"
+#include "url.h"
+#include "rtp.h"
+
+static int
+rtp_streaming_read (int fd, char *buffer,
+ int size, streaming_ctrl_t *streaming_ctrl)
+{
+ return read_rtp_from_server (fd, buffer, size);
+}
+
+static int
+rtp_streaming_start (stream_t *stream)
+{
+ streaming_ctrl_t *streaming_ctrl;
+ int fd;
+
+ if (!stream)
+ return -1;
+
+ streaming_ctrl = stream->streaming_ctrl;
+ fd = stream->fd;
+
+ if (fd < 0)
+ {
+ fd = rtp_open_socket (streaming_ctrl->url);
+ if (fd < 0)
+ return -1;
+ stream->fd = fd;
+ }
+
+ streaming_ctrl->streaming_read = rtp_streaming_read;
+ streaming_ctrl->streaming_seek = nop_streaming_seek;
+ streaming_ctrl->prebuffer_size = 64 * 1024; /* 64 KBytes */
+ streaming_ctrl->buffering = 0;
+ streaming_ctrl->status = streaming_playing_e;
+
+ return 0;
+}
+
+static int
+rtp_stream_open (stream_t *stream, int mode, void *opts, int *file_format)
+{
+ URL_t *url;
+ extern int network_bandwidth;
+
+ mp_msg (MSGT_OPEN, MSGL_INFO, "STREAM_RTP, URL: %s\n", stream->url);
+ stream->streaming_ctrl = streaming_ctrl_new ();
+ if (!stream->streaming_ctrl)
+ return STREAM_ERROR;
+
+ stream->streaming_ctrl->bandwidth = network_bandwidth;
+ url = url_new (stream->url);
+ stream->streaming_ctrl->url = check4proxies (url);
+
+ if (url->port == 0)
+ {
+ mp_msg (MSGT_NETWORK, MSGL_ERR,
+ "You must enter a port number for RTP streams!\n");
+ streaming_ctrl_free (stream->streaming_ctrl);
+ stream->streaming_ctrl = NULL;
+
+ return STREAM_UNSUPORTED;
+ }
+
+ if (rtp_streaming_start (stream) < 0)
+ {
+ mp_msg (MSGT_NETWORK, MSGL_ERR, "rtp_streaming_start failed\n");
+ streaming_ctrl_free (stream->streaming_ctrl);
+ stream->streaming_ctrl = NULL;
+
+ return STREAM_UNSUPORTED;
+ }
+
+ stream->type = STREAMTYPE_STREAM;
+ fixup_network_stream_cache (stream);
+
+ return STREAM_OK;
+}
+
+stream_info_t stream_info_rtp = {
+ "MPEG over RTP streaming",
+ "rtp",
+ "Dave Chapman, Benjamin Zores",
+ "native rtp support",
+ rtp_stream_open,
+ { "rtp", NULL},
+ NULL,
+ 0 // Urls are an option string
+};
Added: trunk/stream/stream_udp.c
==============================================================================
--- (empty file)
+++ trunk/stream/stream_udp.c Fri Aug 4 20:32:36 2006
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2006 Benjamin Zores
+ * Stream layer for MPEG over UDP, based on previous work from Dave Chapman
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "stream.h"
+#include "url.h"
+#include "rtp.h"
+
+static int
+udp_streaming_start (stream_t *stream)
+{
+ streaming_ctrl_t *streaming_ctrl;
+ int fd;
+
+ if (!stream)
+ return -1;
+
+ streaming_ctrl = stream->streaming_ctrl;
+ fd = stream->fd;
+
+ if (fd < 0)
+ {
+ fd = rtp_open_socket (streaming_ctrl->url);
+ if (fd < 0)
+ return -1;
+ stream->fd = fd;
+ }
+
+ streaming_ctrl->streaming_read = nop_streaming_read;
+ streaming_ctrl->streaming_seek = nop_streaming_seek;
+ streaming_ctrl->prebuffer_size = 64 * 1024; /* 64 KBytes */
+ streaming_ctrl->buffering = 0;
+ streaming_ctrl->status = streaming_playing_e;
+
+ return 0;
+}
+
+static int
+udp_stream_open (stream_t *stream, int mode, void *opts, int *file_format)
+{
+ URL_t *url;
+ extern int network_bandwidth;
+
+ mp_msg (MSGT_OPEN, MSGL_INFO, "STREAM_UDP, URL: %s\n", stream->url);
+ stream->streaming_ctrl = streaming_ctrl_new ();
+ if (!stream->streaming_ctrl)
+ return STREAM_ERROR;
+
+ stream->streaming_ctrl->bandwidth = network_bandwidth;
+ url = url_new (stream->url);
+ stream->streaming_ctrl->url = check4proxies (url);
+
+ if (url->port == 0)
+ {
+ mp_msg (MSGT_NETWORK, MSGL_ERR,
+ "You must enter a port number for UDP streams!\n");
+ streaming_ctrl_free (stream->streaming_ctrl);
+ stream->streaming_ctrl = NULL;
+
+ return STREAM_UNSUPORTED;
+ }
+
+ if (udp_streaming_start (stream) < 0)
+ {
+ mp_msg (MSGT_NETWORK, MSGL_ERR, "udp_streaming_start failed\n");
+ streaming_ctrl_free (stream->streaming_ctrl);
+ stream->streaming_ctrl = NULL;
+
+ return STREAM_UNSUPORTED;
+ }
+
+ stream->type = STREAMTYPE_STREAM;
+ fixup_network_stream_cache (stream);
+
+ return STREAM_OK;
+}
+
+stream_info_t stream_info_udp = {
+ "MPEG over UDP streaming",
+ "udp",
+ "Dave Chapman, Benjamin Zores",
+ "native udp support",
+ udp_stream_open,
+ { "udp", NULL},
+ NULL,
+ 0 // Urls are an option string
+};
More information about the MPlayer-cvslog
mailing list