fix(config): moved ffmpeg configs to it's own file

This commit is contained in:
Didier Slof 2023-05-08 10:32:13 +02:00
parent 205380b689
commit 226b19a177
Signed by: didier
GPG key ID: 01E71F18AA4398E5
2 changed files with 43 additions and 44 deletions

View file

@ -1,6 +1,40 @@
use crate::configuration::ConfigFFmpeg;
use crate::ffmpeg::FFmpegCommandOptions; use crate::ffmpeg::FFmpegCommandOptions;
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegProcess {
pub threads: Option<u8>,
pub niceness: Option<u8>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutputVideo {
pub codec: String,
pub bitrate: u32,
pub crf: u8,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutputAudio {
pub codec: String,
pub bitrate: u32,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutput {
pub format: String,
pub video: ConfigFFmpegOutputVideo,
pub audio: ConfigFFmpegOutputAudio,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpeg {
pub path: String,
pub extra_args: Option<Vec<String>>,
pub overwrite: Option<bool>,
pub process: Option<ConfigFFmpegProcess>,
pub output: ConfigFFmpegOutput,
}
impl ConfigFFmpeg { impl ConfigFFmpeg {
pub fn build_command_options<S: Into<String>>(&self, input_path: S, output_path: S) -> FFmpegCommandOptions { pub fn build_command_options<S: Into<String>>(&self, input_path: S, output_path: S) -> FFmpegCommandOptions {
FFmpegCommandOptions { FFmpegCommandOptions {
@ -18,8 +52,8 @@ impl ConfigFFmpeg {
extra_args: if self.extra_args.is_some() { self.extra_args.clone().unwrap() } else { Vec::new() }, extra_args: if self.extra_args.is_some() { self.extra_args.clone().unwrap() } else { Vec::new() },
threads: if self.process.threads.unwrap_or(0) > 0 { Some(self.process.threads.unwrap_or(0)) } else { None }, threads: if self.process.is_some() && self.process.as_ref().unwrap().threads.is_some() { Some(self.process.as_ref().unwrap().threads.unwrap()) } else { None },
niceness: if self.process.niceness.unwrap_or(0) > 0 { Some(self.process.niceness.unwrap_or(0)) } else { None }, niceness: if self.process.is_some() && self.process.as_ref().unwrap().niceness.is_some() { Some(self.process.as_ref().unwrap().niceness.unwrap()) } else { None },
} }
} }
} }

View file

@ -36,46 +36,11 @@ pub struct ConfigFiles {
pub cleanup: Option<ConfigFilesCleanup>, pub cleanup: Option<ConfigFilesCleanup>,
} }
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegProcess {
pub threads: Option<u8>,
pub niceness: Option<u8>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutputVideo {
pub codec: String,
pub bitrate: u32,
pub crf: u8,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutputAudio {
pub codec: String,
pub bitrate: u32,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpegOutput {
pub format: String,
pub video: ConfigFFmpegOutputVideo,
pub audio: ConfigFFmpegOutputAudio,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ConfigFFmpeg {
pub path: String,
pub extra_args: Option<Vec<String>>,
pub overwrite: Option<bool>,
pub process: Option<ConfigFFmpegProcess>,
pub output: ConfigFFmpegOutput,
}
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
pub struct Config { pub struct Config {
pub debug: Option<bool>, pub debug: Option<bool>,
pub files: ConfigFiles, pub files: ConfigFiles,
pub ffmpeg: ConfigFFmpeg, pub ffmpeg: ffmpeg::ConfigFFmpeg,
} }
impl Config { impl Config {
@ -88,22 +53,22 @@ impl Config {
include: Vec::new(), include: Vec::new(),
cleanup: None, cleanup: None,
}, },
ffmpeg: ConfigFFmpeg { ffmpeg: ffmpeg::ConfigFFmpeg {
path: String::from("/usr/bin/ffmpeg"), path: String::from("/usr/bin/ffmpeg"),
extra_args: None, extra_args: None,
overwrite: None, overwrite: None,
process: Some(ConfigFFmpegProcess { process: Some(ffmpeg::ConfigFFmpegProcess {
threads: Some(0), threads: Some(0),
niceness: Some(0), niceness: Some(0),
}), }),
output: ConfigFFmpegOutput { output: ffmpeg::ConfigFFmpegOutput {
format: String::from("webm"), format: String::from("webm"),
video: ConfigFFmpegOutputVideo { video: ffmpeg::ConfigFFmpegOutputVideo {
codec: String::from("libsvtav1"), codec: String::from("libsvtav1"),
bitrate: 0, bitrate: 0,
crf: 0, crf: 0,
}, },
audio: ConfigFFmpegOutputAudio { audio: ffmpeg::ConfigFFmpegOutputAudio {
codec: String::from("libopus"), codec: String::from("libopus"),
bitrate: 0, bitrate: 0,
}, },