Skip to main content

mux_media/types/
config.rs

1pub(crate) mod fields;
2pub(crate) mod new;
3mod to_json_args;
4
5#[allow(unused_imports)]
6use crate::TryFinalizeInit;
7use crate::{
8    AutoFlags, Chapters, Container, DefaultDispositions, ForcedDispositions, Input, IsDefault,
9    LangCode, LangMetadata, LogLevel, NameMetadata, Output, RetimingOptions, Streams, Target,
10};
11use std::collections::HashMap;
12
13/// A configuration.
14///
15/// # Warning
16///
17/// This struct is not fully initialized after construction.
18/// You **must** call [`Config::try_finalize_init`] before using some methods.
19#[derive(Clone, Debug, PartialEq)]
20#[non_exhaustive]
21pub struct Config {
22    pub input: Input,
23    pub output: Output,
24    pub locale: LangCode,
25    pub jobs: u8,
26    pub log_level: LogLevel,
27    pub exit_on_err: bool,
28    pub save_config: bool,
29    pub reencode: bool,
30    pub auto_flags: AutoFlags,
31    pub streams: Streams,
32    pub chapters: Chapters,
33    pub defaults: DefaultDispositions,
34    pub forceds: ForcedDispositions,
35    pub names: NameMetadata,
36    pub langs: LangMetadata,
37    pub retiming_options: RetimingOptions,
38    pub targets: Option<HashMap<Target, ConfigTarget>>,
39    pub container: Container,
40    pub is_output_constructed_from_input: bool,
41}
42
43/// A configuration for a [`Target`].
44#[derive(Clone, Debug, Default, PartialEq, IsDefault)]
45#[non_exhaustive]
46pub struct ConfigTarget {
47    pub streams: Option<Streams>,
48    pub chapters: Option<Chapters>,
49    pub defaults: Option<DefaultDispositions>,
50    pub forceds: Option<ForcedDispositions>,
51    pub names: Option<NameMetadata>,
52    pub langs: Option<LangMetadata>,
53}
54
55impl Config {
56    const JSON_NAME: &str = "mux-media.json";
57    const JOBS_DEFAULT: u8 = 1;
58}