rtspclientsink: post error message on RTCP timeout

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9124>
This commit is contained in:
Mathieu Duponchelle 2025-05-29 14:18:57 +02:00
parent 17f9d8a18e
commit eb4caff16a

View File

@ -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);