/* 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 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 */