Fix a bunch of issues with the windows standard to virtual mic routing, fix all warnings for youtube_downloader and others

This commit is contained in:
csd4ni3l
2026-02-15 18:12:10 +01:00
parent 815663b039
commit e7fbf8f4d8
2 changed files with 21 additions and 19 deletions

View File

@@ -1,46 +1,46 @@
use rodio::{
OutputStream, OutputStreamBuilder,
cpal::{self, traits::DeviceTrait, traits::HostTrait},
cpal::{self, traits::{DeviceTrait, StreamTrait, HostTrait}, StreamConfig, SampleRate},
};
use ringbuf::{traits::*, HeapRb};
fn route_standard_to_virtual(virtual_mic: cpal::Device) {
let standard_mic = host.default_output_device();
fn route_standard_to_virtual(host: &cpal::Host, virtual_mic: &cpal::Device) {
let standard_mic = host.default_input_device().expect("Could not get default input device.");
let config = StreamConfig {
channels: 2,
sample_rate: SampleRate(48_000),
buffer_size: cpal::BufferSize::Default,
};
let rb = HeapRb::<i32>::new(48_000 * 2);
let rb = HeapRb::<f32>::new(48_000 * 2);
let (mut producer, mut consumer) = rb.split();
let input_stream = standard_mic.build_input_stream(
&config,
move |data: &[f32], _| {
for &sample in data {
let _ = producer.push(sample);
let _ = producer.push(sample);
let _ = producer.try_push(sample);
let _ = producer.try_push(sample);
}
},
move |err| eprintln!("Input stream error: {err}"),
None,
)?;
).expect("Could not build input stream for standard to virtual mic routing");
let output_stream = virtual_mic.build_output_stream(
&config,
move |data: &mut [f32], _| {
for sample in data {
*sample = consumer.pop().unwrap_or(0.0);
*sample = consumer.try_pop().unwrap_or(0.0);
}
},
move |err| eprintln!("Output stream error: {err}"),
None,
)?;
).expect("Could not build output stream for standard to virtual mic routing");
input_stream.play()?;
output_stream.play()?;
input_stream.play();
output_stream.play();
}
pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) {
@@ -59,7 +59,7 @@ pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) {
})
.expect("Could not get VB Cable output device. Is VB Cable Driver installed?");
route_standard_to_virtual(virtual_mic);
route_standard_to_virtual(&host, &virtual_mic);
let normal_output = host
.default_output_device()
@@ -75,4 +75,4 @@ pub fn create_virtual_mic_windows() -> (OutputStream, OutputStream) {
.open_stream()
.expect("Failed to open stream"),
);
}
}