gstreamer/gst/tcp
Nirbheek Chauhan 5c4f4ac1bd Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:09:51 +01:00
..
.gitignore
gstmultifdsink.c multifdsink: fix typo in GST_WARNING_OBJECT 2015-12-16 11:12:03 +00:00
gstmultifdsink.h
gstmultihandlesink.c multihandlesink: Warn if trying to change the state from the streaming thread 2016-05-05 13:17:53 +03:00
gstmultihandlesink.h multihandlesink: Remove useless streamheader storage 2016-03-14 12:45:33 +02:00
gstmultisocketsink.c multisocketsink: handle client close correctly and EWOULDBLOCK 2016-03-01 13:15:38 +00:00
gstmultisocketsink.h multisocketsink: add GstNetworkMessage event 2015-12-10 12:44:42 +01:00
gstsocketsrc.c base: use new gst_element_class_add_static_pad_template() 2016-03-24 14:25:41 +02:00
gstsocketsrc.h
gsttcp.h
gsttcpclientsink.c base: use new gst_element_class_add_static_pad_template() 2016-03-24 14:25:41 +02:00
gsttcpclientsink.h
gsttcpclientsrc.c base: use new gst_element_class_add_static_pad_template() 2016-03-24 14:25:41 +02:00
gsttcpclientsrc.h
gsttcpplugin.c
gsttcpserversink.c
gsttcpserversink.h
gsttcpserversrc.c base: use new gst_element_class_add_static_pad_template() 2016-03-24 14:25:41 +02:00
gsttcpserversrc.h
Makefile.am
meson.build Add support for Meson as alternative/parallel build system 2016-08-20 11:09:51 +01:00
README

This part of the documentation is for the new tcp elements:
- tcpclientsrc
- tcpclientsink
- tcpserversrc
- tcpserversink
                                                                                
TESTS
-----
Use these tests to test functionality of the various tcp plugins

* server: nc -l -p 3000
  client: nc localhost 3000
  everything you type in the server is shown on the client
  everything you type in the client is shown on the server

* server: nc -l -p 3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  everything you type in the server is shown on the client

* server: nc -l -p 3000
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000
  everything you type in the client is shown on the server

* server: gst-launch tcpserversrc protocol=none port=3000 ! fdsink fd=2
  client: gst-launch fdsrc fd=1 ! tcpclientsink protocol=none port=3000

* server: gst-launch fdsrc fd=1 ! tcpserversink protocol=none port=3000
  client: gst-launch tcpclientsrc protocol=none port=3000 ! fdsink fd=2
  -> Received first buffer without caps set

TODO
----
- implement DNS resolution

multifdsink
-----------
- operation:
  - client fd gets added when "add" signal gets emitted on multifdsink
  - signal handler creates a GstTCPClient structure, adds it to ->clients,
    and adds the fd to ->fd_hash, then emits client-added
  - client 

  - when a buffer comes in:
    - the _render vmethod puts the buffer on the global queue
    - and increases bytes_to_serve
    - (currently it sets streamheaders, but since this is treated globally
       this is wrong - clients can be at different positions in the stream)

  - when a client issues a write (ie requests data):
    - when using GDP, if no caps sent yet, send caps first, then set caps_sent
    - if streamheader buffers, and we haven't sent yet to this client,
      send current streamheader buffers, then set streamheader_sent
    - send out buffers