# HG changeset patch # User rbultje # Date 1266434642 0 # Node ID 9b2e63adc0fafdac282f359f208dfbfb27f5e228 # Parent 57ef8feb5745130a81a5537f140ed4b9d028f808 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>. diff -r 57ef8feb5745 -r 9b2e63adc0fa rtsp.c --- 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. */