|
@@ -250,7 +250,7 @@ static const AttrNameMap attr_names[]=
|
|
|
/* parse the attribute line from the fmtp a line of an sdp resonse. This
|
|
|
* is broken out as a function because it is used in rtp_h264.c, which is
|
|
|
* forthcoming. */
|
|
|
-int rtsp_next_attr_and_value(const char **p, char *attr, int attr_size,
|
|
|
+int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size,
|
|
|
char *value, int value_size)
|
|
|
{
|
|
|
skip_spaces(p);
|
|
@@ -279,7 +279,7 @@ static void sdp_parse_fmtp(AVStream *st, const char *p)
|
|
|
RTPPayloadData *rtp_payload_data = &rtsp_st->rtp_payload_data;
|
|
|
|
|
|
/* loop on each attribute */
|
|
|
- while (rtsp_next_attr_and_value(&p, attr, sizeof(attr),
|
|
|
+ while (ff_rtsp_next_attr_and_value(&p, attr, sizeof(attr),
|
|
|
value, sizeof(value))) {
|
|
|
/* grab the codec extra_data from the config parameter of the fmtp
|
|
|
* line */
|
|
@@ -572,7 +572,7 @@ static int sdp_parse(AVFormatContext *s, const char *content)
|
|
|
}
|
|
|
|
|
|
/* close and free RTSP streams */
|
|
|
-void rtsp_close_streams(AVFormatContext *s)
|
|
|
+void ff_rtsp_close_streams(AVFormatContext *s)
|
|
|
{
|
|
|
RTSPState *rt = s->priv_data;
|
|
|
int i;
|
|
@@ -819,7 +819,7 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
|
|
|
+void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
|
|
|
{
|
|
|
const char *p;
|
|
|
|
|
@@ -881,7 +881,7 @@ static void rtsp_skip_packet(AVFormatContext *s)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
|
|
|
+int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
|
|
|
unsigned char **content_ptr,
|
|
|
int return_on_interleaved_data)
|
|
|
{
|
|
@@ -932,7 +932,7 @@ int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
|
|
|
get_word(buf1, sizeof(buf1), &p);
|
|
|
reply->status_code = atoi(buf1);
|
|
|
} else {
|
|
|
- rtsp_parse_line(reply, p);
|
|
|
+ ff_rtsp_parse_line(reply, p);
|
|
|
av_strlcat(rt->last_reply, p, sizeof(rt->last_reply));
|
|
|
av_strlcat(rt->last_reply, "\n", sizeof(rt->last_reply));
|
|
|
}
|
|
@@ -968,7 +968,7 @@ int rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void rtsp_send_cmd_with_content_async(AVFormatContext *s,
|
|
|
+void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s,
|
|
|
const char *cmd,
|
|
|
const unsigned char *send_content,
|
|
|
int send_content_length)
|
|
@@ -1000,30 +1000,30 @@ void rtsp_send_cmd_with_content_async(AVFormatContext *s,
|
|
|
rt->last_cmd_time = av_gettime();
|
|
|
}
|
|
|
|
|
|
-void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd)
|
|
|
+void ff_rtsp_send_cmd_async(AVFormatContext *s, const char *cmd)
|
|
|
{
|
|
|
- rtsp_send_cmd_with_content_async(s, cmd, NULL, 0);
|
|
|
+ ff_rtsp_send_cmd_with_content_async(s, cmd, NULL, 0);
|
|
|
}
|
|
|
|
|
|
-void rtsp_send_cmd(AVFormatContext *s,
|
|
|
+void ff_rtsp_send_cmd(AVFormatContext *s,
|
|
|
const char *cmd, RTSPMessageHeader *reply,
|
|
|
unsigned char **content_ptr)
|
|
|
{
|
|
|
- rtsp_send_cmd_async(s, cmd);
|
|
|
+ ff_rtsp_send_cmd_async(s, cmd);
|
|
|
|
|
|
- rtsp_read_reply(s, reply, content_ptr, 0);
|
|
|
+ ff_rtsp_read_reply(s, reply, content_ptr, 0);
|
|
|
}
|
|
|
|
|
|
-void rtsp_send_cmd_with_content(AVFormatContext *s,
|
|
|
+void ff_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);
|
|
|
+ ff_rtsp_send_cmd_with_content_async(s, cmd, send_content, send_content_length);
|
|
|
|
|
|
- rtsp_read_reply(s, reply, content_ptr, 0);
|
|
|
+ ff_rtsp_read_reply(s, reply, content_ptr, 0);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1162,7 +1162,7 @@ static int make_setup_request(AVFormatContext *s, const char *host, int port,
|
|
|
"RealChallenge2: %s, sd=%s\r\n",
|
|
|
rt->session_id, real_res, real_csum);
|
|
|
}
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code == 461 /* Unsupported protocol */ && i == 0) {
|
|
|
err = 1;
|
|
|
goto fail;
|
|
@@ -1282,7 +1282,7 @@ static int rtsp_read_play(AVFormatContext *s)
|
|
|
rt->control_uri,
|
|
|
(double)rt->seek_timestamp / AV_TIME_BASE);
|
|
|
}
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code != RTSP_STATUS_OK) {
|
|
|
return -1;
|
|
|
}
|
|
@@ -1313,7 +1313,7 @@ static int rtsp_setup_input_streams(AVFormatContext *s)
|
|
|
"Require: com.real.retain-entity-for-setup\r\n",
|
|
|
sizeof(cmd));
|
|
|
}
|
|
|
- rtsp_send_cmd(s, cmd, reply, &content);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, &content);
|
|
|
if (!content)
|
|
|
return AVERROR_INVALIDDATA;
|
|
|
if (reply->status_code != RTSP_STATUS_OK) {
|
|
@@ -1351,7 +1351,7 @@ static int rtsp_setup_output_streams(AVFormatContext *s)
|
|
|
return AVERROR_INVALIDDATA;
|
|
|
}
|
|
|
av_log(s, AV_LOG_INFO, "SDP:\n%s\n", sdp);
|
|
|
- rtsp_send_cmd_with_content(s, cmd, reply, NULL, sdp, strlen(sdp));
|
|
|
+ ff_rtsp_send_cmd_with_content(s, cmd, reply, NULL, sdp, strlen(sdp));
|
|
|
av_free(sdp);
|
|
|
if (reply->status_code != RTSP_STATUS_OK)
|
|
|
return AVERROR_INVALIDDATA;
|
|
@@ -1378,7 +1378,7 @@ static int rtsp_setup_output_streams(AVFormatContext *s)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int rtsp_connect(AVFormatContext *s)
|
|
|
+int ff_rtsp_connect(AVFormatContext *s)
|
|
|
{
|
|
|
RTSPState *rt = s->priv_data;
|
|
|
char host[1024], path[1024], tcpname[1024], cmd[2048], auth[128];
|
|
@@ -1478,7 +1478,7 @@ redirect:
|
|
|
"CompanyID: KnKV4M4I/B2FjJ1TToLycw==\r\n"
|
|
|
"GUID: 00000000-0000-0000-0000-000000000000\r\n",
|
|
|
sizeof(cmd));
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code != RTSP_STATUS_OK) {
|
|
|
err = AVERROR_INVALIDDATA;
|
|
|
goto fail;
|
|
@@ -1522,7 +1522,7 @@ redirect:
|
|
|
rt->seek_timestamp = 0; /* default is to start stream at position zero */
|
|
|
return 0;
|
|
|
fail:
|
|
|
- rtsp_close_streams(s);
|
|
|
+ ff_rtsp_close_streams(s);
|
|
|
url_close(rt->rtsp_hd);
|
|
|
if (reply->status_code >=300 && reply->status_code < 400 && s->iformat) {
|
|
|
av_strlcpy(s->filename, reply->location, sizeof(s->filename));
|
|
@@ -1542,7 +1542,7 @@ static int rtsp_read_header(AVFormatContext *s,
|
|
|
RTSPState *rt = s->priv_data;
|
|
|
int ret;
|
|
|
|
|
|
- ret = rtsp_connect(s);
|
|
|
+ ret = ff_rtsp_connect(s);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
@@ -1550,7 +1550,7 @@ static int rtsp_read_header(AVFormatContext *s,
|
|
|
/* do not start immediately */
|
|
|
} else {
|
|
|
if (rtsp_read_play(s) < 0) {
|
|
|
- rtsp_close_streams(s);
|
|
|
+ ff_rtsp_close_streams(s);
|
|
|
url_close(rt->rtsp_hd);
|
|
|
return AVERROR_INVALIDDATA;
|
|
|
}
|
|
@@ -1611,7 +1611,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
|
|
|
if (tcp_fd != -1 && FD_ISSET(tcp_fd, &rfds)) {
|
|
|
RTSPMessageHeader reply;
|
|
|
|
|
|
- rtsp_read_reply(s, &reply, NULL, 0);
|
|
|
+ ff_rtsp_read_reply(s, &reply, NULL, 0);
|
|
|
/* XXX: parse message */
|
|
|
if (rt->state != RTSP_STATE_STREAMING)
|
|
|
return 0;
|
|
@@ -1635,7 +1635,7 @@ redo:
|
|
|
for (;;) {
|
|
|
RTSPMessageHeader reply;
|
|
|
|
|
|
- ret = rtsp_read_reply(s, &reply, NULL, 1);
|
|
|
+ ret = ff_rtsp_read_reply(s, &reply, NULL, 1);
|
|
|
if (ret == -1)
|
|
|
return -1;
|
|
|
if (ret == 1) /* received '$' */
|
|
@@ -1751,7 +1751,7 @@ static int rtsp_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|
|
"SET_PARAMETER %s RTSP/1.0\r\n"
|
|
|
"Unsubscribe: %s\r\n",
|
|
|
rt->control_uri, rt->last_subscription);
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code != RTSP_STATUS_OK)
|
|
|
return AVERROR_INVALIDDATA;
|
|
|
rt->need_subscription = 1;
|
|
@@ -1787,7 +1787,7 @@ static int rtsp_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|
|
}
|
|
|
}
|
|
|
av_strlcatf(cmd, sizeof(cmd), "%s\r\n", rt->last_subscription);
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code != RTSP_STATUS_OK)
|
|
|
return AVERROR_INVALIDDATA;
|
|
|
rt->need_subscription = 0;
|
|
@@ -1809,9 +1809,9 @@ static int rtsp_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|
|
snprintf(cmd, sizeof(cmd) - 1,
|
|
|
"GET_PARAMETER %s RTSP/1.0\r\n",
|
|
|
rt->control_uri);
|
|
|
- rtsp_send_cmd_async(s, cmd);
|
|
|
+ ff_rtsp_send_cmd_async(s, cmd);
|
|
|
} else {
|
|
|
- rtsp_send_cmd_async(s, "OPTIONS * RTSP/1.0\r\n");
|
|
|
+ ff_rtsp_send_cmd_async(s, "OPTIONS * RTSP/1.0\r\n");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1833,7 +1833,7 @@ static int rtsp_read_pause(AVFormatContext *s)
|
|
|
snprintf(cmd, sizeof(cmd),
|
|
|
"PAUSE %s RTSP/1.0\r\n",
|
|
|
rt->control_uri);
|
|
|
- rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
+ ff_rtsp_send_cmd(s, cmd, reply, NULL);
|
|
|
if (reply->status_code != RTSP_STATUS_OK) {
|
|
|
return -1;
|
|
|
}
|
|
@@ -1882,9 +1882,9 @@ static int rtsp_read_close(AVFormatContext *s)
|
|
|
snprintf(cmd, sizeof(cmd),
|
|
|
"TEARDOWN %s RTSP/1.0\r\n",
|
|
|
s->filename);
|
|
|
- rtsp_send_cmd_async(s, cmd);
|
|
|
+ ff_rtsp_send_cmd_async(s, cmd);
|
|
|
|
|
|
- rtsp_close_streams(s);
|
|
|
+ ff_rtsp_close_streams(s);
|
|
|
url_close(rt->rtsp_hd);
|
|
|
return 0;
|
|
|
}
|
|
@@ -1964,13 +1964,13 @@ static int sdp_read_header(AVFormatContext *s, AVFormatParameters *ap)
|
|
|
}
|
|
|
return 0;
|
|
|
fail:
|
|
|
- rtsp_close_streams(s);
|
|
|
+ ff_rtsp_close_streams(s);
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
static int sdp_read_close(AVFormatContext *s)
|
|
|
{
|
|
|
- rtsp_close_streams(s);
|
|
|
+ ff_rtsp_close_streams(s);
|
|
|
return 0;
|
|
|
}
|
|
|
|