feat: Add codec selection
This commit is contained in:
parent
758c8cbb01
commit
63297c9ab7
2 changed files with 23 additions and 2 deletions
10
src/main.rs
10
src/main.rs
|
@ -14,7 +14,7 @@ use deunicode::AsciiChars;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use zerocopy::IntoBytes;
|
use zerocopy::IntoBytes;
|
||||||
|
|
||||||
use crate::utils::{Header, MusicFile, Song, Soundtrack};
|
use crate::utils::{Codec, Header, MusicFile, Song, Soundtrack};
|
||||||
|
|
||||||
#[derive(Error, Debug)]
|
#[derive(Error, Debug)]
|
||||||
enum Errors {
|
enum Errors {
|
||||||
|
@ -47,6 +47,10 @@ struct Args {
|
||||||
/// Bitrate for the output
|
/// Bitrate for the output
|
||||||
#[arg(short, long, default_value_t = 128)]
|
#[arg(short, long, default_value_t = 128)]
|
||||||
bitrate: i16,
|
bitrate: i16,
|
||||||
|
/// Codec to use for conversion
|
||||||
|
#[clap(value_enum)]
|
||||||
|
#[arg(short, long, default_value_t = Codec::Wmav2)]
|
||||||
|
codec: Codec,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -283,6 +287,7 @@ fn process(args: &Args) -> Result<(), Errors> {
|
||||||
f.path,
|
f.path,
|
||||||
&args.output,
|
&args.output,
|
||||||
args.bitrate,
|
args.bitrate,
|
||||||
|
&args.codec,
|
||||||
f.soundtrack_index as usize,
|
f.soundtrack_index as usize,
|
||||||
f.index as usize,
|
f.index as usize,
|
||||||
)?;
|
)?;
|
||||||
|
@ -317,6 +322,7 @@ fn convert_to_wma(
|
||||||
input: PathBuf,
|
input: PathBuf,
|
||||||
output: &String,
|
output: &String,
|
||||||
bitrate: i16,
|
bitrate: i16,
|
||||||
|
codec: &Codec,
|
||||||
soundtrack_index: usize,
|
soundtrack_index: usize,
|
||||||
song_index: usize,
|
song_index: usize,
|
||||||
) -> Result<(), Errors> {
|
) -> Result<(), Errors> {
|
||||||
|
@ -331,7 +337,7 @@ fn convert_to_wma(
|
||||||
"-i",
|
"-i",
|
||||||
input,
|
input,
|
||||||
"-acodec",
|
"-acodec",
|
||||||
"wmav1",
|
&codec.to_string(),
|
||||||
"-ac",
|
"-ac",
|
||||||
"2",
|
"2",
|
||||||
"-ar",
|
"-ar",
|
||||||
|
|
15
src/utils.rs
15
src/utils.rs
|
@ -9,6 +9,21 @@ pub struct MusicFile {
|
||||||
pub index: u32,
|
pub index: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(clap::ValueEnum, Debug, Clone)]
|
||||||
|
pub enum Codec {
|
||||||
|
Wmav1,
|
||||||
|
Wmav2,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToString for Codec {
|
||||||
|
fn to_string(&self) -> String {
|
||||||
|
match self {
|
||||||
|
Codec::Wmav1 => String::from("wmav1"),
|
||||||
|
Codec::Wmav2 => String::from("wmav2"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// https://xboxdevwiki.net/Soundtracks#ST.DB
|
// https://xboxdevwiki.net/Soundtracks#ST.DB
|
||||||
#[derive(Debug, Immutable, IntoBytes)]
|
#[derive(Debug, Immutable, IntoBytes)]
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
|
Loading…
Add table
Reference in a new issue