audio.json (10980B)
1 # -*- mode: python -*- 2 # vim: filetype=python 3 # 4 # Copyright (C) 2015-2019 Zoltán Kővágó <DirtY.iCE.hu@gmail.com> 5 # 6 # This work is licensed under the terms of the GNU GPL, version 2 or later. 7 # See the COPYING file in the top-level directory. 8 9 ## 10 # = Audio 11 ## 12 13 ## 14 # @AudiodevPerDirectionOptions: 15 # 16 # General audio backend options that are used for both playback and 17 # recording. 18 # 19 # @mixing-engine: use QEMU's mixing engine to mix all streams inside QEMU and 20 # convert audio formats when not supported by the backend. When 21 # set to off, fixed-settings must be also off (default on, 22 # since 4.2) 23 # 24 # @fixed-settings: use fixed settings for host input/output. When off, 25 # frequency, channels and format must not be 26 # specified (default true) 27 # 28 # @frequency: frequency to use when using fixed settings 29 # (default 44100) 30 # 31 # @channels: number of channels when using fixed settings (default 2) 32 # 33 # @voices: number of voices to use (default 1) 34 # 35 # @format: sample format to use when using fixed settings 36 # (default s16) 37 # 38 # @buffer-length: the buffer length in microseconds 39 # 40 # Since: 4.0 41 ## 42 { 'struct': 'AudiodevPerDirectionOptions', 43 'data': { 44 '*mixing-engine': 'bool', 45 '*fixed-settings': 'bool', 46 '*frequency': 'uint32', 47 '*channels': 'uint32', 48 '*voices': 'uint32', 49 '*format': 'AudioFormat', 50 '*buffer-length': 'uint32' } } 51 52 ## 53 # @AudiodevGenericOptions: 54 # 55 # Generic driver-specific options. 56 # 57 # @in: options of the capture stream 58 # 59 # @out: options of the playback stream 60 # 61 # Since: 4.0 62 ## 63 { 'struct': 'AudiodevGenericOptions', 64 'data': { 65 '*in': 'AudiodevPerDirectionOptions', 66 '*out': 'AudiodevPerDirectionOptions' } } 67 68 ## 69 # @AudiodevAlsaPerDirectionOptions: 70 # 71 # Options of the ALSA backend that are used for both playback and 72 # recording. 73 # 74 # @dev: the name of the ALSA device to use (default 'default') 75 # 76 # @period-length: the period length in microseconds 77 # 78 # @try-poll: attempt to use poll mode, falling back to non-polling 79 # access on failure (default true) 80 # 81 # Since: 4.0 82 ## 83 { 'struct': 'AudiodevAlsaPerDirectionOptions', 84 'base': 'AudiodevPerDirectionOptions', 85 'data': { 86 '*dev': 'str', 87 '*period-length': 'uint32', 88 '*try-poll': 'bool' } } 89 90 ## 91 # @AudiodevAlsaOptions: 92 # 93 # Options of the ALSA audio backend. 94 # 95 # @in: options of the capture stream 96 # 97 # @out: options of the playback stream 98 # 99 # @threshold: set the threshold (in microseconds) when playback starts 100 # 101 # Since: 4.0 102 ## 103 { 'struct': 'AudiodevAlsaOptions', 104 'data': { 105 '*in': 'AudiodevAlsaPerDirectionOptions', 106 '*out': 'AudiodevAlsaPerDirectionOptions', 107 '*threshold': 'uint32' } } 108 109 ## 110 # @AudiodevSndioOptions: 111 # 112 # Options of the sndio audio backend. 113 # 114 # @in: options of the capture stream 115 # 116 # @out: options of the playback stream 117 # 118 # @dev: the name of the sndio device to use (default 'default') 119 # 120 # @latency: play buffer size (in microseconds) 121 # 122 # Since: 7.2 123 ## 124 { 'struct': 'AudiodevSndioOptions', 125 'data': { 126 '*in': 'AudiodevPerDirectionOptions', 127 '*out': 'AudiodevPerDirectionOptions', 128 '*dev': 'str', 129 '*latency': 'uint32'} } 130 131 ## 132 # @AudiodevCoreaudioPerDirectionOptions: 133 # 134 # Options of the Core Audio backend that are used for both playback and 135 # recording. 136 # 137 # @buffer-count: number of buffers 138 # 139 # Since: 4.0 140 ## 141 { 'struct': 'AudiodevCoreaudioPerDirectionOptions', 142 'base': 'AudiodevPerDirectionOptions', 143 'data': { 144 '*buffer-count': 'uint32' } } 145 146 ## 147 # @AudiodevCoreaudioOptions: 148 # 149 # Options of the coreaudio audio backend. 150 # 151 # @in: options of the capture stream 152 # 153 # @out: options of the playback stream 154 # 155 # Since: 4.0 156 ## 157 { 'struct': 'AudiodevCoreaudioOptions', 158 'data': { 159 '*in': 'AudiodevCoreaudioPerDirectionOptions', 160 '*out': 'AudiodevCoreaudioPerDirectionOptions' } } 161 162 ## 163 # @AudiodevDsoundOptions: 164 # 165 # Options of the DirectSound audio backend. 166 # 167 # @in: options of the capture stream 168 # 169 # @out: options of the playback stream 170 # 171 # @latency: add extra latency to playback in microseconds 172 # (default 10000) 173 # 174 # Since: 4.0 175 ## 176 { 'struct': 'AudiodevDsoundOptions', 177 'data': { 178 '*in': 'AudiodevPerDirectionOptions', 179 '*out': 'AudiodevPerDirectionOptions', 180 '*latency': 'uint32' } } 181 182 ## 183 # @AudiodevJackPerDirectionOptions: 184 # 185 # Options of the JACK backend that are used for both playback and 186 # recording. 187 # 188 # @server-name: select from among several possible concurrent server instances 189 # (default: environment variable $JACK_DEFAULT_SERVER if set, else "default") 190 # 191 # @client-name: the client name to use. The server will modify this name to 192 # create a unique variant, if needed unless @exact-name is true (default: the 193 # guest's name) 194 # 195 # @connect-ports: if set, a regular expression of JACK client port name(s) to 196 # monitor for and automatically connect to 197 # 198 # @start-server: start a jack server process if one is not already present 199 # (default: false) 200 # 201 # @exact-name: use the exact name requested otherwise JACK automatically 202 # generates a unique one, if needed (default: false) 203 # 204 # Since: 5.1 205 ## 206 { 'struct': 'AudiodevJackPerDirectionOptions', 207 'base': 'AudiodevPerDirectionOptions', 208 'data': { 209 '*server-name': 'str', 210 '*client-name': 'str', 211 '*connect-ports': 'str', 212 '*start-server': 'bool', 213 '*exact-name': 'bool' } } 214 215 ## 216 # @AudiodevJackOptions: 217 # 218 # Options of the JACK audio backend. 219 # 220 # @in: options of the capture stream 221 # 222 # @out: options of the playback stream 223 # 224 # Since: 5.1 225 ## 226 { 'struct': 'AudiodevJackOptions', 227 'data': { 228 '*in': 'AudiodevJackPerDirectionOptions', 229 '*out': 'AudiodevJackPerDirectionOptions' } } 230 231 ## 232 # @AudiodevOssPerDirectionOptions: 233 # 234 # Options of the OSS backend that are used for both playback and 235 # recording. 236 # 237 # @dev: file name of the OSS device (default '/dev/dsp') 238 # 239 # @buffer-count: number of buffers 240 # 241 # @try-poll: attempt to use poll mode, falling back to non-polling 242 # access on failure (default true) 243 # 244 # Since: 4.0 245 ## 246 { 'struct': 'AudiodevOssPerDirectionOptions', 247 'base': 'AudiodevPerDirectionOptions', 248 'data': { 249 '*dev': 'str', 250 '*buffer-count': 'uint32', 251 '*try-poll': 'bool' } } 252 253 ## 254 # @AudiodevOssOptions: 255 # 256 # Options of the OSS audio backend. 257 # 258 # @in: options of the capture stream 259 # 260 # @out: options of the playback stream 261 # 262 # @try-mmap: try using memory-mapped access, falling back to 263 # non-memory-mapped access on failure (default true) 264 # 265 # @exclusive: open device in exclusive mode (vmix won't work) 266 # (default false) 267 # 268 # @dsp-policy: set the timing policy of the device (between 0 and 10, 269 # where smaller number means smaller latency but higher 270 # CPU usage) or -1 to use fragment mode (option ignored 271 # on some platforms) (default 5) 272 # 273 # Since: 4.0 274 ## 275 { 'struct': 'AudiodevOssOptions', 276 'data': { 277 '*in': 'AudiodevOssPerDirectionOptions', 278 '*out': 'AudiodevOssPerDirectionOptions', 279 '*try-mmap': 'bool', 280 '*exclusive': 'bool', 281 '*dsp-policy': 'uint32' } } 282 283 ## 284 # @AudiodevPaPerDirectionOptions: 285 # 286 # Options of the Pulseaudio backend that are used for both playback and 287 # recording. 288 # 289 # @name: name of the sink/source to use 290 # 291 # @stream-name: name of the PulseAudio stream created by qemu. Can be 292 # used to identify the stream in PulseAudio when you 293 # create multiple PulseAudio devices or run multiple qemu 294 # instances (default: audiodev's id, since 4.2) 295 # 296 # @latency: latency you want PulseAudio to achieve in microseconds 297 # (default 15000) 298 # 299 # Since: 4.0 300 ## 301 { 'struct': 'AudiodevPaPerDirectionOptions', 302 'base': 'AudiodevPerDirectionOptions', 303 'data': { 304 '*name': 'str', 305 '*stream-name': 'str', 306 '*latency': 'uint32' } } 307 308 ## 309 # @AudiodevPaOptions: 310 # 311 # Options of the PulseAudio audio backend. 312 # 313 # @in: options of the capture stream 314 # 315 # @out: options of the playback stream 316 # 317 # @server: PulseAudio server address (default: let PulseAudio choose) 318 # 319 # Since: 4.0 320 ## 321 { 'struct': 'AudiodevPaOptions', 322 'data': { 323 '*in': 'AudiodevPaPerDirectionOptions', 324 '*out': 'AudiodevPaPerDirectionOptions', 325 '*server': 'str' } } 326 327 ## 328 # @AudiodevSdlPerDirectionOptions: 329 # 330 # Options of the SDL audio backend that are used for both playback and 331 # recording. 332 # 333 # @buffer-count: number of buffers (default 4) 334 # 335 # Since: 6.0 336 ## 337 { 'struct': 'AudiodevSdlPerDirectionOptions', 338 'base': 'AudiodevPerDirectionOptions', 339 'data': { 340 '*buffer-count': 'uint32' } } 341 342 ## 343 # @AudiodevSdlOptions: 344 # 345 # Options of the SDL audio backend. 346 # 347 # @in: options of the recording stream 348 # 349 # @out: options of the playback stream 350 # 351 # Since: 6.0 352 ## 353 { 'struct': 'AudiodevSdlOptions', 354 'data': { 355 '*in': 'AudiodevSdlPerDirectionOptions', 356 '*out': 'AudiodevSdlPerDirectionOptions' } } 357 358 ## 359 # @AudiodevWavOptions: 360 # 361 # Options of the wav audio backend. 362 # 363 # @in: options of the capture stream 364 # 365 # @out: options of the playback stream 366 # 367 # @path: name of the wav file to record (default 'qemu.wav') 368 # 369 # Since: 4.0 370 ## 371 { 'struct': 'AudiodevWavOptions', 372 'data': { 373 '*in': 'AudiodevPerDirectionOptions', 374 '*out': 'AudiodevPerDirectionOptions', 375 '*path': 'str' } } 376 377 ## 378 # @AudioFormat: 379 # 380 # An enumeration of possible audio formats. 381 # 382 # @u8: unsigned 8 bit integer 383 # 384 # @s8: signed 8 bit integer 385 # 386 # @u16: unsigned 16 bit integer 387 # 388 # @s16: signed 16 bit integer 389 # 390 # @u32: unsigned 32 bit integer 391 # 392 # @s32: signed 32 bit integer 393 # 394 # @f32: single precision floating-point (since 5.0) 395 # 396 # Since: 4.0 397 ## 398 { 'enum': 'AudioFormat', 399 'data': [ 'u8', 's8', 'u16', 's16', 'u32', 's32', 'f32' ] } 400 401 ## 402 # @AudiodevDriver: 403 # 404 # An enumeration of possible audio backend drivers. 405 # 406 # @jack: JACK audio backend (since 5.1) 407 # 408 # Since: 4.0 409 ## 410 { 'enum': 'AudiodevDriver', 411 'data': [ 'none', 'alsa', 'coreaudio', 'dbus', 'dsound', 'jack', 'oss', 'pa', 412 'sdl', 'sndio', 'spice', 'wav' ] } 413 414 ## 415 # @Audiodev: 416 # 417 # Options of an audio backend. 418 # 419 # @id: identifier of the backend 420 # 421 # @driver: the backend driver to use 422 # 423 # @timer-period: timer period (in microseconds, 0: use lowest possible) 424 # 425 # Since: 4.0 426 ## 427 { 'union': 'Audiodev', 428 'base': { 429 'id': 'str', 430 'driver': 'AudiodevDriver', 431 '*timer-period': 'uint32' }, 432 'discriminator': 'driver', 433 'data': { 434 'none': 'AudiodevGenericOptions', 435 'alsa': 'AudiodevAlsaOptions', 436 'coreaudio': 'AudiodevCoreaudioOptions', 437 'dbus': 'AudiodevGenericOptions', 438 'dsound': 'AudiodevDsoundOptions', 439 'jack': 'AudiodevJackOptions', 440 'oss': 'AudiodevOssOptions', 441 'pa': 'AudiodevPaOptions', 442 'sdl': 'AudiodevSdlOptions', 443 'sndio': 'AudiodevSndioOptions', 444 'spice': 'AudiodevGenericOptions', 445 'wav': 'AudiodevWavOptions' } }