support for most sample formats
This commit is contained in:
@@ -62,6 +62,21 @@ pub async fn audio_stream_receiver(
|
|||||||
udp_socket: Arc<UdpSocket>,
|
udp_socket: Arc<UdpSocket>,
|
||||||
) {
|
) {
|
||||||
let output_stream = match output_device_config.sample_format() {
|
let output_stream = match output_device_config.sample_format() {
|
||||||
|
SampleFormat::F64 => cpal_build_output_stream::<f64>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
|
SampleFormat::I64 => cpal_build_output_stream::<i64>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
|
SampleFormat::U64 => cpal_build_output_stream::<u64>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
SampleFormat::F32 => cpal_build_output_stream::<f32>(
|
SampleFormat::F32 => cpal_build_output_stream::<f32>(
|
||||||
&output_device,
|
&output_device,
|
||||||
output_device_config.into(),
|
output_device_config.into(),
|
||||||
@@ -72,6 +87,11 @@ pub async fn audio_stream_receiver(
|
|||||||
output_device_config.into(),
|
output_device_config.into(),
|
||||||
active_input_audio_streams_consumers,
|
active_input_audio_streams_consumers,
|
||||||
),
|
),
|
||||||
|
SampleFormat::U32 => cpal_build_output_stream::<u32>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
SampleFormat::I16 => cpal_build_output_stream::<i16>(
|
SampleFormat::I16 => cpal_build_output_stream::<i16>(
|
||||||
&output_device,
|
&output_device,
|
||||||
output_device_config.into(),
|
output_device_config.into(),
|
||||||
@@ -82,6 +102,16 @@ pub async fn audio_stream_receiver(
|
|||||||
output_device_config.into(),
|
output_device_config.into(),
|
||||||
active_input_audio_streams_consumers,
|
active_input_audio_streams_consumers,
|
||||||
),
|
),
|
||||||
|
SampleFormat::I8 => cpal_build_output_stream::<i8>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
|
SampleFormat::U8 => cpal_build_output_stream::<u8>(
|
||||||
|
&output_device,
|
||||||
|
output_device_config.into(),
|
||||||
|
active_input_audio_streams_consumers,
|
||||||
|
),
|
||||||
_ => {
|
_ => {
|
||||||
eprintln!("unsupported output stream format :(");
|
eprintln!("unsupported output stream format :(");
|
||||||
return;
|
return;
|
||||||
@@ -250,18 +280,36 @@ pub async fn audio_stream_spawner(
|
|||||||
let (producer, mut consumer) = ring_buffer.split();
|
let (producer, mut consumer) = ring_buffer.split();
|
||||||
|
|
||||||
let input_stream = match input_device_config.sample_format() {
|
let input_stream = match input_device_config.sample_format() {
|
||||||
|
SampleFormat::F64 => {
|
||||||
|
cpal_build_input_stream::<f64>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
|
SampleFormat::I64 => {
|
||||||
|
cpal_build_input_stream::<i64>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
|
SampleFormat::U64 => {
|
||||||
|
cpal_build_input_stream::<u64>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
SampleFormat::F32 => {
|
SampleFormat::F32 => {
|
||||||
cpal_build_input_stream::<f32>(&input_device, input_device_config.into(), producer)
|
cpal_build_input_stream::<f32>(&input_device, input_device_config.into(), producer)
|
||||||
}
|
}
|
||||||
SampleFormat::I32 => {
|
SampleFormat::I32 => {
|
||||||
cpal_build_input_stream::<i32>(&input_device, input_device_config.into(), producer)
|
cpal_build_input_stream::<i32>(&input_device, input_device_config.into(), producer)
|
||||||
}
|
}
|
||||||
|
SampleFormat::U32 => {
|
||||||
|
cpal_build_input_stream::<u32>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
SampleFormat::I16 => {
|
SampleFormat::I16 => {
|
||||||
cpal_build_input_stream::<i16>(&input_device, input_device_config.into(), producer)
|
cpal_build_input_stream::<i16>(&input_device, input_device_config.into(), producer)
|
||||||
}
|
}
|
||||||
SampleFormat::U16 => {
|
SampleFormat::U16 => {
|
||||||
cpal_build_input_stream::<u16>(&input_device, input_device_config.into(), producer)
|
cpal_build_input_stream::<u16>(&input_device, input_device_config.into(), producer)
|
||||||
}
|
}
|
||||||
|
SampleFormat::I8 => {
|
||||||
|
cpal_build_input_stream::<i8>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
|
SampleFormat::U8 => {
|
||||||
|
cpal_build_input_stream::<u8>(&input_device, input_device_config.into(), producer)
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
eprintln!("unsupported input stream format :(");
|
eprintln!("unsupported input stream format :(");
|
||||||
return;
|
return;
|
||||||
|
|||||||
+2
-2
@@ -264,7 +264,7 @@ impl DeviceSelectScreen {
|
|||||||
for (device, config) in self.input_devices.iter() {
|
for (device, config) in self.input_devices.iter() {
|
||||||
input_device_rows.push(Row::new(vec![
|
input_device_rows.push(Row::new(vec![
|
||||||
device.description().unwrap().name().to_string(),
|
device.description().unwrap().name().to_string(),
|
||||||
config.channels().to_string(),
|
config.sample_format().to_string(),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
let input_device_table = Table::new(input_device_rows, widths)
|
let input_device_table = Table::new(input_device_rows, widths)
|
||||||
@@ -299,7 +299,7 @@ impl DeviceSelectScreen {
|
|||||||
for (device, config) in self.output_devices.iter() {
|
for (device, config) in self.output_devices.iter() {
|
||||||
output_device_rows.push(Row::new(vec![
|
output_device_rows.push(Row::new(vec![
|
||||||
device.description().unwrap().name().to_string(),
|
device.description().unwrap().name().to_string(),
|
||||||
config.channels().to_string(),
|
config.sample_format().to_string(),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
let output_device_table = Table::new(output_device_rows, widths)
|
let output_device_table = Table::new(output_device_rows, widths)
|
||||||
|
|||||||
Reference in New Issue
Block a user