OBS Studio is a cross-platform live streaming and recording application. Its architecture is modular: a core library (`libobs`) provides the runtime for sources, encoders, outputs, services, and filters, all registered via a plugin system. The frontend is a Qt-based desktop GUI (`frontend/`) that manages scenes, sources, audio mixing, and output controls. Graphics rendering is abstracted across Direct3D 11, Metal, and OpenGL backends. The system ingests video/audio from capture sources (screen, window, game, camera, hardware I/O like DeckLink), processes them through filters and encoders (x264, NVENC, QSV, AMF, FFmpeg), and outputs to streaming protocols (RTMP, WHIP, SRT) or local files (FLV, MP4, MOV). External dependencies include FFmpeg, Qt, libcurl, and various hardware SDKs. The codebase demonstrates strong engineering with reusable utility libraries (dynamic arrays, strings, config files, profilers) and a well-defined plugin API, though platform-specific code and bundled third-party SDKs introduce some technical drift.
LAVFilters is a mature Windows DirectShow filter suite for media playback. It consists of three COM-registered filters: LAV Splitter (a demuxer/source filter), LAV Audio Decoder, and LAV Video Decoder. The splitter wraps FFmpeg's libavformat to read virtually any container, while the decoders use FFmpeg's libavcodec plus hardware acceleration backends (DXVA2, D3D11VA, NVIDIA CUVID, Intel QuickSync) and expose property pages and programmatic COM settings interfaces. The code is predominantly C++ with heavy use of DirectShow base classes, COM plumbing, and low-level SIMD pixel-conversion routines.