diff options
Diffstat (limited to 'c2enc/src')
| -rw-r--r-- | c2enc/src/main.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/c2enc/src/main.rs b/c2enc/src/main.rs index 82ff52d..e0cec0a 100644 --- a/c2enc/src/main.rs +++ b/c2enc/src/main.rs @@ -10,15 +10,20 @@ use std::path::Path; use libcodec2::{Codec2, Modes}; struct Cli { + bit_rate: String, in_path: std::path::PathBuf, out_path: std::path::PathBuf, } +const USAGE: &str = "Usage: c2enc <BITRATE> <INPUT_FILE> <OUTPUT_FILE>"; + fn main() { - let in_path_arg = std::env::args().nth(1).expect("no input path given"); - let out_path_arg = std::env::args().nth(2).expect("no output path given"); + let bitrate_arg = std::env::args().nth(1).expect(USAGE); + let in_path_arg = std::env::args().nth(2).expect(USAGE); + let out_path_arg = std::env::args().nth(3).expect(USAGE); let args = Cli { + bit_rate: String::from(bitrate_arg), in_path: std::path::PathBuf::from(in_path_arg), out_path: std::path::PathBuf::from(out_path_arg), }; @@ -34,7 +39,19 @@ fn main() { speech.push(i); } - let c = Codec2::new(Modes::Mode1400); + let mode = match args.bit_rate.as_str() { + "3200" => Modes::Mode3200, + "2400" => Modes::Mode2400, + "1600" => Modes::Mode1600, + "1400" => Modes::Mode1400, + "1300" => Modes::Mode1300, + "1200" => Modes::Mode1200, + "700C" => Modes::Mode700C, + "450" => Modes::Mode450, + _ => Modes::Mode1400, + }; + + let c = Codec2::new(mode); let nsam = c.samples_per_frame(); let nbits = c.bytes_per_frame(); |
