/* 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);
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 */
}
/* 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;
}
}
-void rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
+void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
{
const char *p;
}
}
-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)
{
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));
}
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)
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);
}
/**
"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;
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;
}
"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) {
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;
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];
"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;
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));
RTSPState *rt = s->priv_data;
int ret;
- ret = rtsp_connect(s);
+ ret = ff_rtsp_connect(s);
if (ret)
return ret;
/* 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;
}
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;
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 '$' */
"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;
}
}
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;
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");
}
}
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;
}
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;
}
}
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;
}
//@}
} RTSPStream;
-void rtsp_parse_line(RTSPMessageHeader *reply, const char *buf);
+void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf);
#if LIBAVFORMAT_VERSION_INT < (53 << 16)
extern int rtsp_default_protocols;
extern int rtsp_rtp_port_min;
extern int rtsp_rtp_port_max;
-int rtsp_pause(AVFormatContext *s);
-int rtsp_resume(AVFormatContext *s);
-
/**
* Send a command to the RTSP server without waiting for the reply.
*
* @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,
+void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s,
const char *cmd,
const unsigned char *send_content,
int send_content_length);
*
* @see rtsp_send_cmd_with_content_async
*/
-void rtsp_send_cmd_async(AVFormatContext *s, const char *cmd);
+void ff_rtsp_send_cmd_async(AVFormatContext *s, const char *cmd);
/**
* Send a command to the RTSP server and wait for the reply.
* @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,
+void ff_rtsp_send_cmd_with_content(AVFormatContext *s,
const char *cmd,
RTSPMessageHeader *reply,
unsigned char **content_ptr,
*
* @see rtsp_send_cmd_with_content
*/
-void rtsp_send_cmd(AVFormatContext *s, const char *cmd,
+void ff_rtsp_send_cmd(AVFormatContext *s, const char *cmd,
RTSPMessageHeader *reply, unsigned char **content_ptr);
/**
* @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,
+int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
unsigned char **content_ptr,
int return_on_interleaved_data);
* @returns 0 on success, < 0 on error. Cleans up all allocations done
* within the function on error.
*/
-int rtsp_connect(AVFormatContext *s);
+int ff_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);
+void ff_rtsp_close_streams(AVFormatContext *s);
#endif /* AVFORMAT_RTSP_H */