summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2022-07-31 08:46:13 +0300
committerYuval Adam <_@yuv.al>2022-07-31 08:46:13 +0300
commit7852c96c26cf526aa4d6337eecdb9df7edfd6d31 (patch)
treef49b16d0fb46285d027852d0e17931ae952ca321
parente958ad4f80d0e5043b7c26a1e04975bc0a929aa6 (diff)
Add modes arg in c2enc
-rw-r--r--c2enc/src/main.rs23
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();