MediaPipe is a cross-platform framework for building multimodal machine learning pipelines, primarily targeting on-device inference. It provides a graph-based execution model where modular 'calculators' process typed 'packets' through directed acyclic graphs. The framework includes a rich library of pre-built calculators for image processing, tensor manipulation, audio analysis, and ML inference, as well as high-level task APIs for vision (face/hand/pose landmarking, image classification, segmentation), text (classification, language detection), audio (classification), and generative AI (LLM inference). The architecture is layered: a core C++ framework (mediapipe/framework/) defines the graph runtime, stream handlers, and packet infrastructure; a calculator library (mediapipe/calculators/) provides reusable processing nodes; and task-specific APIs (mediapipe/tasks/) offer consistent interfaces across C++, Java, Python, iOS, Web, and C. The system relies on TensorFlow Lite (LiteRT) for model execution, OpenCV for image operations, protobuf for configuration, and Abseil for utilities. Key entry points include the Python package (mediapipe/__init__.py), the C++ task APIs (mediapipe/tasks/cc/), and the web TypeScript modules (mediapipe/web/). The codebase is large and actively developed, with ongoing migration from older API patterns to newer ones (api2/api3), and some deprecated components (legacy Python solutions, older calculator interfaces).
KWIVER is a large C++/Python computer vision and video analytics toolkit. Its architecture is a plugin-driven algorithm library (vital/algo), a dataflow pipeline framework (sprokit), and many backend implementations (arrows) that wrap OpenCV, VXL, Ceres, FFmpeg, GDAL, VTK, and other dependencies. In production it performs video/image I/O, feature detection and matching, structure-from-motion, object detection/tracking, geospatial metadata parsing, and serialization. It exposes command-line applets, an embedded pipeline API, Qt-based viewers, and pybind11 Python bindings. The system is configuration-driven: algorithms and processes are registered through macros, configured via vital::config_block, and instantiated dynamically through a plugin registry. The sprokit subsystem provides a pipeline DSL, schedulers, process clusters, and adapter ports for external data injection, making the project both a reusable library and a runtime pipeline environment. Although dominated by application/library code, the repository also serves research and defense-oriented use cases. It contains extensive MISB/KLV metadata parsers for multiple standards, multi-view geometry algorithms, track-file format readers/writers (kw18, KPF, XGTF, etc.), and PyTorch-based feature extractors. The hybrid nature is visible in the tension between production-grade pipeline infrastructure and research-oriented algorithms that remain experimental or under-documented. The codebase is actively maintained with recent commits and substantial CI infrastructure, but technical drift is medium due to the enormous optional dependency footprint, vendored copies of cereal/rapidjson/DBoW2, legacy modules such as track_oracle, and some deprecated APIs.