Skip to content

Latest commit

 

History

History
148 lines (132 loc) · 15.4 KB

README.md

File metadata and controls

148 lines (132 loc) · 15.4 KB

mpv-winbuild-arm64

GitHub Workflow Status releases downloads

Use Github Action to build apps for Windows with latest commit.

  • mpv (with libsixel)
  • mpv-menu-plugin
  • mpv-debug-plugin
  • ffmpeg (with frei0r, vmaf, opencl)
  • aria2
  • curl
  • mediainfo
  • libmediainfo
  • svtav1-psy (with libdovi, libhdr10plus)

Note

x86-64 version is built with PGO to improve performance.

x86-64 build is integrated with mimalloc by default, but aarch64 build needs to run minject-arm64 manually, otherwise it will still use the system malloc.

The x86-64-v4 build uses rocketlake as the ISA baseline, but chooses the znver5 scheduling model (512bit vector width), so it can be used for rocketlake, tigerlake, znver4, znver5. However, due to DownFall mitigation (mandatory since 24H2) and AVX512 downclocking, performance regression is expected on Intel MSDT series CPUs.

The x86-64-v3 build uses skylake as the ISA baseline and applies compiler mitigation (-mno-gather) to avoid the performance penalty of the DownFall microcode mitigation.

libmpv can't use mimalloc, the only alternative is system-wide Segment Heap:

reg add “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Segment Heap” /v Enabled /t REG_DWORD /d 1 /f

The mpv is built with consoleAllocationPolicy, so make sure to use Windows 11 24H2 or higher otherwise you will see a console when starting mpv.

The profdata used by PGO is generated manually, so it usually only scrolls every few weeks, during which time there might be random performance regressions.

If LargePages support is enabled on your system, mimalloc will automatically use it, and you can also enable LargePages for exe:

reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\mpv.exe” /v UseLargePages /t REG_DWORD /d 1 /f

You can use VMMap to check if LargePages works or is a placebo.

Private Data Locked WS are LargePages explicitly allocated by mimalloc via VirtualAlloc API.

Image Locked WS are LargePages coalesced by NT kernel for exe. Somehow usually only MinGW built exe can get multiple coalesced Image LargePages, the only exception is Telegram.

Based on https://github.com/Andarwinux/mpv-winbuild-cmake.

Auto-Builds

Checks the mpv repository every hour for updates. If there is an update and it is relevant to the windows build, it will automatically run the compilation and release it on success.

This repo only provides x86-64-v3/v4 and aarch64 version. If you need a 32-bit version, you can fork this repo and run MPV workflow by yourself.

Note

mpv-dev-xxxx.7z is libmpv, including the libmpv-2.dll file.

Some media players based on libmpv use libmpv-2.dll or mpv-2.dll.You can upgrade their libmpv by overwriting this dll.

mpv-dev-lgpl-xxxx.7z is libmpv under LGPLv2.1+ license, which disables LGPLv2.1+ incompatible packages and statically links to ffmpeg under LGPLv3.

I'm not a lawyer and can't guarantee that I've disabled all LGPL-incompatible packages, use at your own risk.

Release Retention Policy

  • The last 30 days of builds will be retained.

Information about packages

same as shinchiro

  • Git/Hg

    • amf-headers amf-headers
    • ANGLE ANGLE
    • aom aom
    • avisynth-headers avisynth-headers
    • bzip2 bzip2
    • dav1d dav1d
    • davs2 davs2
    • expat expat
    • FFmpeg FFmpeg
    • fontconfig fontconfig
    • freetype2 freetype2
    • fribidi fribidi
    • harfbuzz harfbuzz
    • lame lame
    • lcms2 lcms2
    • libarchive libarchive
    • libaribcaption libaribcaption
    • libass libass
    • libbluray libbluray
    • libbs2b libbs2b
    • libdovi libdovi
    • libdvdcss libdvdcss
    • libdvdnav libdvdnav
    • libdvdread libdvdread
    • libjpeg libjpeg
    • libjxl (with brotli, highway) libjxl
    • libmodplug libmodplug
    • libmysofa libmysofa
    • libplacebo (with glad, fast_float, xxhash) libplacebo
    • libpng libpng
    • libsdl2 libpng
    • libsoxr libsoxr
    • libsrt libsrt
    • libssh libssh
    • libudfread libdvdcss
    • libunibreak libunibreak
    • libva libva
    • libvpl libvpl
    • libvpx libvpx
    • libwebp libwebp
    • libxml2 libxml2
    • libzimg (with graphengine) libzimg
    • libzvbi libzvbi
    • luajit luajit
    • mpv mpv
    • mujs mujs
    • nvcodec-headers nvcodec-headers
    • ogg ogg
    • openal-soft openal-soft
    • openssl openssl
    • opus opus
    • rubberband (with libsamplerate) rubberband
    • shaderc (with spirv-headers, spirv-tools, glslang) shaderc
    • speex speex
    • spirv-cross spirv-cross
    • svtav1 svtav1
    • uavs3d uavs3d
    • uchardet uchardet
    • vorbis vorbis
    • vulkan Vulkan
    • vulkan-header Vulkan-Headers
    • x264 x264
    • x265 (multilib) x265
    • xz xz
    • zlib zlib
    • zstd zstd
  • Zip