GStreamer multimedia framework
Go to file
David Svensson Fors 12169f1e84 Limit queued TCP data messages to one per stream
Before, the watch backlog size in GstRTSPClient was changed
dynamically between unlimited and a fixed size, trying to avoid both
unlimited memory usage and deadlocks while waiting for place in the
queue. (Some of the deadlocks were described in a long comment in
handle_request().)

In the previous commit, we changed to a fixed backlog size of 100.
This is possible, because we now handle RTP/RTCP data messages differently
from RTSP request/response messages.

The data messages are messages tunneled over TCP. We allow at most one
queued data message per stream in GstRTSPClient at a time, and
successfully sent data messages are acked by sending a "message-sent"
callback from the GstStreamTransport. Until that ack comes, the
GstRTSPStream does not call pull_sample() on its appsink, and
therefore the streaming thread in the pipeline will not be blocked
inside GstRTSPClient, waiting for a place in the queue.

pull_sample() is called when we have both an ack and a "new-sample"
signal from the appsink. Then, we know there is a buffer to write.

RTSP request/response messages are not acked in the same way as data
messages. The rest of the 100 places in the queue are used for
them. If the queue becomes full of request/response messages, we
return an error and close the connection to the client.

Change-Id: I275310bc90a219ceb2473c098261acc78be84c97
2018-07-23 17:45:00 +03:00
common@ed78bee437 Automatic update of common submodule 2018-04-16 10:53:52 +01:00
docs rtsp-media: add gst_rtsp_media_*_set_clock to docs 2018-07-16 23:55:37 +01:00
examples meson: add new test-appsrc2 example to meson build 2018-07-10 23:55:20 +01:00
gst Limit queued TCP data messages to one per stream 2018-07-23 17:45:00 +03:00
pkgconfig meson: don't install -uninstalled.pc file 2017-08-18 17:37:01 +01:00
tests configure: check for -good and -bad plugins only in uninstalled setup 2018-04-22 20:10:15 +01:00
.gitignore .gitignore: add another example binary 2018-07-10 23:56:23 +01:00
.gitmodules common: use https protocol for common submodule 2016-11-26 11:24:59 +00:00
AUTHORS Initial import 2008-10-09 13:29:12 +01:00
autogen.sh Automatic update of common submodule 2017-04-10 23:51:12 +01:00
ChangeLog Release 1.14.0 2018-03-19 20:27:06 +00:00
configure.ac configure: check for -good and -bad plugins only in uninstalled setup 2018-04-22 20:10:15 +01:00
COPYING Fix FSF address 2012-11-04 00:14:25 +00:00
COPYING.LIB Fix FSF address 2012-11-04 00:14:25 +00:00
gst-rtsp-server.doap Release 1.14.0 2018-03-19 20:27:06 +00:00
Makefile.am tests: disable all tests when --disable-tests is used 2017-12-06 20:47:22 +00:00
meson.build meson: Update option names to omit disable_ and with- prefixes 2018-05-05 20:31:43 +05:30
meson_options.txt meson: Update option names to omit disable_ and with- prefixes 2018-05-05 20:31:43 +05:30
NEWS Back to development 2018-03-20 10:21:36 +00:00
README Fix typo in README 2015-03-15 12:27:39 +00:00
RELEASE Back to development 2018-03-20 10:21:36 +00:00
REQUIREMENTS Initial import 2008-10-09 13:29:12 +01:00
TODO rtsp: cleanups 2012-11-15 17:11:16 +01:00

gst-rtsp-server is a library on top of GStreamer for building an RTSP server

There are some examples in the examples/ directory and more comprehensive
documentation in docs/README.