summaryrefslogtreecommitdiffstats
path: root/src/modules/module-protocol-pulse/commands.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/modules/module-protocol-pulse/commands.h208
1 files changed, 208 insertions, 0 deletions
diff --git a/src/modules/module-protocol-pulse/commands.h b/src/modules/module-protocol-pulse/commands.h
new file mode 100644
index 0000000..9dd1d74
--- /dev/null
+++ b/src/modules/module-protocol-pulse/commands.h
@@ -0,0 +1,208 @@
+/* PipeWire
+ *
+ * Copyright © 2020 Wim Taymans
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef PULSE_SERVER_COMMANDS_H
+#define PULSE_SERVER_COMMANDS_H
+
+#include <stdint.h>
+
+struct client;
+struct message;
+
+enum pulseaudio_command {
+ /* Generic commands */
+ COMMAND_ERROR,
+ COMMAND_TIMEOUT, /* pseudo command */
+ COMMAND_REPLY,
+
+ /* CLIENT->SERVER */
+ COMMAND_CREATE_PLAYBACK_STREAM, /* Payload changed in v9, v12 (0.9.0, 0.9.8) */
+ COMMAND_DELETE_PLAYBACK_STREAM,
+ COMMAND_CREATE_RECORD_STREAM, /* Payload changed in v9, v12 (0.9.0, 0.9.8) */
+ COMMAND_DELETE_RECORD_STREAM,
+ COMMAND_EXIT,
+ COMMAND_AUTH,
+ COMMAND_SET_CLIENT_NAME,
+ COMMAND_LOOKUP_SINK,
+ COMMAND_LOOKUP_SOURCE,
+ COMMAND_DRAIN_PLAYBACK_STREAM,
+ COMMAND_STAT,
+ COMMAND_GET_PLAYBACK_LATENCY,
+ COMMAND_CREATE_UPLOAD_STREAM,
+ COMMAND_DELETE_UPLOAD_STREAM,
+ COMMAND_FINISH_UPLOAD_STREAM,
+ COMMAND_PLAY_SAMPLE,
+ COMMAND_REMOVE_SAMPLE,
+
+ COMMAND_GET_SERVER_INFO,
+ COMMAND_GET_SINK_INFO,
+ COMMAND_GET_SINK_INFO_LIST,
+ COMMAND_GET_SOURCE_INFO,
+ COMMAND_GET_SOURCE_INFO_LIST,
+ COMMAND_GET_MODULE_INFO,
+ COMMAND_GET_MODULE_INFO_LIST,
+ COMMAND_GET_CLIENT_INFO,
+ COMMAND_GET_CLIENT_INFO_LIST,
+ COMMAND_GET_SINK_INPUT_INFO, /* Payload changed in v11 (0.9.7) */
+ COMMAND_GET_SINK_INPUT_INFO_LIST, /* Payload changed in v11 (0.9.7) */
+ COMMAND_GET_SOURCE_OUTPUT_INFO,
+ COMMAND_GET_SOURCE_OUTPUT_INFO_LIST,
+ COMMAND_GET_SAMPLE_INFO,
+ COMMAND_GET_SAMPLE_INFO_LIST,
+ COMMAND_SUBSCRIBE,
+
+ COMMAND_SET_SINK_VOLUME,
+ COMMAND_SET_SINK_INPUT_VOLUME,
+ COMMAND_SET_SOURCE_VOLUME,
+
+ COMMAND_SET_SINK_MUTE,
+ COMMAND_SET_SOURCE_MUTE,
+
+ COMMAND_CORK_PLAYBACK_STREAM,
+ COMMAND_FLUSH_PLAYBACK_STREAM,
+ COMMAND_TRIGGER_PLAYBACK_STREAM,
+
+ COMMAND_SET_DEFAULT_SINK,
+ COMMAND_SET_DEFAULT_SOURCE,
+
+ COMMAND_SET_PLAYBACK_STREAM_NAME,
+ COMMAND_SET_RECORD_STREAM_NAME,
+
+ COMMAND_KILL_CLIENT,
+ COMMAND_KILL_SINK_INPUT,
+ COMMAND_KILL_SOURCE_OUTPUT,
+
+ COMMAND_LOAD_MODULE,
+ COMMAND_UNLOAD_MODULE,
+
+ /* Obsolete */
+ COMMAND_ADD_AUTOLOAD___OBSOLETE,
+ COMMAND_REMOVE_AUTOLOAD___OBSOLETE,
+ COMMAND_GET_AUTOLOAD_INFO___OBSOLETE,
+ COMMAND_GET_AUTOLOAD_INFO_LIST___OBSOLETE,
+
+ COMMAND_GET_RECORD_LATENCY,
+ COMMAND_CORK_RECORD_STREAM,
+ COMMAND_FLUSH_RECORD_STREAM,
+ COMMAND_PREBUF_PLAYBACK_STREAM,
+
+ /* SERVER->CLIENT */
+ COMMAND_REQUEST,
+ COMMAND_OVERFLOW,
+ COMMAND_UNDERFLOW,
+ COMMAND_PLAYBACK_STREAM_KILLED,
+ COMMAND_RECORD_STREAM_KILLED,
+ COMMAND_SUBSCRIBE_EVENT,
+
+ /* A few more client->server commands */
+
+ /* Supported since protocol v10 (0.9.5) */
+ COMMAND_MOVE_SINK_INPUT,
+ COMMAND_MOVE_SOURCE_OUTPUT,
+
+ /* Supported since protocol v11 (0.9.7) */
+ COMMAND_SET_SINK_INPUT_MUTE,
+
+ COMMAND_SUSPEND_SINK,
+ COMMAND_SUSPEND_SOURCE,
+
+ /* Supported since protocol v12 (0.9.8) */
+ COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
+ COMMAND_SET_RECORD_STREAM_BUFFER_ATTR,
+
+ COMMAND_UPDATE_PLAYBACK_STREAM_SAMPLE_RATE,
+ COMMAND_UPDATE_RECORD_STREAM_SAMPLE_RATE,
+
+ /* SERVER->CLIENT */
+ COMMAND_PLAYBACK_STREAM_SUSPENDED,
+ COMMAND_RECORD_STREAM_SUSPENDED,
+ COMMAND_PLAYBACK_STREAM_MOVED,
+ COMMAND_RECORD_STREAM_MOVED,
+
+ /* Supported since protocol v13 (0.9.11) */
+ COMMAND_UPDATE_RECORD_STREAM_PROPLIST,
+ COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST,
+ COMMAND_UPDATE_CLIENT_PROPLIST,
+ COMMAND_REMOVE_RECORD_STREAM_PROPLIST,
+ COMMAND_REMOVE_PLAYBACK_STREAM_PROPLIST,
+ COMMAND_REMOVE_CLIENT_PROPLIST,
+
+ /* SERVER->CLIENT */
+ COMMAND_STARTED,
+
+ /* Supported since protocol v14 (0.9.12) */
+ COMMAND_EXTENSION,
+ /* Supported since protocol v15 (0.9.15) */
+ COMMAND_GET_CARD_INFO,
+ COMMAND_GET_CARD_INFO_LIST,
+ COMMAND_SET_CARD_PROFILE,
+
+ COMMAND_CLIENT_EVENT,
+ COMMAND_PLAYBACK_STREAM_EVENT,
+ COMMAND_RECORD_STREAM_EVENT,
+
+ /* SERVER->CLIENT */
+ COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED,
+ COMMAND_RECORD_BUFFER_ATTR_CHANGED,
+
+ /* Supported since protocol v16 (0.9.16) */
+ COMMAND_SET_SINK_PORT,
+ COMMAND_SET_SOURCE_PORT,
+
+ /* Supported since protocol v22 (1.0) */
+ COMMAND_SET_SOURCE_OUTPUT_VOLUME,
+ COMMAND_SET_SOURCE_OUTPUT_MUTE,
+
+ /* Supported since protocol v27 (3.0) */
+ COMMAND_SET_PORT_LATENCY_OFFSET,
+
+ /* Supported since protocol v30 (6.0) */
+ /* BOTH DIRECTIONS */
+ COMMAND_ENABLE_SRBCHANNEL,
+ COMMAND_DISABLE_SRBCHANNEL,
+
+ /* Supported since protocol v31 (9.0)
+ * BOTH DIRECTIONS */
+ COMMAND_REGISTER_MEMFD_SHMID,
+
+ /* Supported since protocol v35 (15.0) */
+ COMMAND_SEND_OBJECT_MESSAGE,
+
+ COMMAND_MAX
+};
+
+enum command_access_flag {
+ COMMAND_ACCESS_WITHOUT_AUTH = (1 << 0),
+ COMMAND_ACCESS_WITHOUT_MANAGER = (1 << 1),
+};
+
+struct command {
+ const char *name;
+ int (*run) (struct client *client, uint32_t command, uint32_t tag, struct message *msg);
+ uint32_t access;
+};
+
+extern const struct command commands[COMMAND_MAX];
+
+#endif /* PULSE_SERVER_COMMANDS_H */