1macro_rules! err {
2 ( $($arg:tt)* ) => {
3 crate::MuxError::from(format!($($arg)*))
4 };
5}
6
7macro_rules! some_or {
8 ($x:expr, $or:expr) => {
9 match $x {
10 Some(x) => x,
11 None => $or,
12 }
13 };
14}
15
16mod functions;
17mod i18n;
18pub mod markers;
20mod run;
21mod traits;
22mod types;
23
24pub type Error = MuxError;
25pub type Result<T> = std::result::Result<T, MuxError>;
26
27pub use functions::{ensure_long_path_prefix, ensure_trailing_sep, mux};
28pub use i18n::Msg;
29pub use run::run;
30
31pub use traits::{
32 Field, ToJsonArgs, TryFinalizeInit,
33 lazy_fields::{LazyField, LazyPathField},
34};
35
36pub use types::{
37 arc_path_buf::ArcPathBuf,
38 auto_flags::AutoFlags,
39 chapters::Chapters,
40 char_encoding::CharEncoding,
41 cli_arg::CliArg,
42 codec_id::CodecId,
43 config::{Config, ConfigTarget},
44 container::Container,
45 dispositions::{DefaultDispositions, Dispositions, ForcedDispositions, ty::DispositionType},
46 duration::Duration,
47 extension::Extension,
48 globset_pattern::GlobSetPattern,
49 input::{Input, InputFileType, iters::MediaGroupedByStem},
50 lang::{Lang, LangCode},
51 log_level::LogLevel,
52 media_info::{
53 MediaInfo,
54 cache::{CacheMI, CacheMIOfFile, CacheMIOfGroup, CacheState},
55 },
56 media_number::MediaNumber,
57 metadata::{LangMetadata, Metadata, NameMetadata},
58 mux_error::{MuxError, kind::MuxErrorKind},
59 mux_logger::MuxLogger,
60 output::Output,
61 range::RangeUsize,
62 retiming::options::{RetimingOptions, RetimingOptionsParts},
63 stream::{
64 Stream,
65 order::{StreamsOrder, StreamsOrderItem},
66 streams::Streams,
67 ty::StreamType,
68 },
69 target::Target,
70 value::Value,
71};
72
73static VERSION: &str = concat!(env!("CARGO_PKG_NAME"), " v", env!("CARGO_PKG_VERSION"));
74
75use ffmpeg_next as ffmpeg;
76use is_default::IsDefault;
77
78use functions::add_copy_stream;
79use types::{
80 helpers,
81 retiming::{RetimedStream, Retiming, RetimingChapter},
82 stream::supported::StreamsSupported,
83};