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