Skip to content
Snippets Groups Projects
  • Dorinda Bassey's avatar
    c2d3d1c2
    audio/pwaudio.c: Add Pipewire audio backend for QEMU · c2d3d1c2
    Dorinda Bassey authored
    
    This commit adds a new audiodev backend to allow QEMU to use Pipewire as
    both an audio sink and source. This backend is available on most systems
    
    Add Pipewire entry points for QEMU Pipewire audio backend
    Add wrappers for QEMU Pipewire audio backend in qpw_pcm_ops()
    qpw_write function returns the current state of the stream to pwaudio
    and Writes some data to the server for playback streams using pipewire
    spa_ringbuffer implementation.
    qpw_read function returns the current state of the stream to pwaudio and
    reads some data from the server for capture streams using pipewire
    spa_ringbuffer implementation. These functions qpw_write and qpw_read
    are called during playback and capture.
    Added some functions that convert pw audio formats to QEMU audio format
    and vice versa which would be needed in the pipewire audio sink and
    source functions qpw_init_in() & qpw_init_out().
    These methods that implement playback and recording will create streams
    for playback and capture that will start processing and will result in
    the on_process callbacks to be called.
    Built a connection to the Pipewire sound system server in the
    qpw_audio_init() method.
    
    Signed-off-by: default avatarDorinda Bassey <dbassey@redhat.com>
    Reviewed-by: default avatarVolker Rümelin <vr_qemu@t-online.de>
    Message-Id: <20230417105654.32328-1-dbassey@redhat.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    c2d3d1c2
    History
    audio/pwaudio.c: Add Pipewire audio backend for QEMU
    Dorinda Bassey authored
    
    This commit adds a new audiodev backend to allow QEMU to use Pipewire as
    both an audio sink and source. This backend is available on most systems
    
    Add Pipewire entry points for QEMU Pipewire audio backend
    Add wrappers for QEMU Pipewire audio backend in qpw_pcm_ops()
    qpw_write function returns the current state of the stream to pwaudio
    and Writes some data to the server for playback streams using pipewire
    spa_ringbuffer implementation.
    qpw_read function returns the current state of the stream to pwaudio and
    reads some data from the server for capture streams using pipewire
    spa_ringbuffer implementation. These functions qpw_write and qpw_read
    are called during playback and capture.
    Added some functions that convert pw audio formats to QEMU audio format
    and vice versa which would be needed in the pipewire audio sink and
    source functions qpw_init_in() & qpw_init_out().
    These methods that implement playback and recording will create streams
    for playback and capture that will start processing and will result in
    the on_process callbacks to be called.
    Built a connection to the Pipewire sound system server in the
    qpw_audio_init() method.
    
    Signed-off-by: default avatarDorinda Bassey <dbassey@redhat.com>
    Reviewed-by: default avatarVolker Rümelin <vr_qemu@t-online.de>
    Message-Id: <20230417105654.32328-1-dbassey@redhat.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>