audio_loudness_batch_normalize/
error.rs

1use 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}