[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