- let device = match host
- .output_devices()
- .unwrap()
- .find(|d| d.name().unwrap() == output_card)
- {
- Some(d) => d,
- None => {
- let _ = setup_tx.send(Err(M17Codec2Error::CardUnavailable(output_card).into()));
- return;
+ let device = if let Some(output_card) = output_card {
+ // TODO: more error handling for unwraps
+ match host
+ .output_devices()
+ .unwrap()
+ .find(|d| d.name().unwrap() == output_card)
+ {
+ Some(d) => d,
+ None => {
+ let _ = setup_tx.send(Err(M17Codec2Error::CardUnavailable(output_card).into()));
+ return;
+ }
+ }
+ } else {
+ match host.default_output_device() {
+ Some(d) => d,
+ None => {
+ let _ = setup_tx.send(Err(M17Codec2Error::DefaultCardUnavailable.into()));
+ return;
+ }