Releases: Olsro/powervlc
Releases · Olsro/powervlc
Release list
PowerVLC 1.2.0
1.2.0 (2026-08-09)
New features — all platforms (modern machines included)
- Four ready-to-use extensions are now shipped with the player, all
built from plain dialog widgets so they render on every interface —
the modern macOS one, the legacy Mac OS X one and Qt on Windows/Linux:- Invidious: browse public instances, search videos, channels and
playlists, and play at the quality you pick. Instances that have shut
their JSON API down are read from their HTML pages instead, and the
DASH manifest is rebuilt locally, so a working instance stays working.
The media itself is fetched straight from Google's servers rather than
relayed through the instance — one hop less on a machine that has none
to spare. - Jellyfin: browse a server (movies, series, seasons, episodes,
and the live TV line-up) and play either the original file or an HLS
stream transcoded at the chosen quality. Sign in with an API key or
with a username and password; the flow follows the JellyDinosaur
front-end, and PowerVLC announces itself under its own name in the
server's session list. Live channels are ordered the way a remote
control numbers them, searchable, and show what is on right now when
the server has a guide; a channel the server itself pulls from a
remote playlist is opened at that playlist directly, so the whole
ladder of qualities and the alternate audio and subtitle renditions
reach the player instead of being flattened into the single transport
stream the server would hand back. Transcoding is asked for at
44 100 Hz, the rate the built-in output of a legacy Mac actually runs
at, so the player is not left resampling every frame on a processor
with nothing to spare. - Subsonic / Navidrome / Airsonic: browse a music server the way a
music player does — by album, album artist, genre, playlist or song —
with a per-view search box, a favourites filter, star/unstar from the
right-click menu, gapless playback, server-side transcoding, and
downloads either dragged straight out to the Finder or saved to the
Downloads folder with a live progress bar. - Podcast discovery (iTunes): search Apple's public podcast
directory, sort the results, open a show on a page carrying its
artwork and its own description (read from the feed, the only place
it exists), and subscribe in one click — the feed is written into the
very preference the Podcasts service reads, so the show joins the
sidebar next to the ones added by hand and survives the next launch.
- Invidious: browse public instances, search videos, channels and
- Sites guarded by an anti-bot challenge are handed to your browser.
A growing number of servers put a JavaScript proof-of-work (Anubis) or
a captcha in front of every page. PowerVLC does not try to solve those:
it opens the page in the browser you already have — even a Mac OS X
10.4 machine runs a current one — and takes back the session the
browser legitimately earned, through a one-shot loopback server behind
an unguessable path. Only the page is ever handed over: the media
itself is always fetched by the player. The page holds one request open
until there is something to take rather than knocking on the player
several times a second, which on these machines matters: a second
guarded video reuses the same handover, and a tab busy walking a
challenge says so instead of looking like an idle relay. - PowerVLC browser add-on, shipped with the application and installed
in one click from the Help menu (“Install the PowerVLC add-on in your
browser…”). It sends what the browser is playing over to the player,
and it is the only way in on browsers older than Firefox 69 — the ones
legacy Macs run — which refuse to run a bookmarklet on any page
carrying a security policy. - Play a random radio station from the Radio-Browser directory:
worldwide, per continent, or within the country you are browsing. A new
radiobrowser://access resolves a fresh station at every activation
and defeats the mirrors' caching, so pressing it again really does give
another station — and the station drawn is checked before it is handed
over, since the directory's “broken” flag only reflects its own last
sweep and a dead one would end the entry rather than draw again. - Searches ignore accents, ligatures and typographic punctuation:
typingau coeur de l'histoirenow finds Au Cœur de l’Histoire. Case
folding is applied to both sides in the core (newvlc_strfold()), so
every interface and every list benefits. - A far richer extension API, which third-party extensions can use
too, implemented identically in the three dialog providers: check
boxes, drop-down lists, multi-column lists that sort by clicking a
header, right-click context menus, double-click activation,
selection-changed events, rows that can be dragged out to the Finder,
centred images — plus new Lua bindings for the clipboard
(vlc.clipboard), HTTP with POST, custom headers and cookies
(vlc.http), the system keystore (vlc.keystore— the Keychain on
macOS, Secret Service or KWallet on Linux, an encrypted file
elsewhere), the running interface language (vlc.config.language),
unfiltered stream reads (vlc.raw_stream) and the browser handoff
above (vlc.browser). - Cover art in WebP now displays. Upstream leaves WebP to the vpx
module, which only knows the bare VP8 bitstream and fails on every
actual.webpfile, so servers handing out WebP artwork showed no
artwork at all. - The quality of an adaptive stream can be pinned by hand, from a new
Quality submenu under Video Track present in all three interfaces:
automatic, lowest, highest, or one named variant of that stream. Left
alone, HLS and DASH pick a quality from a bandwidth estimate and change
their mind mid-programme — which on these machines means being handed a
resolution the processor cannot decode. Beside it sits a standing
resolution ceiling (“Auto quality by resolution”, the module's own
adaptive-maxheight, until now reachable only from the command line):
that one is a property of the machine rather than of the stream, so it
is set once and applies to everything played afterwards. Both can be
changed while the stream is playing, and the lowest/highest choices keep
obeying the ceiling.
Improvements — all platforms (modern machines included)
- Extension translations moved to per-language catalogues
(share/lua/i18n/<extension>/<code>.lua): only the language in use is
ever read, instead of parsing sixteen of them at every activation. 72
catalogues, 18 languages, and English underneath string by string so an
untranslated entry shows in English rather than as a hole. All the new
strings of the release are also propagated to the 105 shipped
interface languages. - PowerVLC no longer shares its user folder with a stock VLC install
on Windows and Linux (powervlcinstead ofvlc): same folder meant
the same preferences and the same art cache, so a wrong cover cached
by one was served back by the other. Upstream's pre-XDG fallback was
also removed — it silently imported a neighbouring VLC's configuration
on first launch and then deleted it. - A dead host no longer freezes whoever is waiting on it: the
connect() wait is now bounded byipv4-timeoutinstead of running into
the kernel's TCP timeout (75 seconds on Darwin). - A decoder that falls behind gives up filtering before it gives up
frames, in two steps: B slices first, then all slices, and only then
are whole frames dropped. This costs nothing on a machine that is
keeping up — it only fires once the decoder is already several frames
late — so a 2007 Core 2 Duo meeting a 1080p stream benefits from it for
the same reason a G4 does. - Extensions can no longer hang the application on exit: each one now
carries an interruption context, so network I/O blocked on a dead host
is aborted when quitting instead of being waited on. - Filling an extension list with thousands of rows was quadratic (every
append walked the whole chain); it is now constant-time — felt on any
machine, crippling on the slow ones this fork exists for. - Extensions name themselves in the interface language: the scan state
that runsdescriptor()now offers the string library and the
interface language, so a menu entry is no longer stuck in English. - Playlist scripts can translate the item names they build, which until
now stayed English whatever language was chosen. - Numbers are parsed in the C locale again: launched from a French (or
any comma-decimal) environment, every Lua script parsing JSON failed
with “no valid JSON”. - The self-healing plugin cache, until now compiled for macOS only, also
covers Windows: the portable archive no longer pays a full plugin scan
at every start, and a third-party plugin dropped intoplugins/is
scanned once instead of at every launch. - Audio drift is no longer corrected audibly on a single reading.
Flushing the output or padding it with silence is heard, and one late
measurement — one scheduling hiccup — used to be enough to order it;
three consecutive ones are now required (aout-drift-confirm). How the
correction is made is decided per stream (aout-drift-silence): an
audio-only stream has nothing to stay in step with, so the resampler
absorbs the offset inaudibly, while a stream with video keeps the
silence padding that holds the picture and the sound together. The input
pushes the change when a programme declares its video track late, so a
transport stream is not stuck with the audio-only policy for good. - The cheap resampler is now chosen by architecture rather than
everywhere. Speex with a...
PowerVLC 1.1.0
New features — all platforms (modern machines included)
- Forced subtitles done right (backported from VLC 4.0 — and beyond):
cherry-picked the complete master forced-subtitles series — forced flag in
the ES format, forced-only rendering in the DVD and PGS subtitle decoders,
DVD forced-caption track detection and description (audio and subtitle
code_extension), correct handling of hidden subpicture streams, and
forced-track prioritization in default track selection. - Blu-ray forced PGS track detection, which even VLC master lacks: the
TS demux scans presentation composition segments for the forced flag, and
PowerVLC shows only the forced captions of such tracks (new
bluray-forced-subsoption, enabled by default). - DVD-Audio (AUDIO_TS) playback in the dvdread module, using the new
libdvdread 7.x API: title table, track seeking and duration, LPCM/MLP
AOB demuxing. - BD+ protected Blu-rays: libbdplus is now shipped alongside libaacs.
- Automatic main-playlist selection on Blu-rays with obfuscated
playlists, using the information declared inkeydb.cfg. - Blu-ray pop-up menu entry (shortcut and context menu) usable on both
HDMV and BD-J discs. - New Help-menu entries to open the libaacs/libbdplus configuration folders,
and akeydb.cfgimport dialog. - Radio-Browser.info directory in the Internet section of the sidebar:
browse the community webradio database by continent and country, the
stations of a country being fetched only when it is unfolded. Station
lists are cleaned up — names trimmed, duplicates removed, sorted
alphabetically with the best quality first among same-named stations
(multiple relays of national radios), and every entry carries its
codec/bitrate in the Description column. Broken stations are filtered
out by the API, fetches are retried over the directory mirrors, and a
failed discovery shows a self-explaining entry instead of a silent empty
list — selecting the service again reloads it in the background.
Country fetches get a generous explicit timeout (the core preparse
default of 5 seconds silently killed the biggest countries), and a
country left empty by a failed fetch is retried when unfolded again.
Improvements — all platforms (modern machines included)
- Rebased onto upstream VLC 3.0.24 (982 commits of fixes and
improvements from the upcoming release). - FFmpeg 4.4 → 8.1.2 on every target — newer decoders and years of codec
fixes, including on the legacy PowerPC/i386 builds thanks to rebased
AltiVec/H.264 patches. - DVD libraries updated to the new-generation releases: libdvdcss 1.6.0,
libdvdread 7.1.1, libdvdnav 7.0.0. - libbluray 1.5.0 and libaacs 0.12.0, with parsing of the richer
disc metadata the new libbluray provides; fontconfig 2.16.0, dav1d 1.5.x
and many smaller library bumps. - Linux AppImages now bundle the contrib FFmpeg 8.1 (static) instead of
linking the distribution's ancient FFmpeg 3.4 — same codec coverage (AV1
film grain, APV, ATRAC9, …) as every other target. - All new PowerVLC strings translated/propagated to the 105 shipped
languages (a batch of fork strings that had been written in French was
also anglicized, with translations for the most common languages). - PowerVLC now introduces itself as PowerVLC: HTTP requests carry
PowerVLC/1.1.0 LibPowerVLC/1.1.0instead of VLC's user agent, the
application id iscom.github.PowerVLC, and the icon name and the
Last.fm client string follow suit. Servers that log or gate on the player
are no longer told this is VLC 3.0.24. - Unbrowsed directories (radio directory countries, file-browser folders)
now show their disclosure triangle right away in every interface, and
load their content when unfolded — no need to enter them once first. - Stream titles no longer erase curated names: an entry named by a
playlist or an on-line directory keeps that name when the stream
announces its own title (ICY names are often raw mount points), shown as
"Name ||| stream title" — so the playing station stays recognizable, and
still matches the search filter. - Keyboard navigation in the playlist works everywhere: Left/Right fold
and unfold nodes in the modern macOS interface, and the legacy interface
gains full arrow-key navigation plus Return to play the selection.
The keys keep controlling DVD menus whenever the video has focus. - Items appended while a search filter is active (a radio directory still
loading) are now filtered like the rest, and a failing stream can no
longer make playback fall back on entries the filter hides. - Services discovery trees mirror an external source and can no longer be
reordered by drag and drop; dragging their entries out, to the playlist
or the media library, still works.
Fixes — all platforms (modern machines included)
- BD-J Blu-ray menus finally work: fixed a process race, the JVM library
lookup, fontconfig setup, and restored the resource loading that modern
JDKs (18+) broke by removing the Java security manager. - The look-ahead cache never engaged after a decoder restart (every DVD
and Blu-ray title change): fixed, raising the decode cushion from 26 to
79 frames — Blu-ray H.264 1080p now plays with zero dropped frames even
on a MacBook 2007. - Fixed an instant-fallback path in Blu-ray subtitle blending during
hardware decoding ("no matching alpha blending routine"). - Raw-device Blu-ray disc access on Mac OS X, bypassing Snow Leopard's
2 KB-per-read UDF ceiling that throttled high-bitrate discs.
New features — legacy Macs
- Mac OS X 10.2 "Jaguar" and 10.3 "Panther" support: minimum system
lowered from 10.4 to 10.2.8 — interface, video, audio and DVD playback
are functional (newjaguar-compatruntime shims: dlcompat, libc and
Objective-C compatibility layers), with a dedicated Jaguar application
icon. Hardware-accelerated DVD decoding works on 10.2 with ATI GPUs.
The port includes the hardening these systems needed to be reliable:
interface language detection, robust Stop/playlist buttons (audio-flush
deadlock, stale video surface on 10.3), and quitting without freezing. - GPU motion-compensation offload for progressive DVDs on G3/G4 (ATI
DVDDriverbackend): about one third less CPU during playback. - DVD subtitles composited by the GPU (hardware subpicture plane), on
by default on the accelerated path. - AV1 with AltiVec on G4 (dav1d PowerPC SIMD port, with a runtime guard
so G3 machines keep working). - BD-J interoperability jar rebuilt as Java 5 bytecode, keeping Blu-ray
menus possible on period JVMs (a Java 5 API index is vendored under
contrib/java5-api/). - Extensions support, including the extensions browser to download new extensions straight from PowerVLC
Improvements — legacy Macs
- Accelerated DVD playback polish: interface raised to 25 fps, A/V sync
tightened from 75 ms to 20 ms, flicker eliminated, instant fullscreen
toggle. - H.264 on PowerPC: new AltiVec loop-filter, chroma motion-compensation and
reference-prefetch routines plus an inlined CABAC decoder; smooth 720p
H.264 validated on a Mac Mini G4. - i386 builds: inline assembly and the full FFmpeg x86 SIMD re-enabled
(about +25 % H.264 decoding speed). - Removed a redundant staging copy in the cache path (~11 % CPU back on G4).
Fixes — legacy Macs
- Fixed the hardware DVD player path and cursor hiding in the legacy
interface. - Stop/playlist button reliability hardening (the audio-flush deadlock
work) also covers Mac OS X 10.4. - Fixed a minutes-long interface stall when folding a playlist node with
thousands of entries (quadratic behavior in the outline view's row
bookkeeping). - Fixed the Title column being duplicated when toggling the optional
playlist columns. - The playlist search filter is now honored by playback advance, exactly
like the other interfaces. - The playlist selection survives list refreshes (station lists loading,
metadata updates), keeping keyboard navigation usable throughout. - No more frozen quit while a webradio plays on Mac OS X 10.2/10.3:
tearing an HTTP/2 connection down joins its receive thread, which these
ancient pthreads cannot wake — they have no cancellation point in
poll(), and a local socket shutdown does not wake select() either — so
the quit hung until the server dropped the connection minutes later.
The receive thread now waits on VLC's interruptible poll and the
destructor interrupts it deterministically, on every platform; HTTP/2
stays enabled.
Fixes — Windows
- The 32-bit build now actually starts on Windows XP SP3. It has claimed
that floor since 1.0.0 but never ran there: the core library imported
_putenv_s, one of the "secure CRT" functions that only reached
msvcrt.dllwith Windows Vista, and Windows refuses to load a binary
whose imports it cannot resolve. The same class of imports was removed
from libcaca, librist, libupnp and libarchive, whose plugins had been
quietly unavailable for the same reason. - Sound on Windows XP. DirectSound asks for a 6 MiB playback buffer, a
size some drivers accept at creation and then refuse to play — leaving
the machine silent while the log fills with one
cannot start playing bufferper audio block. PowerVLC now negotiates
the size, halving it until the device agrees to play (768 KiB on the
machine this was found on). Machines that are happy with 6 MiB are
unaffected. Reproduced identically on stock VLC 3.0.23: the 6 MiB buffer
has been upstream since 2013. - Plugins that could not load on Windows XP now do: the XML reader —
and with it the media library, which silently failed to open — plus
libbluray, libass and the a...