summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2008-10-09 13:29:12 +0100
committerSimon McVittie <http://smcv.pseudorandom.co.uk/>2008-10-09 13:29:12 +0100
commit5029c85a46a8c366c4bf272d503e22bbcd624ece (patch)
tree940ca96c28d7cc57215c354a3c922d24b19f76e7 /docs
Initial importCHANGELOG_START
Diffstat (limited to 'docs')
-rw-r--r--docs/design/gst-rtp-server-design35
1 files changed, 35 insertions, 0 deletions
diff --git a/docs/design/gst-rtp-server-design b/docs/design/gst-rtp-server-design
new file mode 100644
index 0000000..7da8283
--- /dev/null
+++ b/docs/design/gst-rtp-server-design
@@ -0,0 +1,35 @@
+RTSP server
+-----------
+
+This directory contains an example RTSP server built with various GStreamer
+components and libraries. It also uses GStreamer for all of the multimedia
+procesing and RTP bits. The following features are implemented:
+
+ -
+
+Server Design
+-------------
+
+The toplevel component of the server is a GstRTSPServer object. This object
+creates and binds on the server socket and attaches into the mainloop.
+
+For each request a new GstRTSPClient object is created that will accept the
+request and a thread is started to handle further communication with the
+client until the connection is closed.
+
+When a client issues a SETUP request we create a GstRTSPSession object,
+identified with a sessionid, that will keep track of the state of a client.
+The object is destroyed when a TEARDOWN request is made for that sessionid.
+
+We also maintain a pool of URL to media pipeline mappings. Each url is mapped to
+an object that is able to provide a pipeline for that media. We provide
+pipelines to stream live captured data, on-demand file streaming or on-demand
+transcoding of a file or stream.
+
+A pool of currently active pipelines is also maintained. Usually the active
+pipelines are in use by one or more GstRTSPSession objects. An active pipeline
+becomes inactive when no more sessions refer to it.
+
+A client can choose to start a new pipeline or join a currently active pipeline.
+Some active pipeline cannot be joined (such as on-demand streams) but a new
+instance of that pipeline can be created.