summary refs log tree commit diff
path: root/devices/src/pci/ac97_bus_master.rs
diff options
context:
space:
mode:
Diffstat (limited to 'devices/src/pci/ac97_bus_master.rs')
-rw-r--r--devices/src/pci/ac97_bus_master.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/devices/src/pci/ac97_bus_master.rs b/devices/src/pci/ac97_bus_master.rs
index cb28c5a..5f4ca75 100644
--- a/devices/src/pci/ac97_bus_master.rs
+++ b/devices/src/pci/ac97_bus_master.rs
@@ -165,6 +165,9 @@ pub struct Ac97BusMaster {
     po_info: AudioThreadInfo,
     pi_info: AudioThreadInfo,
 
+    // Audio effect
+    capture_effects: Vec<StreamEffect>,
+
     // Audio server used to create playback or capture streams.
     audio_server: Box<dyn ShmStreamSource>,
 
@@ -184,12 +187,18 @@ impl Ac97BusMaster {
             po_info: AudioThreadInfo::new(),
             pi_info: AudioThreadInfo::new(),
 
+            capture_effects: Vec::new(),
             audio_server,
 
             irq_resample_thread: None,
         }
     }
 
+    /// Provides the effect needed in capture stream creation.
+    pub fn set_capture_effects(&mut self, effects: Vec<StreamEffect>) {
+        self.capture_effects = effects;
+    }
+
     /// Returns any file descriptors that need to be kept open when entering a jail.
     pub fn keep_fds(&self) -> Option<Vec<RawFd>> {
         let mut fds = self.audio_server.keep_fds();
@@ -518,7 +527,7 @@ impl Ac97BusMaster {
                 SampleFormat::S16LE,
                 DEVICE_SAMPLE_RATE,
                 buffer_frames,
-                StreamEffect::NoEffect,
+                self.capture_effects.as_slice(),
                 self.mem.as_ref(),
                 starting_offsets,
             )