diff options
author | paulhsia <paulhsia@chromium.org> | 2019-01-22 15:22:25 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-01-27 10:43:26 -0800 |
commit | f052cfefc8d6d27fa068c34190615db1819b8fef (patch) | |
tree | f7d2825383a5f8307a9743971e8bc6b001835965 /src/linux.rs | |
parent | 3082e8e48d73a4cf98b33052247d0ddb0d411111 (diff) | |
download | crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar.gz crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar.bz2 crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar.lz crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar.xz crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.tar.zst crosvm-f052cfefc8d6d27fa068c34190615db1819b8fef.zip |
linux: Add ac97 device with CRAS backend
Add an ac97 device that plays audio through CRAS audio server. BUG=chromium:781398 BUG=chromium:907520 TEST=Test building by $ cargo build TEST=Deploy crosvm to DUT and test audio functionality CQ-DEPEND=CL:1429311 CQ-DEPEND=CL:1429542 Change-Id: Ia273d8f1e82c20d1f1882f088886458339399aae Reviewed-on: https://chromium-review.googlesource.com/1426282 Commit-Ready: Chih-Yang Hsia <paulhsia@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Tested-by: Chih-Yang Hsia <paulhsia@chromium.org> Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r-- | src/linux.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/linux.rs b/src/linux.rs index 8c33d12..a61392b 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -26,6 +26,7 @@ use byteorder::{ByteOrder, LittleEndian}; use devices::{self, PciDevice, VirtioPciDevice}; use io_jail::{self, Minijail}; use kvm::*; +use libcras::CrasClient; use msg_socket::{MsgReceiver, MsgSender, MsgSocket, UnlinkMsgSocket}; use net_util::{Error as NetError, Tap}; use qcow::{self, ImageType, QcowFile}; @@ -633,6 +634,20 @@ fn create_virtio_devs( pci_devices.push((pci_dev, stub.jail)); } + if cfg.cras_audio { + let cras_audio_box = Box::new(devices::Ac97Dev::new( + (*mem).clone(), + Box::new(CrasClient::new()?), + )); + let cras_audio_jail = if cfg.multiprocess { + let policy_path: PathBuf = cfg.seccomp_policy_dir.join("cras_audio_device.policy"); + Some(create_base_minijail(empty_root_path, &policy_path)?) + } else { + None + }; + pci_devices.push((cras_audio_box, cras_audio_jail)); + } + if cfg.null_audio { let null_audio_box = Box::new(devices::Ac97Dev::new( (*mem).clone(), |