A Windows utility that reduces content-dependent OLED dimming through webcam calibration and a GPU display filter. Currently in beta.
- Enable HDR in Windows display settings. Calibration and Apply require HDR on the selected display.
- Place the camera close to the center of the screen. The center reference patch should fill the camera's view.
- Select your camera and display, enter the panel peak brightness (default 1,000 nits), then click New calibration or Express calibration.
- Review the results, then click Apply.
- Optionally enable Start with Windows to apply the filter at sign-in and stay in the system tray.
Calibration data is stored in %LOCALAPPDATA%\OledCalibration\data.
Use Refine to add more refinement rounds to a saved calibration. Delete all data disables the filter and startup, deletes application data, caches and logs, then exits. Locked files are removed at restart.
- APL-dependent dimming compensation with uniform linear brightness correction.
- Color-distribution analysis using a smoothed HSV distribution histogram (experimental).
- System-wide filtering on the selected display through DWM.
- Automatic webcam calibration after camera setup; no colorimeter required.
- Adaptive sampling and refinement focused on dimming regions and low-confidence neighborhoods.
- Single executable, with no Python runtime dependency.
- System tray and startup support: closing the window keeps the app in the tray.
- Custom EOTF targets: currently PQ; planned custom roll-offs and advanced headroom-aware tone mapping, including SMPTE ST 2094-50 as used by Apple's Headroom Adaptive Gain Curve.
- Faster calibration through improved sampling and convergence.
Requires Windows x64, Visual Studio C++ build tools, the Windows SDK with Debugging Tools, .NET 10 SDK, and Python 3 for build-time source generation.
./build-single.ps1 -OutputDirectory build/singleLaunch build/single/OledCalibration.exe. Current hook support targets Windows 11 24H2 and later with matching Microsoft symbols.
- DWM hooks: intercept composed frames using a hook derived from dwm_lut, preserving graphics state and an uncorrected frame cache.
- Display subsampling: analyze an aspect-aware grid: Quality ~60,000 cells, Balanced ~25,000, Performance ~10,000, or Custom.
- Color statistics: map pixel populations into soft HSV bins and smooth hue, saturation and brightness independently.
- Distribution interpolation: compare smoothed histograms and combine measured brightness gains with a cubic exponential distance weight.
- Adaptive gamut sampling: begin with an HSV/brightness/window grid, skip measured flat regions, then refine low-confidence distributions.
- Correction model: fit measured relative brightness gains and apply one scene-dependent multiplier in linear light.
Example color distributions from a completed calibration, viewed from two angles.
See the full filter design, current experimental model, and adaptive sampling for implementation details and limitations.
Run ./test.ps1 for offline regression checks. See tests and hook stability. Live hardware compatibility and performance validation remain ongoing.
GPLv3 only (GPL-3.0-only). Third-party components retain their original licenses; see third-party notices.


