Initial import
[platform/upstream/gstreamer.git] / docs / design / gst-rtp-server-design
1 RTSP server
2 -----------
3
4 This directory contains an example RTSP server built with various GStreamer
5 components and libraries. It also uses GStreamer for all of the multimedia
6 procesing and RTP bits. The following features are implemented:
7
8  - 
9
10 Server Design
11 -------------
12
13 The toplevel component of the server is a GstRTSPServer object. This object
14 creates and binds on the server socket and attaches into the mainloop.
15
16 For each request a new GstRTSPClient object is created that will accept the
17 request and a thread is started to handle further communication with the
18 client until the connection is closed.
19
20 When a client issues a SETUP request we create a GstRTSPSession object,
21 identified with a sessionid, that will keep track of the state of a client.
22 The object is destroyed when a TEARDOWN request is made for that sessionid.
23
24 We also maintain a pool of URL to media pipeline mappings. Each url is mapped to
25 an object that is able to provide a pipeline for that media. We provide
26 pipelines to stream live captured data, on-demand file streaming or on-demand
27 transcoding of a file or stream.
28
29 A pool of currently active pipelines is also maintained. Usually the active
30 pipelines are in use by one or more GstRTSPSession objects. An active pipeline
31 becomes inactive when no more sessions refer to it.
32
33 A client can choose to start a new pipeline or join a currently active pipeline.
34 Some active pipeline cannot be joined (such as on-demand streams) but a new
35 instance of that pipeline can be created.