From 24f0e13cd68a02a20f1af748e57911720f01b3fe Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Thu, 24 Oct 2024 21:28:57 +0300 Subject: [PATCH] sound: Add new sampling rates 12000Hz and 24000Hz These values were just merged upstream in oasis, let's add them. https://github.com/oasis-tcs/virtio-spec/commit/37c6a406678a5ee891fdf5671298cb4fcfa517f2 Signed-off-by: Manos Pitsidianakis --- vhost-device-sound/CHANGELOG.md | 2 ++ vhost-device-sound/src/audio_backends/alsa.rs | 5 ++++- vhost-device-sound/src/audio_backends/pipewire.rs | 13 ++++++++----- vhost-device-sound/src/virtio_sound.rs | 4 +++- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/vhost-device-sound/CHANGELOG.md b/vhost-device-sound/CHANGELOG.md index 3c353dd..1394bab 100644 --- a/vhost-device-sound/CHANGELOG.md +++ b/vhost-device-sound/CHANGELOG.md @@ -3,6 +3,8 @@ ### Added +- [[#746]](https://github.com/rust-vmm/vhost-device/pull/746) Add new sampling rates 12000Hz and 24000Hz + ### Changed ### Fixed diff --git a/vhost-device-sound/src/audio_backends/alsa.rs b/vhost-device-sound/src/audio_backends/alsa.rs index 6bfc2f8..b61b786 100644 --- a/vhost-device-sound/src/audio_backends/alsa.rs +++ b/vhost-device-sound/src/audio_backends/alsa.rs @@ -75,7 +75,8 @@ fn update_pcm( virtio_sound::VIRTIO_SND_PCM_RATE_96000 => 96000, virtio_sound::VIRTIO_SND_PCM_RATE_176400 => 176400, virtio_sound::VIRTIO_SND_PCM_RATE_192000 => 192000, - virtio_sound::VIRTIO_SND_PCM_RATE_384000 => 384000, + virtio_sound::VIRTIO_SND_PCM_RATE_12000 => 12000, + virtio_sound::VIRTIO_SND_PCM_RATE_24000 => 24000, // We check if a rate value is supported in PCM_SET_PARAMS so it should never have // an unknown value. _ => unreachable!(), @@ -752,6 +753,8 @@ mod tests { virtio_sound::VIRTIO_SND_PCM_RATE_176400, virtio_sound::VIRTIO_SND_PCM_RATE_192000, virtio_sound::VIRTIO_SND_PCM_RATE_384000, + virtio_sound::VIRTIO_SND_PCM_RATE_12000, + virtio_sound::VIRTIO_SND_PCM_RATE_24000, ]; const FORMATS: [u8; _VIRTIO_SND_PCM_FMT_MAX as usize] = [ diff --git a/vhost-device-sound/src/audio_backends/pipewire.rs b/vhost-device-sound/src/audio_backends/pipewire.rs index 000032b..dedcf5b 100644 --- a/vhost-device-sound/src/audio_backends/pipewire.rs +++ b/vhost-device-sound/src/audio_backends/pipewire.rs @@ -45,11 +45,12 @@ use crate::{ VIRTIO_SND_PCM_FMT_S8, VIRTIO_SND_PCM_FMT_U16, VIRTIO_SND_PCM_FMT_U18_3, VIRTIO_SND_PCM_FMT_U20, VIRTIO_SND_PCM_FMT_U20_3, VIRTIO_SND_PCM_FMT_U24, VIRTIO_SND_PCM_FMT_U24_3, VIRTIO_SND_PCM_FMT_U32, VIRTIO_SND_PCM_FMT_U8, - VIRTIO_SND_PCM_RATE_11025, VIRTIO_SND_PCM_RATE_16000, VIRTIO_SND_PCM_RATE_176400, - VIRTIO_SND_PCM_RATE_192000, VIRTIO_SND_PCM_RATE_22050, VIRTIO_SND_PCM_RATE_32000, - VIRTIO_SND_PCM_RATE_384000, VIRTIO_SND_PCM_RATE_44100, VIRTIO_SND_PCM_RATE_48000, - VIRTIO_SND_PCM_RATE_5512, VIRTIO_SND_PCM_RATE_64000, VIRTIO_SND_PCM_RATE_8000, - VIRTIO_SND_PCM_RATE_88200, VIRTIO_SND_PCM_RATE_96000, + VIRTIO_SND_PCM_RATE_11025, VIRTIO_SND_PCM_RATE_12000, VIRTIO_SND_PCM_RATE_16000, + VIRTIO_SND_PCM_RATE_176400, VIRTIO_SND_PCM_RATE_192000, VIRTIO_SND_PCM_RATE_22050, + VIRTIO_SND_PCM_RATE_24000, VIRTIO_SND_PCM_RATE_32000, VIRTIO_SND_PCM_RATE_384000, + VIRTIO_SND_PCM_RATE_44100, VIRTIO_SND_PCM_RATE_48000, VIRTIO_SND_PCM_RATE_5512, + VIRTIO_SND_PCM_RATE_64000, VIRTIO_SND_PCM_RATE_8000, VIRTIO_SND_PCM_RATE_88200, + VIRTIO_SND_PCM_RATE_96000, }, Direction, Error, Result, Stream, }; @@ -296,6 +297,8 @@ impl AudioBackend for PwBackend { VIRTIO_SND_PCM_RATE_176400 => 176400, VIRTIO_SND_PCM_RATE_192000 => 192000, VIRTIO_SND_PCM_RATE_384000 => 384000, + VIRTIO_SND_PCM_RATE_12000 => 12000, + VIRTIO_SND_PCM_RATE_24000 => 24000, _ => 44100, }, flags: 0, diff --git a/vhost-device-sound/src/virtio_sound.rs b/vhost-device-sound/src/virtio_sound.rs index 6f0656a..8ddca68 100644 --- a/vhost-device-sound/src/virtio_sound.rs +++ b/vhost-device-sound/src/virtio_sound.rs @@ -107,7 +107,9 @@ pub const VIRTIO_SND_PCM_RATE_96000: u8 = 10; pub const VIRTIO_SND_PCM_RATE_176400: u8 = 11; pub const VIRTIO_SND_PCM_RATE_192000: u8 = 12; pub const VIRTIO_SND_PCM_RATE_384000: u8 = 13; -pub(crate) const _VIRTIO_SND_PCM_RATE_MAX: u8 = 14; +pub const VIRTIO_SND_PCM_RATE_12000: u8 = 14; +pub const VIRTIO_SND_PCM_RATE_24000: u8 = 15; +pub(crate) const _VIRTIO_SND_PCM_RATE_MAX: u8 = 16; // standard channel position definition