audio_loudness_batch_normalize/
error.rs1use std::path::PathBuf;
2use symphonia::core::errors::Error as SymphoniaError;
3
4#[warn(dead_code)]
5#[derive(thiserror::Error, Debug)]
6pub enum MeasurementError {
7 #[error("Symphonia error: {0}")]
8 Symphonia(#[from] SymphoniaError),
9 #[error("I/O error: {0}")]
10 Io(#[from] std::io::Error),
11 #[error("EBU R128 error: {0}")]
12 EbuR128(#[from] ebur128::Error),
13 #[error("No compatible audio track found")]
14 NoTrack,
15 #[error("Unsupported sample format")]
16 UnsupportedFormat,
17}
18
19#[warn(dead_code)]
20#[derive(thiserror::Error, Debug)]
21pub enum WritingError {
22 #[error("Writing wav Error: {0}")]
23 Wav(#[from] hound::Error),
24 #[error("Writing ogg Error: {0}")]
25 Ogg(#[from] vorbis_rs::VorbisError),
26 #[error("IO error: {0}")]
27 Io(#[from] std::io::Error),
28}
29
30#[warn(dead_code)]
31#[derive(thiserror::Error, Debug)]
32pub enum ProcessingError {
33 #[error("Symphonia error: {0}")]
34 Symphonia(#[from] SymphoniaError),
35 #[error("No compatible audio track found in {0:?}")]
36 NoTrack(PathBuf),
37 #[error("Missing sample rate")]
38 MissingSampleRate,
39 #[error("Missing channel specification")]
40 MissingChannelSpec,
41 #[error("Unsupported audio buffer format")]
42 UnsupportedFormat,
43 #[error("I/O error: {0}")]
44 Io(#[from] std::io::Error),
45 #[error("{0} files failed during processing")]
46 FilesFailed(usize),
47 #[error("Target loudness calculation failed: {0}")]
48 TargetLoudnessCalculationFailed(String),
49 #[error("EBU R128 error: {0}")]
50 EbuR128(#[from] ebur128::Error),
51}
52
53#[warn(dead_code)]
54#[derive(thiserror::Error, Debug)]
55pub enum Error {
56 #[error("Measurement failed: {source}")]
57 Measurement {
58 path: PathBuf,
59 #[source]
60 source: MeasurementError,
61 },
62 #[error("Audio decoding/processing failed for {path}: {source}")]
63 Processing {
64 path: PathBuf,
65 #[source]
66 source: ProcessingError,
67 },
68 #[error("Audio writing failed for {path}: {source}")]
69 Writing {
70 path: PathBuf,
71 #[source]
72 source: WritingError,
73 },
74 #[error("I/O error during processing of {path}: {source}")]
75 Io {
76 path: PathBuf,
77 #[source]
78 source: std::io::Error,
79 },
80 #[error("Invalid options: {0}")]
81 InvalidOptions(String),
82}