153a5a1b3Sopenharmony_ci### v8, implemented by >= 0.8
253a5a1b3Sopenharmony_ci
353a5a1b3Sopenharmony_ciFirst version supported.
453a5a1b3Sopenharmony_ci
553a5a1b3Sopenharmony_ci### v9, implemented by >= 0.9.0
653a5a1b3Sopenharmony_ci
753a5a1b3Sopenharmony_ciReply for PA_COMMAND_CREATE_PLAYBACK_STREAM,
853a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_RECORD_STREAM now returns buffer_attrs that are used:
953a5a1b3Sopenharmony_ci
1053a5a1b3Sopenharmony_ciFour new fields in reply of PA_COMMAND_CREATE_PLAYBACK_STREAM:
1153a5a1b3Sopenharmony_ci
1253a5a1b3Sopenharmony_ci   maxlength
1353a5a1b3Sopenharmony_ci   tlength
1453a5a1b3Sopenharmony_ci   prebuf
1553a5a1b3Sopenharmony_ci   minreq
1653a5a1b3Sopenharmony_ci
1753a5a1b3Sopenharmony_ciTwo new fields in reply of PA_COMMAND_CREATE_RECORD_STREAM:
1853a5a1b3Sopenharmony_ci
1953a5a1b3Sopenharmony_ci   maxlength
2053a5a1b3Sopenharmony_ci   fragsize
2153a5a1b3Sopenharmony_ci
2253a5a1b3Sopenharmony_ci### v10, implemented by >= 0.9.5
2353a5a1b3Sopenharmony_ci
2453a5a1b3Sopenharmony_ciNew opcodes:
2553a5a1b3Sopenharmony_ci
2653a5a1b3Sopenharmony_ci PA_COMMAND_MOVE_SINK_INPUT
2753a5a1b3Sopenharmony_ci PA_COMMAND_MOVE_SOURCE_OUTPUT
2853a5a1b3Sopenharmony_ci
2953a5a1b3Sopenharmony_ciSHM data transfer support
3053a5a1b3Sopenharmony_ci
3153a5a1b3Sopenharmony_ci### v11, implemented by >= 0.9.7
3253a5a1b3Sopenharmony_ci
3353a5a1b3Sopenharmony_ciReply to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end:
3453a5a1b3Sopenharmony_ci
3553a5a1b3Sopenharmony_ci mute
3653a5a1b3Sopenharmony_ci
3753a5a1b3Sopenharmony_ciNew opcodes:
3853a5a1b3Sopenharmony_ci
3953a5a1b3Sopenharmony_ci PA_COMMAND_SET_SINK_INPUT_MUTE
4053a5a1b3Sopenharmony_ci PA_COMMAND_SUSPEND_SINK
4153a5a1b3Sopenharmony_ci PA_COMMAND_SUSPEND_SOURCE
4253a5a1b3Sopenharmony_ci
4353a5a1b3Sopenharmony_ci### v12, implemented by >= 0.9.8
4453a5a1b3Sopenharmony_ci
4553a5a1b3Sopenharmony_ciS32LE, S32BE is now known as sample spec.
4653a5a1b3Sopenharmony_ci
4753a5a1b3Sopenharmony_ciGained six new bool fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
4853a5a1b3Sopenharmony_ci
4953a5a1b3Sopenharmony_ci no_remap_channels
5053a5a1b3Sopenharmony_ci no_remix_channels
5153a5a1b3Sopenharmony_ci fix_format
5253a5a1b3Sopenharmony_ci fix_rate
5353a5a1b3Sopenharmony_ci fix_channels
5453a5a1b3Sopenharmony_ci no_move
5553a5a1b3Sopenharmony_ci variable_rate
5653a5a1b3Sopenharmony_ci
5753a5a1b3Sopenharmony_ciReply to these opcodes now includes:
5853a5a1b3Sopenharmony_ci
5953a5a1b3Sopenharmony_ci sample_spec
6053a5a1b3Sopenharmony_ci channel_map
6153a5a1b3Sopenharmony_ci device_index
6253a5a1b3Sopenharmony_ci device_name
6353a5a1b3Sopenharmony_ci suspended
6453a5a1b3Sopenharmony_ci
6553a5a1b3Sopenharmony_ciNew opcodes for changing buffer attrs:
6653a5a1b3Sopenharmony_ci
6753a5a1b3Sopenharmony_ci PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR
6853a5a1b3Sopenharmony_ci PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR
6953a5a1b3Sopenharmony_ci
7053a5a1b3Sopenharmony_ciNew opcodes for changing sampling rate:
7153a5a1b3Sopenharmony_ci
7253a5a1b3Sopenharmony_ci PA_COMMAND_UPDATE_PLAYBACK_STREAM_SAMPLE_RATE
7353a5a1b3Sopenharmony_ci PA_COMMAND_UPDATE_RECORD_STREAM_SAMPLE_RATE
7453a5a1b3Sopenharmony_ci
7553a5a1b3Sopenharmony_ciNew opcodes for notifications:
7653a5a1b3Sopenharmony_ci
7753a5a1b3Sopenharmony_ci PA_COMMAND_PLAYBACK_STREAM_SUSPENDED
7853a5a1b3Sopenharmony_ci PA_COMMAND_CAPTURE_STREAM_SUSPENDED
7953a5a1b3Sopenharmony_ci PA_COMMAND_PLAYBACK_STREAM_MOVED
8053a5a1b3Sopenharmony_ci PA_COMMAND_CAPTURE_STREAM_MOVED
8153a5a1b3Sopenharmony_ci
8253a5a1b3Sopenharmony_ci### v13, implemented by >= 0.9.11
8353a5a1b3Sopenharmony_ci
8453a5a1b3Sopenharmony_ciNew fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
8553a5a1b3Sopenharmony_ci
8653a5a1b3Sopenharmony_ci peak_detect (bool)
8753a5a1b3Sopenharmony_ci adjust_latency  (bool)
8853a5a1b3Sopenharmony_ci
8953a5a1b3Sopenharmony_ciReplace field "name" for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM at the end:
9053a5a1b3Sopenharmony_ci
9153a5a1b3Sopenharmony_ci proplist
9253a5a1b3Sopenharmony_ci
9353a5a1b3Sopenharmony_ciReplace field "name" for PA_COMMAND_SET_CLIENT_NAME request at the end:
9453a5a1b3Sopenharmony_ci
9553a5a1b3Sopenharmony_ci proplist
9653a5a1b3Sopenharmony_ci
9753a5a1b3Sopenharmony_ciOn response of PA_COMMAND_SET_CLIENT_NAME:
9853a5a1b3Sopenharmony_ci
9953a5a1b3Sopenharmony_ci client_index
10053a5a1b3Sopenharmony_ci
10153a5a1b3Sopenharmony_ciNew proplist field for sink, source, sink input, source output introspection opcodes and at the end:
10253a5a1b3Sopenharmony_ci
10353a5a1b3Sopenharmony_ci proplist
10453a5a1b3Sopenharmony_ci
10553a5a1b3Sopenharmony_ciNew opcodes for proplist modifications
10653a5a1b3Sopenharmony_ci
10753a5a1b3Sopenharmony_ci  PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST
10853a5a1b3Sopenharmony_ci  PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST
10953a5a1b3Sopenharmony_ci  PA_COMMAND_UPDATE_CLIENT_PROPLIST
11053a5a1b3Sopenharmony_ci  PA_COMMAND_REMOVE_RECORD_STREAM_PROPLIST
11153a5a1b3Sopenharmony_ci  PA_COMMAND_REMOVE_PLAYBACK_STREAM_PROPLIST
11253a5a1b3Sopenharmony_ci  PA_COMMAND_REMOVE_CLIENT_PROPLIST
11353a5a1b3Sopenharmony_ci
11453a5a1b3Sopenharmony_ciNew field for PA_COMMAND_PLAY_SAMPLE:
11553a5a1b3Sopenharmony_ci
11653a5a1b3Sopenharmony_ci  proplist
11753a5a1b3Sopenharmony_ci
11853a5a1b3Sopenharmony_ciNew field for PA_COMMAND_PLAY_SAMPLE response:
11953a5a1b3Sopenharmony_ci
12053a5a1b3Sopenharmony_ci  idx
12153a5a1b3Sopenharmony_ci
12253a5a1b3Sopenharmony_ciNew field for PA_COMMAND_CREATE_PLAYBACK_STREAM at the end:
12353a5a1b3Sopenharmony_ci
12453a5a1b3Sopenharmony_ci  start_muted
12553a5a1b3Sopenharmony_ci
12653a5a1b3Sopenharmony_ciBuffer attributes for PA_COMMAND_CREATE_PLAYBACK_STREAM and
12753a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_RECORD_STREAM may now be 0 for default values.
12853a5a1b3Sopenharmony_ci
12953a5a1b3Sopenharmony_ciNew field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
13053a5a1b3Sopenharmony_ciPA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
13153a5a1b3Sopenharmony_ci
13253a5a1b3Sopenharmony_ci  adjust_latency (bool)
13353a5a1b3Sopenharmony_ci
13453a5a1b3Sopenharmony_cinew message:
13553a5a1b3Sopenharmony_ci
13653a5a1b3Sopenharmony_ci  PA_COMMAND_STARTED
13753a5a1b3Sopenharmony_ci
13853a5a1b3Sopenharmony_ci### v14, implemented by >= 0.9.12
13953a5a1b3Sopenharmony_ci
14053a5a1b3Sopenharmony_cinew message:
14153a5a1b3Sopenharmony_ci
14253a5a1b3Sopenharmony_ci  PA_COMMAND_EXTENSION
14353a5a1b3Sopenharmony_ci
14453a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_PLAYBACK_STREAM:
14553a5a1b3Sopenharmony_ci
14653a5a1b3Sopenharmony_ci  bool volume_set at the end
14753a5a1b3Sopenharmony_ci
14853a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_RECORD_STREAM, PA_COMMAND_CREATE_PLAYBACK_STREAM:
14953a5a1b3Sopenharmony_ci
15053a5a1b3Sopenharmony_ci  bool early_requests at the end
15153a5a1b3Sopenharmony_ci
15253a5a1b3Sopenharmony_ciNew field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
15353a5a1b3Sopenharmony_ciPA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
15453a5a1b3Sopenharmony_ci
15553a5a1b3Sopenharmony_ci  early_requests (bool)
15653a5a1b3Sopenharmony_ci
15753a5a1b3Sopenharmony_ci### v15, implemented by >= 0.9.15
15853a5a1b3Sopenharmony_ci
15953a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_PLAYBACK_STREAM
16053a5a1b3Sopenharmony_ci
16153a5a1b3Sopenharmony_ci  bool muted at the end
16253a5a1b3Sopenharmony_ci
16353a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM:
16453a5a1b3Sopenharmony_ci
16553a5a1b3Sopenharmony_ci  bool dont_inhibit_auto_suspend at the end
16653a5a1b3Sopenharmony_ci
16753a5a1b3Sopenharmony_ciPA_COMMAND_GET_MODULE_INFO_LIST
16853a5a1b3Sopenharmony_ci
16953a5a1b3Sopenharmony_ci  remove bool auto_unload
17053a5a1b3Sopenharmony_ci  add proplist at the end
17153a5a1b3Sopenharmony_ci
17253a5a1b3Sopenharmony_cinew messages:
17353a5a1b3Sopenharmony_ci
17453a5a1b3Sopenharmony_ci  PA_COMMAND_GET_CARD_INFO
17553a5a1b3Sopenharmony_ci  PA_COMMAND_GET_CARD_INFO_LIST
17653a5a1b3Sopenharmony_ci  PA_COMMAND_SET_CARD_PROFILE
17753a5a1b3Sopenharmony_ci
17853a5a1b3Sopenharmony_ci  PA_COMMAND_CLIENT_EVENT
17953a5a1b3Sopenharmony_ci  PA_COMMAND_PLAYBACK_STREAM_EVENT
18053a5a1b3Sopenharmony_ci  PA_COMMAND_RECORD_STREAM_EVENT
18153a5a1b3Sopenharmony_ci
18253a5a1b3Sopenharmony_ci  PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED
18353a5a1b3Sopenharmony_ci  PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED
18453a5a1b3Sopenharmony_ci
18553a5a1b3Sopenharmony_ci### v16, implemented by >= 0.9.15
18653a5a1b3Sopenharmony_ci
18753a5a1b3Sopenharmony_cinew messages:
18853a5a1b3Sopenharmony_ci
18953a5a1b3Sopenharmony_ci  PA_COMMAND_SET_SINK_PORT
19053a5a1b3Sopenharmony_ci  PA_COMMAND_SET_SOURCE_PORT
19153a5a1b3Sopenharmony_ci
19253a5a1b3Sopenharmony_ci## v17, implemented by >= 0.9.20
19353a5a1b3Sopenharmony_ci
19453a5a1b3Sopenharmony_cinew flag at end of CREATE_PLAYBACK_STREAM:
19553a5a1b3Sopenharmony_ci
19653a5a1b3Sopenharmony_ci    bool relative_volume
19753a5a1b3Sopenharmony_ci
19853a5a1b3Sopenharmony_ci## v18, implemented by >= 0.9.22
19953a5a1b3Sopenharmony_ci
20053a5a1b3Sopenharmony_cinew flag at end of CREATE_PLAYBACK_STREAM:
20153a5a1b3Sopenharmony_ci
20253a5a1b3Sopenharmony_ci    bool passthrough
20353a5a1b3Sopenharmony_ci
20453a5a1b3Sopenharmony_ci## v19, implemented by >= 0.9.22
20553a5a1b3Sopenharmony_ci
20653a5a1b3Sopenharmony_ciNew flag at the end of sink input and source output introspection data:
20753a5a1b3Sopenharmony_ci
20853a5a1b3Sopenharmony_ci    bool corked
20953a5a1b3Sopenharmony_ci
21053a5a1b3Sopenharmony_ci## v20, implemented by >= 1.0
21153a5a1b3Sopenharmony_ci
21253a5a1b3Sopenharmony_ciTwo new flags at the end of sink input introspection data:
21353a5a1b3Sopenharmony_ci
21453a5a1b3Sopenharmony_ci    bool has_volume
21553a5a1b3Sopenharmony_ci    bool volume_writable
21653a5a1b3Sopenharmony_ci
21753a5a1b3Sopenharmony_ci## v21, implemented by >= 1.0
21853a5a1b3Sopenharmony_ci
21953a5a1b3Sopenharmony_ciChanges for format negotiation in the extended API.
22053a5a1b3Sopenharmony_ci
22153a5a1b3Sopenharmony_ciNew fields PA_COMMAND_CREATE_PLAYBACK_STREAM:
22253a5a1b3Sopenharmony_ci
22353a5a1b3Sopenharmony_ci    uint8_t n_formats
22453a5a1b3Sopenharmony_ci    format_info format1
22553a5a1b3Sopenharmony_ci    ...
22653a5a1b3Sopenharmony_ci    format_info formatn
22753a5a1b3Sopenharmony_ci
22853a5a1b3Sopenharmony_ciOne new field in reply from PA_COMMAND_CREATE_PLAYBACK_STREAM:
22953a5a1b3Sopenharmony_ci
23053a5a1b3Sopenharmony_ci    format_info format
23153a5a1b3Sopenharmony_ci
23253a5a1b3Sopenharmony_ciNew fields in reply from PA_COMMAND_GET_SINK_INFO (and thus
23353a5a1b3Sopenharmony_ciPA_COMMAND_GET_SINK_INFO_LIST)
23453a5a1b3Sopenharmony_ci
23553a5a1b3Sopenharmony_ci    uint8_t n_formats
23653a5a1b3Sopenharmony_ci    format_info format1
23753a5a1b3Sopenharmony_ci    ...
23853a5a1b3Sopenharmony_ci    format_info formatn
23953a5a1b3Sopenharmony_ci
24053a5a1b3Sopenharmony_ciOne new field in reply from PA_COMMAND_GET_SINK_INPUT_INFO (and thus
24153a5a1b3Sopenharmony_ciPA_COMMAND_GET_SINK_INPUT_INFO_LIST)
24253a5a1b3Sopenharmony_ci
24353a5a1b3Sopenharmony_ci    format_info format
24453a5a1b3Sopenharmony_ci
24553a5a1b3Sopenharmony_ci## v22, implemented by >= 1.0
24653a5a1b3Sopenharmony_ci
24753a5a1b3Sopenharmony_ciNew fields PA_COMMAND_CREATE_RECORD_STREAM:
24853a5a1b3Sopenharmony_ci
24953a5a1b3Sopenharmony_ci    uint8_t n_formats
25053a5a1b3Sopenharmony_ci    format_info format1
25153a5a1b3Sopenharmony_ci    ...
25253a5a1b3Sopenharmony_ci    format_info formatn
25353a5a1b3Sopenharmony_ci    volume
25453a5a1b3Sopenharmony_ci    bool muted
25553a5a1b3Sopenharmony_ci    bool volume_set
25653a5a1b3Sopenharmony_ci    bool muted_set
25753a5a1b3Sopenharmony_ci    bool relative_volume
25853a5a1b3Sopenharmony_ci    bool passthrough
25953a5a1b3Sopenharmony_ci
26053a5a1b3Sopenharmony_ciOne new field in reply from PA_COMMAND_CREATE_RECORD_STREAM:
26153a5a1b3Sopenharmony_ci
26253a5a1b3Sopenharmony_ci    format_info format
26353a5a1b3Sopenharmony_ci
26453a5a1b3Sopenharmony_ciNew fields in reply from PA_COMMAND_GET_SOURCE_INFO (and thus
26553a5a1b3Sopenharmony_ciPA_COMMAND_GET_SOURCE_INFO_LIST)
26653a5a1b3Sopenharmony_ci
26753a5a1b3Sopenharmony_ci    uint8_t n_formats
26853a5a1b3Sopenharmony_ci    format_info format1
26953a5a1b3Sopenharmony_ci    ...
27053a5a1b3Sopenharmony_ci    format_info formatn
27153a5a1b3Sopenharmony_ci
27253a5a1b3Sopenharmony_ciFive new fields in reply from PA_COMMAND_GET_SOURCE_OUTPUT_INFO (and thus
27353a5a1b3Sopenharmony_ciPA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST)
27453a5a1b3Sopenharmony_ci
27553a5a1b3Sopenharmony_ci    volume
27653a5a1b3Sopenharmony_ci    bool mute
27753a5a1b3Sopenharmony_ci    bool has_volume
27853a5a1b3Sopenharmony_ci    bool volume_writable
27953a5a1b3Sopenharmony_ci    format_info format
28053a5a1b3Sopenharmony_ci
28153a5a1b3Sopenharmony_ci## v23, implemented by >= 1.0
28253a5a1b3Sopenharmony_ci
28353a5a1b3Sopenharmony_ciNew field in PA_COMMAND_UNDERFLOW:
28453a5a1b3Sopenharmony_ci
28553a5a1b3Sopenharmony_ci    int64_t index
28653a5a1b3Sopenharmony_ci
28753a5a1b3Sopenharmony_ci## v24, implemented by >= 2.0
28853a5a1b3Sopenharmony_ci
28953a5a1b3Sopenharmony_ciNew field in all commands that send/receive port introspection data
29053a5a1b3Sopenharmony_ci(PA_COMMAND_GET_(SOURCE|SINK)_INFO,
29153a5a1b3Sopenharmony_ciPA_COMMAND_GET_(SOURCE|SINK)_INFO_LIST):
29253a5a1b3Sopenharmony_ci
29353a5a1b3Sopenharmony_ci    uint32_t available
29453a5a1b3Sopenharmony_ci
29553a5a1b3Sopenharmony_ciThe field is added once for every port.
29653a5a1b3Sopenharmony_ci
29753a5a1b3Sopenharmony_ci## v25, implemented by >= 2.0
29853a5a1b3Sopenharmony_ci
29953a5a1b3Sopenharmony_ciWhen port availability changes, send a subscription event for the
30053a5a1b3Sopenharmony_ciowning card.
30153a5a1b3Sopenharmony_ci
30253a5a1b3Sopenharmony_ci## v26, implemented by >= 2.0
30353a5a1b3Sopenharmony_ci
30453a5a1b3Sopenharmony_ciIn reply from PA_COMMAND_GET_CARD_INFO (and thus
30553a5a1b3Sopenharmony_ciPA_COMMAND_GET_CARD_INFO_LIST), the following is added:
30653a5a1b3Sopenharmony_ci
30753a5a1b3Sopenharmony_ci    uint32_t n_ports
30853a5a1b3Sopenharmony_ci
30953a5a1b3Sopenharmony_ci...followed by n_ports extended port entries, which look like this:
31053a5a1b3Sopenharmony_ci
31153a5a1b3Sopenharmony_ci    string name
31253a5a1b3Sopenharmony_ci    string description
31353a5a1b3Sopenharmony_ci    uint32_t priority
31453a5a1b3Sopenharmony_ci    uint32_t available
31553a5a1b3Sopenharmony_ci    uint8_t direction
31653a5a1b3Sopenharmony_ci    proplist
31753a5a1b3Sopenharmony_ci    uint32_t n_profiles
31853a5a1b3Sopenharmony_ci    string profile_name_1
31953a5a1b3Sopenharmony_ci    ...
32053a5a1b3Sopenharmony_ci    string profile_name_n
32153a5a1b3Sopenharmony_ci
32253a5a1b3Sopenharmony_ciProfile names must match earlier sent profile names for the same card.
32353a5a1b3Sopenharmony_ci
32453a5a1b3Sopenharmony_ci## v27, implemented by >= 3.0
32553a5a1b3Sopenharmony_ci
32653a5a1b3Sopenharmony_ciNew opcodes:
32753a5a1b3Sopenharmony_ci    PA_COMMAND_SET_PORT_LATENCY_OFFSET
32853a5a1b3Sopenharmony_ci
32953a5a1b3Sopenharmony_ciNew field in the card commands that send/receive port introspection data
33053a5a1b3Sopenharmony_ciPA_COMMAND_GET_CARD_INFO(_LIST)):
33153a5a1b3Sopenharmony_ci
33253a5a1b3Sopenharmony_ci    int64_t latency_offset
33353a5a1b3Sopenharmony_ci
33453a5a1b3Sopenharmony_ciThe field is added once for every port.
33553a5a1b3Sopenharmony_ci
33653a5a1b3Sopenharmony_ci## v28, implemented by >= 4.0
33753a5a1b3Sopenharmony_ci
33853a5a1b3Sopenharmony_ciNew value for encoding format type in format_info
33953a5a1b3Sopenharmony_ciPA_COMMAND_CREATE_(PLAYBACK|RECORDING)_STREAM and its reply,
34053a5a1b3Sopenharmony_ciIn reply from PA_COMMAND_GET_(SOURCE|SOURCE_OUTPUT|SINK|SINK_INPUT)_INFO[_LIST],
34153a5a1b3Sopenharmony_ciSUBCOMMAND_SAVE_FORMATS, in reply from SUBCOMMAND_READ_FORMATS[_ALL]
34253a5a1b3Sopenharmony_ci
34353a5a1b3Sopenharmony_ci    (uint8_t ) PA_ENCODING_MPEG2_AAC_IEC61937 := 6
34453a5a1b3Sopenharmony_ci
34553a5a1b3Sopenharmony_ci## v29, implemented by >= 5.0
34653a5a1b3Sopenharmony_ci#
34753a5a1b3Sopenharmony_ciNew field in all commands that send/receive profile introspection data
34853a5a1b3Sopenharmony_ci(PA_COMMAND_GET_CARD_INFO)
34953a5a1b3Sopenharmony_ci
35053a5a1b3Sopenharmony_ci    uint32 available
35153a5a1b3Sopenharmony_ci
35253a5a1b3Sopenharmony_ciThe field is added once for every profile.
35353a5a1b3Sopenharmony_ci
35453a5a1b3Sopenharmony_ci## v30, implemented by >= 6.0
35553a5a1b3Sopenharmony_ci#
35653a5a1b3Sopenharmony_ciA new protocol mechanism supported: Two ringbuffers in shared memory.
35753a5a1b3Sopenharmony_ciPulseaudio fdsem (wrappers around event file descriptors) are used for
35853a5a1b3Sopenharmony_cisignalling new data.
35953a5a1b3Sopenharmony_ciThe protocol has a new SHM flag telling whether a SHM memblock is writable
36053a5a1b3Sopenharmony_ciby both sides.
36153a5a1b3Sopenharmony_ci
36253a5a1b3Sopenharmony_ciPA_COMMAND_ENABLE_SRBCHANNEL
36353a5a1b3Sopenharmony_ciFirst sent from server to client, tells the client to start listening on
36453a5a1b3Sopenharmony_cithe additional SHM ringbuffer channel.
36553a5a1b3Sopenharmony_ciThis command also has ancillary data (two eventfds attached to it).
36653a5a1b3Sopenharmony_ciMust be directly followed by a memblock which is the ringbuffer memory.
36753a5a1b3Sopenharmony_ciWhen memblock is received by the client, it acks by sending
36853a5a1b3Sopenharmony_ciPA_COMMAND_ENABLE_SRBCHANNEL back (without ancillary or memblock data).
36953a5a1b3Sopenharmony_ci
37053a5a1b3Sopenharmony_ciPA_COMMAND_DISABLE_SRBCHANNEL
37153a5a1b3Sopenharmony_ciTells the client to stop listening on the additional SHM ringbuffer channel.
37253a5a1b3Sopenharmony_ciAcked by client by sending PA_COMMAND_DISABLE_SRBCHANNEL back.
37353a5a1b3Sopenharmony_ci
37453a5a1b3Sopenharmony_ci## v31, implemented by >= 9.0
37553a5a1b3Sopenharmony_ci
37653a5a1b3Sopenharmony_ciMemfd shared-memory support is now added to PulseAudio as an opt-in feature.
37753a5a1b3Sopenharmony_ciAdd 'enable-memfd=yes' to daemon's configuration to use memfds, instead of
37853a5a1b3Sopenharmony_ciPOSIX shm, by default.
37953a5a1b3Sopenharmony_ci
38053a5a1b3Sopenharmony_ciMemfd is a simple memory sharing mechanism, added by the systemd/kdbus
38153a5a1b3Sopenharmony_cidevelopers, to share pages between processes in an anonymous, no global
38253a5a1b3Sopenharmony_ciregistry needed, no mount-point required, relatively secure, manner.
38353a5a1b3Sopenharmony_ci
38453a5a1b3Sopenharmony_ciPulseAudio memfd support builds the necessary (but not yet sufficient)
38553a5a1b3Sopenharmony_cigroundwork for a better integration with per-app containers (e.g. xdg-app)
38653a5a1b3Sopenharmony_ci
38753a5a1b3Sopenharmony_ciFor further details on memfds in general, please check:
38853a5a1b3Sopenharmony_ci
38953a5a1b3Sopenharmony_ci  https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/
39053a5a1b3Sopenharmony_ci  Archived at: http://www.webcitation.org/6gnHTy9Kr
39153a5a1b3Sopenharmony_ci
39253a5a1b3Sopenharmony_ciMoreover, for both client and server, the second most-significant bit of
39353a5a1b3Sopenharmony_cithe version tag is now used to flag memfd SHM support. On the way forward,
39453a5a1b3Sopenharmony_cithe two most-significant _bytes_ of the version tag are now also reserved
39553a5a1b3Sopenharmony_cifor flags.
39653a5a1b3Sopenharmony_ci
39753a5a1b3Sopenharmony_ciPA_COMMAND_REGISTER_MEMFD_SHMID
39853a5a1b3Sopenharmony_ciNew command that can be sent both ways, from client to server and vice versa.
39953a5a1b3Sopenharmony_ciThis is needed to transfer a memfd pool's blocks without passing its fd every
40053a5a1b3Sopenharmony_citime, thus minimizing overhead and avoiding fd leaks.
40153a5a1b3Sopenharmony_ci
40253a5a1b3Sopenharmony_ciThe registration command above sends a packet with the pool's memfd fd as
40353a5a1b3Sopenharmony_ciancillary data. Such packet has an ID that uniquely identifies the pool's
40453a5a1b3Sopenharmony_cimemfd memory area. Upon arrival, the other end (client or server) creates a
40553a5a1b3Sopenharmony_cipermanent ID<->memfd mapping.
40653a5a1b3Sopenharmony_ci
40753a5a1b3Sopenharmony_ciBy doing so, there's need to reference the pool's memfd file descriptor any
40853a5a1b3Sopenharmony_cifurther -- just its ID. Thus both endpoints can then quickly and safely
40953a5a1b3Sopenharmony_ciclose their memfd file descriptors.
41053a5a1b3Sopenharmony_ci
41153a5a1b3Sopenharmony_ci## v32, implemented by >= 10.0
41253a5a1b3Sopenharmony_ci
41353a5a1b3Sopenharmony_ciEnable memfd transport by default.
41453a5a1b3Sopenharmony_ci
41553a5a1b3Sopenharmony_ciThis protocol bump was only created to mark 9.0 clients. Although they
41653a5a1b3Sopenharmony_cisupport memfd transport, such older clients has an iochannel bug that would
41753a5a1b3Sopenharmony_cibreak memfd audio if they're run in 32-bit mode over a 64-bit kernel. Thus
41853a5a1b3Sopenharmony_ciinfluence these buggy libraries to use POSIX shared memory, by signalling
41953a5a1b3Sopenharmony_cimemfd support only to 10.0+ clients.
42053a5a1b3Sopenharmony_ci
42153a5a1b3Sopenharmony_ciCheck commit 451d1d676237c81 for further details.
42253a5a1b3Sopenharmony_ci
42353a5a1b3Sopenharmony_ci## v33, implemented by >= 13.0
42453a5a1b3Sopenharmony_ci
42553a5a1b3Sopenharmony_ciAdded two values to the pa_encoding_t enum:
42653a5a1b3Sopenharmony_ci
42753a5a1b3Sopenharmony_ci    PA_ENCODING_TRUEHD_IEC61937 := 7
42853a5a1b3Sopenharmony_ci    PA_ENCODING_DTSHD_IEC61937 := 8
42953a5a1b3Sopenharmony_ci
43053a5a1b3Sopenharmony_ci## v34, implemented by >= 14.0
43153a5a1b3Sopenharmony_ci
43253a5a1b3Sopenharmony_ciNew fields in the port introspection data (duplicated for all port types:
43353a5a1b3Sopenharmony_cisink, source and card ports):
43453a5a1b3Sopenharmony_ci
43553a5a1b3Sopenharmony_ci    string availability_group
43653a5a1b3Sopenharmony_ci    uint32 type
43753a5a1b3Sopenharmony_ci
43853a5a1b3Sopenharmony_ci## v35, implemented by >= 15.0
43953a5a1b3Sopenharmony_ci
44053a5a1b3Sopenharmony_ciAdded new command for communication with objects.
44153a5a1b3Sopenharmony_ci
44253a5a1b3Sopenharmony_ciPA_COMMAND_SEND_OBJECT_MESSAGE:
44353a5a1b3Sopenharmony_cisends a message to an object identified by an object path
44453a5a1b3Sopenharmony_ci
44553a5a1b3Sopenharmony_ciparameters:
44653a5a1b3Sopenharmony_ci    string object_path - unique path identifying the object
44753a5a1b3Sopenharmony_ci    string message - message name
44853a5a1b3Sopenharmony_ci    string message_parameters - additional parameters if required (may be
44953a5a1b3Sopenharmony_ci                                NULL, which should be treated the same as an
45053a5a1b3Sopenharmony_ci                                empty string)
45153a5a1b3Sopenharmony_ci
45253a5a1b3Sopenharmony_ciThe command returns a string, which may be empty or NULL (NULL should be
45353a5a1b3Sopenharmony_citreated the same as an empty string).
45453a5a1b3Sopenharmony_ci
45553a5a1b3Sopenharmony_ci#### If you just changed the protocol, read this
45653a5a1b3Sopenharmony_ci## module-tunnel depends on the sink/source/sink-input/source-input protocol
45753a5a1b3Sopenharmony_ci## internals, so if you changed these, you might have broken module-tunnel.
45853a5a1b3Sopenharmony_ci## Don't forget to test module-tunnel-{source,sink} when pushing protocol
45953a5a1b3Sopenharmony_ci## changes.
460