[FFmpeg-devel] [PATCH 3/3] configure: check avisynth header version
Stephen Hutchinson
qyot27 at gmail.com
Thu Feb 17 02:55:42 EET 2022
On 2/16/22 1:25 PM, Helmut K. C. Tessarek wrote:
>
> On 2022-02-16 02:37, Stephen Hutchinson wrote:
>> There is another option, basically what Gyan suggested earlier: grab the
>> release build of 3.7.1, fetch the extra headers from the Github repo,
>> then copy either all the contents of the tarball's /usr directory into
>> the system /usr directory (or wherever your working ${prefix} is), or
>> just the 'avisynth' directory into ${prefix}/include. Then try FFmpeg
>> again.
>
> This does not work. I compile static binaries. The filesonly tarball only
> has dylibs.
>
> As I mentioned nefore:. 3 days ago everything worked fine. Now the ffmpeg
> builds are broken and I can no longer compile ffmpeg.
>
> Is there any chancf you can add something to make it work again with 3.5.1
> which compiled withtout issues on macOS 10.14 and which I've been using
> since it was released.
>
>
FFmpeg dlopens AviSynth, it only needs the headers and doesn't try to
link it. It has never linked to AviSynth.
If 3.5.1 is working (and by that I assume you mean you're opening a
Version() script in FFplay and it's showing you the video clip with the
version and copyright information), then libavisynth.dylib is somewhere
on your DYLD_LIBRARY_PATH, and you could just as easily set
DYLD_LIBRARY_PATH to the /usr/lib directory in the -filesonly package
and that Version() script will start reporting 3.7.1 instead.
After fetching the extra headers in that sequence of commands, copy the
fixed-up /usr/include/avisynth in the -filesonly package to wherever it
is on your system you point FFmpeg's configure to to see AviSynth's
headers, whether that's the default /usr/local/include or /usr/include
or somewhere in your build root. You can completely omit copying the
.dylibs and it won't care.
At this point, just use latest git, since that's where the HEADERS_ONLY
fix resides:
git clone https://github.com/AviSynth/AviSynthPlus
cd AviSynthPlus
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=${TARGET} -DHEADERS_ONLY=ON ../
make VersionGen install
And HEADERS_ONLY is exactly what it says on the tin: it only sets CMake
to install the headers, and stops it from building the library, which
wouldn't get linked to anyway.
This all did expose a major problem with the version detection inside
the frame properties initialization area in the demuxer, so that check
needs to be simplified and not try to be so clever. Between
HEADERS_ONLY from AviSynth+-git and the simplifying patch*, which I'll
need to push sometime in the next day or so, that should completely
resolve the problem.
*http://ffmpeg.org/pipermail/ffmpeg-devel/2022-February/293128.html
More information about the ffmpeg-devel
mailing list