From 50aef03b24d949249b020226dffa3a78077f1056 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Wed, 30 Oct 2013 19:12:45 +0200 Subject: rtspenc: Make sure BYE packets are sent before TEARDOWN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also make sure the BYE packets are sent at all when using TCP interleaved transport. Signed-off-by: Martin Storsjö --- libavformat/rtspenc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libavformat/rtspenc.c') diff --git a/libavformat/rtspenc.c b/libavformat/rtspenc.c index d8e5b0e212..8a334ec49b 100644 --- a/libavformat/rtspenc.c +++ b/libavformat/rtspenc.c @@ -136,7 +136,7 @@ static int rtsp_write_header(AVFormatContext *s) return 0; } -static int tcp_write_packet(AVFormatContext *s, RTSPStream *rtsp_st) +int ff_rtsp_tcp_write_packet(AVFormatContext *s, RTSPStream *rtsp_st) { RTSPState *rt = s->priv_data; AVFormatContext *rtpctx = rtsp_st->transport_priv; @@ -217,7 +217,7 @@ static int rtsp_write_packet(AVFormatContext *s, AVPacket *pkt) * packets, so we need to send them out on the TCP connection separately. */ if (!ret && rt->lower_transport == RTSP_LOWER_TRANSPORT_TCP) - ret = tcp_write_packet(s, rtsp_st); + ret = ff_rtsp_tcp_write_packet(s, rtsp_st); return ret; } @@ -225,6 +225,11 @@ static int rtsp_write_close(AVFormatContext *s) { RTSPState *rt = s->priv_data; + // If we want to send RTCP_BYE packets, these are sent by av_write_trailer. + // Thus call this on all streams before doing the teardown. This is + // done within ff_rtsp_undo_setup. + ff_rtsp_undo_setup(s, 1); + ff_rtsp_send_cmd_async(s, "TEARDOWN", rt->control_uri, NULL); ff_rtsp_close_streams(s); -- cgit v1.2.3