From 580d4186562c9c1e5b399885c6c5647cdde15243 Mon Sep 17 00:00:00 2001 From: paulhsia Date: Fri, 24 May 2019 16:53:55 +0800 Subject: linux: Add cras-capture option for cras-audio device The flag can enable capturing audio from CRAS server to the cras-audio device. We'll re-enable capture function on Crostini after finishing capture permission works. BUG=chromium:932268 TEST=Boot vm with crosvm --cras-audio --cras-capture to check recording functionality. Cq-Depend: chromium:1628633 Change-Id: I7502cbd668cbc722224164d9f69e50a16b0ab86b Reviewed-on: https://chromium-review.googlesource.com/1628687 Commit-Ready: ChromeOS CL Exonerator Bot Tested-by: Chih-Yang Hsia Tested-by: kokoro Legacy-Commit-Queue: Commit Bot Reviewed-by: Chih-Yang Hsia --- src/linux.rs | 5 ++++- src/main.rs | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/linux.rs b/src/linux.rs index ecf25fc..c29b5d1 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -823,7 +823,10 @@ fn create_devices( } if cfg.cras_audio { - let server = Box::new(CrasClient::new().map_err(Error::CreateCrasClient)?); + let mut server = Box::new(CrasClient::new().map_err(Error::CreateCrasClient)?); + if cfg.cras_capture { + server.enable_cras_capture(); + } let cras_audio = devices::Ac97Dev::new(mem.clone(), server); pci_devices.push(( diff --git a/src/main.rs b/src/main.rs index 092664a..4c53760 100644 --- a/src/main.rs +++ b/src/main.rs @@ -103,6 +103,7 @@ pub struct Config { gpu: bool, software_tpm: bool, cras_audio: bool, + cras_capture: bool, null_audio: bool, serial_parameters: BTreeMap, syslog_tag: Option, @@ -144,6 +145,7 @@ impl Default for Config { sandbox: !cfg!(feature = "default-no-sandbox"), seccomp_policy_dir: PathBuf::from(SECCOMP_POLICY_DIR), cras_audio: false, + cras_capture: false, null_audio: false, serial_parameters: BTreeMap::new(), syslog_tag: None, @@ -368,6 +370,9 @@ fn set_argument(cfg: &mut Config, name: &str, value: Option<&str>) -> argument:: "cras-audio" => { cfg.cras_audio = true; } + "cras-capture" => { + cfg.cras_capture = true; + } "null-audio" => { cfg.null_audio = true; } @@ -792,6 +797,7 @@ fn run_vm(args: std::env::Args) -> std::result::Result<(), ()> { Argument::value("netmask", "NETMASK", "Netmask for VM subnet."), Argument::value("mac", "MAC", "MAC address for VM."), Argument::flag("cras-audio", "Add an audio device to the VM that plays samples through CRAS server"), + Argument::flag("cras-capture", "Enable capturing audio from CRAS server to the cras-audio device"), Argument::flag("null-audio", "Add an audio device to the VM that plays samples to /dev/null"), Argument::value("serial", "type=TYPE,[path=PATH,num=NUM,console]", -- cgit 1.4.1