HandBrake is a cross-platform video transcoder application with GUIs for macOS (Cocoa/Objective-C), Windows (WPF/C#), and Linux (GTK/C). It features a shared core library (libhb) handling video/audio encoding, filtering, muxing, and job management. The application supports preset-based configuration, hardware acceleration (QSV, NVEnc, VCE, VideoToolbox), batch processing via job queues, and extensive format/subtitle handling. Architecture follows platform-appropriate patterns: MVVM in WPF, delegates/protocols in macOS, and GObject-based design in GTK. The codebase demonstrates strong modularity, clear separation of concerns, and active maintenance across all platforms.
This repository provides safe Rust bindings to FFmpeg multimedia libraries (avcodec, avformat, avfilter, avutil, swscale, swresample). It functions as a multimedia processing library enabling audio/video decoding, encoding, filtering, muxing/demuxing, and device handling through idiomatic Rust abstractions over FFmpeg's C API. The architecture follows FFmpeg's subsystem organization with modules for codecs, formats, filters, software scaling/resampling, and utilities. Key entry points include ffmpeg::init() for initialization, format::context for I/O handling, codec::context for encoder/decoder setup, and filter::graph for filter chains. Data flows typically involve opening input contexts, decoding packets to frames, optional processing (filtering/scaling), encoding frames, and writing output contexts. The crate maintains compatibility with FFmpeg versions 3.4-9.0 via feature-gated version tracking.