View Full Version : AviSynth+ 3.5: Linux, macOS, and BSD support
qyot27
3rd March 2020, 03:39
AviSynth+ version 3.5 marks the first release with native support for non-Windows OSes.
For the past few weeks, this has been getting tested and polished over at the Github repo. There's a few lingering issues that will have to wait for 3.5.1, but the important part is that the AviSynth+ core can now be built and used natively on Linux, macOS, and BSD. As of right now, the only source filter that can be used is FFMS2's C++ plugin.
Tested platforms:
Ubuntu 19.10
macOS 15.3 High Sierra and 15.4 Mojave
FreeBSD 12.1
There is no currently no automatic detection of autoloaded plugins. You'll need to use AddAutoloadDir (on macOS and BSD, AddAutoloadDir currently throws an exception, but LoadPlugin works correctly).
More detailed build instructions can be found in the AviSynth+ documentation (https://github.com/AviSynth/AviSynthPlus/blob/master/distrib/docs/english/source/avisynthdoc/contributing/posix.rst).
microchip8
3rd March 2020, 05:08
Nice! This is a major milestone!
StainlessS
3rd March 2020, 09:13
A big day indeed, thanks very much to all concerned.
FranceBB
3rd March 2020, 10:50
What an achievement!
For years and years Avisynth has been a Windows only frameserver and people on Linux had to rely on either using AVXSynth (which never got as many things as Avisynth+) or running AVS with wine and just hope. Today is definitely a truly remarkable day which extends the platforms supported and hopefully the Avisynth userbase along with the Doom9 one.
Well done indeed, guys!
StainlessS
3rd March 2020, 12:33
I'm gettin' this on build attempt Cinnamon Mint 19.3 Tricia x64.
steve@Plex-780:~$ git clone git://github.com/AviSynth/AviSynthPlus.git && \
> cd AviSynthPlus && \
> mkdir avisynth-build && \
> cd avisynth-build && \
>
> CC=gcc CXX=g++ LD=gcc cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && \
> ninja && \
> sudo ninja install
Cloning into 'AviSynthPlus'...
remote: Enumerating objects: 408, done.
remote: Counting objects: 100% (408/408), done.
remote: Compressing objects: 100% (246/246), done.
remote: Total 24585 (delta 254), reused 261 (delta 162), pack-reused 24177
Receiving objects: 100% (24585/24585), 31.05 MiB | 186.00 KiB/s, done.
Resolving deltas: 100% (16849/16849), done.
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.17.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steve/AviSynthPlus/avisynth-build
[12/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
FAILED: avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
/usr/bin/g++ -DAvsCore_EXPORTS -DBUILDING_AVSCORE -I../avs_core/include -Iavs_core -fpermissive -msse2 \
-Wl,--no-undefined -fPIC -std=c++1z -MD -MT avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o \
-MF avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o.d \
-o avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -c ../avs_core/core/PluginManager.cpp
../avs_core/core/PluginManager.cpp:8:10: fatal error: filesystem: No such file or directory
#include <filesystem>
^~~~~~~~~~~~
compilation terminated.
[17/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/convert/convert.cpp.o
ninja: build stopped: subcommand failed.
steve@Plex-780:~/AviSynthPlus/avisynth-build$
Something I'm doin' wrong ?
EDIT: Edited for D9 Screen wrap, wide post.
EDIT: I also got this, dont know if matters
steve@Plex-780:~$ sudo apt-get update
Ign:1 http://packages.linuxmint.com tricia InRelease
Hit:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:3 http://archive.canonical.com/ubuntu bionic InRelease
Hit:4 http://archive.ubuntu.com/ubuntu bionic InRelease
Hit:5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:6 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
Ign:7 http://dl.google.com/linux/earth/deb stable InRelease
Hit:8 http://dl.google.com/linux/earth/deb stable Release
Get:10 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease [15.4 kB]
Hit:11 https://repo.skype.com/deb stable InRelease
Hit:12 http://packages.linuxmint.com tricia Release
Get:14 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main i386 Packages [21.7 kB]
Get:15 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main amd64 Packages [23.1 kB]
Get:16 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main Translation-en [8,980 B]
Fetched 69.2 kB in 24s (2,888 B/s)
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://dl.google.com/linux/earth/deb stable InRelease' doesn't support architecture 'i386'
Sourcefile PluginManager.cpp exists, but not the .o file.
https://i.postimg.cc/dhcQj3hG/Screenshot-from-2020-03-03-11-53-41.png (https://postimg.cc/dhcQj3hG)
/home/steve/AviSynthPlus/avisynth-build/avs_core/CMakeFiles/AvsCore.dir directory contains
parser [folder]
AviHelper.cpp.o
BufferPool.cpp.o
FilterConstructor.cpp.o
MTGuard.cpp.o
Prefetcher.cpp.o
ThreadPool.cpp.o
Is it related to this
There is no currently no automatic detection of autoloaded plugins. You'll need to use AddAutoloadDir (on macOS and BSD, AddAutoloadDir currently throws an exception, but LoadPlugin works correctly).
qyot27
3rd March 2020, 13:31
The CC/CXX/LD overrides likely need to use 'gcc-9/g++-9' so it sees the correct version of GCC (assuming that you've installed the gcc-9 package). 19.04 and distros based on it are the earliest that can build AviSynth+ with the version of GCC provided in the main repositories, because support for C++17 (to be able to use the filesystem library) was only added in GCC 8.
That warning/error message in sudo apt-get update was from the Google Earth repository, so no, nothing to do with this.
StainlessS
3rd March 2020, 14:59
OK, I've re-installed compiler again,
steve@Plex-780:~$ sudo apt-get install build-essential cmake git ninja-build checkinstall
[sudo] password for steve:
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.4ubuntu1).
checkinstall is already the newest version (1.6.2-4ubuntu2).
ninja-build is already the newest version (1.8.2-1).
cmake is already the newest version (3.10.2-1ubuntu2.18.04.1).
git is already the newest version (1:2.17.1-1ubuntu0.5).
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
steve@Plex-780:~$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
You are about to add the following PPA:
Toolchain test builds; see https://wiki.ubuntu.com/ToolChain
More info: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
Press Enter to continue or Ctrl+C to cancel
Executing: /tmp/apt-key-gpghome.7YLFPl4fzu/gpg.1.sh --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 60C317803A41BA51845E371A1E9377A2BA9EF27F
gpg: key 1E9377A2BA9EF27F: "Launchpad Toolchain builds" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
steve@Plex-780:~$ sudo apt-get update
Hit:1 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease
Ign:2 http://mirrors.evowise.com/linuxmint/packages tricia InRelease
Hit:3 http://archive.canonical.com/ubuntu bionic InRelease
Hit:4 http://mirrors.evowise.com/linuxmint/packages tricia Release
Get:5 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:7 http://archive.ubuntu.com/ubuntu bionic InRelease
Ign:8 http://dl.google.com/linux/earth/deb stable InRelease
Get:9 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Hit:10 http://dl.google.com/linux/earth/deb stable Release
Hit:11 https://repo.skype.com/deb stable InRelease
Get:13 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Fetched 252 kB in 22s (11.3 kB/s)
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://dl.google.com/linux/earth/deb stable InRelease' doesn't support architecture 'i386'
steve@Plex-780:~$
steve@Plex-780:~$ sudo apt-get install build-essential cmake git ninja-build gcc-9
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version (12.4ubuntu1).
ninja-build is already the newest version (1.8.2-1).
cmake is already the newest version (3.10.2-1ubuntu2.18.04.1).
git is already the newest version (1:2.17.1-1ubuntu0.5).
gcc-9 is already the newest version (9.2.1-17ubuntu1~18.04.1).
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
steve@Plex-780:~$
Downed AvsPlus
steve@Plex-780:~$ git clone git://github.com/AviSynth/AviSynthPlus.git
Cloning into 'AviSynthPlus'...
remote: Enumerating objects: 408, done.
remote: Counting objects: 100% (408/408), done.
remote: Compressing objects: 100% (246/246), done.
remote: Total 24585 (delta 254), reused 261 (delta 162), pack-reused 24177
Receiving objects: 100% (24585/24585), 31.05 MiB | 169.00 KiB/s, done.
Resolving deltas: 100% (16849/16849), done.
Line by line (separately)
steve@Plex-780:~$ cd AviSynthPlus
steve@Plex-780:~/AviSynthPlus$ ls
avs_core CMakeLists.txt cmake_uninstall.cmake.in distrib GNUmakefile plugins README.md
steve@Plex-780:~/AviSynthPlus$ mkdir avisynth-build
steve@Plex-780:~/AviSynthPlus$ cd avisynth-build
steve@Plex-780:~/AviSynthPlus/avisynth-build$
steve@Plex-780:~/AviSynthPlus/avisynth-build$ ls
steve@Plex-780:~/AviSynthPlus/avisynth-build$ CC=gcc-9 CXX=g++-9 LD=gcc-9 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && ninja
-- The C compiler identification is GNU 9.2.1
CMake Error at /usr/share/cmake-3.10/Modules/CMakeDetermineCXXCompiler.cmake:47 (message):
Could not find compiler set in environment variable CXX:
g++-9.
Call Stack (most recent call first):
CMakeLists.txt:12 (project)
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "/home/steve/AviSynthPlus/avisynth-build/CMakeFiles/CMakeOutput.log".
steve@Plex-780:~/AviSynthPlus/avisynth-build$
The CC/CXX/LD overrides likely need to use 'gcc-9/g++-9' so it sees the correct version of GCC
What does that mean, I am real new to linux, and never used command line compiler since the 90's.
EDIT: executing
CC=gcc-9 CXX=g++-9 LD=gcc-9
and then
printenv
shows nothing for eg CC, dont know if it should.
EDIT:
I am real new to linux
Well, Pinterf pretty much spoke for me also
[mc pretty much always been the 1st prog I install on linux, since the 90's when I first used RedHat 6.0, I think. (Cinnamon Mint is the first version Linux that has not left me feeling disappointed, though it could still be improved)],
At least for someone (me) who is using linux in every five years for only a day or two. All I can say that Midnight Commander rulez :)
qyot27
3rd March 2020, 22:36
It looks as if that PPA has gcc-9 and g++-9 as separate packages.
sudo apt-get install g++-9
will probably make it work.
StainlessS
4th March 2020, 12:44
Install g++-9
steve@Plex-780:~$ sudo apt-get install g++-9
[sudo] password for steve:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libstdc++-9-dev
Suggested packages:
g++-9-multilib gcc-9-doc libstdc++6-9-dbg libstdc++-9-doc
The following NEW packages will be installed
g++-9 libstdc++-9-dev
0 to upgrade, 2 to newly install, 0 to remove and 0 not to upgrade.
Need to get 10.1 MB of archives.
After this operation, 46.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main amd64 libstdc++-9-dev amd64 9.2.1-17ubuntu1~18.04.1 [1,705 kB]
Get:2 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic/main amd64 g++-9 amd64 9.2.1-17ubuntu1~18.04.1 [8,366 kB]
Fetched 10.1 MB in 5min 36s (29.9 kB/s)
Selecting previously unselected package libstdc++-9-dev:amd64.
(Reading database ... 451469 files and directories currently installed.)
Preparing to unpack .../libstdc++-9-dev_9.2.1-17ubuntu1~18.04.1_amd64.deb ...
Unpacking libstdc++-9-dev:amd64 (9.2.1-17ubuntu1~18.04.1) ...
Selecting previously unselected package g++-9.
Preparing to unpack .../g++-9_9.2.1-17ubuntu1~18.04.1_amd64.deb ...
Unpacking g++-9 (9.2.1-17ubuntu1~18.04.1) ...
Setting up libstdc++-9-dev:amd64 (9.2.1-17ubuntu1~18.04.1) ...
Setting up g++-9 (9.2.1-17ubuntu1~18.04.1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
OK so far, deleted existing avisynth-build, then
steve@Plex-780:~$ dir
AviSynthPlus Desktop Documents Downloads Music Pictures Public Templates Videos
steve@Plex-780:~$ cd AviSynthPlus
steve@Plex-780:~/AviSynthPlus$ ls
avisynth-build avs_core CMakeLists.txt cmake_uninstall.cmake.in distrib GNUmakefile plugins README.md
steve@Plex-780:~/AviSynthPlus$ mkdir avisynth-build
steve@Plex-780:~/AviSynthPlus$ cd avisynth-build
steve@Plex-780:~/AviSynthPlus/avisynth-build$ ls
steve@Plex-780:~/AviSynthPlus/avisynth-build$ CC=gcc CXX=g++ LD=gcc cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && \
> ninja && \
> sudo ninja install
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.17.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steve/AviSynthPlus/avisynth-build
[11/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
FAILED: avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
/usr/bin/g++ -DAvsCore_EXPORTS -DBUILDING_AVSCORE -I../avs_core/include -Iavs_core -fpermissive -msse2 -Wl,--no-undefined -fPIC -std=c++1z -MD -MT avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -MF avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o.d -o avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -c ../avs_core/core/PluginManager.cpp
../avs_core/core/PluginManager.cpp:8:10: fatal error: filesystem: No such file or directory
#include <filesystem>
^~~~~~~~~~~~
compilation terminated.
[16/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/convert/convert.cpp.o
ninja: build stopped: subcommand failed.
steve@Plex-780:~/AviSynthPlus/avisynth-build$
A bit further.
EDIT: Actually, we seem to have stopped about the same position as 1st code block in post #5.
EDIT: Just checked DistroWatch, Linux Mint 3rd most page hits for last 6 months period, so solution might assist a lot of users.
DistroWatch:- https://distrowatch.com/
DJATOM
4th March 2020, 13:00
>GNU 7.4.0
Try CC=gcc-9 CXX=g++-9 LD=gcc-9 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && ninja && sudo ninja install
StainlessS
4th March 2020, 13:04
Thanks DJATOM,
Results
steve@Plex-780:~/AviSynthPlus/avisynth-build$ CC=gcc-9 CXX=g++-9 LD=gcc-9 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && ninja && sudo ninja install
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steve/AviSynthPlus/avisynth-build
[2/66] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
FAILED: avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
/usr/bin/g++ -DAvsCore_EXPORTS -DBUILDING_AVSCORE -I../avs_core/include -Iavs_core -fpermissive -msse2 -Wl,--no-undefined -fPIC -std=c++1z -MD -MT
avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -MF avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o.d
-o avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -c ../avs_core/core/PluginManager.cpp
../avs_core/core/PluginManager.cpp:8:10: fatal error: filesystem: No such file or directory
#include <filesystem>
^~~~~~~~~~~~
compilation terminated.
[7/66] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/avisynth.cpp.o
../avs_core/core/avisynth.cpp: In member function ‘virtual char* ScriptEnvironment::VSprintf(const char*, void*)’:
../avs_core/core/avisynth.cpp:3142:50: warning: ISO C++ forbids casting to an array type ‘va_list {aka __va_list_tag [1]}’ [-fpermissive]
std::string str = FormatString(fmt, (va_list)val);
^~~
ninja: build stopped: subcommand failed.
steve@Plex-780:~/AviSynthPlus/avisynth-build$
EDIT: Edited a line for line wrap
pinterf
4th March 2020, 13:19
If you are getting that missing <filesystem> error you are still at gcc version less than 8
StainlessS
4th March 2020, 13:21
Well no idea what to do about that. :)
The GNU 7.4 and 9.0 stuff had me confused from the start.
I have to leave home soon, I will probably be on-line, but mobile.
DJATOM
4th March 2020, 13:23
Probably CMakeCache related stuff, so delete all contents from build folder and configure again.
DJATOM
4th March 2020, 13:41
Tried with my server, looks like my method works (I'm just lazy to search for gcc-9 mirrors for debian buster or build gcc locally, so used gcc-8 on my end)
djatom@atomch-server:~/AviSynthPlus/avsplus-build$ CC=gcc-8 CXX=g++-8 LD=gcc-8 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && ninja
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/gcc-8
-- Check for working C compiler: /usr/bin/gcc-8 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++-8
-- Check for working CXX compiler: /usr/bin/g++-8 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.20.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/djatom/AviSynthPlus/avsplus-build
[34/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/avisynth.cpp.o
../avs_core/core/avisynth.cpp: In member function ‘virtual char* ScriptEnvironment::VSprintf(const char*, void*)’:
../avs_core/core/avisynth.cpp:3142:50: warning: ISO C++ forbids casting to an array type ‘va_list’ {aka ‘__va_list_tag [1]’} [-fpermissive]
std::string str = FormatString(fmt, (va_list)val);
^~~
[79/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/filters/exprfilter/exprfilter.cpp.o
In file included from ../avs_core/filters/exprfilter/exprfilter.cpp:109:
../avs_core/filters/exprfilter/jitasm.h:8224:52: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<int N> struct ArgTraits_cdecl<N, __m64, 8> {enum {stack_size = 0, flag = ARG_IN_MMX | ARG_TYPE_VALUE, reg_id = MM0};};
^
../avs_core/filters/exprfilter/jitasm.h:8229:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<int N> struct ArgTraits_cdecl<N, __m128, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_SP | ARG_TYPE_VALUE, reg_id = XMM0};};
^
../avs_core/filters/exprfilter/jitasm.h:8234:55: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<int N> struct ArgTraits_cdecl<N, __m128d, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_DP | ARG_TYPE_VALUE, reg_id = XMM0};};
^
../avs_core/filters/exprfilter/jitasm.h:8237:55: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
template<int N> struct ArgTraits_cdecl<N, __m128i, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_INT | ARG_TYPE_VALUE, reg_id = XMM0};};
^
../avs_core/filters/exprfilter/jitasm.h:8294:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<> struct ArgTraits_win64<0, __m64, 8> : ArgTraits_win64_reg<RCX, ARG_IN_REG | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8295:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<> struct ArgTraits_win64<1, __m64, 8> : ArgTraits_win64_reg<RDX, ARG_IN_REG | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8296:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<> struct ArgTraits_win64<2, __m64, 8> : ArgTraits_win64_reg<R8, ARG_IN_REG | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8297:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<> struct ArgTraits_win64<3, __m64, 8> : ArgTraits_win64_reg<R9, ARG_IN_REG | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8357:67: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
template<int N> struct ArgTraits_linux64<N, __m64, sizeof(__m64)> : ArgTraits_linux64_sse<ARG_IN_XMM_INT | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8360:69: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<int N> struct ArgTraits_linux64<N, __m128, sizeof(__m128)> : ArgTraits_linux64_sse<ARG_IN_XMM_SP | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8363:70: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<int N> struct ArgTraits_linux64<N, __m128d, sizeof(__m128d)> : ArgTraits_linux64_sse<ARG_IN_XMM_DP | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8364:70: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
template<int N> struct ArgTraits_linux64<N, __m128i, sizeof(__m128i)> : ArgTraits_linux64_sse<ARG_IN_XMM_INT | ARG_TYPE_VALUE> {};
^
../avs_core/filters/exprfilter/jitasm.h:8742:25: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
struct ResultT<__m64, 8> {
^
../avs_core/filters/exprfilter/jitasm.h:8774:27: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
struct ResultT<__m128, 16> {
^
../avs_core/filters/exprfilter/jitasm.h:8798:28: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
struct ResultT<__m128d, 16> {
^
../avs_core/filters/exprfilter/jitasm.h:8820:28: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
struct ResultT<__m128i, 16> {
^
../avs_core/filters/exprfilter/jitasm.h:9081:22: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
struct Arg<__m64, 8>
^
../avs_core/filters/exprfilter/jitasm.h:9149:24: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
struct Arg<__m128, 16>
^
../avs_core/filters/exprfilter/jitasm.h:9199:36: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
template<> struct Arg<__m128d, 16> : Arg<__m128, 16> {
^
../avs_core/filters/exprfilter/jitasm.h:9199:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct Arg<__m128d, 16> : Arg<__m128, 16> {
^
../avs_core/filters/exprfilter/jitasm.h: In constructor ‘jitasm::detail::calling_convention_cdecl::Arg<__vector(2) double, 16>::Arg(jitasm::Frontend&, const jitasm::detail::ArgInfo&)’:
../avs_core/filters/exprfilter/jitasm.h:9200:62: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
Arg(Frontend& f, const ArgInfo& arg_info) : Arg<__m128, 16>(f, arg_info) {}
^
../avs_core/filters/exprfilter/jitasm.h: At global scope:
../avs_core/filters/exprfilter/jitasm.h:9203:36: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
template<> struct Arg<__m128i, 16> : Arg<__m128, 16> {
^
../avs_core/filters/exprfilter/jitasm.h:9203:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
template<> struct Arg<__m128i, 16> : Arg<__m128, 16> {
^
../avs_core/filters/exprfilter/jitasm.h: In constructor ‘jitasm::detail::calling_convention_cdecl::Arg<__vector(2) long long int, 16>::Arg(jitasm::Frontend&, const jitasm::detail::ArgInfo&)’:
../avs_core/filters/exprfilter/jitasm.h:9204:62: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
Arg(Frontend& f, const ArgInfo& arg_info) : Arg<__m128, 16>(f, arg_info) {}
^
[80/80] Linking CXX shared library avs_core/libavisynth.so
sl1pkn07
4th March 2020, 13:52
https://aur.archlinux.org/packages/avisynthplus-git/
done in [AUR]
Richard1485
4th March 2020, 15:17
Many thanks to those involved in making this happen! AviSynth+ installed first time on pop!_os 19.10 (based on Ubuntu 19.10.)
In respect of ffmpeg, which repo is the "Sources" repo mentioned in the instructions? Here's the relevant portion of sources.list.
# deb cdrom:[Pop_OS 19.10 _Eoan Ermine_ - Release amd64 (20191019)]/ eoan main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ eoan main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ eoan-security main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ eoan-security main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ eoan-updates main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ eoan-updates main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ eoan-backports main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ eoan-backports main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ eoan main restricted universe multiverse
deb http://apt.pop-os.org/proprietary eoan main
# deb-src http://apt.pop-os.org/proprietary eoan main
I know how to uncomment, but I'm not sure which one is meant. Perhaps it's enabled by default.
pinterf
4th March 2020, 15:27
I have uncommented all, then did a sudo apt-get update
Richard1485
4th March 2020, 15:46
Thanks. I did the same, and build-dep ffmpeg, nasm, and libsdl2-dev installed fine; but my curiousity as to which repo is envisaged by the instructions remains. (I've only ever edited sources.list to add repos -- never used a graphical interface.)
magiblot
4th March 2020, 16:25
EDIT: executing
CC=gcc-9 CXX=g++-9 LD=gcc-9
and then
printenv
shows nothing for eg CC, dont know if it should.
These variable definitions may only affect the current statement. For them to be persistent, you need to use export (assuming your shell is bash):
export CC=gcc-9 CXX=g++-9 LD=gcc-9
https://aur.archlinux.org/packages/avisynthplus-git/
done in [AUR]
:thanks:
StainlessS
4th March 2020, 17:03
Thanx magiblot, I have no idea what my shell is, but assume bash.
(Had mint installed for several months(maybe 6, maybe 9), only ever updated it, done nothing else).
EDIT: almost nothing else, sometimes Ive used it as a browser. [I never seem to have time for anything else]
MOBILE:
EDIT: Powerhouse Porter is great, Adnams Broadside next, lubbely :)
qyot27
4th March 2020, 17:36
Thanks DJATOM,
Results
steve@Plex-780:~/AviSynthPlus/avisynth-build$ CC=gcc-9 CXX=g++-9 LD=gcc-9 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && ninja && sudo ninja install
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steve/AviSynthPlus/avisynth-build
[2/66] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
FAILED: avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o
/usr/bin/g++ -DAvsCore_EXPORTS -DBUILDING_AVSCORE -I../avs_core/include -Iavs_core -fpermissive -msse2 -Wl,--no-undefined -fPIC -std=c++1z -MD -MT
avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -MF avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o.d
-o avs_core/CMakeFiles/AvsCore.dir/core/PluginManager.cpp.o -c ../avs_core/core/PluginManager.cpp
../avs_core/core/PluginManager.cpp:8:10: fatal error: filesystem: No such file or directory
#include <filesystem>
^~~~~~~~~~~~
compilation terminated.
[7/66] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/avisynth.cpp.o
../avs_core/core/avisynth.cpp: In member function ‘virtual char* ScriptEnvironment::VSprintf(const char*, void*)’:
../avs_core/core/avisynth.cpp:3142:50: warning: ISO C++ forbids casting to an array type ‘va_list {aka __va_list_tag [1]}’ [-fpermissive]
std::string str = FormatString(fmt, (va_list)val);
^~~
ninja: build stopped: subcommand failed.
steve@Plex-780:~/AviSynthPlus/avisynth-build$
EDIT: Edited a line for line wrap
CMake can't reconfigure compilers after you've already configured it for a different set.
Looks like I need to make the instructions a little more explicit. I'd been in a bit of a rush when I wrote that up and neglected to actually put down the build instructions for AviSynth+ on Ubuntu.
StainlessS
4th March 2020, 18:00
little more explicit.
Yep, good idea for us tards :)
Richard1485
4th March 2020, 18:24
I'd been in a bit of a rush when I wrote that up and neglected to actually put down the build instructions for AviSynth+ on Ubuntu.
In that case, I must have run the instructions for macOS. I thought that there was a gap in the guide but interpreted it to mean that after the prerequisites had been satisfied, the build instructions were the same for macOS and Ubuntu.
qyot27
4th March 2020, 19:27
Well, truth be told, I prefer Ninja anyway, so even on Ubuntu I still use it (on macOS it's a little more important to use Ninja because of weirdness concerning the Apple binutils and linking to libstc++). The major difference is that on 19.10, there's no need to override CC/CXX/LD because you're already using GCC 9.
For 19.04 and 19.10:
git clone git://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus
mkdir avisynth-build
cd avisynth-build
cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive"
ninja
sudo checkinstall --pkgname=avisynth --pkgversion="$(grep -r \
Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \
sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \
--strip=yes --fstrans=no --default ninja install
Or if you'd rather use regular old GNU make:
git clone git://github.com/AviSynth/AviSynthPlus.git
cd AviSynthPlus
mkdir avisynth-build
cd avisynth-build
cmake ../ -DCMAKE_CXX_FLAGS="-fpermissive"
make -j$(nproc)
sudo checkinstall --pkgname=avisynth --pkgversion="$(grep -r \
Version avs_core/avisynth.pc | cut -f2 -d " ")-$(date --rfc-3339=date | \
sed 's/-//g')-git" --backup=no --deldoc=yes --delspec=yes --deldesc=yes \
--strip=yes --fstrans=no --default
For 18.04, after adding the PPA mentioned and installing the gcc-9 and g++-9 packages, the only difference for both of the above examples would be tacking CC=gcc-9 CXX=g++-9 LD=gcc-9 onto the front of the cmake command, just like on Mac.
Richard1485
4th March 2020, 19:54
If I used the macOS instructions as opposed to the Ubuntu ones just posted, do I have to uninstall and reinstall with the latter?
qyot27
4th March 2020, 20:06
Not really, the only substantive difference is checkinstall, which doesn't affect the actual running of anything (it just supervises the install process, makes a deb package and actually registers it in dpkg/apt so it can be handled with the package management system). If you didn't use checkinstall, you probably do need to run sudo ldconfig after sudo make install, though.
reisub
4th March 2020, 20:18
I can `t believe my eyes. Avisynt + released on * NIX. This is amazing.
https://aur.archlinux.org/packages/avisynthplus-git/
done in [AUR]
Thanks!
Richard1485
4th March 2020, 20:20
If you didn't use checkinstall, you probably do need to run sudo ldconfig after sudo make install, though.
Yeah, I didn't use checkinstall. I ran sudo ninja install in accordance with the macOS instructions, so I'll just run sudo ldconfig.
pinterf
4th March 2020, 21:16
I can only encourage all not-so-commandline hero Windows guys to plunge into this another world. StainlessS, it's not magic (haha, yes, it is)
I apologize from those who are using linux regularly but the first steps are always hard for a beginner, even if I have already used it many years ago for some days. When you say that one should simply "configure again", everybody understands except poor us, without a context this simple sentence means nothing for us. One simple additional sentence or hint can spare us hours :)
My learning curve in brief.
I'm on Windows 10. Downloaded and installed the 18.04 WSL Ubuntu app (https://wiki.ubuntu.com/WSL) (!), upgraded to 19.10 (https://www.how2shout.com/how-to/how-to-upgrade-ubuntu-18-04-to-19-10-on-windows-10-linux-subsystem.html).
Fortunately I had zero problems with GCC, I got version 9 ready.
Since I put a non-final test username at the installation time I then spent some hours with altering the default user who logins when I start the Ubuntu app. (Yes, Windows registry). I even learned the su command.
Then I got Midnight Commander, learned about nano (a text editor here, read about it on SO), configured git, and with qyot27's help I was able to build ffmpeg and avisynth+. Some problematic steps in the learning curve were the rights, such as using MC CTRL-X C for setting execute rights on files, keyboard commands of nano, that the letter M means ALT key in nano's help, frequently using that sudo thing for getting elevated rights. And there was a familiar thing: using the TAB key(s) I could easily auto-complete the commands or file and directory names. And finally: the file system is nicely mapped and accessible from Windows under \\wsl$\Ubuntu-18.04\ folder.
It's so simple, you are using Windows _and_ can have a couple of Ubuntu terminal windows.
One with avisynth build directory, another one with test avs scripts and ffmpeg, a third one with nano, a fourth console with mc to copy this and that.
pinterf
4th March 2020, 21:20
And a question: I have an AVX2 capable processor but the Info() filter tells me that Avisynth+ is seeing only up to AVX. However when I cat the processor features in the console I can see there AVX2.
I wonder if AVX2 detection fails only for me (because of WSL) or it has a generic problem.
Richard1485
4th March 2020, 21:34
So, for installing ffmpeg on Ubuntu, the instructions say to leave out the --prefix option and add a checkinstall command. If I've understood correctly, this should be right:
./configure --enable-gpl --enable-version3 \
--disable-doc --disable-debug --enable-pic --enable-avisynth && \
make -j$(nproc) && \
sudo checkinstall --pkgname=ffmpeg --pkgversion="7:$(git rev-list \
--count HEAD)-g$(git rev-parse --short HEAD)" --backup=no --deldoc=yes \
--delspec=yes --deldesc=yes --strip=yes --stripso=yes --addso=yes \
--fstrans=no --default
DJATOM
4th March 2020, 22:02
https://i.imgur.com/briNfH4.png
OS: Debian 10.3, CPU: i3-8100.
It seems there is no AVX2 detection on my side.
qyot27
4th March 2020, 22:27
So, for installing ffmpeg on Ubuntu, the instructions say to leave out the --prefix option and add a checkinstall command. If I've understood correctly, this should be right:
./configure --enable-gpl --enable-version3 \
--disable-doc --disable-debug --enable-pic --enable-avisynth && \
make -j$(nproc) && \
sudo checkinstall --pkgname=ffmpeg --pkgversion="7:$(git rev-list \
--count HEAD)-g$(git rev-parse --short HEAD)" --backup=no --deldoc=yes \
--delspec=yes --deldesc=yes --strip=yes --stripso=yes --addso=yes \
--fstrans=no --default
Yes, if you want that FFmpeg installed to the system. I set the instructions up to have FFmpeg installed to $HOME (which can be installed with just make install because you own that directory and don't want to be using sudo there) because I didn't want to get into the weeds of all the other things distros compile into FFmpeg (if you want libxvid, libx264, libx265, libdav1d, libaom, libopus, mbedtls, etc.). I kept it down to strictly what it takes for an AviSynth-supporting build, so that if you'd rather have a more fully-featured FFmpeg on the system, they won't conflict with each other.
If you're adventurous/patient enough to go through and make sure the builds are equivalent (or you don't care about any of those other external libraries), then installing to the system should be fine. sudo apt-get build-dep ffmpeg would have gotten you most of the way there, dependency-wise, so you could then use ffmpeg -buildconf and copy the configuration options over to the avsplus_linux patched version.
Ubuntu (well, Debian) configures its FFmpeg package with --enable-avisynth, so once the situation about switching away from AvxSynth gets resolved, there will be a point where we don't have to cover FFmpeg in the Ubuntu section of the docs. It'll just work once you install AviSynth+.
Richard1485
4th March 2020, 23:33
That all makes sense. I noticed in the past that after building ffmpeg, there can be issues with other programs that expect to see certain versions of libraries. For now, I'll stick to installing to $HOME. Unfortunately, an error appears during make. This is where the error occurs:
AR libavdevice/libavdevice.a
AR libavfilter/libavfilter.a
AR libavformat/libavformat.a
AR libpostproc/libpostproc.a
AR libavcodec/libavcodec.a
AR libswresample/libswresample.a
AR libswscale/libswscale.a
CC libavutil/hwcontext_cuda.o
CC libavutil/integer.o
CC libavutil/intmath.o
CC libavutil/lfg.o
CC libavutil/lls.o
CC libavutil/log.o
CC libavutil/log2_tab.o
CC libavutil/lzo.o
CC libavutil/mastering_display_metadata.o
CC libavutil/mathematics.o
CC libavutil/md5.o
In file included from libavutil/hwcontext_cuda.c:27:
libavutil/hwcontext_cuda.c: In function ‘cuda_device_uninit’:
libavutil/hwcontext_cuda.c:300:28: error: ‘CudaFunctions’ {aka ‘struct CudaFunctions’} has no member named ‘cuDevicePrimaryCtxRelease’
300 | CHECK_CU(cu->cuDevicePrimaryCtxRelease(hwctx->internal->cuda_device));
| ^~
libavutil/cuda_check.h:62:114: note: in definition of macro ‘FF_CUDA_CHECK_DL’
62 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
| ^
libavutil/hwcontext_cuda.c:300:17: note: in expansion of macro ‘CHECK_CU’
300 | CHECK_CU(cu->cuDevicePrimaryCtxRelease(hwctx->internal->cuda_device));
| ^~~~~~~~
libavutil/hwcontext_cuda.c: In function ‘cuda_context_init’:
libavutil/hwcontext_cuda.c:353:26: error: ‘CudaFunctions’ {aka ‘struct CudaFunctions’} has no member named ‘cuDevicePrimaryCtxGetState’
353 | ret = CHECK_CU(cu->cuDevicePrimaryCtxGetState(hwctx->internal->cuda_device,
| ^~
libavutil/cuda_check.h:62:114: note: in definition of macro ‘FF_CUDA_CHECK_DL’
62 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
| ^
libavutil/hwcontext_cuda.c:353:15: note: in expansion of macro ‘CHECK_CU’
353 | ret = CHECK_CU(cu->cuDevicePrimaryCtxGetState(hwctx->internal->cuda_device,
| ^~~~~~~~
libavutil/hwcontext_cuda.c:362:30: error: ‘CudaFunctions’ {aka ‘struct CudaFunctions’} has no member named ‘cuDevicePrimaryCtxSetFlags’
362 | ret = CHECK_CU(cu->cuDevicePrimaryCtxSetFlags(hwctx->internal->cuda_device,
| ^~
libavutil/cuda_check.h:62:114: note: in definition of macro ‘FF_CUDA_CHECK_DL’
62 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
| ^
libavutil/hwcontext_cuda.c:362:19: note: in expansion of macro ‘CHECK_CU’
362 | ret = CHECK_CU(cu->cuDevicePrimaryCtxSetFlags(hwctx->internal->cuda_device,
| ^~~~~~~~
libavutil/hwcontext_cuda.c:368:26: error: ‘CudaFunctions’ {aka ‘struct CudaFunctions’} has no member named ‘cuDevicePrimaryCtxRetain’
368 | ret = CHECK_CU(cu->cuDevicePrimaryCtxRetain(&hwctx->cuda_ctx,
| ^~
libavutil/cuda_check.h:62:114: note: in definition of macro ‘FF_CUDA_CHECK_DL’
62 | #define FF_CUDA_CHECK_DL(avclass, cudl, x) ff_cuda_check(avclass, cudl->cuGetErrorName, cudl->cuGetErrorString, (x), #x)
| ^
libavutil/hwcontext_cuda.c:368:15: note: in expansion of macro ‘CHECK_CU’
368 | ret = CHECK_CU(cu->cuDevicePrimaryCtxRetain(&hwctx->cuda_ctx,
| ^~~~~~~~
CC libavutil/mem.o
make: *** [ffbuild/common.mak:59: libavutil/hwcontext_cuda.o] Error 1
make: *** Waiting for unfinished jobs....
qyot27
5th March 2020, 03:52
Those relate to trying to enable CUDA, which is autodetected apparently. I don't personally have an Nvidia card new enough to support CUDA, so I guess it skips it here. You may want to either --disable-cuvid (hopefully that's the right one; there's like three of them) or if more things in the hwaccels have problems, even go nuclear and use --disable-hwaccels.
Richard1485
5th March 2020, 05:30
You may want to either --disable-cuvid (hopefully that's the right one; there's like three of them) or if more things in the hwaccels have problems, even go nuclear and use --disable-hwaccels.
Unfortunately, even if I add both options to configure, I still see the error message,
./configure --prefix=$HOME/ffavx_build --enable-gpl --enable-version3 \
--disable-doc --disable-debug --enable-pic --enable-avisynth --disable-cuvid --disable-hwaccels
My card is pretty old now: ~8 years. It was as useful on Windows as it's been annoying on Linux. :D
EDIT: This seems to work.
./configure --prefix=$HOME/ffavx_build --enable-gpl --enable-version3 \
--disable-doc --disable-debug --enable-pic --enable-avisynth --disable-cuvid --disable-hwaccels --disable-cuda-llvm --disable-ffnvcodec
sl1pkn07
5th March 2020, 06:29
@qyot27 little offtopic but related
you have plans for send the avisynth+ patches to upstream ffmpeg and ffms2?
greetings
pinterf
5th March 2020, 09:54
OS: Debian 10.3, CPU: i3-8100.
It seems there is no AVX2 detection on my side.
Thank you. I'll check it then.
sl1pkn07
5th March 2020, 12:10
mmm
https://i.ibb.co/WHp34QN/Screenshot-20200305-120810.png
BlankClip(color=$000000)
same output
but version works ok
https://i.ibb.co/QpLk48c/Screenshot-20200305-121153.png
EDIT: ColorbarsHS() works
https://i.ibb.co/6D2cxBT/Screenshot-20200305-121645.png
qyot27
5th March 2020, 13:40
@qyot27 little offtopic but related
you have plans for send the avisynth+ patches to upstream ffmpeg and ffms2?
greetings
I asked on ffmpeg-devel what the preference would be for dropping AvxSynth and switching to AviSynth+, vis-a-vis a deprecation message first and then the switch happening later, or just doing a hard switch because AvxSynth is more or less equivalent to AviSynth 2.5 and FFmpeg hasn't supported 2.5 on Windows for nearly 5 years.
I haven't gotten a response yet. If it goes much longer (a day or two or early next week), I'll not even bother with the deprecation patch and just send the switchover patchset.
For FFMS2, the change to the actual code is just a small if/else in src/avisynth/avssources.h, but there's something about the flags used by the autotools build system used upstream that's making the built library unusable by AviSynth+. I haven't done a deep dive to try and figure out what it is, though.
mmm
[image]
BlankClip(color=$000000)
same output
but version works ok
[image]
EDIT: ColorbarsHS() works
[image]
The checkerboard output is what happens whenever mpv gets something with an alpha channel. It doesn't have anything to do specifically with AviSynth+.
If you use pixel_type="YUV444P" (or other format) to change the pix_fmt that Colorbars or BlankClip is outputting, it'll show up (conversely, using it in ColorbarsHD to have it output with an alpha channel will do the opposite). Same with using a ConvertTo function afterward that makes it drop the alpha channel.
Version() outputs bgr24, so no alpha channel there.
sl1pkn07
5th March 2020, 14:02
okis, thanks for the info. works!
greetings
StainlessS
5th March 2020, 16:17
Well, I went back and did as below, seems to have completed ok
steve@Plex-780:~$ sudo apt-get update
[sudo] password for steve:
Ign:1 http://mirrors.evowise.com/linuxmint/packages tricia InRelease
Hit:2 http://archive.canonical.com/ubuntu bionic InRelease
Hit:3 http://mirrors.evowise.com/linuxmint/packages tricia Release
Hit:4 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease
Get:5 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:6 http://archive.ubuntu.com/ubuntu bionic InRelease
Ign:7 http://dl.google.com/linux/earth/deb stable InRelease
Get:9 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Hit:10 http://dl.google.com/linux/earth/deb stable Release
Get:12 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Hit:13 https://repo.skype.com/deb stable InRelease
Fetched 252 kB in 3s (76.8 kB/s)
Reading package lists... Done
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://dl.google.com/linux/earth/deb stable InRelease' doesn't support architecture 'i386'
steve@Plex-780:~$ export CC=gcc-9 CXX=g++-9 LD=gcc-9
steve@Plex-780:~$ printenv
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_GB.UTF-8
GDM_LANG=en_GB
DISPLAY=:0
GTK_OVERLAY_SCROLLING=1
COLORTERM=truecolor
XDG_VTNR=7
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
MANDATORY_PATH=/usr/share/gconf/cinnamon.mandatory.path
S_COLORS=auto
CC=gcc-9
XDG_SESSION_ID=c1
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/steve
USER=steve
DESKTOP_SESSION=cinnamon
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/9615975d_643e_4430_a9bd_aaac90012fc1
DEFAULTS_PATH=/usr/share/gconf/cinnamon.default.path
QT_QPA_PLATFORMTHEME=qt5ct
PWD=/home/steve
HOME=/home/steve
SSH_AGENT_PID=1356
QT_ACCESSIBILITY=1
XDG_SESSION_TYPE=x11
XDG_DATA_DIRS=/usr/share/cinnamon:/usr/share/gnome:/usr/local/share/:/usr/share/
XDG_SESSION_DESKTOP=cinnamon
GJS_DEBUG_OUTPUT=stderr
GTK_MODULES=gail:atk-bridge
CXX=g++-9
TERM=xterm-256color
SHELL=/bin/bash
VTE_VERSION=5202
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_CURRENT_DESKTOP=X-Cinnamon
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GNOME_TERMINAL_SERVICE=:1.80
XDG_SEAT=seat0
SHLVL=1
LANGUAGE=en_GB:en
GDMSESSION=cinnamon
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=steve
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/home/steve/.Xauthority
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
PATH=/home/steve/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
CINNAMON_VERSION=4.4.8
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
SESSION_MANAGER=local/Plex-780:@/tmp/.ICE-unix/1273,unix/Plex-780:/tmp/.ICE-unix/1273
LD=gcc-9
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv
steve@Plex-780:~$ ls
AviSynthPlus Desktop Documents Downloads Music Pictures Public Templates Videos
steve@Plex-780:~$ cd AviSynthPlus
steve@Plex-780:~/AviSynthPlus$ mkdir avisynth-build
steve@Plex-780:~/AviSynthPlus$ cd avisynth-build
steve@Plex-780:~/AviSynthPlus/avisynth-build$ CC=gcc-9 CXX=g++-9 LD=gcc-9 cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-fpermissive" && \
> ninja && \
> sudo ninja install
-- The C compiler identification is GNU 9.2.1
-- The CXX compiler identification is GNU 9.2.1
-- Check for working C compiler: /usr/bin/gcc-9
-- Check for working C compiler: /usr/bin/gcc-9 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++-9
-- Check for working CXX compiler: /usr/bin/g++-9 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "2.17.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steve/AviSynthPlus/avisynth-build
[33/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/core/avisynth.cpp.o
../avs_core/core/avisynth.cpp: In member function ‘virtual char* ScriptEnvironment::VSprintf(const char*, void*)’:
../avs_core/core/avisynth.cpp:3142:50: warning: ISO C++ forbids casting to an array type ‘va_list’ {aka ‘__va_list_tag [1]’} [-fpermissive]
3142 | std::string str = FormatString(fmt, (va_list)val);
| ^~~
[79/80] Building CXX object avs_core/CMakeFiles/AvsCore.dir/filters/exprfilter/exprfilter.cpp.o
In file included from ../avs_core/filters/exprfilter/exprfilter.cpp:109:
../avs_core/filters/exprfilter/jitasm.h:8224:52: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8224 | template<int N> struct ArgTraits_cdecl<N, __m64, 8> {enum {stack_size = 0, flag = ARG_IN_MMX | ARG_TYPE_VALUE, reg_id = MM0};};
| ^
../avs_core/filters/exprfilter/jitasm.h:8229:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
8229 | template<int N> struct ArgTraits_cdecl<N, __m128, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_SP | ARG_TYPE_VALUE, reg_id = XMM0};};
| ^
../avs_core/filters/exprfilter/jitasm.h:8234:55: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
8234 | template<int N> struct ArgTraits_cdecl<N, __m128d, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_DP | ARG_TYPE_VALUE, reg_id = XMM0};};
| ^
../avs_core/filters/exprfilter/jitasm.h:8237:55: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
8237 | template<int N> struct ArgTraits_cdecl<N, __m128i, 16> {enum {stack_size = 0, flag = ARG_IN_XMM_INT | ARG_TYPE_VALUE, reg_id = XMM0};};
| ^
../avs_core/filters/exprfilter/jitasm.h:8294:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8294 | template<> struct ArgTraits_win64<0, __m64, 8> : ArgTraits_win64_reg<RCX, ARG_IN_REG | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8295:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8295 | template<> struct ArgTraits_win64<1, __m64, 8> : ArgTraits_win64_reg<RDX, ARG_IN_REG | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8296:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8296 | template<> struct ArgTraits_win64<2, __m64, 8> : ArgTraits_win64_reg<R8, ARG_IN_REG | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8297:47: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8297 | template<> struct ArgTraits_win64<3, __m64, 8> : ArgTraits_win64_reg<R9, ARG_IN_REG | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8357:67: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8357 | template<int N> struct ArgTraits_linux64<N, __m64, sizeof(__m64)> : ArgTraits_linux64_sse<ARG_IN_XMM_INT | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8360:69: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
8360 | template<int N> struct ArgTraits_linux64<N, __m128, sizeof(__m128)> : ArgTraits_linux64_sse<ARG_IN_XMM_SP | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8363:70: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
8363 | template<int N> struct ArgTraits_linux64<N, __m128d, sizeof(__m128d)> : ArgTraits_linux64_sse<ARG_IN_XMM_DP | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8364:70: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
8364 | template<int N> struct ArgTraits_linux64<N, __m128i, sizeof(__m128i)> : ArgTraits_linux64_sse<ARG_IN_XMM_INT | ARG_TYPE_VALUE> {};
| ^
../avs_core/filters/exprfilter/jitasm.h:8742:25: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
8742 | struct ResultT<__m64, 8> {
| ^
../avs_core/filters/exprfilter/jitasm.h:8774:27: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
8774 | struct ResultT<__m128, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h:8798:28: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
8798 | struct ResultT<__m128d, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h:8820:28: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
8820 | struct ResultT<__m128i, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h:9081:22: warning: ignoring attributes on template argument ‘__m64’ {aka ‘__vector(2) int’} [-Wignored-attributes]
9081 | struct Arg<__m64, 8>
| ^
../avs_core/filters/exprfilter/jitasm.h:9149:24: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
9149 | struct Arg<__m128, 16>
| ^
../avs_core/filters/exprfilter/jitasm.h:9199:36: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
9199 | template<> struct Arg<__m128d, 16> : Arg<__m128, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h:9199:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
9199 | template<> struct Arg<__m128d, 16> : Arg<__m128, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h: In constructor ‘jitasm::detail::calling_convention_cdecl::Arg<__vector(2) double, 16>::Arg(jitasm::Frontend&, const jitasm::detail::ArgInfo&)’:
../avs_core/filters/exprfilter/jitasm.h:9200:62: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
9200 | Arg(Frontend& f, const ArgInfo& arg_info) : Arg<__m128, 16>(f, arg_info) {}
| ^
../avs_core/filters/exprfilter/jitasm.h: At global scope:
../avs_core/filters/exprfilter/jitasm.h:9203:36: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
9203 | template<> struct Arg<__m128i, 16> : Arg<__m128, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h:9203:54: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
9203 | template<> struct Arg<__m128i, 16> : Arg<__m128, 16> {
| ^
../avs_core/filters/exprfilter/jitasm.h: In constructor ‘jitasm::detail::calling_convention_cdecl::Arg<__vector(2) long long int, 16>::Arg(jitasm::Frontend&, const jitasm::detail::ArgInfo&)’:
../avs_core/filters/exprfilter/jitasm.h:9204:62: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
9204 | Arg(Frontend& f, const ArgInfo& arg_info) : Arg<__m128, 16>(f, arg_info) {}
| ^
[80/80] Linking CXX shared library avs_core/libavisynth.so
[1/2] Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libavisynth.so
-- Installing: /usr/local/include/avisynth
-- Installing: /usr/local/include/avisynth/avisynth.h
-- Installing: /usr/local/include/avisynth/avs
-- Installing: /usr/local/include/avisynth/avs/types.h
-- Installing: /usr/local/include/avisynth/avs/capi.h
-- Installing: /usr/local/include/avisynth/avs/config.h
-- Installing: /usr/local/include/avisynth/avs/win.h
-- Installing: /usr/local/include/avisynth/avs/posix.h
-- Installing: /usr/local/include/avisynth/avs/minmax.h
-- Installing: /usr/local/include/avisynth/avs/alignment.h
-- Installing: /usr/local/include/avisynth/avs/cpuid.h
-- Installing: /usr/local/include/avisynth/avisynth_c.h
steve@Plex-780:~/AviSynthPlus/avisynth-build$
MeteorRain
5th March 2020, 22:42
https://aur.archlinux.org/packages/avisynthplus-git/
done in [AUR]
Note: lots of AVS+ stuff is installed into vapoursynth directories.
sl1pkn07
5th March 2020, 23:01
ooopppssss (done, just reinstall)
pinterf
6th March 2020, 19:15
Just for reference, managed to use avisynth with the CPP interface under Ubuntu
https://github.com/AviSynth/AviSynthPlus/issues/130#issuecomment-595892327
I don't know if it is an achievement or not but I was quite happy :)
MeteorRain
7th March 2020, 06:57
I'm implementing AVS input for x265 and I'm seeing SIGSEGV on _Thrd_yield () from /c/Windows/SYSTEM32/MSVCP140.dll.
[redacted]
Finally figured out. If I recompile avisynth-plus under mingw64, the result DLL works with a mingw64 compiled program.
x265 compiled with mingw64 doesn't work with the DLL (probably msvc) shipped from official.
Guess I would have to use the C interface instead.
pinterf
7th March 2020, 17:29
I'm implementing AVS input for x265 and I'm seeing SIGSEGV on _Thrd_yield () from /c/Windows/SYSTEM32/MSVCP140.dll.
[redacted]
Finally figured out. If I recompile avisynth-plus under mingw64, the result DLL works with a mingw64 compiled program.
x265 compiled with mingw64 doesn't work with the DLL (probably msvc) shipped from official.
Guess I would have to use the C interface instead.
Yep, c++ ABIs are different.
stax76
7th March 2020, 18:46
So x264 does really use the C interface? If there is actually an application that is using the C interface than it might not be impossible to use it directly from managed code too, without a wrapper, that's interesting, I wish I knew this before I had built my wrapper, was a good learning experience though.
Groucho2004
7th March 2020, 19:31
So x264 does really use the C interface?As do Megui (via dimzon's wrapper) and some pipe tools (avs4x26x, avs2yuv).
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.