Add Virtio-snd device
Add Virtio-snd device as the aaudio backend is support in crosvm.
Bug: 325930215
Test: Play Youtube video on panther
Change-Id: I20fe62ffa1125e4af50861d9775598206568f4fe
diff --git a/virtualizationmanager/src/aidl.rs b/virtualizationmanager/src/aidl.rs
index d173b34..dd17b46 100644
--- a/virtualizationmanager/src/aidl.rs
+++ b/virtualizationmanager/src/aidl.rs
@@ -624,6 +624,8 @@
} else {
None
};
+ let virtio_snd_backend =
+ if cfg!(paravirtualized_devices) { Some(String::from("aaudio")) } else { None };
// Actually start the VM.
let crosvm_config = CrosvmConfig {
@@ -654,6 +656,7 @@
input_device_options,
hugepages: config.hugePages,
tap,
+ virtio_snd_backend,
};
let instance = Arc::new(
VmInstance::new(
diff --git a/virtualizationmanager/src/crosvm.rs b/virtualizationmanager/src/crosvm.rs
index f73a977..371a908 100644
--- a/virtualizationmanager/src/crosvm.rs
+++ b/virtualizationmanager/src/crosvm.rs
@@ -123,6 +123,7 @@
pub input_device_options: Vec<InputDeviceOption>,
pub hugepages: bool,
pub tap: Option<File>,
+ pub virtio_snd_backend: Option<String>,
}
#[derive(Debug)]
@@ -1029,6 +1030,12 @@
debug!("Preserving FDs {:?}", preserved_fds);
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));
+ }
+ }
+
print_crosvm_args(&command);
let result = SharedChild::spawn(&mut command)?;