From f3bf43f443e8c5435cb2467514ad1c5af19fd0bb Mon Sep 17 00:00:00 2001 From: diego Date: Fri, 4 Jul 2008 20:14:00 +0000 Subject: Rename stream_livedotcom.c to stream_live555.c, the name is used everywhere. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27199 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/stream_live555.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 stream/stream_live555.c (limited to 'stream/stream_live555.c') diff --git a/stream/stream_live555.c b/stream/stream_live555.c new file mode 100644 index 0000000000..13b5022883 --- /dev/null +++ b/stream/stream_live555.c @@ -0,0 +1,119 @@ + +#include "config.h" + +#include +#include +#include +#include + +#include "stream.h" +#include "network.h" +#include "libmpdemux/demuxer.h" +#include "help_mp.h" + +extern int network_bandwidth; + +static int _rtsp_streaming_seek(int fd, off_t pos, streaming_ctrl_t* streaming_ctrl) { + return -1; // For now, we don't handle RTSP stream seeking +} + +static int rtsp_streaming_start(stream_t* stream) { + stream->streaming_ctrl->streaming_seek = _rtsp_streaming_seek; + return 0; +} + + +static int open_live_rtsp_sip(stream_t *stream,int mode, void* opts, int* file_format) { + URL_t *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); + //url_free(url); + + mp_msg(MSGT_OPEN, MSGL_INFO, "STREAM_LIVE555, URL: %s\n", stream->url); + + if(rtsp_streaming_start(stream) < 0) { + mp_msg(MSGT_NETWORK,MSGL_ERR,"rtsp_streaming_start failed\n"); + goto fail; + } + + *file_format = DEMUXER_TYPE_RTP; + stream->type = STREAMTYPE_STREAM; + return STREAM_OK; + +fail: + streaming_ctrl_free( stream->streaming_ctrl ); + stream->streaming_ctrl = NULL; + return STREAM_ERROR; +} + +static int open_live_sdp(stream_t *stream,int mode, void* opts, int* file_format) { + int f; + char *filename = stream->url; + off_t len; + char* sdpDescription; + ssize_t numBytesRead; + + if(strncmp("sdp://",filename,6) == 0) { + filename += 6; +#if defined(__CYGWIN__) || defined(__MINGW32__) + f = open(filename,O_RDONLY|O_BINARY); +#else + f = open(filename,O_RDONLY); +#endif + if(f < 0) { + mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_FileNotFound,filename); + return STREAM_ERROR; + } + + len=lseek(f,0,SEEK_END); + lseek(f,0,SEEK_SET); + if(len == -1) + return STREAM_ERROR; + if(len > SIZE_MAX - 1) + return STREAM_ERROR; + + sdpDescription = malloc(len+1); + if(sdpDescription == NULL) return STREAM_ERROR; + numBytesRead = read(f, sdpDescription, len); + if(numBytesRead != len) { + free(sdpDescription); + return STREAM_ERROR; + } + sdpDescription[len] = '\0'; // to be safe + stream->priv = sdpDescription; + + stream->type = STREAMTYPE_SDP; + *file_format = DEMUXER_TYPE_RTP; + return STREAM_OK; + } + return STREAM_UNSUPPORTED; +} + + +const stream_info_t stream_info_rtsp_sip = { + "standard RTSP and SIP", + "RTSP and SIP", + "Ross Finlayson", + "Uses LIVE555 Streaming Media library.", + open_live_rtsp_sip, + {"rtsp", "sip", NULL }, + NULL, + 0 // Urls are an option string +}; + +const stream_info_t stream_info_sdp = { + "SDP stream descriptor", + "SDP", + "Ross Finlayson", + "Uses LIVE555 Streaming Media library.", + open_live_sdp, + {"sdp", NULL }, + NULL, + 0 // Urls are an option string +}; -- cgit v1.2.3