Files
amethyst/desktopApp/packaging/flatpak/com.vitorpamplona.amethyst.Desktop.metainfo.xml
T
nrobi144 704f4f44ee feat(desktop): replace vlcj with kdroidFilter ComposeMediaPlayer + JCodec/FFmpeg
Drops uk.co.caprica:vlcj 4.8.3 (GPL-3.0) from desktopApp and replaces it
with an MIT-dominant stack:

- Video / audio playback: io.github.kdroidfilter:composemediaplayer:0.10.0
  (MIT) — OS-native backends (Media Foundation on Windows, AVFoundation on
  macOS, GStreamer on Linux). First-class Compose VideoPlayerSurface.
- Thumbnail extraction: org.jcodec:jcodec(+javase):0.2.5 (BSD-2) primary
  H.264 path, raw ProcessBuilder FFmpeg fallback for HEVC / VP9 / AV1 /
  HLS / non-faststart MP4.
- Binary SPDX: MIT AND LGPL-2.1-or-later AND BSD-2-Clause AND Apache-2.0.
  rpmLicenseType updated accordingly (previously misdeclared as MIT
  while shipping GPLv3 vlcj).

Code changes:
- Deleted: VlcjPlayerPool, MacOsVlcDiscoverer, BundledVlcDiscoverer,
  VlcResourceResolver
- Rewrote: GlobalMediaPlayer (kdroidFilter engine + snapshotFlow-based
  state sync into the preserved MediaPlaybackState contract);
  VideoThumbnailCache (JCodec → ProcessBuilder ffmpeg cascade, with a
  hard 4 MiB download cap, Content-Type sniff to reject HTML error
  pages, and cleanup of zero-byte cache entries); DesktopVideoPlayer
  (mounts VideoPlayerSurface for the active URL, codec/network error
  UX with "Open in default player" fallback)
- Updated: NowPlayingBar + GlobalFullscreenOverlay to render
  VideoPlayerSurface directly (drops the videoFrame ImageBitmap relay)
- Main.kt: drops vlcj pre-init / shutdown calls (kdroidFilter lazy-loads
  natives + registers its own shutdown hook on Windows)

Build / packaging:
- Removes ir.mahozad.vlc-setup plugin + vlcSetup{} block + the per-OS
  bundled VLC tree + the -Dvlc.plugin.path JVM arg
- Adds NOTICE.md + per-component LICENSE-*.txt under appResources/common
  (LGPL-2.1 license text is a placeholder — replace with verbatim FSF
  text before release)
- Adds per-OS LGPL FFmpeg drop-in directories with README pointing at
  the recommended LGPL binary source (osxexperts.net / Crigges Windows
  LGPL build)
- Adds Flathub manifest skeleton (Gitnuro-style: org.freedesktop.Platform
  24.08 + openjdk21 extension + org.freedesktop.Platform.ffmpeg-full
  add-extension for patent codecs)
- AppRun: drops VLC LD_LIBRARY_PATH / VLC_PLUGIN_PATH env wiring

Verified on macOS arm64:
- ./gradlew :desktopApp:compileKotlin                BUILD SUCCESSFUL
- ./gradlew :desktopApp:test                         BUILD SUCCESSFUL
- ./gradlew :desktopApp:spotlessApply                clean
- Smoke launch: no VLC/vlcj/libvlc log lines, kdroidFilter native
  library extracts to ~/.cache/composemediaplayer/native/, thumbnail
  cache populates at ~/.cache/amethyst-desktop/video-thumbs/ with the
  4 MiB cap enforced
- H.264 MP4 playback (active + thumbnail extraction) confirmed
- VP9-in-WebM playback fails on macOS as AVFoundation cannot decode it —
  expected codec gap; surfaced via PlaybackErrorMessage + "Open in
  default player" handoff in DesktopVideoPlayer

Docs:
- docs/plans/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md
- docs/plans/2026-06-11-vlcj-replacement-testing-sheet.md
2026-06-11 13:37:33 +03:00

54 lines
1.7 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>com.vitorpamplona.amethyst.Desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT AND LGPL-2.1-or-later AND BSD-2-Clause AND Apache-2.0</project_license>
<name>Amethyst Desktop</name>
<summary>Nostr client for desktop</summary>
<description>
<p>
Amethyst Desktop is a desktop client for the Nostr protocol.
Browse feeds, post notes, send zaps (Lightning Network), and
participate in NIP-53 live audio rooms.
</p>
<p>
Video playback uses your system's GStreamer (Linux), AVFoundation
(macOS), or Media Foundation (Windows). On Linux, install the
GStreamer plugin packages (good, bad, libav) for full codec coverage.
</p>
</description>
<launchable type="desktop-id">com.vitorpamplona.amethyst.Desktop.desktop</launchable>
<url type="homepage">https://github.com/vitorpamplona/amethyst</url>
<url type="bugtracker">https://github.com/vitorpamplona/amethyst/issues</url>
<url type="vcs-browser">https://github.com/vitorpamplona/amethyst</url>
<developer id="com.vitorpamplona">
<name>Vitor Pamplona</name>
</developer>
<content_rating type="oars-1.1" />
<categories>
<category>Network</category>
<category>InstantMessaging</category>
</categories>
<screenshots>
<!-- Add at least one screenshot tagged with `<image>...</image>`
before Flathub submission. Suggested 1280x800 PNG. -->
</screenshots>
<releases>
<!-- Populated by release CI. Example:
<release version="0.0.0" date="2026-06-11">
<description>
<p>Initial Flathub release with kdroidFilter video playback.</p>
</description>
</release>
-->
</releases>
</component>