summaryrefslogtreecommitdiffstats
path: root/stream/librtsp/rtsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'stream/librtsp/rtsp.c')
-rw-r--r--stream/librtsp/rtsp.c104
1 files changed, 13 insertions, 91 deletions
diff --git a/stream/librtsp/rtsp.c b/stream/librtsp/rtsp.c
index 16a77f77d5..932114a762 100644
--- a/stream/librtsp/rtsp.c
+++ b/stream/librtsp/rtsp.c
@@ -33,14 +33,6 @@
#include <stdio.h>
#include <assert.h>
#include "config.h"
-#ifndef HAVE_WINSOCK2
-#define closesocket close
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#else
-#include <winsock2.h>
-#endif
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -50,7 +42,9 @@
#include <sys/time.h>
#include <sys/types.h>
#include <inttypes.h>
-
+#ifdef HAVE_WINSOCK2
+#include <winsock2.h>
+#endif
#include "mp_msg.h"
#include "rtsp.h"
#include "rtsp_session.h"
@@ -60,56 +54,6 @@
#define LOG
*/
-#define BUF_SIZE 4096
-#define HEADER_SIZE 1024
-#define MAX_FIELDS 256
-
-struct rtsp_s {
-
- int s;
-
- char *host;
- int port;
- char *path;
- char *param;
- char *mrl;
- char *user_agent;
-
- char *server;
- unsigned int server_state;
- uint32_t server_caps;
-
- unsigned int cseq;
- char *session;
-
- char *answers[MAX_FIELDS]; /* data of last message */
- char *scheduled[MAX_FIELDS]; /* will be sent with next message */
-};
-
-/*
- * constants
- */
-
-#define RTSP_PROTOCOL_VERSION "RTSP/1.0"
-
-/* server states */
-#define RTSP_CONNECTED 1
-#define RTSP_INIT 2
-#define RTSP_READY 4
-#define RTSP_PLAYING 8
-#define RTSP_RECORDING 16
-
-/* server capabilities */
-#define RTSP_OPTIONS 0x001
-#define RTSP_DESCRIBE 0x002
-#define RTSP_ANNOUNCE 0x004
-#define RTSP_SETUP 0x008
-#define RTSP_GET_PARAMETER 0x010
-#define RTSP_SET_PARAMETER 0x020
-#define RTSP_TEARDOWN 0x040
-#define RTSP_PLAY 0x080
-#define RTSP_RECORD 0x100
-
/*
* network utilities
*/
@@ -575,14 +519,22 @@ int rtsp_read_data(rtsp_t *s, char *buffer, unsigned int size) {
//rtsp_t *rtsp_connect(const char *mrl, const char *user_agent) {
rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *user_agent) {
- rtsp_t *s=malloc(sizeof(rtsp_t));
+ rtsp_t *s;
int i;
-
+
+ if (fd < 0) {
+ mp_msg(MSGT_OPEN, MSGL_ERR, "rtsp: failed to connect to '%s'\n", host);
+ return NULL;
+ }
+
+ s = malloc(sizeof(rtsp_t));
+
for (i=0; i<MAX_FIELDS; i++) {
s->answers[i]=NULL;
s->scheduled[i]=NULL;
}
+ s->s = fd;
s->server=NULL;
s->server_state=0;
s->server_caps=0;
@@ -605,13 +557,6 @@ rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *
s->param++;
//mp_msg(MSGT_OPEN, MSGL_INFO, "path=%s\n", s->path);
//mp_msg(MSGT_OPEN, MSGL_INFO, "param=%s\n", s->param ? s->param : "NULL");
- s->s = fd;
-
- if (s->s < 0) {
- mp_msg(MSGT_OPEN, MSGL_ERR, "rtsp: failed to connect to '%s'\n", s->host);
- rtsp_close(s);
- return NULL;
- }
s->server_state=RTSP_CONNECTED;
@@ -632,29 +577,6 @@ rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *
/*
- * closes an rtsp connection
- */
-
-void rtsp_close(rtsp_t *s) {
-
- if (s->server_state)
- {
- if (s->server_state == RTSP_PLAYING)
- rtsp_request_teardown (s, NULL);
- closesocket (s->s);
- }
-
- if (s->path) free(s->path);
- if (s->host) free(s->host);
- if (s->mrl) free(s->mrl);
- if (s->session) free(s->session);
- if (s->user_agent) free(s->user_agent);
- rtsp_free_answers(s);
- rtsp_unschedule_all(s);
- free(s);
-}
-
-/*
* search in answers for tags. returns a pointer to the content
* after the first matched tag. returns NULL if no match found.
*/