-
Notifications
You must be signed in to change notification settings - Fork 89
Add native arm64 build slice to all Windows dependencies #190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
4fe3845 to
3f37412
Compare
3f37412 to
0ff2fee
Compare
0ff2fee to
e18f0e7
Compare
|
What is the error exactly in building mbedtls? I saw upstream fixed similar issues multiple times. |
e18f0e7 to
1587850
Compare
Compiling This is possibly fixed by Mbed-TLS/mbedtls#8168, so we're waiting for MbedTLS to cut a new release with those fixes included. |
6f09be1 to
58c4660
Compare
|
This needs to be rebased and merge #227 in. |
@PatTheMav and I work closely together off-thread. Rest assured, that we discuss this regularly. However, do note that this is being worked on as time and other priorities allow. Thank you for your understanding. |
May I join the conversation? |
I appreciate the enthusiasm, but these are conversations that we have either on voice calls or in ongoing DMs about getting stuff to work. It is mostly stuff like "so about that PR" and "here's an idea" and "here's how we might get that to work when we have time". The point is that he doesn't need a reminder to rebase this. He's aware. This is on our roadmap to address. |
|
How about we start a separate thread in the development channel? Or I could just ask and @ both of you in the channel? |
RytoEX
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just some quick observations. I did get a local Qt build working, but it requires setting both QT_QMAKE_TARGET_MKSPEC and QT_HOST_PATH. I've commented how I might approach this for CI. We can attempt to optimize it later.
|
Was just skimming back over this.
This seems like it should be a trivial Merge Request on the x264 repo. Ideally, I'd like the change to happen there at some point.
VideoLAN's dav1d is a decoder only. It is not an encoder. Xiph's rav1e is an encoder. |
3f2d466 to
bc8100a
Compare
|
I don't think we can update to libsrt 1.5.3 or we'll run into the issues linked in #240. Restating that, if possible, I'd like to see the patches for SRT and libpng upstreamed to their respective repos. I'm mostly only concerned that the patches get submitted. I have been unable to register an account on the VideoLAN GitLab instance to open an Issue about their outdated gas-preprocessor. |
|
As discussed off-thread with @PatTheMav , updating libsrt to 1.5.3 has known issues in OBS Studio on Windows. These are supposedly resolved in libsrt 1.5.4, which is not yet out/stable. It's not clear to me that libsrt 1.5.3+ is required for WoA/arm64. Can we confirm? Separately, MbedTLS 3.6.0+ is required for WoA/arm64, as far as I know. However, we cannot update that until Haivision/srt#2957 is fixed. This seems to have been addressed by If we need libsrt 1.5.3+, either we wait for all dependencies to be stable, or we teach the Windows dependency build scripts to build different versions per target architecture. Additionally, I still cannot build obs-studio on Windows against libsrt 1.5.3+ and mbedTLS 3.6.0+ due to the bcrypt linking issue, even with the patch here. I haven't tried obsproject/obs-studio#11056 because it fails on CI, and needs to be rebased (I'm guessing gersemi changes). |
98eb7ab to
012a5fc
Compare
ec4d9f6 to
eb5a3ad
Compare
|
Updated srt to 1.5.3 and MbedTLS to 3.5.2. |
|
Can you fix the merge conflict here so that CI creates new artifacts? |
eb5a3ad to
428c5b6
Compare
Done. |
RytoEX
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some questions and some paper trail keeping.
428c5b6 to
c89485e
Compare
|
SRT streaming works with these deps and I cannot seem to reproduce any freezes or crashes, though I am admittedly not clear on the exact steps to reproduce the previously reported freeze/crash. RTMPS streaming to YouTube works fine. HLS streaming to YouTube sometimes seems to fail with these deps. The failure state will result in the stream output dropping all frames. Clicking "Stop Streaming" will result in a stuck "Stopping stream..." button, and trying to exit will hang the application. I suspect the "Stopping" and hang issues are not related to these deps specifically, and I'm not sure that the initial failure is either (it could just be timing issues with YouTube's disconnect detection with HLS weirdness). MbedTLS and SRT are the only deps updated here, so the tests above seem sufficient for now. If we find issues with either update, we'll need to aggressively debug them and open issues as needed, or figure out a way to use the newer deps only for WoA. |
|
Appreciate you guys working on this. As an artist who streams my work and uses mostly arm now this would be great! |
|
Thank you for this feature. Which release is this feature targeted at? |
Description
This is an exploratory PR for possible future native ARM64 builds on Windows.
Some dependencies cannot be built for ARM64 yet, others require specific workarounds, yet others can be built for ARM64 but themselves are too recent to be supported by OBS Studio.
This PR will stay in draft state until these and other issues are solved and are in a state that do not result in unnecessary support burden to current maintainers and supporters.
This PR is based on #186 and the PRs it depends on.
Motivation and Context
Due to Visual Studio 17 2022 having full support for ARM64 builds as well as
clang- andNinja-based builds, selecting the correct build architecture for MSVC builds does most of the work to achieve native builds, there are some caveats though:libvpxrequires disabling more advanced NEON features not made available by Microsoft's ARM64 implementation.x264requires an update of thegas-preprocessorit ships with - luckilyFFmpegprovides a very recent version of it (the version shipped withx264is 9 years old)FFmpegrequires the samegas-processorto be made available in thePATHsvt-av1has not been made available as it's not well optimised for ARM64 -dav1dwould be a better alternative, butaomis "good enough" for nowQt6builds without any additional hacks or issuesLuaJIThas merged ARM64 and is available nowPythonsupports Windows ARM64 since version 3.11, alas OBS Studio does not support Python 3.11 at runtime yet (you could build OBS Studio with it, but people couldn't add its libraries at runtime)mbedtlsis still broken on ARM64 with version 3.5.1libdatachannelrequires at leastmbedtls3.4.0, so both are entirely broken on ARM64 right nowvplis disabled for ARM64Aja NTV2is disabled for ARM64How Has This Been Tested?
Tested on Windows 11 ARM64.
Types of changes
Checklist: