mirror of
https://github.com/qemu/qemu.git
synced 2025-08-21 15:28:24 +00:00

The new qapidoc.py can generate "Returns" statements with type information just fine, so we can remove it from the source where it doesn't add anything particularly novel or helpful and just repeats the type info. This patch is fairly "gentle" and doesn't aggressively touch other "Returns" lines that could be rephrased to omit repeating type information; it only removes lines that appear appropriate to wholly remove. To help facilitate auto-generated placement, a few doc blocks have a "TODO:" line inserted to help the placement algorithm differentiate the introductory paragraph(s) from the rest of the documentation. The auto-generated returns are in the exact same spot, except for query-migrationthreads, query-machines, and x-query-virtio-queue-element. These auto-generation moves to a better spot. Signed-off-by: John Snow <jsnow@redhat.com> Message-ID: <20250711051045.51110-4-jsnow@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> [Two more Returns: removed, commit message amended to explain auto-generated returns generated into a different spot] Signed-off-by: Markus Armbruster <armbru@redhat.com>
544 lines
13 KiB
Python
544 lines
13 KiB
Python
# -*- mode: python -*-
|
|
# vim: filetype=python
|
|
#
|
|
# Copyright (C) 2015-2019 Zoltán Kővágó <DirtY.iCE.hu@gmail.com>
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
##
|
|
# *****
|
|
# Audio
|
|
# *****
|
|
##
|
|
|
|
##
|
|
# @AudiodevPerDirectionOptions:
|
|
#
|
|
# General audio backend options that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @mixing-engine: use QEMU's mixing engine to mix all streams inside
|
|
# QEMU and convert audio formats when not supported by the
|
|
# backend. When set to off, fixed-settings must be also off
|
|
# (default on, since 4.2)
|
|
#
|
|
# @fixed-settings: use fixed settings for host input/output. When
|
|
# off, frequency, channels and format must not be specified
|
|
# (default true)
|
|
#
|
|
# @frequency: frequency to use when using fixed settings (default
|
|
# 44100)
|
|
#
|
|
# @channels: number of channels when using fixed settings (default 2)
|
|
#
|
|
# @voices: number of voices to use (default 1)
|
|
#
|
|
# @format: sample format to use when using fixed settings (default
|
|
# s16)
|
|
#
|
|
# @buffer-length: the buffer length in microseconds
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*mixing-engine': 'bool',
|
|
'*fixed-settings': 'bool',
|
|
'*frequency': 'uint32',
|
|
'*channels': 'uint32',
|
|
'*voices': 'uint32',
|
|
'*format': 'AudioFormat',
|
|
'*buffer-length': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevGenericOptions:
|
|
#
|
|
# Generic driver-specific options.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevGenericOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPerDirectionOptions',
|
|
'*out': 'AudiodevPerDirectionOptions' } }
|
|
|
|
##
|
|
# @AudiodevDBusOptions:
|
|
#
|
|
# Options of the D-Bus audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @nsamples: set the number of samples per read/write calls (default to 480,
|
|
# 10ms at 48kHz).
|
|
#
|
|
# Since: 10.0
|
|
##
|
|
{ 'struct': 'AudiodevDBusOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPerDirectionOptions',
|
|
'*out': 'AudiodevPerDirectionOptions',
|
|
'*nsamples': 'uint32'} }
|
|
|
|
##
|
|
# @AudiodevAlsaPerDirectionOptions:
|
|
#
|
|
# Options of the ALSA backend that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @dev: the name of the ALSA device to use (default 'default')
|
|
#
|
|
# @period-length: the period length in microseconds
|
|
#
|
|
# @try-poll: attempt to use poll mode, falling back to non-polling
|
|
# access on failure (default false)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevAlsaPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*dev': 'str',
|
|
'*period-length': 'uint32',
|
|
'*try-poll': 'bool' } }
|
|
|
|
##
|
|
# @AudiodevAlsaOptions:
|
|
#
|
|
# Options of the ALSA audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @threshold: set the threshold (in microseconds) when playback starts
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevAlsaOptions',
|
|
'data': {
|
|
'*in': 'AudiodevAlsaPerDirectionOptions',
|
|
'*out': 'AudiodevAlsaPerDirectionOptions',
|
|
'*threshold': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevSndioOptions:
|
|
#
|
|
# Options of the sndio audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @dev: the name of the sndio device to use (default 'default')
|
|
#
|
|
# @latency: play buffer size (in microseconds)
|
|
#
|
|
# Since: 7.2
|
|
##
|
|
{ 'struct': 'AudiodevSndioOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPerDirectionOptions',
|
|
'*out': 'AudiodevPerDirectionOptions',
|
|
'*dev': 'str',
|
|
'*latency': 'uint32'} }
|
|
|
|
##
|
|
# @AudiodevCoreaudioPerDirectionOptions:
|
|
#
|
|
# Options of the Core Audio backend that are used for both playback
|
|
# and recording.
|
|
#
|
|
# @buffer-count: number of buffers
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevCoreaudioPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*buffer-count': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevCoreaudioOptions:
|
|
#
|
|
# Options of the coreaudio audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevCoreaudioOptions',
|
|
'data': {
|
|
'*in': 'AudiodevCoreaudioPerDirectionOptions',
|
|
'*out': 'AudiodevCoreaudioPerDirectionOptions' } }
|
|
|
|
##
|
|
# @AudiodevDsoundOptions:
|
|
#
|
|
# Options of the DirectSound audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @latency: add extra latency to playback in microseconds (default
|
|
# 10000)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevDsoundOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPerDirectionOptions',
|
|
'*out': 'AudiodevPerDirectionOptions',
|
|
'*latency': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevJackPerDirectionOptions:
|
|
#
|
|
# Options of the JACK backend that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @server-name: select from among several possible concurrent server
|
|
# instances (default: environment variable $JACK_DEFAULT_SERVER if
|
|
# set, else "default")
|
|
#
|
|
# @client-name: the client name to use. The server will modify this
|
|
# name to create a unique variant, if needed unless @exact-name is
|
|
# true (default: the guest's name)
|
|
#
|
|
# @connect-ports: if set, a regular expression of JACK client port
|
|
# name(s) to monitor for and automatically connect to
|
|
#
|
|
# @start-server: start a jack server process if one is not already
|
|
# present (default: false)
|
|
#
|
|
# @exact-name: use the exact name requested otherwise JACK
|
|
# automatically generates a unique one, if needed (default: false)
|
|
#
|
|
# Since: 5.1
|
|
##
|
|
{ 'struct': 'AudiodevJackPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*server-name': 'str',
|
|
'*client-name': 'str',
|
|
'*connect-ports': 'str',
|
|
'*start-server': 'bool',
|
|
'*exact-name': 'bool' } }
|
|
|
|
##
|
|
# @AudiodevJackOptions:
|
|
#
|
|
# Options of the JACK audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# Since: 5.1
|
|
##
|
|
{ 'struct': 'AudiodevJackOptions',
|
|
'data': {
|
|
'*in': 'AudiodevJackPerDirectionOptions',
|
|
'*out': 'AudiodevJackPerDirectionOptions' } }
|
|
|
|
##
|
|
# @AudiodevOssPerDirectionOptions:
|
|
#
|
|
# Options of the OSS backend that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @dev: file name of the OSS device (default '/dev/dsp')
|
|
#
|
|
# @buffer-count: number of buffers
|
|
#
|
|
# @try-poll: attempt to use poll mode, falling back to non-polling
|
|
# access on failure (default true)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevOssPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*dev': 'str',
|
|
'*buffer-count': 'uint32',
|
|
'*try-poll': 'bool' } }
|
|
|
|
##
|
|
# @AudiodevOssOptions:
|
|
#
|
|
# Options of the OSS audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @try-mmap: try using memory-mapped access, falling back to
|
|
# non-memory-mapped access on failure (default true)
|
|
#
|
|
# @exclusive: open device in exclusive mode (vmix won't work) (default
|
|
# false)
|
|
#
|
|
# @dsp-policy: set the timing policy of the device (between 0 and 10,
|
|
# where smaller number means smaller latency but higher CPU usage)
|
|
# or -1 to use fragment mode (option ignored on some platforms)
|
|
# (default 5)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevOssOptions',
|
|
'data': {
|
|
'*in': 'AudiodevOssPerDirectionOptions',
|
|
'*out': 'AudiodevOssPerDirectionOptions',
|
|
'*try-mmap': 'bool',
|
|
'*exclusive': 'bool',
|
|
'*dsp-policy': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevPaPerDirectionOptions:
|
|
#
|
|
# Options of the Pulseaudio backend that are used for both playback
|
|
# and recording.
|
|
#
|
|
# @name: name of the sink/source to use
|
|
#
|
|
# @stream-name: name of the PulseAudio stream created by QEMU. Can be
|
|
# used to identify the stream in PulseAudio when you create
|
|
# multiple PulseAudio devices or run multiple QEMU instances
|
|
# (default: audiodev's id, since 4.2)
|
|
#
|
|
# @latency: latency you want PulseAudio to achieve in microseconds
|
|
# (default 15000)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevPaPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*name': 'str',
|
|
'*stream-name': 'str',
|
|
'*latency': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevPaOptions:
|
|
#
|
|
# Options of the PulseAudio audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @server: PulseAudio server address (default: let PulseAudio choose)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevPaOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPaPerDirectionOptions',
|
|
'*out': 'AudiodevPaPerDirectionOptions',
|
|
'*server': 'str' } }
|
|
|
|
##
|
|
# @AudiodevPipewirePerDirectionOptions:
|
|
#
|
|
# Options of the PipeWire backend that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @name: name of the sink/source to use
|
|
#
|
|
# @stream-name: name of the PipeWire stream created by QEMU. Can be
|
|
# used to identify the stream in PipeWire when you create multiple
|
|
# PipeWire devices or run multiple QEMU instances (default:
|
|
# audiodev's id)
|
|
#
|
|
# @latency: latency you want PipeWire to achieve in microseconds
|
|
# (default 46000)
|
|
#
|
|
# Since: 8.1
|
|
##
|
|
{ 'struct': 'AudiodevPipewirePerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*name': 'str',
|
|
'*stream-name': 'str',
|
|
'*latency': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevPipewireOptions:
|
|
#
|
|
# Options of the PipeWire audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# Since: 8.1
|
|
##
|
|
{ 'struct': 'AudiodevPipewireOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPipewirePerDirectionOptions',
|
|
'*out': 'AudiodevPipewirePerDirectionOptions' } }
|
|
|
|
##
|
|
# @AudiodevSdlPerDirectionOptions:
|
|
#
|
|
# Options of the SDL audio backend that are used for both playback and
|
|
# recording.
|
|
#
|
|
# @buffer-count: number of buffers (default 4)
|
|
#
|
|
# Since: 6.0
|
|
##
|
|
{ 'struct': 'AudiodevSdlPerDirectionOptions',
|
|
'base': 'AudiodevPerDirectionOptions',
|
|
'data': {
|
|
'*buffer-count': 'uint32' } }
|
|
|
|
##
|
|
# @AudiodevSdlOptions:
|
|
#
|
|
# Options of the SDL audio backend.
|
|
#
|
|
# @in: options of the recording stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# Since: 6.0
|
|
##
|
|
{ 'struct': 'AudiodevSdlOptions',
|
|
'data': {
|
|
'*in': 'AudiodevSdlPerDirectionOptions',
|
|
'*out': 'AudiodevSdlPerDirectionOptions' } }
|
|
|
|
##
|
|
# @AudiodevWavOptions:
|
|
#
|
|
# Options of the wav audio backend.
|
|
#
|
|
# @in: options of the capture stream
|
|
#
|
|
# @out: options of the playback stream
|
|
#
|
|
# @path: name of the wav file to record (default 'qemu.wav')
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'struct': 'AudiodevWavOptions',
|
|
'data': {
|
|
'*in': 'AudiodevPerDirectionOptions',
|
|
'*out': 'AudiodevPerDirectionOptions',
|
|
'*path': 'str' } }
|
|
|
|
##
|
|
# @AudioFormat:
|
|
#
|
|
# An enumeration of possible audio formats.
|
|
#
|
|
# @u8: unsigned 8 bit integer
|
|
#
|
|
# @s8: signed 8 bit integer
|
|
#
|
|
# @u16: unsigned 16 bit integer
|
|
#
|
|
# @s16: signed 16 bit integer
|
|
#
|
|
# @u32: unsigned 32 bit integer
|
|
#
|
|
# @s32: signed 32 bit integer
|
|
#
|
|
# @f32: single precision floating-point (since 5.0)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'enum': 'AudioFormat',
|
|
'data': [ 'u8', 's8', 'u16', 's16', 'u32', 's32', 'f32' ] }
|
|
|
|
##
|
|
# @AudiodevDriver:
|
|
#
|
|
# An enumeration of possible audio backend drivers.
|
|
#
|
|
# @jack: JACK audio backend (since 5.1)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'enum': 'AudiodevDriver',
|
|
'data': [ 'none',
|
|
{ 'name': 'alsa', 'if': 'CONFIG_AUDIO_ALSA' },
|
|
{ 'name': 'coreaudio', 'if': 'CONFIG_AUDIO_COREAUDIO' },
|
|
{ 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' },
|
|
{ 'name': 'dsound', 'if': 'CONFIG_AUDIO_DSOUND' },
|
|
{ 'name': 'jack', 'if': 'CONFIG_AUDIO_JACK' },
|
|
{ 'name': 'oss', 'if': 'CONFIG_AUDIO_OSS' },
|
|
{ 'name': 'pa', 'if': 'CONFIG_AUDIO_PA' },
|
|
{ 'name': 'pipewire', 'if': 'CONFIG_AUDIO_PIPEWIRE' },
|
|
{ 'name': 'sdl', 'if': 'CONFIG_AUDIO_SDL' },
|
|
{ 'name': 'sndio', 'if': 'CONFIG_AUDIO_SNDIO' },
|
|
{ 'name': 'spice', 'if': 'CONFIG_SPICE' },
|
|
'wav' ] }
|
|
|
|
##
|
|
# @Audiodev:
|
|
#
|
|
# Options of an audio backend.
|
|
#
|
|
# @id: identifier of the backend
|
|
#
|
|
# @driver: the backend driver to use
|
|
#
|
|
# @timer-period: timer period (in microseconds, 0: use lowest
|
|
# possible)
|
|
#
|
|
# Since: 4.0
|
|
##
|
|
{ 'union': 'Audiodev',
|
|
'base': {
|
|
'id': 'str',
|
|
'driver': 'AudiodevDriver',
|
|
'*timer-period': 'uint32' },
|
|
'discriminator': 'driver',
|
|
'data': {
|
|
'none': 'AudiodevGenericOptions',
|
|
'alsa': { 'type': 'AudiodevAlsaOptions',
|
|
'if': 'CONFIG_AUDIO_ALSA' },
|
|
'coreaudio': { 'type': 'AudiodevCoreaudioOptions',
|
|
'if': 'CONFIG_AUDIO_COREAUDIO' },
|
|
'dbus': { 'type': 'AudiodevDBusOptions',
|
|
'if': 'CONFIG_DBUS_DISPLAY' },
|
|
'dsound': { 'type': 'AudiodevDsoundOptions',
|
|
'if': 'CONFIG_AUDIO_DSOUND' },
|
|
'jack': { 'type': 'AudiodevJackOptions',
|
|
'if': 'CONFIG_AUDIO_JACK' },
|
|
'oss': { 'type': 'AudiodevOssOptions',
|
|
'if': 'CONFIG_AUDIO_OSS' },
|
|
'pa': { 'type': 'AudiodevPaOptions',
|
|
'if': 'CONFIG_AUDIO_PA' },
|
|
'pipewire': { 'type': 'AudiodevPipewireOptions',
|
|
'if': 'CONFIG_AUDIO_PIPEWIRE' },
|
|
'sdl': { 'type': 'AudiodevSdlOptions',
|
|
'if': 'CONFIG_AUDIO_SDL' },
|
|
'sndio': { 'type': 'AudiodevSndioOptions',
|
|
'if': 'CONFIG_AUDIO_SNDIO' },
|
|
'spice': { 'type': 'AudiodevGenericOptions',
|
|
'if': 'CONFIG_SPICE' },
|
|
'wav': 'AudiodevWavOptions' } }
|
|
|
|
##
|
|
# @query-audiodevs:
|
|
#
|
|
# Return information about audiodev configuration
|
|
#
|
|
# Since: 8.0
|
|
##
|
|
{ 'command': 'query-audiodevs',
|
|
'returns': ['Audiodev'] }
|