-
Notifications
You must be signed in to change notification settings - Fork 136
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
Bump ffmpeg version #1046
base: develop
Are you sure you want to change the base?
Bump ffmpeg version #1046
Conversation
According to https://ffmpeg.org/pipermail/ffmpeg-cvslog/2014-January/073339.html, it seems that this flag is never neccesary anymore?
Built using ./configure --disable-doc --disable-ffplay --disable-ffprobe --disable-ffmpeg --enable-asm --enable-yasm --disable-static --enable-shared --target-os=win64 --arch=x86_64 --toolchain=msvc Should be LGPL licensed. Same flags without target-os and arch for 32bit. Built using MSVC 19.30 as described in https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC (Run vcvarsall then launch msys2_shell.cmd and make sure link.exe is the MSVC one)
Update windows ffmpeg binaries
Just need to figure out the Linux pre-built library side for this to be ready. I believe the issue preventing easily doing so was figuring out what distribution's pre-built FFMPEG to use, since I'm not sure where the original libraries even came from. Alternatively, it might make more sense to build FFMPEG like we do for mac, since I'm not sure why the two are different in the first place. |
Are we actually building with ffmpeg on linux? I looked at the g++ and clang github actions logs for the latest develop commit and I can find no mention of "avcodec", "ffmpeg" or "MovieTexture_FFMpeg" within the build step logs. I can easily find these terms in the analogous mac and windows logs. In this cmake file: etterna/src/arch/CMakeLists.txt Lines 76 to 88 in 2011156
Only linux is conditionally not compiling the ffmpeg-dependant etterna C++ files. And grepping for "HAS_FFMPEG" in the entire repo brings up nothing at all, so we are not setting a default value for it nor enabling it in CI. That said, I can't see the actual compiler invocations in the build logs so I'm not sure if we are actually linking an ffmpeg version even if we're not compiling our files that depend on ffmpeg. Also, I can't find any precompiled binary artifacts in /extern/ffmpeg for linux (All of ./lib, ./windows and ./64bit seem to be windows files). |
It's been quite a while since I looked at this, so unfortunately my memory is a bit hazy. Looking at the CMakeLists under extern/ffmpeg,
which means we are linking those static libraries on Linux builds. That said, if we're not actually using that for anything, removing that entirely and just deleting the lib/ directory seems like a perfectly fine solution to me on the Linux side :) |
I believe so. As for the "dll" in file names, I don't want to know either 0_0 |
There's an if(HAS_FFMPEG) for linux in this cmake script that includes the ffmpeg movieTexture which depends on ffmpeg: etterna/src/arch/CMakeLists.txt Lines 84 to 90 in 9a0b9fb
if(APPLE)
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_SRC "MovieTexture/MovieTexture_FFMpeg.cpp")
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_HPP "MovieTexture/MovieTexture_FFMpeg.h")
elseif(MSVC)
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_SRC "MovieTexture/MovieTexture_FFMpeg.cpp")
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_HPP "MovieTexture/MovieTexture_FFMpeg.h")
else() # Unix
if (${HAS_FFMPEG})
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_SRC "MovieTexture/MovieTexture_FFMpeg.cpp")
list(APPEND SMDATA_ARCH_MOVIE_TEXTURE_HPP "MovieTexture/MovieTexture_FFMpeg.h")
endif()
endif() I couldn't find anywhere that sets/defines that HAS_FFMPEG variable though. I assume there might be a way of setting/overriding it via the cmake command line? |
WIP, not finished yet.
This aims to bump FFMPEG to 4.4, a fairly recent release.
FFMPEG 2.1.3, what we are using currently, is from 2014, making it rather old...
Updating FFMPEG now instead of waiting for it to break at some point in the future seems prudent.
MacOS currently builds ffmpeg from source; I have preserved this.
Linux and Windows both use pre-built libraries.
@nico-abram updated the Windows pre-built libraries (thank you!) but the Linux side has still not been touched.