rtspenc: Make sure BYE packets are sent before TEARDOWN
Also make sure the BYE packets are sent at all when using TCP interleaved transport. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
@@ -638,7 +638,7 @@ int ff_sdp_parse(AVFormatContext *s, const char *content)
|
||||
}
|
||||
#endif /* CONFIG_RTPDEC */
|
||||
|
||||
void ff_rtsp_undo_setup(AVFormatContext *s)
|
||||
void ff_rtsp_undo_setup(AVFormatContext *s, int send_packets)
|
||||
{
|
||||
RTSPState *rt = s->priv_data;
|
||||
int i;
|
||||
@@ -653,6 +653,8 @@ void ff_rtsp_undo_setup(AVFormatContext *s)
|
||||
av_write_trailer(rtpctx);
|
||||
if (rt->lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
|
||||
uint8_t *ptr;
|
||||
if (CONFIG_RTSP_MUXER && rtpctx->pb && send_packets)
|
||||
ff_rtsp_tcp_write_packet(s, rtsp_st);
|
||||
avio_close_dyn_buf(rtpctx->pb, &ptr);
|
||||
av_free(ptr);
|
||||
} else {
|
||||
@@ -678,7 +680,7 @@ void ff_rtsp_close_streams(AVFormatContext *s)
|
||||
int i, j;
|
||||
RTSPStream *rtsp_st;
|
||||
|
||||
ff_rtsp_undo_setup(s);
|
||||
ff_rtsp_undo_setup(s, 0);
|
||||
for (i = 0; i < rt->nb_rtsp_streams; i++) {
|
||||
rtsp_st = rt->rtsp_streams[i];
|
||||
if (rtsp_st) {
|
||||
@@ -1549,7 +1551,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
ff_rtsp_undo_setup(s);
|
||||
ff_rtsp_undo_setup(s, 0);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user