Mercurial > libavformat.hg
changeset 5667:9b2e63adc0fa libavformat
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>.
author | rbultje |
---|---|
date | Wed, 17 Feb 2010 19:24:02 +0000 |
parents | 57ef8feb5745 |
children | b13205b415b4 |
files | rtsp.c |
diffstat | 1 files changed, 25 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rtsp.c Tue Feb 16 23:00:03 2010 +0000 +++ b/rtsp.c Wed Feb 17 19:24:02 2010 +0000 @@ -932,7 +932,10 @@ 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; char buf[4096], buf1[1024]; @@ -949,14 +952,23 @@ av_strlcatf(buf, sizeof(buf), "Authorization: Basic %s\r\n", 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)); dprintf(s, "Sending:\n%s--\n", 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(); } +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, const char *cmd, RTSPMessageHeader *reply, unsigned char **content_ptr) @@ -966,6 +978,18 @@ 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. */