mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-18 07:47:17 +00:00
e63e023e30
multisocketsink now understands the new GstNetControlMessageMeta to allow sending control messages (ancillary data) with data when writing to Unix domain sockets. A later commit will introduce a new socketsrc element which will similarly understand `GstNetControlMessageMeta`. This, when used with a `GSocketControlMessage` of type `GUnixFDMessage` will allow GStreamer to send and receive file-descriptions in ancillary data, the first step to using memfds to implement zero-copy video IPC. Thanks to glib's `GSocketControlMessage` abstraction the code introduced in this commit is entirely portable and doesn't introduce and additional dependencies or conditionally compiled code, even if it is unlikely to be of much use on non-UNIX systems. |
||
---|---|---|
.. | ||
.gitignore | ||
gstmultifdsink.c | ||
gstmultifdsink.h | ||
gstmultihandlesink.c | ||
gstmultihandlesink.h | ||
gstmultioutputsink.c | ||
gstmultisocketsink.c | ||
gstmultisocketsink.h | ||
gstsocketsrc.c | ||
gstsocketsrc.h | ||
gsttcp.h | ||
gsttcpclientsink.c | ||
gsttcpclientsink.h | ||
gsttcpclientsrc.c | ||
gsttcpclientsrc.h | ||
gsttcpplugin.c | ||
gsttcpserversink.c | ||
gsttcpserversink.h | ||
gsttcpserversrc.c | ||
gsttcpserversrc.h | ||
Makefile.am | ||
README | ||
tcp.vcproj |
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