Commit dfd017bf authored by Martin Storsjö's avatar Martin Storsjö Committed by Ronald S. Bultje

Add functions to send RTSP commands with content attached to them. This will

be used eventually in the RTSP muxer (see thread "[PATCH] RTSP muxer, round
3" on mailinglist).

Patch by Martin Storsjö <$firstname $firstname st>.

Originally committed as revision 21862 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 69a28f3e
...@@ -932,7 +932,10 @@ static int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, ...@@ -932,7 +932,10 @@ static int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
return 0; return 0;
} }
static void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd) static void rtsp_send_cmd_with_content_async(AVFormatContext *s,
const char *cmd,
const unsigned char *send_content,
int send_content_length)
{ {
RTSPState *rt = s->priv_data; RTSPState *rt = s->priv_data;
char buf[4096], buf1[1024]; char buf[4096], buf1[1024];
...@@ -949,14 +952,23 @@ static void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd) ...@@ -949,14 +952,23 @@ static void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd)
av_strlcatf(buf, sizeof(buf), av_strlcatf(buf, sizeof(buf),
"Authorization: Basic %s\r\n", "Authorization: Basic %s\r\n",
rt->auth_b64); rt->auth_b64);
if (send_content_length > 0 && send_content)
av_strlcatf(buf, sizeof(buf), "Content-Length: %d\r\n", send_content_length);
av_strlcat(buf, "\r\n", sizeof(buf)); av_strlcat(buf, "\r\n", sizeof(buf));
dprintf(s, "Sending:\n%s--\n", buf); dprintf(s, "Sending:\n%s--\n", buf);
url_write(rt->rtsp_hd, buf, strlen(buf)); url_write(rt->rtsp_hd, buf, strlen(buf));
if (send_content_length > 0 && send_content)
url_write(rt->rtsp_hd, send_content, send_content_length);
rt->last_cmd_time = av_gettime(); rt->last_cmd_time = av_gettime();
} }
static void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd)
{
rtsp_send_cmd_with_content_async(s, cmd, NULL, 0);
}
static void rtsp_send_cmd(AVFormatContext *s, static void rtsp_send_cmd(AVFormatContext *s,
const char *cmd, RTSPMessageHeader *reply, const char *cmd, RTSPMessageHeader *reply,
unsigned char **content_ptr) unsigned char **content_ptr)
...@@ -966,6 +978,18 @@ static void rtsp_send_cmd(AVFormatContext *s, ...@@ -966,6 +978,18 @@ 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,
const char *cmd,
RTSPMessageHeader *reply,
unsigned char **content_ptr,
const unsigned char *send_content,
int send_content_length)
{
rtsp_send_cmd_with_content_async(s, cmd, send_content, send_content_length);
rtsp_read_reply(s, reply, content_ptr, 0);
}
/** /**
* @returns 0 on success, <0 on error, 1 if protocol is unavailable. * @returns 0 on success, <0 on error, 1 if protocol is unavailable.
*/ */
......
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