diff options
Diffstat (limited to '')
-rw-r--r-- | src/modules/module-protocol-pulse/commands.h | 208 |
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 */ |