From eb4caff16a2bfea37d75d2ed2e86d3f5a0d39af0 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 29 May 2025 14:18:57 +0200 Subject: [PATCH] rtspclientsink: post error message on RTCP timeout Part-of: --- .../gst/rtsp-sink/gstrtspclientsink.c | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c b/subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c index abb9642786..8eccc59853 100644 --- a/subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c +++ b/subprojects/gst-rtsp-server/gst/rtsp-sink/gstrtspclientsink.c @@ -3988,6 +3988,24 @@ do_send_data_list (GstBufferList * buffer_list, guint8 channel, return res == GST_RTSP_OK; } +static void +transport_timed_out_notify_cb (GstRTSPStreamTransport * transport, + GParamSpec * unused, GstRTSPClientSink * sink) +{ + gboolean timed_out; + + g_object_get (G_OBJECT (transport), "timed-out", &timed_out, NULL); + + GST_DEBUG_OBJECT (sink, "Transport %p timed out notify: %d", transport, + timed_out); + + if (timed_out) { + GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL), + ("stream transport timed out")); + } +} + + static GstRTSPResult gst_rtsp_client_sink_setup_streams (GstRTSPClientSink * sink, gboolean async) { @@ -4273,10 +4291,13 @@ gst_rtsp_client_sink_setup_streams (GstRTSPClientSink * sink, gboolean async) if (!retry) { GST_DEBUG ("Configuring the stream transport for stream %d", context->index); - if (context->stream_transport == NULL) + if (context->stream_transport == NULL) { context->stream_transport = gst_rtsp_stream_transport_new (stream, transport); - else + + g_signal_connect (context->stream_transport, "notify::timed-out", + (GCallback) transport_timed_out_notify_cb, sink); + } else gst_rtsp_stream_transport_set_transport (context->stream_transport, transport);