mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
ffserver: merge RTSP's teardown & pause routines
They were basically the same. Signed-off-by: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
This commit is contained in:
parent
720530e52a
commit
87079bd055
45
ffserver.c
45
ffserver.c
@ -287,8 +287,7 @@ static void rtsp_cmd_describe(HTTPContext *c, const char *url);
|
||||
static void rtsp_cmd_options(HTTPContext *c, const char *url);
|
||||
static void rtsp_cmd_setup(HTTPContext *c, const char *url, RTSPMessageHeader *h);
|
||||
static void rtsp_cmd_play(HTTPContext *c, const char *url, RTSPMessageHeader *h);
|
||||
static void rtsp_cmd_pause(HTTPContext *c, const char *url, RTSPMessageHeader *h);
|
||||
static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader *h);
|
||||
static void rtsp_cmd_interrupt(HTTPContext *c, const char *url, RTSPMessageHeader *h, int pause_only);
|
||||
|
||||
/* SDP handling */
|
||||
static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
|
||||
@ -2962,9 +2961,9 @@ static int rtsp_parse_request(HTTPContext *c)
|
||||
else if (!strcmp(cmd, "PLAY"))
|
||||
rtsp_cmd_play(c, url, header);
|
||||
else if (!strcmp(cmd, "PAUSE"))
|
||||
rtsp_cmd_pause(c, url, header);
|
||||
rtsp_cmd_interrupt(c, url, header, 1);
|
||||
else if (!strcmp(cmd, "TEARDOWN"))
|
||||
rtsp_cmd_teardown(c, url, header);
|
||||
rtsp_cmd_interrupt(c, url, header, 0);
|
||||
else
|
||||
rtsp_reply_error(c, RTSP_STATUS_METHOD);
|
||||
|
||||
@ -3318,7 +3317,7 @@ static void rtsp_cmd_play(HTTPContext *c, const char *url, RTSPMessageHeader *h)
|
||||
avio_printf(c->pb, "\r\n");
|
||||
}
|
||||
|
||||
static void rtsp_cmd_pause(HTTPContext *c, const char *url, RTSPMessageHeader *h)
|
||||
static void rtsp_cmd_interrupt(HTTPContext *c, const char *url, RTSPMessageHeader *h, int pause_only)
|
||||
{
|
||||
HTTPContext *rtp_c;
|
||||
|
||||
@ -3328,29 +3327,14 @@ static void rtsp_cmd_pause(HTTPContext *c, const char *url, RTSPMessageHeader *h
|
||||
return;
|
||||
}
|
||||
|
||||
if (rtp_c->state != HTTPSTATE_SEND_DATA &&
|
||||
rtp_c->state != HTTPSTATE_WAIT_FEED) {
|
||||
rtsp_reply_error(c, RTSP_STATUS_STATE);
|
||||
return;
|
||||
}
|
||||
|
||||
rtp_c->state = HTTPSTATE_READY;
|
||||
rtp_c->first_pts = AV_NOPTS_VALUE;
|
||||
/* now everything is OK, so we can send the connection parameters */
|
||||
rtsp_reply_header(c, RTSP_STATUS_OK);
|
||||
/* session ID */
|
||||
avio_printf(c->pb, "Session: %s\r\n", rtp_c->session_id);
|
||||
avio_printf(c->pb, "\r\n");
|
||||
}
|
||||
|
||||
static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader *h)
|
||||
{
|
||||
HTTPContext *rtp_c;
|
||||
|
||||
rtp_c = find_rtp_session_with_url(url, h->session_id);
|
||||
if (!rtp_c) {
|
||||
rtsp_reply_error(c, RTSP_STATUS_SESSION);
|
||||
return;
|
||||
if (pause_only) {
|
||||
if (rtp_c->state != HTTPSTATE_SEND_DATA &&
|
||||
rtp_c->state != HTTPSTATE_WAIT_FEED) {
|
||||
rtsp_reply_error(c, RTSP_STATUS_STATE);
|
||||
return;
|
||||
}
|
||||
rtp_c->state = HTTPSTATE_READY;
|
||||
rtp_c->first_pts = AV_NOPTS_VALUE;
|
||||
}
|
||||
|
||||
/* now everything is OK, so we can send the connection parameters */
|
||||
@ -3359,11 +3343,10 @@ static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPMessageHeader
|
||||
avio_printf(c->pb, "Session: %s\r\n", rtp_c->session_id);
|
||||
avio_printf(c->pb, "\r\n");
|
||||
|
||||
/* abort the session */
|
||||
close_connection(rtp_c);
|
||||
if (!pause_only)
|
||||
close_connection(rtp_c);
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************/
|
||||
/* RTP handling */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user