### 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 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. #### 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.