summaryrefslogtreecommitdiff
path: root/PROTOCOL
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2014-04-25 17:23:21 +0200
committerDavid Henningsson <david.henningsson@canonical.com>2014-06-27 14:23:18 +0200
commit1827991548495f1b2c3f44fe45b51901109f791c (patch)
tree56d1a91be015591d42b34763dab7b7b0b0d5b531 /PROTOCOL
parent4931637f822f23888c7477ad5bbfcf87b337db48 (diff)
Protocol, client: Add commands to enable srbchannel
This increments protocol version to v30 and adds two new commands to enable and disable an shm ringbuffer, as well as client side implementation. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Diffstat (limited to 'PROTOCOL')
-rw-r--r--PROTOCOL20
1 files changed, 20 insertions, 0 deletions
diff --git a/PROTOCOL b/PROTOCOL
index 850b953ab..3c08fea10 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -351,6 +351,26 @@ New field in all commands that send/receive profile introspection data
The field is added once for every profile.
+## v30, implemented by >= 6.0
+#
+A new protocol mechanism supported: Two ringbuffers in shared memory.
+Pulseaudio fdsem (wrappers around event file descriptors) are used for
+signalling new data.
+The protocol has a new SHM flag telling whether a SHM memblock is writable
+by both sides.
+
+PA_COMMAND_ENABLE_SRBCHANNEL
+First sent from server to client, tells the client to start listening on
+the additional SHM ringbuffer channel.
+This command also has ancillary data (two eventfds attached to it).
+Must be directly followed by a memblock which is the ringbuffer memory.
+When memblock is received by the client, it acks by sending
+PA_COMMAND_ENABLE_SRBCHANNEL back (without ancillary or memblock data).
+
+PA_COMMAND_DISABLE_SRBCHANNEL
+Tells the client to stop listening on the additional SHM ringbuffer channel.
+Acked by client by sending PA_COMMAND_DISABLE_SRBCHANNEL back.
+
#### If you just changed the protocol, read this
## module-tunnel depends on the sink/source/sink-input/source-input protocol
## internals, so if you changed these, you might have broken module-tunnel.