feat(windows): mpv plays audio on Windows, with libmpv shipped in the installer
libmpv on Windows (DR-237): - The builder image carries zhongfly's LGPL libmpv-2.dll, pinned by asset name and sha256, plus an MSVC mpv.lib generated from the DLL's own mpv_* exports (the archive ships only a MinGW .dll.a). LGPL, not the GPL builds: no x264/x265, mpv -Dgpl=false; FFmpeg is version3, so LGPL-3.0. THIRD_PARTY_NOTICES.md records it. - build-windows-cross.sh stages both files into src-tauri/windows-libs/; build.rs links mpv.lib from there and tauri.windows.conf.json bundles the DLL beside jellytau.exe from there, with the licence texts under licenses/. One directory, so the DLL shipped is the one linked. - Workflows move to builder image 2026.09.1. Windows audio: - MpvBackend replaces WebviewAudioBackend on Windows (ao=wasapi), so volume, EQ, normalization and gapless work there as on Linux. Local files are passed to mpv as native paths, not file:// URLs. Fixes found on the way: - player_play_item decided "does the backend render video" with cfg!(not(linux)), true on Windows, while get_player_status sent Windows video to the <video> element. With mpv as the backend that would decode every film's soundtrack twice. All three callers now ask video_renders_natively() (UT-273). - confine_queued_path rebuilt paths with PathBuf::push, so on Windows a queued `downloads/x` was stored as `downloads\x`, no longer the spelling the app built. It now keeps the caller's separator (UT-205, which only ever ran on Linux, failed under Windows). Verified: jellytau.exe imports libmpv-2.dll; the full unit suite cross-compiled for Windows passes under wine against the shipped DLL (943/943, including the mpv injection and TLS tests); the NSIS installer contains the DLL and licence texts. Not yet run on real Windows hardware.
This commit is contained in:
@@ -19,3 +19,24 @@ to the terms of the GPL-3.0**. The complete corresponding source for JellyTau is
|
||||
available in this repository; JellyTau's own code remains available under MIT.
|
||||
|
||||
Desktop builds do not include this component.
|
||||
|
||||
## Windows: libmpv (LGPL-3.0)
|
||||
|
||||
The Windows installer bundles **`libmpv-2.dll`**, the mpv media player library
|
||||
with FFmpeg compiled in, which plays audio on Windows. It is the LGPL build from
|
||||
<https://github.com/zhongfly/mpv-winbuild> (mpv built `-Dgpl=false`, FFmpeg
|
||||
without `--enable-gpl`), pinned by version and checksum in `Dockerfile.builder`.
|
||||
|
||||
- Licence: **GNU Lesser General Public License v3.0** (FFmpeg is configured
|
||||
`--enable-version3`; mpv itself is LGPL-2.1-or-later in this configuration).
|
||||
The installer carries the texts as `licenses/LGPL-3.0.txt` and
|
||||
`licenses/GPL-3.0.txt`, which the LGPL-3.0 incorporates.
|
||||
- Source: mpv <https://github.com/mpv-player/mpv> and FFmpeg
|
||||
<https://ffmpeg.org>, built by the scripts at
|
||||
<https://github.com/zhongfly/mpv-winbuild>; the exact mpv commit is in the
|
||||
asset name in `Dockerfile.builder`.
|
||||
|
||||
JellyTau links it dynamically, and the DLL sits beside `jellytau.exe` as a
|
||||
separate file, so it can be replaced with any compatible libmpv build. JellyTau's
|
||||
own code remains under MIT. The Linux builds use the system's libmpv and do not
|
||||
bundle it.
|
||||
|
||||
Reference in New Issue
Block a user