mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
Protocol version 29 will correspond to PA 5.0, and the node stuff has been postponed until 6.0, so the node interface needs to bump the protocol version to 30.
389 lines
8.5 KiB
Text
389 lines
8.5 KiB
Text
### v8, implemented by >= 0.8
|
|
|
|
First version supported.
|
|
|
|
### v9, implemented by >= 0.9.0
|
|
|
|
Reply for PA_COMMAND_CREATE_PLAYBACK_STREAM,
|
|
PA_COMMAND_CREATE_RECORD_STREAM now returns buffer_attrs that are used:
|
|
|
|
Four new fields in reply of PA_COMMAND_CREATE_PLAYBACK_STREAM:
|
|
|
|
maxlength
|
|
tlength
|
|
prebuf
|
|
minreq
|
|
|
|
Two new fields in reply of PA_COMMAND_CREATE_RECORD_STREAM:
|
|
|
|
maxlength
|
|
fragsize
|
|
|
|
### v10, implemented by >= 0.9.5
|
|
|
|
New opcodes:
|
|
|
|
PA_COMMAND_MOVE_SINK_INPUT
|
|
PA_COMMAND_MOVE_SOURCE_OUTPUT
|
|
|
|
SHM data transfer support
|
|
|
|
### v11, implemented by >= 0.9.7
|
|
|
|
Reply to to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end:
|
|
|
|
mute
|
|
|
|
New opcodes:
|
|
|
|
PA_COMMAND_SET_SINK_INPUT_MUTE
|
|
PA_COMMAND_SUSPEND_SINK
|
|
PA_COMMAND_SUSPEND_SOURCE
|
|
|
|
### v12, implemented by >= 0.9.8
|
|
|
|
S32LE, S32BE is now known as sample spec.
|
|
|
|
Gained six new bool fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
|
|
|
|
no_remap_channels
|
|
no_remix_channels
|
|
fix_format
|
|
fix_rate
|
|
fix_channels
|
|
no_move
|
|
variable_rate
|
|
|
|
Reply to these opcodes now includes:
|
|
|
|
sample_spec
|
|
channel_map
|
|
device_index
|
|
device_name
|
|
suspended
|
|
|
|
New opcodes for changing buffer attrs:
|
|
|
|
PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR
|
|
PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR
|
|
|
|
New opcodes for changing sampling rate:
|
|
|
|
PA_COMMAND_UPDATE_PLAYBACK_STREAM_SAMPLE_RATE
|
|
PA_COMMAND_UPDATE_RECORD_STREAM_SAMPLE_RATE
|
|
|
|
New opcodes for notifications:
|
|
|
|
PA_COMMAND_PLAYBACK_STREAM_SUSPENDED
|
|
PA_COMMAND_CAPTURE_STREAM_SUSPENDED
|
|
PA_COMMAND_PLAYBACK_STREAM_MOVED
|
|
PA_COMMAND_CAPTURE_STREAM_MOVED
|
|
|
|
### v13, implemented by >= 0.9.11
|
|
|
|
New fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
|
|
|
|
peak_detect (bool)
|
|
adjust_latency (bool)
|
|
|
|
Replace field "name" for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM at the end:
|
|
|
|
proplist
|
|
|
|
Replace field "name" for PA_COMMAND_SET_CLIENT_NAME request at the end:
|
|
|
|
proplist
|
|
|
|
On response of PA_COMMAND_SET_CLIENT_NAME:
|
|
|
|
client_index
|
|
|
|
New proplist field for sink, source, sink input, source output introspection opcodes and at the end:
|
|
|
|
proplist
|
|
|
|
New opcodes for proplist modifications
|
|
|
|
PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST
|
|
PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST
|
|
PA_COMMAND_UPDATE_CLIENT_PROPLIST
|
|
PA_COMMAND_REMOVE_RECORD_STREAM_PROPLIST
|
|
PA_COMMAND_REMOVE_PLAYBACK_STREAM_PROPLIST
|
|
PA_COMMAND_REMOVE_CLIENT_PROPLIST
|
|
|
|
New field for PA_COMMAND_PLAY_SAMPLE:
|
|
|
|
proplist
|
|
|
|
New field for PA_COMMAND_PLAY_SAMPLE response:
|
|
|
|
idx
|
|
|
|
New field for PA_COMMAND_CREATE_PLAYBACK_STREAM at the end:
|
|
|
|
start_muted
|
|
|
|
Buffer attributes for PA_COMMAND_CREATE_PLAYBACK_STREAM and
|
|
PA_COMMAND_CREATE_RECORD_STREAM may now be 0 for default values.
|
|
|
|
New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
|
|
PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
|
|
|
|
adjust_latency (bool)
|
|
|
|
new message:
|
|
|
|
PA_COMMAND_STARTED
|
|
|
|
### v14, implemented by >= 0.9.12
|
|
|
|
new message:
|
|
|
|
PA_COMMAND_EXTENSION
|
|
|
|
PA_COMMAND_CREATE_PLAYBACK_STREAM:
|
|
|
|
bool volume_set at the end
|
|
|
|
PA_COMMAND_CREATE_RECORD_STREAM, PA_COMMAND_CREATE_PLAYBACK_STREAM:
|
|
|
|
bool early_requests at the end
|
|
|
|
New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
|
|
PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
|
|
|
|
early_requests (bool)
|
|
|
|
### v15, implemented by >= 0.9.15
|
|
|
|
PA_COMMAND_CREATE_PLAYBACK_STREAM
|
|
|
|
bool muted at the end
|
|
|
|
PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM:
|
|
|
|
bool dont_inhibit_auto_suspend at the end
|
|
|
|
PA_COMMAND_GET_MODULE_INFO_LIST
|
|
|
|
remove bool auto_unload
|
|
add proplist at the end
|
|
|
|
new messages:
|
|
|
|
PA_COMMAND_GET_CARD_INFO
|
|
PA_COMMAND_GET_CARD_INFO_LIST
|
|
PA_COMMAND_SET_CARD_PROFILE
|
|
|
|
PA_COMMAND_CLIENT_EVENT
|
|
PA_COMMAND_PLAYBACK_STREAM_EVENT
|
|
PA_COMMAND_RECORD_STREAM_EVENT
|
|
|
|
PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED
|
|
PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED
|
|
|
|
### v16, implemented by >= 0.9.15
|
|
|
|
new messages:
|
|
|
|
PA_COMMAND_SET_SINK_PORT
|
|
PA_COMMAND_SET_SOURCE_PORT
|
|
|
|
## v17, implemented by >= 0.9.20
|
|
|
|
new flag at end of CREATE_PLAYBACK_STREAM:
|
|
|
|
bool relative_volume
|
|
|
|
## v18, implemented by >= 0.9.22
|
|
|
|
new flag at end of CREATE_PLAYBACK_STREAM:
|
|
|
|
bool passthrough
|
|
|
|
## v19, implemented by >= 0.9.22
|
|
|
|
New flag at the end of sink input and source output introspection data:
|
|
|
|
bool corked
|
|
|
|
## v20, implemented by >= 1.0
|
|
|
|
Two new flags at the end of sink input introspection data:
|
|
|
|
bool has_volume
|
|
bool volume_writable
|
|
|
|
## v21, implemented by >= 1.0
|
|
|
|
Changes for format negotiation in the extended API.
|
|
|
|
New fields PA_COMMAND_CREATE_PLAYBACK_STREAM:
|
|
|
|
uint8_t n_formats
|
|
format_info format1
|
|
...
|
|
format_info formatn
|
|
|
|
One new field in reply from PA_COMMAND_CREATE_PLAYBACK_STREAM:
|
|
|
|
format_info format
|
|
|
|
New fields in reply from PA_COMMAND_GET_SINK_INFO (and thus
|
|
PA_COMMAND_GET_SINK_INFO_LIST)
|
|
|
|
uint8_t n_formats
|
|
format_info format1
|
|
...
|
|
format_info formatn
|
|
|
|
One new field in reply from PA_COMMAND_GET_SINK_INPUT_INFO (and thus
|
|
PA_COMMAND_GET_SINK_INPUT_INFO_LIST)
|
|
|
|
format_info format
|
|
|
|
## v22, implemented by >= 1.0
|
|
|
|
New fields PA_COMMAND_CREATE_RECORD_STREAM:
|
|
|
|
uint8_t n_formats
|
|
format_info format1
|
|
...
|
|
format_info formatn
|
|
volume
|
|
bool muted
|
|
bool volume_set
|
|
bool muted_set
|
|
bool relative_volume
|
|
bool passthrough
|
|
|
|
One new field in reply from PA_COMMAND_CREATE_RECORD_STREAM:
|
|
|
|
format_info format
|
|
|
|
New fields in reply from PA_COMMAND_GET_SOURCE_INFO (and thus
|
|
PA_COMMAND_GET_SOURCE_INFO_LIST)
|
|
|
|
uint8_t n_formats
|
|
format_info format1
|
|
...
|
|
format_info formatn
|
|
|
|
Five new fields in reply from PA_COMMAND_GET_SOURCE_OUTPUT_INFO (and thus
|
|
PA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST)
|
|
|
|
volume
|
|
bool mute
|
|
bool has_volume
|
|
bool volume_writable
|
|
format_info format
|
|
|
|
## v23, implemented by >= 1.0
|
|
|
|
New field in PA_COMMAND_UNDERFLOW:
|
|
|
|
int64_t index
|
|
|
|
## v24, implemented by >= 2.0
|
|
|
|
New field in all commands that send/receive port introspection data
|
|
(PA_COMMAND_GET_(SOURCE|SINK)_INFO,
|
|
PA_COMMAND_GET_(SOURCE|SINK)_INFO_LIST):
|
|
|
|
uint32_t available
|
|
|
|
The field is added once for every port.
|
|
|
|
## v25, implemented by >= 2.0
|
|
|
|
When port availability changes, send a subscription event for the
|
|
owning card.
|
|
|
|
## v26, implemented by >= 2.0
|
|
|
|
In reply from PA_COMMAND_GET_CARD_INFO (and thus
|
|
PA_COMMAND_GET_CARD_INFO_LIST), the following is added:
|
|
|
|
uint32_t n_ports
|
|
|
|
...followed by n_ports extended port entries, which look like this:
|
|
|
|
string name
|
|
string description
|
|
uint32_t priority
|
|
uint32_t available
|
|
uint8_t direction
|
|
proplist
|
|
uint32_t n_profiles
|
|
string profile_name_1
|
|
...
|
|
string profile_name_n
|
|
|
|
Profile names must match earlier sent profile names for the same card.
|
|
|
|
## v27, implemented by >= 3.0
|
|
|
|
New opcodes:
|
|
PA_COMMAND_SET_PORT_LATENCY_OFFSET
|
|
|
|
New field in the card commands that send/receive port introspection data
|
|
PA_COMMAND_GET_CARD_INFO(_LIST)):
|
|
|
|
int64_t latency_offset
|
|
|
|
The field is added once for every port.
|
|
|
|
## v28, implemented by >= 4.0
|
|
|
|
New value for encoding format type in format_info
|
|
PA_COMMAND_CREATE_(PLAYBACK|RECORDING)_STREAM and its reply,
|
|
In reply from PA_COMMAND_GET_(SOURCE|SOURCE_OUTPUT|SINK|SINK_INPUT)_INFO[_LIST],
|
|
SUBCOMMAND_SAVE_FORMATS, in reply from SUBCOMMAND_READ_FORMATS[_ALL]
|
|
|
|
(uint8_t ) PA_ENCODING_MPEG2_AAC_IEC61937 := 6
|
|
|
|
## v29, implemented by >= 5.0
|
|
|
|
New field in all commands that send/receive profile introspection data
|
|
(PA_COMMAND_GET_CARD_INFO)
|
|
|
|
uint32 available
|
|
|
|
The field is added once for every profile.
|
|
|
|
## v30, implemented by >= 6.0
|
|
|
|
New client->server commands:
|
|
GET_NODE_INFO
|
|
GET_NODE_INFO_LIST
|
|
|
|
GET_NODE_INFO parameters:
|
|
uint32_t index
|
|
string name
|
|
|
|
When getting the node info by index, the index parameter must not be
|
|
PA_INVALID_INDEX and the name parameter must be NULL.
|
|
|
|
When getting the node info by name, the index parameter must be
|
|
PA_INVALID_INDEX and the name parameter must not be NULL or an empty string.
|
|
|
|
GET_NODE_INFO_LIST doesn't have parameters.
|
|
|
|
GET_NODE_INFO reply parameters:
|
|
uint32_t index
|
|
string name
|
|
string description
|
|
pa_direction_t direction
|
|
|
|
The index must not be PA_INVALID_INDEX. The name must not be NULL or empty. The
|
|
description must not be NULL or empty. The direction must be either OUTPUT or
|
|
INPUT, not both.
|
|
|
|
GET_NODE_INFO_LIST reply parameters are otherwise the same as with
|
|
GET_NODE_INFO, but the parameter list is repeated for each node.
|
|
|
|
#### 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.
|
|
## Don't forget to test module-tunnel-{source,sink} when pushing protocol
|
|
## changes.
|