use std::path::PathBuf;
use std::sync::Arc;
use std::sync::RwLock;
use codec::frame::{ColorMetadata, PixelFormat, VideoCodec};
use container::cmaf::SegmentInfo;
use super::RungCodecInvariant;
#[derive(Clone)]
pub struct EncoderWorkerConfig {
pub rung_idx: usize,
pub codec: VideoCodec,
pub width: u32,
pub height: u32,
pub frame_rate: f64,
pub quality: u8,
pub speed_preset: u8,
pub target: codec::encode::tuning::QualityTarget,
pub tier: codec::encode::tuning::SpeedTier,
pub threads: usize,
pub gpu_index: Option<u32>,
pub gpu_vendor: Option<codec::gpu::GpuVendor>,
pub output_color_metadata: ColorMetadata,
pub output_pixel_format: PixelFormat,
pub constant_qp: bool,
pub timescale: u32,
pub per_frame_ticks: u32,
pub keyframe_interval: u32,
pub segment_target_ticks: u64,
pub output_dir: PathBuf,
pub rung_invariant: Arc<RwLock<Option<RungCodecInvariant>>>,
}
#[derive(Debug, Clone)]
pub struct WorkerOutput {
pub gpu_index: Option<u32>,
pub segments: Vec<SegmentInfo>,
}