Commit 15ba2315 authored by Martin Storsjö's avatar Martin Storsjö

Add declarations and doxygen documentation of generic rtsp support functions

to rtsp.h, and make the functions non-static

Originally committed as revision 21968 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 2efc97c2
...@@ -572,7 +572,7 @@ static int sdp_parse(AVFormatContext *s, const char *content) ...@@ -572,7 +572,7 @@ static int sdp_parse(AVFormatContext *s, const char *content)
} }
/* close and free RTSP streams */ /* close and free RTSP streams */
static void rtsp_close_streams(AVFormatContext *s) void rtsp_close_streams(AVFormatContext *s)
{ {
RTSPState *rt = s->priv_data; RTSPState *rt = s->priv_data;
int i; int i;
...@@ -879,28 +879,7 @@ static void rtsp_skip_packet(AVFormatContext *s) ...@@ -879,28 +879,7 @@ static void rtsp_skip_packet(AVFormatContext *s)
} }
} }
/** int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
* Read a RTSP message from the server, or prepare to read data
* packets if we're reading data interleaved over the TCP/RTSP
* connection as well.
*
* @param s RTSP demuxer context
* @param reply pointer where the RTSP message header will be stored
* @param content_ptr pointer where the RTSP message body, if any, will
* be stored (length is in reply)
* @param return_on_interleaved_data whether the function may return if we
* encounter a data marker ('$'), which precedes data
* packets over interleaved TCP/RTSP connections. If this
* is set, this function will return 1 after encountering
* a '$'. If it is not set, the function will skip any
* data packets (if they are encountered), until a reply
* has been fully parsed. If no more data is available
* without parsing a reply, it will return an error.
*
* @returns 1 if a data packets is ready to be received, -1 on error,
* and 0 on success.
*/
static int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
unsigned char **content_ptr, unsigned char **content_ptr,
int return_on_interleaved_data) int return_on_interleaved_data)
{ {
...@@ -987,7 +966,7 @@ static int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, ...@@ -987,7 +966,7 @@ static int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
return 0; return 0;
} }
static void rtsp_send_cmd_with_content_async(AVFormatContext *s, void rtsp_send_cmd_with_content_async(AVFormatContext *s,
const char *cmd, const char *cmd,
const unsigned char *send_content, const unsigned char *send_content,
int send_content_length) int send_content_length)
...@@ -1019,12 +998,12 @@ static void rtsp_send_cmd_with_content_async(AVFormatContext *s, ...@@ -1019,12 +998,12 @@ static void rtsp_send_cmd_with_content_async(AVFormatContext *s,
rt->last_cmd_time = av_gettime(); rt->last_cmd_time = av_gettime();
} }
static void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd) void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd)
{ {
rtsp_send_cmd_with_content_async(s, cmd, NULL, 0); rtsp_send_cmd_with_content_async(s, cmd, NULL, 0);
} }
static void rtsp_send_cmd(AVFormatContext *s, void rtsp_send_cmd(AVFormatContext *s,
const char *cmd, RTSPMessageHeader *reply, const char *cmd, RTSPMessageHeader *reply,
unsigned char **content_ptr) unsigned char **content_ptr)
{ {
...@@ -1033,7 +1012,7 @@ static void rtsp_send_cmd(AVFormatContext *s, ...@@ -1033,7 +1012,7 @@ static void rtsp_send_cmd(AVFormatContext *s,
rtsp_read_reply(s, reply, content_ptr, 0); rtsp_read_reply(s, reply, content_ptr, 0);
} }
static void rtsp_send_cmd_with_content(AVFormatContext *s, void rtsp_send_cmd_with_content(AVFormatContext *s,
const char *cmd, const char *cmd,
RTSPMessageHeader *reply, RTSPMessageHeader *reply,
unsigned char **content_ptr, unsigned char **content_ptr,
...@@ -1397,7 +1376,7 @@ static int rtsp_setup_output_streams(AVFormatContext *s) ...@@ -1397,7 +1376,7 @@ static int rtsp_setup_output_streams(AVFormatContext *s)
return 0; return 0;
} }
static int rtsp_connect(AVFormatContext *s) int rtsp_connect(AVFormatContext *s)
{ {
RTSPState *rt = s->priv_data; RTSPState *rt = s->priv_data;
char host[1024], path[1024], tcpname[1024], cmd[2048], auth[128]; char host[1024], path[1024], tcpname[1024], cmd[2048], auth[128];
......
...@@ -326,4 +326,94 @@ extern int rtsp_rtp_port_max; ...@@ -326,4 +326,94 @@ extern int rtsp_rtp_port_max;
int rtsp_pause(AVFormatContext *s); int rtsp_pause(AVFormatContext *s);
int rtsp_resume(AVFormatContext *s); int rtsp_resume(AVFormatContext *s);
/**
* Send a command to the RTSP server without waiting for the reply.
*
* @param s RTSP (de)muxer context
* @param cmd the full first line of the request
* @param send_content if non-null, the data to send as request body content
* @param send_content_length the length of the send_content data, or 0 if
* send_content is null
*/
void rtsp_send_cmd_with_content_async(AVFormatContext *s,
const char *cmd,
const unsigned char *send_content,
int send_content_length);
/**
* Send a command to the RTSP server without waiting for the reply.
*
* @see rtsp_send_cmd_with_content_async
*/
void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd);
/**
* Send a command to the RTSP server and wait for the reply.
*
* @param s RTSP (de)muxer context
* @param cmd the full first line of the request
* @param reply pointer where the RTSP message header will be stored
* @param content_ptr pointer where the RTSP message body, if any, will
* be stored (length is in reply)
* @param send_content if non-null, the data to send as request body content
* @param send_content_length the length of the send_content data, or 0 if
* send_content is null
*/
void rtsp_send_cmd_with_content(AVFormatContext *s,
const char *cmd,
RTSPMessageHeader *reply,
unsigned char **content_ptr,
const unsigned char *send_content,
int send_content_length);
/**
* Send a command to the RTSP server and wait for the reply.
*
* @see rtsp_send_cmd_with_content
*/
void rtsp_send_cmd(AVFormatContext *s, const char *cmd,
RTSPMessageHeader *reply, unsigned char **content_ptr);
/**
* Read a RTSP message from the server, or prepare to read data
* packets if we're reading data interleaved over the TCP/RTSP
* connection as well.
*
* @param s RTSP (de)muxer context
* @param reply pointer where the RTSP message header will be stored
* @param content_ptr pointer where the RTSP message body, if any, will
* be stored (length is in reply)
* @param return_on_interleaved_data whether the function may return if we
* encounter a data marker ('$'), which precedes data
* packets over interleaved TCP/RTSP connections. If this
* is set, this function will return 1 after encountering
* a '$'. If it is not set, the function will skip any
* data packets (if they are encountered), until a reply
* has been fully parsed. If no more data is available
* without parsing a reply, it will return an error.
*
* @returns 1 if a data packets is ready to be received, -1 on error,
* and 0 on success.
*/
int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
unsigned char **content_ptr,
int return_on_interleaved_data);
/**
* Connect to the RTSP server and set up the individual media streams.
* This can be used for both muxers and demuxers.
*
* @param s RTSP (de)muxer context
*
* @returns 0 on success, < 0 on error. Cleans up all allocations done
* within the function on error.
*/
int rtsp_connect(AVFormatContext *s);
/**
* Close and free all streams within the RTSP (de)muxer
*
* @param s RTSP (de)muxer context
*/
void rtsp_close_streams(AVFormatContext *s);
#endif /* AVFORMAT_RTSP_H */ #endif /* AVFORMAT_RTSP_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment