Skip to content

Releases: Olsro/powervlc

PowerVLC 1.2.0

Choose a tag to compare

@Olsro Olsro released this 09 Aug 16:33

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.
  • 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:
    typing au coeur de l'histoire now finds Au Cœur de l’Histoire. Case
    folding is applied to both sides in the core (new vlc_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 .webp file, 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 (powervlc instead of vlc): 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 by ipv4-timeout instead 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 runs descriptor() 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 into plugins/ 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...
Read more

PowerVLC 1.1.0

Choose a tag to compare

@Olsro Olsro released this 02 Aug 17:04

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-subs option, 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 in keydb.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 a keydb.cfg import 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.0 instead of VLC's user agent, the
    application id is com.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 (new jaguar-compat runtime 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
    DVDDriver backend): 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.dll with 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 buffer per 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...
Read more