mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	SPDX tags make the licensing information easy to understand and clear, and they are machine parseable. See https://spdx.dev for more information.
		
			
				
	
	
		
			188 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* PipeWire */
 | 
						|
/* SPDX-FileCopyrightText: Copyright © 2020 Wim Taymans */
 | 
						|
/* SPDX-License-Identifier: MIT */
 | 
						|
 | 
						|
#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 */
 |