diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-03-09 17:15:28 +0400 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-12-21 10:50:22 +0400 |
commit | 739362d4205cd90686118fe5af3e236c2f8c6be9 (patch) | |
tree | 10d27d3efc227f29ffee0dd02d345e0faa707623 /ui/dbus-display1.xml | |
parent | b4dd5b6a60eb525437c8d315d0d59dc25d4e4cb1 (diff) |
audio: add "dbus" audio backend
Add a new -audio backend that accepts D-Bus clients/listeners to handle
playback & recording, to be exported via the -display dbus.
Example usage:
-audiodev dbus,in.mixing-engine=off,out.mixing-engine=off,id=dbus
-display dbus,audiodev=dbus
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/dbus-display1.xml')
-rw-r--r-- | ui/dbus-display1.xml | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/ui/dbus-display1.xml b/ui/dbus-display1.xml index 0f0ae92e4d..aff645220c 100644 --- a/ui/dbus-display1.xml +++ b/ui/dbus-display1.xml @@ -375,4 +375,215 @@ </arg> </method> </interface> + + <!-- + org.qemu.Display1.Audio: + + Audio backend may be available on ``/org/qemu/Display1/Audio``. + --> + <interface name="org.qemu.Display1.Audio"> + <!-- + RegisterOutListener: + @listener: a Unix socket FD, for peer-to-peer D-Bus communication. + + Register an audio backend playback handler. + + Multiple listeners may be registered simultaneously. + + The listener is expected to implement the + :dbus:iface:`org.qemu.Display1.AudioOutListener` interface. + --> + <method name="RegisterOutListener"> + <arg type="h" name="listener" direction="in"/> + </method> + + <!-- + RegisterInListener: + @listener: a Unix socket FD, for peer-to-peer D-Bus communication. + + Register an audio backend record handler. + + Multiple listeners may be registered simultaneously. + + The listener is expected to implement the + :dbus:iface:`org.qemu.Display1.AudioInListener` interface. + --> + <method name="RegisterInListener"> + <arg type="h" name="listener" direction="in"/> + </method> + </interface> + + <!-- + org.qemu.Display1.AudioOutListener: + + This client-side interface must be available on + ``/org/qemu/Display1/AudioOutListener`` when registering the peer-to-peer + connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterOutListener`. + --> + <interface name="org.qemu.Display1.AudioOutListener"> + <!-- + Init: + @id: the stream ID. + @bits: PCM bits per sample. + @is_signed: whether the PCM data is signed. + @is_float: PCM floating point format. + @freq: the PCM frequency in Hz. + @nchannels: the number of channels. + @bytes_per_frame: the bytes per frame. + @bytes_per_second: the bytes per second. + @be: whether using big-endian format. + + Initializes a PCM playback stream. + --> + <method name="Init"> + <arg name="id" type="t" direction="in"/> + <arg name="bits" type="y" direction="in"/> + <arg name="is_signed" type="b" direction="in"/> + <arg name="is_float" type="b" direction="in"/> + <arg name="freq" type="u" direction="in"/> + <arg name="nchannels" type="y" direction="in"/> + <arg name="bytes_per_frame" type="u" direction="in"/> + <arg name="bytes_per_second" type="u" direction="in"/> + <arg name="be" type="b" direction="in"/> + </method> + + <!-- + Fini: + @id: the stream ID. + + Finish & close a playback stream. + --> + <method name="Fini"> + <arg name="id" type="t" direction="in"/> + </method> + + <!-- + SetEnabled: + @id: the stream ID. + + Resume or suspend the playback stream. + --> + <method name="SetEnabled"> + <arg name="id" type="t" direction="in"/> + <arg name="enabled" type="b" direction="in"/> + </method> + + <!-- + SetVolume: + @id: the stream ID. + @mute: whether the stream is muted. + @volume: the volume per-channel. + + Set the stream volume and mute state (volume without unit, 0-255). + --> + <method name="SetVolume"> + <arg name="id" type="t" direction="in"/> + <arg name="mute" type="b" direction="in"/> + <arg name="volume" type="ay" direction="in"> + <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> + </arg> + </method> + + <!-- + Write: + @id: the stream ID. + @data: the PCM data. + + PCM stream to play. + --> + <method name="Write"> + <arg name="id" type="t" direction="in"/> + <arg type="ay" name="data" direction="in"> + <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> + </arg> + </method> + </interface> + + <!-- + org.qemu.Display1.AudioInListener: + + This client-side interface must be available on + ``/org/qemu/Display1/AudioInListener`` when registering the peer-to-peer + connection with :dbus:meth:`~org.qemu.Display1.Audio.RegisterInListener`. + --> + <interface name="org.qemu.Display1.AudioInListener"> + <!-- + Init: + @id: the stream ID. + @bits: PCM bits per sample. + @is_signed: whether the PCM data is signed. + @is_float: PCM floating point format. + @freq: the PCM frequency in Hz. + @nchannels: the number of channels. + @bytes_per_frame: the bytes per frame. + @bytes_per_second: the bytes per second. + @be: whether using big-endian format. + + Initializes a PCM record stream. + --> + <method name="Init"> + <arg name="id" type="t" direction="in"/> + <arg name="bits" type="y" direction="in"/> + <arg name="is_signed" type="b" direction="in"/> + <arg name="is_float" type="b" direction="in"/> + <arg name="freq" type="u" direction="in"/> + <arg name="nchannels" type="y" direction="in"/> + <arg name="bytes_per_frame" type="u" direction="in"/> + <arg name="bytes_per_second" type="u" direction="in"/> + <arg name="be" type="b" direction="in"/> + </method> + + <!-- + Fini: + @id: the stream ID. + + Finish & close a record stream. + --> + <method name="Fini"> + <arg name="id" type="t" direction="in"/> + </method> + + <!-- + SetEnabled: + @id: the stream ID. + + Resume or suspend the record stream. + --> + <method name="SetEnabled"> + <arg name="id" type="t" direction="in"/> + <arg name="enabled" type="b" direction="in"/> + </method> + + <!-- + SetVolume: + @id: the stream ID. + @mute: whether the stream is muted. + @volume: the volume per-channel. + + Set the stream volume and mute state (volume without unit, 0-255). + --> + <method name="SetVolume"> + <arg name="id" type="t" direction="in"/> + <arg name="mute" type="b" direction="in"/> + <arg name="volume" type="ay" direction="in"> + <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> + </arg> + </method> + + <!-- + Read: + @id: the stream ID. + @size: the amount to read, in bytes. + @data: the recorded data (which may be less than requested). + + Read "size" bytes from the record stream. + --> + <method name="Read"> + <arg name="id" type="t" direction="in"/> + <arg name="size" type="t" direction="in"/> + <arg type="ay" name="data" direction="out"> + <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> + </arg> + </method> + </interface> </node> |