Replies: 5 comments 13 replies
-
|
the v2/v3/v4 stuff is people thinking ricing the builds with autovectorisation options for different made-up x86 architecture levels actually does anything. it doesn't. Anything performance critical already has hand-written SIMD which will be picked at run-time based on the CPU used and does not benefit from it. Anything non-performance-critical is unlikely to get much out of autovectorisation above the x86_64 base level of SSE 4.2, and is more likely to accidentally thrash the icache or expose dumb compiler optimiser bugs than bring any measurable real-world benefit. This type of "ricing" can be seen as a form of Cargo-cult, and outside of Windows circles is most commonly practiced by Gentoo users, a primitive more basal form of Linux user that lives in caves and feeds on lichen growing on the damp rock walls for sustenance. |
Beta Was this translation helpful? Give feedback.
-
|
My build is made entirely for personal use (it's not just for compiling mpv), and the main purpose of my repository is to demonstrate the extensibility and functionality of the cmake meta-build system and how to customize it to meet your own needs. As others have said, there is no stability guarantee. Someone suggested that something like x86-64-v4 was needed, so I added it because it was easy. I wish people could learn to customize mpv-winbuild-cmake and mpv-winbuild to customize their own builds instead of relying entirely on prebuilt. With WSL2, you can get your own custom daily builds in minutes using mpv-winbuild-cmake. cmake and ninja seem to be more reliable as meta-build systems than a bunch of bash scripts for building software with very complex dependencies. I recommend zhongfly's prebuilt. For build issues, zhongfly can provide fixes faster and I will assist with that. Incidentally, compilers can't generate optimized code for multiple ISAs without explicit dispatch from the developer: doing so would exponentially expand both the binary size and the compiler's internal logic. ffmpeg doesn't like these explicitly dispatched intrinsics, which makes sense, as performance and buildability depend on the compiler. ASM, on the other hand, allows for fine-tuning without the compiler's intervention. One issue with x86-64-v3 is ASM code: some legacy ASM paths only have SSE implementations, and we have the compiler generate a bunch of AVX code around them, which results in SSE/AVX transition penalties. clang and gcc have a workaround with -msse2avx, but this only works for GAS, not NASM, which ffmpeg uses. Also, Windows seems to have enforced DownFall mitigations, causing significant regressions in AVX gather performance on Intel CPUs, I added -mno-gather to workaround this. |
Beta Was this translation helpful? Give feedback.
-
|
ffmpeg has more more more more more more more more and more personal builds. Choose any one you like. |
Beta Was this translation helpful? Give feedback.
-
|
I totally agree. MPV has so many customization options that it's very confusing to choose which build to use. What are the differences between them? Is there a performance improvement or size reduction? If you're not familiar with these projects, you can only choose the one with the most stars. |
Beta Was this translation helpful? Give feedback.
-
|
mpv doesn't provide binaries for any platform. All the binaries are built either by individual 3rd party volunteers, or by distro maintainers - which are typically also volunteers. If some builds are missing some features, then the best way forward is to ask the build maintainers to add it, or maybe even help them to do that. |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
-
At first, there was mainly this mpv build - https://github.com/shinchiro/mpv-winbuild-cmake
❌ But this mpv build lacked "frequent" builds, this one is daily.
Then, there was this mpv build - https://github.com/zhongfly/mpv-winbuild
✅ This one solved the previous one's issue by going further and doing more frequent builds.
Also, at that time - shinchiro mpv builds repo wasn't updated too often (commits), so choosing zhongfly build was an easy choice.
✅ I even contributed to the new mpv build repo and added the option to choose edition of yt-dlp (stable/nightly/master), this PR also adds the option in
settings.xmlwhich allows you to finally installyt-dlpunattended to some degree.❌ shinchiro mpv build did NOT add the PR I mentioned earlier (with the
yt-dlpandsettings.xmland unattended).Great, so far easy to understand, right?
Here's the confusing part for me:
Now there's another mpv build - https://github.com/dyphire/mpv-winbuild
❌ This one also did NOT add the PR I mentioned earlier (with the
yt-dlpandsettings.xmland unattended).Which has the following changes:
Changed LuaSocket is built and included, so [simple-mpv-webui](https://github.com/open-dynaMIX/simple-mpv-webui) can be used out of the box Fixes and Minor Enhancements davs2: enable 10bit libass: parse script properties even if missing "[Script Info]" FFmpeg: check for double BOM in UTF-16 subtitle files FFmpeg: Parsing ASS subtitle files with missing [Script Info] in the first line FFmpeg: only handle negative durations for non-ASS subs FFmpeg: handle long TrueHD input_timing gaps FFmpeg: Potential TrueHD FFmpeg Passthrough FixAnd another mpv build - https://github.com/Andarwinux/mpv-winbuild
✅ This one also DID add the PR I mentioned earlier (with the
yt-dlpandsettings.xmland unattended).Which has the following changes:
First I have to admit I'm not an expert (otherwise I would have not created this discussion), so forgive my ignorance.
So I have a few questions/suggestions:
AVX512and why we need it, but I can somehow grasp the idea that if my CPU has it, then it's good to enable it, my problem with the v2, v3, v4, is that it creates this maze of "which one to download?", and not offering a solution where there's one mpv build that fit all, a universal mpv build that fit all CPUs without degrading performance.There's also the official mpv build - https://nightly.link/mpv-player/mpv/workflows/build/master
But this one doesn't include any updaters like the rest, doesn't include yt-dlp, doesn't include ffmpeg, so there's no reason to choose the official one.
Lastly, I would like to thank shinchiro, zhongfly, dyphire and Andarwinux for creating each repo, even if it's confusing, I still want to show my appreciation.
Beta Was this translation helpful? Give feedback.
All reactions