gst/tcp/: make multifdsink properly deal with streamheader:
[platform/upstream/gstreamer.git] / gst / tcp / README
1 This part of the documentation is for the new tcp elements:
2 - tcpclientsrc
3 - tcpclientsink
4 - tcpserversrc
5 - tcpserversink
6                                                                                 
7 TESTS
8 -----
9 Use these tests to test functionality of the various tcp plugins
10
11 * server: nc -l -p 3000
12   client: nc localhost 3000
13   everything you type in the server is shown on the client
14   everything you type in the client is shown on the server
15
16 * server: nc -l -p 3000
17   client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
18   everything you type in the server is shown on the client
19
20 * server: nc -l -p 3000
21   client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000
22   everything you type in the client is shown on the server
23
24 * server: gst-launch tcpserversrc protocol=none port=3000 ! fdsink fd=2
25   client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000
26
27
28 TODO
29 ----
30 - implement DNS resolution
31
32 multifdsink
33 -----------
34 - operation:
35   - client fd gets added when "add" signal gets emitted on multifdsink
36   - signal handler creates a GstTCPClient structure, adds it to ->clients,
37     and adds the fd to ->fd_hash, then emits client-added
38   - client 
39
40   - when a buffer comes in:
41     - the _render vmethod puts the buffer on the global queue
42     - and increases bytes_to_serve
43     - (currently it sets streamheaders, but since this is treated globally
44        this is wrong - clients can be at different positions in the stream)
45
46   - when a client issues a write (ie requests data):
47     - when using GDP, if no caps sent yet, send caps first, then set caps_sent
48     - if streamheader buffers, and we haven't sent yet to this client,
49       send current streamheader buffers, then set streamheader_sent
50     - send out buffers