You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

379 lines
8.5 KiB

  1. ### v8, implemented by >= 0.8
  2. First version supported.
  3. ### v9, implemented by >= 0.9.0
  4. Reply for PA_COMMAND_CREATE_PLAYBACK_STREAM,
  5. PA_COMMAND_CREATE_RECORD_STREAM now returns buffer_attrs that are used:
  6. Four new fields in reply of PA_COMMAND_CREATE_PLAYBACK_STREAM:
  7. maxlength
  8. tlength
  9. prebuf
  10. minreq
  11. Two new fields in reply of PA_COMMAND_CREATE_RECORD_STREAM:
  12. maxlength
  13. fragsize
  14. ### v10, implemented by >= 0.9.5
  15. New opcodes:
  16. PA_COMMAND_MOVE_SINK_INPUT
  17. PA_COMMAND_MOVE_SOURCE_OUTPUT
  18. SHM data transfer support
  19. ### v11, implemented by >= 0.9.7
  20. Reply to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end:
  21. mute
  22. New opcodes:
  23. PA_COMMAND_SET_SINK_INPUT_MUTE
  24. PA_COMMAND_SUSPEND_SINK
  25. PA_COMMAND_SUSPEND_SOURCE
  26. ### v12, implemented by >= 0.9.8
  27. S32LE, S32BE is now known as sample spec.
  28. Gained six new bool fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
  29. no_remap_channels
  30. no_remix_channels
  31. fix_format
  32. fix_rate
  33. fix_channels
  34. no_move
  35. variable_rate
  36. Reply to these opcodes now includes:
  37. sample_spec
  38. channel_map
  39. device_index
  40. device_name
  41. suspended
  42. New opcodes for changing buffer attrs:
  43. PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR
  44. PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR
  45. New opcodes for changing sampling rate:
  46. PA_COMMAND_UPDATE_PLAYBACK_STREAM_SAMPLE_RATE
  47. PA_COMMAND_UPDATE_RECORD_STREAM_SAMPLE_RATE
  48. New opcodes for notifications:
  49. PA_COMMAND_PLAYBACK_STREAM_SUSPENDED
  50. PA_COMMAND_CAPTURE_STREAM_SUSPENDED
  51. PA_COMMAND_PLAYBACK_STREAM_MOVED
  52. PA_COMMAND_CAPTURE_STREAM_MOVED
  53. ### v13, implemented by >= 0.9.11
  54. New fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end:
  55. peak_detect (bool)
  56. adjust_latency (bool)
  57. Replace field "name" for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM at the end:
  58. proplist
  59. Replace field "name" for PA_COMMAND_SET_CLIENT_NAME request at the end:
  60. proplist
  61. On response of PA_COMMAND_SET_CLIENT_NAME:
  62. client_index
  63. New proplist field for sink, source, sink input, source output introspection opcodes and at the end:
  64. proplist
  65. New opcodes for proplist modifications
  66. PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST
  67. PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST
  68. PA_COMMAND_UPDATE_CLIENT_PROPLIST
  69. PA_COMMAND_REMOVE_RECORD_STREAM_PROPLIST
  70. PA_COMMAND_REMOVE_PLAYBACK_STREAM_PROPLIST
  71. PA_COMMAND_REMOVE_CLIENT_PROPLIST
  72. New field for PA_COMMAND_PLAY_SAMPLE:
  73. proplist
  74. New field for PA_COMMAND_PLAY_SAMPLE response:
  75. idx
  76. New field for PA_COMMAND_CREATE_PLAYBACK_STREAM at the end:
  77. start_muted
  78. Buffer attributes for PA_COMMAND_CREATE_PLAYBACK_STREAM and
  79. PA_COMMAND_CREATE_RECORD_STREAM may now be 0 for default values.
  80. New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
  81. PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
  82. adjust_latency (bool)
  83. new message:
  84. PA_COMMAND_STARTED
  85. ### v14, implemented by >= 0.9.12
  86. new message:
  87. PA_COMMAND_EXTENSION
  88. PA_COMMAND_CREATE_PLAYBACK_STREAM:
  89. bool volume_set at the end
  90. PA_COMMAND_CREATE_RECORD_STREAM, PA_COMMAND_CREATE_PLAYBACK_STREAM:
  91. bool early_requests at the end
  92. New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR,
  93. PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end:
  94. early_requests (bool)
  95. ### v15, implemented by >= 0.9.15
  96. PA_COMMAND_CREATE_PLAYBACK_STREAM
  97. bool muted at the end
  98. PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM:
  99. bool dont_inhibit_auto_suspend at the end
  100. PA_COMMAND_GET_MODULE_INFO_LIST
  101. remove bool auto_unload
  102. add proplist at the end
  103. new messages:
  104. PA_COMMAND_GET_CARD_INFO
  105. PA_COMMAND_GET_CARD_INFO_LIST
  106. PA_COMMAND_SET_CARD_PROFILE
  107. PA_COMMAND_CLIENT_EVENT
  108. PA_COMMAND_PLAYBACK_STREAM_EVENT
  109. PA_COMMAND_RECORD_STREAM_EVENT
  110. PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED
  111. PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED
  112. ### v16, implemented by >= 0.9.15
  113. new messages:
  114. PA_COMMAND_SET_SINK_PORT
  115. PA_COMMAND_SET_SOURCE_PORT
  116. ## v17, implemented by >= 0.9.20
  117. new flag at end of CREATE_PLAYBACK_STREAM:
  118. bool relative_volume
  119. ## v18, implemented by >= 0.9.22
  120. new flag at end of CREATE_PLAYBACK_STREAM:
  121. bool passthrough
  122. ## v19, implemented by >= 0.9.22
  123. New flag at the end of sink input and source output introspection data:
  124. bool corked
  125. ## v20, implemented by >= 1.0
  126. Two new flags at the end of sink input introspection data:
  127. bool has_volume
  128. bool volume_writable
  129. ## v21, implemented by >= 1.0
  130. Changes for format negotiation in the extended API.
  131. New fields PA_COMMAND_CREATE_PLAYBACK_STREAM:
  132. uint8_t n_formats
  133. format_info format1
  134. ...
  135. format_info formatn
  136. One new field in reply from PA_COMMAND_CREATE_PLAYBACK_STREAM:
  137. format_info format
  138. New fields in reply from PA_COMMAND_GET_SINK_INFO (and thus
  139. PA_COMMAND_GET_SINK_INFO_LIST)
  140. uint8_t n_formats
  141. format_info format1
  142. ...
  143. format_info formatn
  144. One new field in reply from PA_COMMAND_GET_SINK_INPUT_INFO (and thus
  145. PA_COMMAND_GET_SINK_INPUT_INFO_LIST)
  146. format_info format
  147. ## v22, implemented by >= 1.0
  148. New fields PA_COMMAND_CREATE_RECORD_STREAM:
  149. uint8_t n_formats
  150. format_info format1
  151. ...
  152. format_info formatn
  153. volume
  154. bool muted
  155. bool volume_set
  156. bool muted_set
  157. bool relative_volume
  158. bool passthrough
  159. One new field in reply from PA_COMMAND_CREATE_RECORD_STREAM:
  160. format_info format
  161. New fields in reply from PA_COMMAND_GET_SOURCE_INFO (and thus
  162. PA_COMMAND_GET_SOURCE_INFO_LIST)
  163. uint8_t n_formats
  164. format_info format1
  165. ...
  166. format_info formatn
  167. Five new fields in reply from PA_COMMAND_GET_SOURCE_OUTPUT_INFO (and thus
  168. PA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST)
  169. volume
  170. bool mute
  171. bool has_volume
  172. bool volume_writable
  173. format_info format
  174. ## v23, implemented by >= 1.0
  175. New field in PA_COMMAND_UNDERFLOW:
  176. int64_t index
  177. ## v24, implemented by >= 2.0
  178. New field in all commands that send/receive port introspection data
  179. (PA_COMMAND_GET_(SOURCE|SINK)_INFO,
  180. PA_COMMAND_GET_(SOURCE|SINK)_INFO_LIST):
  181. uint32_t available
  182. The field is added once for every port.
  183. ## v25, implemented by >= 2.0
  184. When port availability changes, send a subscription event for the
  185. owning card.
  186. ## v26, implemented by >= 2.0
  187. In reply from PA_COMMAND_GET_CARD_INFO (and thus
  188. PA_COMMAND_GET_CARD_INFO_LIST), the following is added:
  189. uint32_t n_ports
  190. ...followed by n_ports extended port entries, which look like this:
  191. string name
  192. string description
  193. uint32_t priority
  194. uint32_t available
  195. uint8_t direction
  196. proplist
  197. uint32_t n_profiles
  198. string profile_name_1
  199. ...
  200. string profile_name_n
  201. Profile names must match earlier sent profile names for the same card.
  202. ## v27, implemented by >= 3.0
  203. New opcodes:
  204. PA_COMMAND_SET_PORT_LATENCY_OFFSET
  205. New field in the card commands that send/receive port introspection data
  206. PA_COMMAND_GET_CARD_INFO(_LIST)):
  207. int64_t latency_offset
  208. The field is added once for every port.
  209. ## v28, implemented by >= 4.0
  210. New value for encoding format type in format_info
  211. PA_COMMAND_CREATE_(PLAYBACK|RECORDING)_STREAM and its reply,
  212. In reply from PA_COMMAND_GET_(SOURCE|SOURCE_OUTPUT|SINK|SINK_INPUT)_INFO[_LIST],
  213. SUBCOMMAND_SAVE_FORMATS, in reply from SUBCOMMAND_READ_FORMATS[_ALL]
  214. (uint8_t ) PA_ENCODING_MPEG2_AAC_IEC61937 := 6
  215. ## v29, implemented by >= 5.0
  216. #
  217. New field in all commands that send/receive profile introspection data
  218. (PA_COMMAND_GET_CARD_INFO)
  219. uint32 available
  220. The field is added once for every profile.
  221. ## v30, implemented by >= 6.0
  222. #
  223. A new protocol mechanism supported: Two ringbuffers in shared memory.
  224. Pulseaudio fdsem (wrappers around event file descriptors) are used for
  225. signalling new data.
  226. The protocol has a new SHM flag telling whether a SHM memblock is writable
  227. by both sides.
  228. PA_COMMAND_ENABLE_SRBCHANNEL
  229. First sent from server to client, tells the client to start listening on
  230. the additional SHM ringbuffer channel.
  231. This command also has ancillary data (two eventfds attached to it).
  232. Must be directly followed by a memblock which is the ringbuffer memory.
  233. When memblock is received by the client, it acks by sending
  234. PA_COMMAND_ENABLE_SRBCHANNEL back (without ancillary or memblock data).
  235. PA_COMMAND_DISABLE_SRBCHANNEL
  236. Tells the client to stop listening on the additional SHM ringbuffer channel.
  237. Acked by client by sending PA_COMMAND_DISABLE_SRBCHANNEL back.
  238. #### If you just changed the protocol, read this
  239. ## module-tunnel depends on the sink/source/sink-input/source-input protocol
  240. ## internals, so if you changed these, you might have broken module-tunnel.
  241. ## Don't forget to test module-tunnel-{source,sink} when pushing protocol
  242. ## changes.