changeset 14720:4e83e075024f

added support for raw udp:// streaming
author nicodvb
date Thu, 17 Feb 2005 20:55:57 +0000
parents a76f1a68ed75
children 1f5d0760d037
files libmpdemux/network.c
diffstat 1 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/network.c	Thu Feb 17 19:32:44 2005 +0000
+++ b/libmpdemux/network.c	Thu Feb 17 20:55:57 2005 +0000
@@ -700,6 +700,11 @@
 #endif
 		}
 
+		if(!strcasecmp(url->protocol, "udp") ) {
+			*file_format = DEMUXER_TYPE_UNKNOWN;
+			return 0;
+		}
+
 	// Old, hacked RTP support, which works for MPEG Streams
 	//   RTP streams only:
 		// Checking for RTP
@@ -1185,7 +1190,7 @@
 }
 
 static int
-rtp_streaming_start( stream_t *stream ) {
+rtp_streaming_start( stream_t *stream, int raw_udp ) {
 	streaming_ctrl_t *streaming_ctrl;
 	int fd;
 
@@ -1199,7 +1204,10 @@
 		stream->fd = fd;
 	}
 
-	streaming_ctrl->streaming_read = rtp_streaming_read;
+	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;
@@ -1244,7 +1252,7 @@
 				mp_msg(MSGT_NETWORK,MSGL_ERR,"streaming_start : Closing socket %d failed %s\n",stream->fd,strerror(errno));
 		}
 		stream->fd = -1;
-		ret = rtp_streaming_start( stream );
+		ret = rtp_streaming_start( stream, 0);
 	} else
 
 	if( !strcasecmp( stream->streaming_ctrl->url->protocol, "pnm")) {
@@ -1269,6 +1277,14 @@
 		    return -1;
 #endif
 		}
+	} else if(!strcasecmp( stream->streaming_ctrl->url->protocol, "udp")) {
+		stream->fd = -1;
+		ret = rtp_streaming_start(stream, 1);
+		if(ret<0) {
+			mp_msg(MSGT_NETWORK,MSGL_ERR,"rtp_streaming_start(udp) failed\n");
+			return -1;
+		}
+		*demuxer_type =  DEMUXER_TYPE_UNKNOWN;
 	} else
 
 	// For connection-oriented streams, we can usually determine the streaming type.