Clicker 1.2.1
The picture
The picture is drawn at the resolution your display actually has. It was
capped at the resolution of the stream, so on a high-DPI screen a 1080-line
broadcast was rendered at 1920 pixels wide and then stretched to fill — a
bilinear enlargement of an already-finished picture, on every frame. On a
3456-pixel-wide Mac display that is the difference between a soft picture and
a sharp one, and it was the answer to "why does this look worse than it
should". It renders at the full size now and mpv does the scaling properly,
from the source, in one pass.
Interlaced channels are deinterlaced. They were not, at all. A great deal
of broadcast television is 1080i — most network affiliates that are not 720p —
and interlaced video shown without deinterlacing does not look soft, it looks
torn: comb teeth along every moving edge. Only streams the decoder flags as
interlaced are touched, so the 720p and 1080p channels beside them are
unchanged.
Three picture profiles, in Settings → Video → Picture scaling. Automatic
is the default and is right for almost everybody: good scaling on real
graphics, and mpv's cheap defaults where the driver is software or virtualised
and a better scaler would be paid for in dropped frames. Fast is the cheap
path always, for a machine that is struggling. Detailed adds debanding, which
costs real GPU time and is worth it on low-bitrate channels that arrive with
banding already in them.
Nothing sharpens, deliberately. Broadcast is compressed, so its edges include
the compression — mosquito noise around captions, block boundaries in dark
scenes — and sharpening makes those crisper along with the picture.
Full screen letterboxes to black instead of showing the interface's own
material around the picture.
Playback
Video renders on a thread of its own where that helps. A graphics driver
can hold a render call for most of a frame while doing no work at all —
virtualised GPUs, remote displays, translated OpenGL — and on the thread that
also answers the mouse, that is a window that stops responding and a picture
shedding half its frames. Moving it to a worker turned 50fps with frames
dropping continuously into a steady 60 with one lost a minute, measured on the
same machine and the same channel.
It is on by default on Linux, where that problem is real and measured, and
opt-in on Windows and macOS, where the display sets the pace and rendering in
step with it measures better. CLICKER_RENDER_THREAD=1 or =0 overrides
either way.
Closed captions stay off until you turn them on. Every channel and every
recording opened with captions across the picture. Asking mpv to build a
caption track out of the data riding inside the video is what gives the
caption button anything to switch on — and mpv then selected that track by
itself, because it picks a subtitle track automatically and a broadcast
offers nothing else to choose. The track is still built, and now nothing is
selected until the button says so.
One engine
Windows, macOS and Linux now play video through the same code. They did
not before: Linux had a render path of its own, written to survive a driver
that stalls, and the other two had the original one. Two paths meant a fault
found on one platform had to be reasoned about twice and could be fixed on
the wrong one — which is exactly how a night went, with changes made for
Linux landing in shared code that Windows and macOS then ran untested.
Everything that decides what a frame looks like is shared now: the render
worker and how it hands frames over, the sizing, the scaling profiles, the
deinterlacer, the letterboxing. What is left platform-specific is the part
that genuinely is — how each graphics API names a context, where fonts and
files live, who draws the window frame — and all of it is behind one module
that is eight percent of the code. The README lists every remaining
difference, down to which function does it.
What that buys you is not visible in a single release. It is that the next
picture fault gets fixed once, on every platform, instead of three times or
one and a half.
Recording
The recording mark in the guide means what it says. A season pass set to
new episodes only was marking every showing of the series, including repeats
the DVR had no intention of recording. Now a cell is marked when that pass
will actually take that showing. Cancelling a pass is still offered from any
showing of the series, as it should be.
Linux
Text renders the glyphs it could not before. Arrows and dashes drew as
empty boxes, because nothing in the font chain carried them. The face now
comes from fontconfig, so it is whatever that machine actually has —
DejaVu on Debian and Ubuntu, Noto on Fedora, Liberation elsewhere.
A graphics driver that leaks file descriptors no longer ends playback. One
per frame, on the virtualised GPU where it was found, which met the default
1024-descriptor ceiling about a minute into playback and took the picture, the
sound and the window with it. The ceiling is raised at startup, the same way
browsers do it.