Wiki

How each part of qBlank works, which file it lives in, and why it was built the way it was.

This wiki is the long version. The README says what qBlank is, the manual (English and German) how to use it; the pages here say how each part works, which file it lives in, and why it was built the way it was.

This program was called CapView. 4.0 is 3.7 under a different name and nothing else — nothing was added or taken away in that step. Settings, profiles and the log carry over by themselves, and an installed 3.7 finds its way here through its own update check. How that works, and what deliberately keeps the old name, is on Updates.

Most of what is written down here was measured rather than reasoned about. Where a number appears — a threshold, a window width, a percentage — it came off this hardware: a StarTech PEXHDCAP60L, a PAL SNES over composite, and a GameCube at 480i and PAL-60. Where something is untested, the page says so.

The picture path

PageWhat it covers
LatencyThe capture path end to end, and the four decisions that make it short
Source and signalDevice enumeration, format forcing, the analogue video standard
Automatic video standardHow the standard is found and confirmed, and what every threshold is worth
Colour range and matrixWhy the range is measured from the pixels rather than read from the format
Signal detectionTelling snow from a scene cut, and the empty state
DeinterlacingHow interlace is detected, and what the five modes actually do
The composite filterDot crawl, rainbow shimmer, noise and the rolled-off top end, and the five filters that address them
Cropping and geometryAutomatic border detection, rotation, line doubling, aspect
Scaling and sharpeningThe five scalers and contrast adaptive sharpening
Freeze and compareF11, F12 and Shift+F12: holding the picture, splitting it, and every filter off
High dynamic rangePQ, HLG, tone mapping, and what each output writes

What leaves qBlank

PageWhat it covers
Screen and windowDesktop Duplication, Windows.Graphics.Capture, and exclusive fullscreen
RecordingEncoding in the process, the audio master clock, containers, splitting and the replay
Encoder settingsOne set of names translated into four vendors' own
ffmpegLoading its libraries, downloading them, and probing what the hardware can do
AudioWASAPI passthrough, drift correction, recording sources, track layout
ScreenshotsPNG, JPEG, JPEG XR and AVIF, why WIC rather than ffmpeg, and the two grab points
Virtual cameraThe DirectShow filter, the source 1:1, the shared memory, and the DLL name problem

The program itself

PageWhat it covers
The main windowWindow size, Shift keeps the shape, borderless, the red dot while recording, the tray icon, and Start menu and desktop shortcuts
The settings windowA window of its own, what it shows for which source, search, and the stutter that took three fixes
Configuration and profilesWhat is stored, where, and what a profile holds
UpdatesChecking GitHub, replacing a running executable, and the bridge out of the old name
ShortcutsThe key list, how rebinding works, and system-wide keys
TranslationsWhy the strings sit inline instead of in a table
BuildingToolchain, build script, what ends up in the binary

Conventions used here

Source references are given as path/file.cpp with the function name, because the code carries its own reasoning in comments and this wiki is a guide to it rather than a replacement for it.

"Measured" means exactly that: a number taken from a running capture, usually through the statistics overlay (F1) or a temporary log line. "Estimated" and "untested" are used where that was not possible.