Skip to content

Commit 1a57ef0

Browse files
committed
refactor: make OpusBackend trait use associated types for encoder/decoder types
1 parent 8698542 commit 1a57ef0

File tree

5 files changed

+142
-151
lines changed

5 files changed

+142
-151
lines changed

unsafe-libopus-tools/src/bin/opus_demo/cli.rs

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::iter::Peekable;
88
use std::path::PathBuf;
99
use std::str::FromStr;
1010
use unsafe_libopus_tools::demo::{
11-
CommonOptions, DecodeArgs, EncodeArgs, EncoderOptions, MAX_PACKET,
11+
CommonOptions, DecodeArgs, EncodeArgs, EncoderOptions, OpusBackend, MAX_PACKET,
1212
};
1313

1414
#[rustfmt::skip]
@@ -175,25 +175,6 @@ fn parse_decode_args<I: Iterator<Item = String>>(args: &mut ArgsCursor<I>) -> Re
175175
})
176176
}
177177

178-
#[derive(Debug, Copy, Clone, Default)]
179-
pub enum Backend {
180-
#[default]
181-
RustLibOpus,
182-
UpstreamLibOpus,
183-
}
184-
185-
impl FromStr for Backend {
186-
type Err = &'static str;
187-
188-
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
189-
match s {
190-
"unsafe" => Ok(Backend::RustLibOpus),
191-
"upstream" => Ok(Backend::UpstreamLibOpus),
192-
_ => Err("Invalid backend"),
193-
}
194-
}
195-
}
196-
197178
#[derive(Debug, Copy, Clone)]
198179
pub enum Mode {
199180
EncodeDecode(EncodeArgs),
@@ -203,7 +184,7 @@ pub enum Mode {
203184

204185
#[derive(Debug, Clone)]
205186
pub struct Cli {
206-
pub backend: Backend,
187+
pub backend: OpusBackend,
207188
pub mode: Mode,
208189
pub input: PathBuf,
209190
pub output: PathBuf,
@@ -236,7 +217,7 @@ impl Cli {
236217
let backend = if args.poke("-b")? {
237218
args.next().map_err(|_| "Missing backend".to_string())?
238219
} else {
239-
Backend::default()
220+
OpusBackend::default()
240221
};
241222

242223
let mode = if args.poke("-e")? {

unsafe-libopus-tools/src/bin/opus_demo/main.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,18 @@
66

77
mod cli;
88

9-
use crate::cli::{Backend, Cli, Mode};
9+
use crate::cli::{Cli, Mode};
1010
use unsafe_libopus::opus_get_version_string;
11-
use unsafe_libopus_tools::demo::UpstreamLibopusBackend;
1211
use unsafe_libopus_tools::demo::{
13-
opus_demo_adjust_length, opus_demo_decode, opus_demo_encode, DecodeArgs, OpusBackend,
14-
RustLibopusBackend,
12+
opus_demo_adjust_length, opus_demo_decode, opus_demo_encode, DecodeArgs,
1513
};
1614

1715
pub fn main() {
1816
let cli = Cli::parse();
1917

2018
eprintln!("{}", opus_get_version_string());
2119

22-
let backend: &dyn OpusBackend = match cli.backend {
23-
Backend::RustLibOpus => &RustLibopusBackend,
24-
Backend::UpstreamLibOpus => &UpstreamLibopusBackend,
25-
};
20+
let backend = cli.backend;
2621

2722
match cli.mode {
2823
Mode::EncodeDecode(args) => {

unsafe-libopus-tools/src/bin/run_vectors2.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ use std::fmt::Display;
1616
use std::path::{Path, PathBuf};
1717
use std::time::Instant;
1818
use unsafe_libopus_tools::demo::{
19-
opus_demo_decode, opus_demo_encode, Application, Channels, DecodeArgs, EncodeArgs,
20-
RustLibopusBackend, SampleRate, UpstreamLibopusBackend,
19+
opus_demo_decode, opus_demo_encode, Application, Channels, DecodeArgs, EncodeArgs, OpusBackend,
20+
SampleRate,
2121
};
2222
use unsafe_libopus_tools::CompareResult;
2323

@@ -158,9 +158,9 @@ fn run_test(
158158
};
159159

160160
let upstream_decoded =
161-
opus_demo_decode(&UpstreamLibopusBackend, &test_vector.encoded, decode_args);
161+
opus_demo_decode(OpusBackend::Upstream, &test_vector.encoded, decode_args);
162162
let rust_decoded =
163-
opus_demo_decode(&RustLibopusBackend, &test_vector.encoded, decode_args);
163+
opus_demo_decode(OpusBackend::Rust, &test_vector.encoded, decode_args);
164164

165165
if let Some(dump_directory) = dump_directory {
166166
let name_base = format!(
@@ -206,9 +206,9 @@ fn run_test(
206206
};
207207

208208
let (upstream_encoded, pre_skip) =
209-
opus_demo_encode(&UpstreamLibopusBackend, &true_decoded, encode_args);
209+
opus_demo_encode(OpusBackend::Upstream, &true_decoded, encode_args);
210210
let (rust_encoded, rust_pre_skip) =
211-
opus_demo_encode(&RustLibopusBackend, &true_decoded, encode_args);
211+
opus_demo_encode(OpusBackend::Rust, &true_decoded, encode_args);
212212
assert_eq!(rust_pre_skip, pre_skip);
213213

214214
if let Some(dump_directory) = dump_directory {
@@ -227,9 +227,9 @@ fn run_test(
227227

228228
// decode & save decoded files
229229
let upstream_decoded =
230-
opus_demo_decode(&UpstreamLibopusBackend, &upstream_encoded, decode_args);
230+
opus_demo_decode(OpusBackend::Upstream, &upstream_encoded, decode_args);
231231
let rust_decoded =
232-
opus_demo_decode(&UpstreamLibopusBackend, &rust_encoded, decode_args);
232+
opus_demo_decode(OpusBackend::Upstream, &rust_encoded, decode_args);
233233

234234
std::fs::write(
235235
dump_directory

0 commit comments

Comments
 (0)