Add config of audio device
Use audioConfig{bool useMicrophone, bool useSpeaker} to configure the
audio device.
Bug: 325930215
Test: play and capture sound on a Pixel device
Test: arecord -D hw:0,0 -f dat /tmp/tmp
Test: aplay -D hw:0,0 -f dat /tmp/tmp
Change-Id: I2949e48abd9a9226007e069a5141813021557977
diff --git a/virtualizationmanager/src/crosvm.rs b/virtualizationmanager/src/crosvm.rs
index 13c018b..a9a91fe 100644
--- a/virtualizationmanager/src/crosvm.rs
+++ b/virtualizationmanager/src/crosvm.rs
@@ -46,6 +46,7 @@
use android_system_virtualizationservice::aidl::android::system::virtualizationservice::{
MemoryTrimLevel::MemoryTrimLevel,
VirtualMachineAppConfig::DebugLevel::DebugLevel,
+ AudioConfig::AudioConfig as AudioConfigParcelable,
DisplayConfig::DisplayConfig as DisplayConfigParcelable,
GpuConfig::GpuConfig as GpuConfigParcelable,
};
@@ -131,10 +132,22 @@
pub input_device_options: Vec<InputDeviceOption>,
pub hugepages: bool,
pub tap: Option<File>,
- pub virtio_snd_backend: Option<String>,
pub console_input_device: Option<String>,
pub boost_uclamp: bool,
pub gpu_config: Option<GpuConfig>,
+ pub audio_config: Option<AudioConfig>,
+}
+
+#[derive(Debug)]
+pub struct AudioConfig {
+ pub use_microphone: bool,
+ pub use_speaker: bool,
+}
+
+impl AudioConfig {
+ pub fn new(raw_config: &AudioConfigParcelable) -> Self {
+ AudioConfig { use_microphone: raw_config.useMicrophone, use_speaker: raw_config.useSpeaker }
+ }
}
#[derive(Debug)]
@@ -1159,8 +1172,12 @@
command.preserved_fds(preserved_fds);
if cfg!(paravirtualized_devices) {
- if let Some(virtio_snd_backend) = &config.virtio_snd_backend {
- command.arg("--virtio-snd").arg(format!("backend={}", virtio_snd_backend));
+ if let Some(audio_config) = &config.audio_config {
+ command.arg("--virtio-snd").arg(format!(
+ "backend=aaudio,num_input_devices={},num_output_devices={}",
+ if audio_config.use_microphone { 1 } else { 0 },
+ if audio_config.use_speaker { 1 } else { 0 }
+ ));
}
}