Skip to main content

rskit_media/
lib.rs

1//! Media types, codec/format registry, pipeline builder, and processing traits.
2//!
3//! `rskit-media` defines the vocabulary for media processing without any processing logic.
4//! Backends (FFmpeg, image crate) implement the traits defined here.
5
6#![warn(missing_docs)]
7
8// Concern groupings: the encoding and stream vocabularies live in their own
9// folders. Their modules are re-exported at the crate root below so the public
10// paths stay `rskit_media::codec`, `rskit_media::time`, and so on.
11mod encoding;
12mod stream;
13
14/// Chunked media processing — split, process in parallel, reassemble.
15pub mod chunking;
16/// Executor trait for media processing backends.
17pub mod executor;
18/// Filter types and convenience constructors.
19pub mod filter;
20/// Media operation types for pipeline building.
21pub mod ops;
22/// Pipeline builder for chaining media operations.
23pub mod pipeline;
24/// Media probing traits and metadata types.
25pub mod probe;
26/// Duration-aware timeout calculation for media operations.
27pub mod timeout;
28
29/// Codec identifiers, profiles, levels, and well-known constants.
30pub use encoding::codec;
31/// Color space, color range, and pixel format types.
32pub use encoding::color;
33/// Container/file format identifiers and well-known constants.
34pub use encoding::format;
35/// Output configuration, quality, and encoding settings.
36pub use encoding::output;
37/// Preset output configurations for common formats.
38pub use encoding::presets;
39/// Codec/format compatibility registry.
40pub use encoding::registry;
41/// Audio sample rate and channel layout types.
42pub use stream::audio;
43/// Resolution and frame rate types.
44pub use stream::spatial;
45/// Subtitle types and SRT/VTT parsing.
46pub use stream::subtitle;
47/// Timestamp, time range, and segment types.
48pub use stream::time;
49/// Track and track info types.
50pub use stream::track;
51/// Core media type enumerations.
52pub use stream::types;
53
54pub use audio::{ChannelLayout, SampleRate};
55pub use chunking::{
56    ChunkBoundary, ChunkId, ChunkPlan, ChunkProgress, ChunkResult, ChunkStatus, ChunkStrategy,
57    ChunkedOperation, FixedDurationStrategy, KeyframeStrategy, ReassemblyPlan, SilenceStrategy,
58};
59pub use codec::{Codec, CodecKind, CodecLevel, CodecProfile};
60pub use color::{ColorRange, ColorSpace, PixelFormat};
61pub use executor::MediaExecutor;
62pub use filter::{Filter, FilterTarget, ParamValue, Params};
63pub use format::Format;
64pub use ops::{
65    ColorAdjustments, FilterConfig, FilterPreset, ImageFormat, InterpolateConfig, InterpolateModel,
66    MediaOp, OverlayConfig, OverlayType, Position, SceneDetectConfig, SceneDetectMethod, Size,
67    SubtitleConfig, SubtitleFormat, SubtitleSource, TextOverlay, ThumbnailConfig, UpscaleConfig,
68    UpscaleModel,
69};
70pub use output::{
71    AudioSettings, Bitrate, DashConfig, EncodingSpeed, HlsConfig, HlsPlaylistType, OutputConfig,
72    Quality, RtmpConfig, StreamingConfig, VideoSettings,
73};
74pub use pipeline::{MediaPipeline, Progress};
75pub use probe::{Chapter, KeyframeInfo, MediaMetadata, MediaProbe, PictureType, SilenceInterval};
76pub use registry::{CodecInfo, ExecutorFactory, FormatInfo, ProbeFactory, Registry};
77pub use spatial::{FrameRate, Resolution};
78pub use subtitle::{SubtitleEntry, SubtitlePosition, SubtitleStyle, SubtitleTrack};
79pub use time::{Segment, TimeRange, Timestamp};
80pub use timeout::{OperationKind, TimeoutCalculator};
81pub use track::{
82    AudioTrackInfo, ContentLightLevel, HdrFormat, HdrMetadata, MasteringDisplay, SubtitleTrackInfo,
83    Track, VideoTrackInfo,
84};
85pub use types::{MediaType, TrackKind};