diff options
Diffstat (limited to 'stream/stream_rtsp.c')
-rw-r--r-- | stream/stream_rtsp.c | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/stream/stream_rtsp.c b/stream/stream_rtsp.c deleted file mode 100644 index e02255e531..0000000000 --- a/stream/stream_rtsp.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * based on previous Real RTSP support from Roberto Togni and xine team. - * - * Copyright (C) 2006 Benjamin Zores - * - * This file is part of MPlayer. - * - * MPlayer 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. - * - * MPlayer 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 MPlayer; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <sys/types.h> -#include <ctype.h> -#include "config.h" -#if !HAVE_WINSOCK2_H -#include <netinet/in.h> -#include <sys/socket.h> -#include <arpa/inet.h> -#else -#include <winsock2.h> -#include <ws2tcpip.h> -#endif -#include <errno.h> - -#include "network.h" -#include "stream.h" -#include "tcp.h" -#include "librtsp/rtsp.h" -#include "librtsp/rtsp_session.h" - -#define RTSP_DEFAULT_PORT 554 - -extern int network_bandwidth; - -static int -rtsp_streaming_read (int fd, char *buffer, - int size, streaming_ctrl_t *stream_ctrl) -{ - return rtsp_session_read (stream_ctrl->data, buffer, size); -} - -static int -rtsp_streaming_start (stream_t *stream) -{ - int fd; - rtsp_session_t *rtsp; - char *mrl; - char *file; - int port; - int redirected, temp; - - if (!stream) - return -1; - - /* counter so we don't get caught in infinite redirections */ - temp = 5; - - do { - redirected = 0; - - fd = connect2Server (stream->streaming_ctrl->url->hostname, - port = (stream->streaming_ctrl->url->port ? - stream->streaming_ctrl->url->port : - RTSP_DEFAULT_PORT), 1); - - if (fd < 0 && !stream->streaming_ctrl->url->port) - fd = connect2Server (stream->streaming_ctrl->url->hostname, - port = 7070, 1); - - if (fd < 0) - return -1; - - file = stream->streaming_ctrl->url->file; - if (file[0] == '/') - file++; - - mrl = malloc (strlen (stream->streaming_ctrl->url->hostname) - + strlen (file) + 16); - - sprintf (mrl, "rtsp://%s:%i/%s", - stream->streaming_ctrl->url->hostname, port, file); - - rtsp = rtsp_session_start (fd, &mrl, file, - stream->streaming_ctrl->url->hostname, - port, &redirected, - stream->streaming_ctrl->bandwidth, - stream->streaming_ctrl->url->username, - stream->streaming_ctrl->url->password); - - if (redirected == 1) - { - url_free (stream->streaming_ctrl->url); - stream->streaming_ctrl->url = url_new (mrl); - closesocket (fd); - } - - free (mrl); - temp--; - } while ((redirected != 0) && (temp > 0)); - - if (!rtsp) - return -1; - - stream->fd = fd; - stream->streaming_ctrl->data = rtsp; - - stream->streaming_ctrl->streaming_read = rtsp_streaming_read; - stream->streaming_ctrl->streaming_seek = NULL; - stream->streaming_ctrl->prebuffer_size = 128*1024; // 640 KBytes - stream->streaming_ctrl->buffering = 1; - stream->streaming_ctrl->status = streaming_playing_e; - - return 0; -} - -static void -rtsp_streaming_close (struct stream *s) -{ - rtsp_session_t *rtsp = NULL; - - rtsp = (rtsp_session_t *) s->streaming_ctrl->data; - if (rtsp) - rtsp_session_end (rtsp); -} - -static int -rtsp_streaming_open (stream_t *stream, int mode, void *opts, int *file_format) -{ - URL_t *url; - extern int index_mode; - - mp_msg (MSGT_OPEN, MSGL_V, "STREAM_RTSP, 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); - - stream->fd = -1; - index_mode = -1; /* prevent most RTSP streams from locking due to -idx */ - if (rtsp_streaming_start (stream) < 0) - { - streaming_ctrl_free (stream->streaming_ctrl); - stream->streaming_ctrl = NULL; - return STREAM_UNSUPPORTED; - } - - fixup_network_stream_cache (stream); - stream->type = STREAMTYPE_STREAM; - stream->close = rtsp_streaming_close; - - return STREAM_OK; -} - -const stream_info_t stream_info_rtsp = { - "RTSP streaming", - "rtsp", - "Benjamin Zores, Roberto Togni", - "ported from xine", - rtsp_streaming_open, - {"rtsp", NULL}, - NULL, - 0 /* Urls are an option string */ -}; |