(gst-rtsp-server)1 client can't receive rtp packet while 2 clients connect to server choosing rtsp over tcp

Bruce Liang Bruce.Liang at abilitycorp.com.tw
Wed Jun 1 12:23:29 UTC 2022


Hi,

I found that the GstRTSPStreamTransport will be removed when the problem occurs.

The do_send_messages(.. ) in rtsp-client.c will call set_data_seq(..) if the message has been queued for transmission in watch.

And the function do_send_data(..) and do_send_data_list(..) in rtsp-client.c will return FALSE if the transmission is still ongoing.

That will cause push_data(..) call in function check_transport_backlog(..) in rtsp-stream.c to return FALSE.

And it will remove the GstRTSPStreamTransport by calling update_transport (stream, trans, FALSE).

This will make the transmission managed by the GstRTSPStreamTransport be stopped forever.

Is there a way to add the GstRTSPStreamTransport back or to avoid removing it when the message queued is still transmitted in watch?

Thanks,
Bruce

From: Bruce Liang
Sent: Monday, May 30, 2022 8:10 PM
To: 'Discussion of the development of and with GStreamer'
Subject: RE: (gst-rtsp-server)1 client can't receive rtp packet while 2 clients connect to server choosing rtsp over tcp

Hi,

The problem occurs when 100Mbps network cable is used.
If the 1Gbps network cable is used, the problem will not occur.

Thanks,
Bruce
From: gstreamer-devel [mailto:gstreamer-devel-bounces at lists.freedesktop.org] On Behalf Of Bruce Liang via gstreamer-devel
Sent: Friday, May 27, 2022 6:03 PM
To: Discussion of the development of and with GStreamer
Cc: Bruce Liang
Subject: (gst-rtsp-server)1 client can't receive rtp packet while 2 clients connect to server choosing rtsp over tcp

Hi,

I'm using gst-rtsp-server to create a rtsp server and add 1 factory to it.
The factory is set to shared and the pipeline description contains only 1 payloader rtph264pay.

When the first client requests stream from the server choosing rtsp over tcp, it work properly.
Then the second client also requests stream from the server choosing rtsp over tcp, it works well at begining:

0:10:04.837385023   420  0x1a5a790 DEBUG             rtspclient rtsp-client.c:4917:do_send_messages:<GstRTSPClient at 0x7574c430> emit 'message-sent' signal
0:10:04.837462440   420  0x1a5a790 INFO              rtspclient rtsp-client.c:2300:do_keepalive: keep session 0x757c19d8 alive

But if there is a large I frame that has size over 200KB sent to the second client, the following log shows:

0:10:04.842062023   420  0x1a5a790 DEBUG             rtspclient rtsp-client.c:4908:do_send_messages:<GstRTSPClient at 0x7574c430> wait for message 1, channel 0
0:10:04.869407273   420 0x7550ccc0 DEBUG             rtspclient rtsp-client.c:4961:message_sent:<GstRTSPClient at 0x7574c430> emit 'message-sent' signal

There is no rtp packet sent to second client after the large I frame sent, while the server continues to send rtp packet to the first client.

Is there a way to handle this problem?

Thanks,
Bruce
*** Confidentiality Note *** This e-mail message and any accompanying documents are for sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
*** Confidentiality Note *** This e-mail message and any accompanying documents are for sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20220601/0967bd8b/attachment.htm>


More information about the gstreamer-devel mailing list