A C++ time unit for exact representation of common media framerates and audio sample rates using std::chrono.
Flicks is a C++ time unit library that defines a 'frame-tick' as 1/705600000 of a second. It provides exact integer representations for common media framerates and audio sample rates, solving floating-point accumulation errors in time-sensitive simulations and media processing.
C++ developers working in visual effects, film, television, game development, or audio processing who need precise time management for simulations and media integration.
Developers choose Flicks because it offers guaranteed temporal accuracy through integer math, seamless integration with std::chrono, and exact support for industry-standard frame and sample rates without approximation errors.
A unit of time defined in C++.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Represents common frame rates like 24Hz and audio sample rates like 44.1kHz as integer flicks, eliminating floating-point drift in time accumulation, as detailed in the motivation and examples.
Implemented as a std::chrono::duration type, allowing direct use with C++'s timing utilities and high-resolution clocks, mentioned in the basics and installation sections.
Single-header library that can be included directly or defined in one line of code, minimizing integration overhead, as highlighted in the installation notes.
Covers a wide range of film, TV, and audio rates including approximations for NTSC, with specific integer values listed for each supported rate in the details section.
Uses 1000/1001 ratios for NTSC rates, which the README admits doesn't cover all nuances of variable frame rate playback, limiting precision for broadcast-standard applications.
Only supports a pre-defined set of frame and sample rates; arbitrary or emerging standards may not be exactly representable without modifying the base unit, as noted in the non-exhaustive list.
Tightly coupled to C++'s std::chrono, making it unsuitable for non-C++ projects without significant adaptation, restricting its use to C++ ecosystems.