direct_play_nice 0.1.0-beta.3

CLI program that converts video files to direct-play-compatible formats.
Documentation
//! Binary entrypoint for process setup and dispatch into the conversion/probe command flow.

use anyhow::{Context, Result};
use clap::{CommandFactory, FromArgMatches};
use std::env;

mod cli;
mod config;
mod config_merge;
mod devices;
mod ffmpeg_utils;
mod gpu;
mod logging;
mod main_probe;
mod main_retry;
mod main_sidecar;
#[cfg(test)]
mod main_tests;
mod plex;
mod servarr;
mod subtitle_ocr;
mod throttle;
mod transcoder;
mod types;

pub(crate) use ffmpeg_utils::Args;
pub(crate) use transcoder::{
    configure_ffmpeg_logging, AudioQuality, VideoCodecPreference, VideoQuality,
};
pub(crate) use types::{
    OcrEngine, OcrFormat, PrimaryVideoCriteria, SubMode, SubtitleFailurePolicy,
    UnsupportedVideoPolicy,
};

#[cfg(test)]
pub(crate) use transcoder::prelude::*;

fn main() -> Result<()> {
    if env::var_os("RUST_LOG").is_none() {
        env::set_var("RUST_LOG", "info");
    }
    let _ = env_logger::Builder::from_default_env()
        .format_timestamp(None)
        .target(env_logger::Target::Stderr)
        .try_init();

    configure_ffmpeg_logging();

    let mut matches = Args::command().get_matches();
    let matches_snapshot = matches.clone();
    let args = Args::from_arg_matches_mut(&mut matches).context("Failed to parse CLI arguments")?;

    transcoder::run(args, matches_snapshot)
}