Log in

View Full Version : Avisynth+


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [99] 100 101 102 103 104 105 106 107 108 109 110 111 112

ryrynz
21st October 2019, 07:17
I already had the minimum and additional 2019 runtimes installed (x86 and x64), did I really need this to install 2015-2019 Redistributable?

StainlessS
21st October 2019, 07:30
If your already had all required installed then probably not, Pinterf provides exe both with and without runtimes.
[you would likely have found out pretty quiickly whether you needed runtime updates or not].

LigH
21st October 2019, 08:51
You may need one or another Visual C++ Runtime for one or another plugin, too ...

Groucho2004
21st October 2019, 09:30
EDIT: Two problems revealed already for avs+ 3.4.0,
Problems apps,
Groucho2004 Universal Avisynth Installer, and
Shekh The Magnificent's VirtualDub2.
EDIT: Breaks Potplayer [Freezes],
script

Version

As I mentioned in the other two threads, install the non-GCC version.

pinterf
21st October 2019, 09:46
https://github.com/AviSynth/AviSynthPlus/releases

AviSynth+ 3.4.0 has been released. I debated whether to post a new thread in order to make sure it was visible, but I figured that even if a dedicated release post gets made, it should also be posted here too.


What a day! An Avisynth version from the original master branch, great. I still hope I'm returing here soon, my schedule is too busy since August to allow doing free-time projects.

StainlessS
21st October 2019, 09:50
So, is this now considered a continuation of the fabled and abandoned v3.0 Avisynth ?

EDIT: Avisynth v3.0 on Wiki:- http://avisynth.nl/index.php/AviSynth_v3

Groucho2004
21st October 2019, 10:04
Sorry Stainless, I deleted my post to which you replied. Anyway, this seems to confirm that it is indeed basically pinterf's r2915:
3.4 is pretty boring, all told. As the big changes from pull request #101 were already committed to MT several months ago, 3.4 basically catches up with pinterf's development branch (r2915 from late August) and has a small number of additional patches to smooth over the packaging process and officially roll over to the new versioning.

real.finder
21st October 2019, 10:05
So, is this now considered a continuation of the fabled and abandoned v3.0 Avisynth ?

EDIT: Avisynth v3.0 on Wiki:- http://avisynth.nl/index.php/AviSynth_v3

I think it's not, avs 3.X is not avs+ 3.X :)

but anyway the goals of avs 3.X is similar to avs+

StainlessS
21st October 2019, 10:17
It portrays itself like so :-
https://i.postimg.cc/cLvxnfjc/3-4.jpg (https://postimages.org/)

https://i.postimg.cc/qMdDnr5D/3-4x64.jpg (https://postimages.org/)

EDIT: This posted here:- https://forum.doom9.org/showthread.php?p=1886179#post1886179

Is still an issue in v3.4,
when Length=1, (for both BlankClips) it dont work, (ConditionalFilter fails)

Failing script


ROW = True
LIMITLO = 74.0 # >= is Target
LIMITHI = 100.0 # <= is Target
INCOLOR = $008080 # Set where in target range
OUTCOLOR = $FF8080 # Not in target range
SHOW = false # Return StackHorizontal, original as Y8, and mask.
###############
Colorbars.Trim(0,-100).convertToY8
MskByRowAveY(Row=ROW,LimitLo=LIMITLO,LimitHi=LIMITHI,InColor=INCOLOR,OutColor=OUTCOLOR,Show=SHOW)
Return Last

Function MskByRowAveY(clip c, Bool "Row", Float "LimitLo", Float "LimitHi", Int "InColor", Int "OutColor", Bool "Show") {
# Where AveLuma of pixel Row/Coloumn is between LimitLo<===>LimitHi, then set to Incolor, else OutColor. Colors Specified as YUV, where only Y8 returned.
c myName="MskByRowAveY: "
Row=Default(Row,true) LimitLo=Default(LimitLo, 0.0) LimitHi=Default(LimitHi,127.5)
InColor =Default(InColor ,$000000) OutColor=Default(OutColor,$FF8080) Show=Default(Show,False)
Assert(0.0 <= LimitLo <= LimitHi,myName+String(LimitLo,"0.0 <= LimitLo(%f)") + String(LimitHi," <= LimitHi(%f)"))
Assert(LimitHi <= 255.0,myName+String(LimitHi,"LimitHi(%f) <= 255.0"))
ConvertToY8.KillAudio O=Last
(Row) ? SeparateRows(O.Height) : SeparateColumns(O.Width)

FAIL=false # toggle to fail

len = (FAIL) ? 1 : Last.Framecount

InC = Last.BlankClip(Length=Len,Color_YUV= InColor) OutC= Last.BlankClip(Length=Len,Color_YUV=OutColor)
Last.ConditionalFilter(InC,OutC,String(LimitLo,"(%f<=AverageLuma<=")+String(LimitHi,"%f)"))
(Row) ? WeaveRows(O.Height) : WeaveColumns(O.width)
Return (SHOW) ? StackHorizontal(O,Last) : Last
}

pinterf
21st October 2019, 12:37
when Length=1, (for both BlankClips) it dont work, (ConditionalFilter fails)

Failing script


ROW = True
LIMITLO = 74.0 # >= is Target
LIMITHI = 100.0 # <= is Target
INCOLOR = $008080 # Set where in target range
OUTCOLOR = $FF8080 # Not in target range
SHOW = false # Return StackHorizontal, original as Y8, and mask.
###############
Colorbars.Trim(0,-100).convertToY8
MskByRowAveY(Row=ROW,LimitLo=LIMITLO,LimitHi=LIMITHI,InColor=INCOLOR,OutColor=OUTCOLOR,Show=SHOW)
Return Last

Function MskByRowAveY(clip c, Bool "Row", Float "LimitLo", Float "LimitHi", Int "InColor", Int "OutColor", Bool "Show") {
# Where AveLuma of pixel Row/Coloumn is between LimitLo<===>LimitHi, then set to Incolor, else OutColor. Colors Specified as YUV, where only Y8 returned.
c myName="MskByRowAveY: "
Row=Default(Row,true) LimitLo=Default(LimitLo, 0.0) LimitHi=Default(LimitHi,127.5)
InColor =Default(InColor ,$000000) OutColor=Default(OutColor,$FF8080) Show=Default(Show,False)
Assert(0.0 <= LimitLo <= LimitHi,myName+String(LimitLo,"0.0 <= LimitLo(%f)") + String(LimitHi," <= LimitHi(%f)"))
Assert(LimitHi <= 255.0,myName+String(LimitHi,"LimitHi(%f) <= 255.0"))
ConvertToY8.KillAudio O=Last
(Row) ? SeparateRows(O.Height) : SeparateColumns(O.Width)

FAIL=false # toggle to fail

len = (FAIL) ? 1 : Last.Framecount

InC = Last.BlankClip(Length=Len,Color_YUV= InColor) OutC= Last.BlankClip(Length=Len,Color_YUV=OutColor)
Last.ConditionalFilter(InC,OutC,String(LimitLo,"(%f<=AverageLuma<=")+String(LimitHi,"%f)"))
(Row) ? WeaveRows(O.Height) : WeaveColumns(O.width)
Return (SHOW) ? StackHorizontal(O,Last) : Last
}


Output frame count of ConditionalFilter will be max(InC.FrameCount, OutC.FrameCount). When you set it to 1 (FAIL=true case), ConditionalFilter output will be a single frame result. Which is then fed into WeaveRows, which needs at least O.Height of clip length to work properly.

StainlessS
21st October 2019, 16:14
Nice theory P :)

But, what about this one then [no SeparateRows]


FAIL = False # Force Falure ?
C=0
For(i=0,255) {
C2=BlankClip(Pixel_Type="Y8",Length=1,Color_YUV=(i*256+$80)*256+$80)
C=(!c.IsClip) ? C2 : C ++ C2
}
C # 256 frames, Y ascending

Len = (FAIL) ? 1 : FrameCount

K=Last.BlankClip(Length=Len,Pixel_Type="Y8",Color_YUV=$008080).Subtitle("[FAIL=" + String(FAIL) + "] Is NOT greater than 100.0",Align=5)
W=Last.BlankClip(Length=Len,Pixel_Type="Y8",Color_YUV=$FF8080).Subtitle("[FAIL=" + String(FAIL) + "] Is greater than 100.0",Align=5)

ConditionalFilter(W,K,"averageLuma >= 100.0 ",Show=true)
C=C.Scriptclip("""Subtitle(String(current_frame,"%.0f] Y=") + String(AverageLuma,"%.2f"))""")
StackHorizontal(C,Last)

#Trim(255,-1) # Only show last frame where result should be WHITE.


I had posted this earlier in this thread [as EDIT] but forgot, here:- http://forum.doom9.org/showthread.php?p=1886179#post1886179

EDIT: both W and K have to be single frame to fail, I cant re-check as I'm in middle of system restore from image.
EDIT: I would expect it to behave like the other runtime filters, it is commonplace to return a single frame in eg Scriptclip, makes no difference to length of outut
clip, which is guaranteed same as input.

markfilipak
21st October 2019, 18:48
markfilipak,
Avoid r1576, is from several years ago [4 or 5].
Get This one AviSynthPlus_3.4.0_20191020.exe from here:- https://github.com/AviSynth/AviSynthPlus/releases

Now I have the latest installed. Thanks for the link. And I found the example AVS scripts.

I have crawled through what documentation I could find. I apparently missed some [1].

I was hoping avisynth could serve video files, starting with something simple, like this:

return read('d:\path\movie.mkv')

I see how to create a blank clip or color bars, but I can't find anything like the above. A link to info would be fine of course.

Thanks.

[1]
I can't find a link between this:
http://avisynth.nl/index.php/Internal_functions
and this:
http://avisynth.nl/index.php/AviSynth_Syntax
so it appears I'm missing some crucial info.

poisondeathray
21st October 2019, 18:55
Now I have the latest installed. Thanks for the link. And I found the example AVS scripts.

I have crawled through what documentation I could find. I apparently missed some [1].

I was hoping avisynth could serve video files, starting with something simple, like this:

return read('d:\path\movie.mkv')

I see how to create a blank clip or color bars, but I can't find anything like the above. A link to info would be fine of course.

Thanks.

[1]
I can't find a link between this:
http://avisynth.nl/index.php/Internal_functions
and this:
http://avisynth.nl/index.php/AviSynth_Syntax
so it appears I'm missing some crucial info.



You need a source filter to load videos. Common ones are ffms2 and lsmash. They are separate .dll's which will autoload if placed into the plugins directory, or you can explicitly load them with LoadPlugin . Certain source filters have various pros/cons in different situations and for different types of video

FFVideoSource("d:\path\movie.mkv")

or

LWLibavVideoSource("d:\path\movie.mkv")


avisynth is a bit different in that there is an "implied last" , so you don't have to return an output node such as in vapoursynth, you can omit it entirely

If you omit it, it really means
return last

markfilipak
21st October 2019, 19:36
You need a source filter to load videos. Common ones are ffms2 and lsmash. They are separate .dll's ...
There are no DLLs there (https://github.com/FFMS/ffms2). A search for 'ffms2.dll' fails.

poisondeathray
21st October 2019, 19:45
There are no DLLs there (https://github.com/FFMS/ffms2). A search for 'ffms2.dll' fails.



For Github, usually there are compiled releases under "releases" (click on "releases") for all types of projects listed on Github

But for ffms2 , those are old . (You actually might want even older if you were dealing with MPEG2 / DVD, but I would avoid it completely and use MPEG2Source, hence the pros/cons warning earlier . There are many "gotchas" and quirks for various source filters)

You can find latest in the development threads . Go to the end of each and work your way backwards . You might want to download the old "official" ones , because they have the documentation. Some of the "new" releases are just the .dll's without source or documentation

https://forum.doom9.org/showthread.php?t=167435
https://forum.doom9.org/showthread.php?t=127037

It's not a great way of organizing things, it's just they way it is. Sometimes you have to search quite a bit for matching or proper .dlls for certain plugins. There is a project similar to vapoursynth repo called avsrepogui from CK too that might be helpful for some people
https://forum.doom9.org/showthread.php?t=176443

ChaosKing
21st October 2019, 19:53
I would say this is currently the safest ffms2 dll with the latest codec support like av1 https://forum.doom9.org/showthread.php?p=1886890#post1886890

With safe I mean frame accurate. See table here https://forum.doom9.org/showthread.php?t=176231

Or you can lsmash via the avsrepogui tool :P

wonkey_monkey
21st October 2019, 23:17
Just so I've got this straight, pinterf forked the "official" Avisynth+ to update it, and now the "official" Avisynth+ has incorporated his work into itself?

StainlessS
21st October 2019, 23:24
Just so I've got this straight, pinterf forked the "official" Avisynth+ to update it, and now the "official" Avisynth+ has incorporated his work into itself?

Perhaps I'm old and tired, but I think that the chances of finding out what's actually going on are so absurdly remote that the only thing to do is to say, "Hang the sense of it," and keep yourself busy. I'd much rather be happy than right any day.

EDIT: And you can quote me on that [and I feel that somebody defo will]. :)

wonkey_monkey
21st October 2019, 23:25
I'd much rather be happy than right any day.

And are you?

StainlessS
21st October 2019, 23:33
Truth be told, I'm always right, I've never been happy, hang the sense of it, lets get pissed instead.

qyot27
22nd October 2019, 00:33
Just so I've got this straight, pinterf forked the "official" Avisynth+ to update it, and now the "official" Avisynth+ has incorporated his work into itself?
Yes and no. The nuance is a bit specific to how Git works.

Git itself is a very decentralized development platform, so 'fork' can carry a much less confrontational connotation than it did in the earlier days of FOSS development (https://help.github.com/en/github/getting-started-with-github/fork-a-repo).

pinterf had opened pull requests for upstream to merge several times before ultim went on hiatus in 2016 (https://github.com/AviSynth/AviSynthPlus/pulls?q=is%3Apr+author%3Apinterf+is%3Aclosed). That most recent one, #101 (https://github.com/AviSynth/AviSynthPlus/pull/101), wasn't merged before ultim left, so pinterf's personal repo those PRs were opened from became the de facto development HEAD. If we needed to get something merged, the PRs were submitted to pinterf, and became part of pull request #101.

In June, ultim came back for a moment and granted pinterf and myself commit rights to the main repository so that it could stay up-to-date. Basically, the development HEAD of the project is back at its original location.

LigH
22nd October 2019, 07:18
Then I guess I can move to https://github.com/AviSynth/AviSynthPlus/releases as default download source now, assuming that all the developers will contribute there now.

pinterf
22nd October 2019, 08:09
Yep, now I can work directly into the master branch of the original AvisynthPlus repo, thanks qyot27 to make this step.

I met ultim in the summer, he told he was willing to give access to http://avs-plus.net . But at that time (and since then as well) I was engaged in office work and other activities so I postponed the decision whether I wanted to deal with it or not.

pinterf
22nd October 2019, 08:33
Nice theory P :)

But, what about this one then [no SeparateRows]


FAIL = False # Force Falure ?
C=0
For(i=0,255) {
C2=BlankClip(Pixel_Type="Y8",Length=1,Color_YUV=(i*256+$80)*256+$80)
C=(!c.IsClip) ? C2 : C ++ C2
}
C # 256 frames, Y ascending

Len = (FAIL) ? 1 : FrameCount

K=Last.BlankClip(Length=Len,Pixel_Type="Y8",Color_YUV=$008080).Subtitle("[FAIL=" + String(FAIL) + "] Is NOT greater than 100.0",Align=5)
W=Last.BlankClip(Length=Len,Pixel_Type="Y8",Color_YUV=$FF8080).Subtitle("[FAIL=" + String(FAIL) + "] Is greater than 100.0",Align=5)

ConditionalFilter(W,K,"averageLuma >= 100.0 ",Show=true)
C=C.Scriptclip("""Subtitle(String(current_frame,"%.0f] Y=") + String(AverageLuma,"%.2f"))""")
StackHorizontal(C,Last)

#Trim(255,-1) # Only show last frame where result should be WHITE.


I had posted this earlier in this thread [as EDIT] but forgot, here:- http://forum.doom9.org/showthread.php?p=1886179#post1886179

EDIT: both W and K have to be single frame to fail, I cant re-check as I'm in middle of system restore from image.
EDIT: I would expect it to behave like the other runtime filters, it is commonplace to return a single frame in eg Scriptclip, makes no difference to length of outut
clip, which is guaranteed same as input.
Works as expected. The frame count of ConditionalFilter depends only on W and K, namely max(K.FrameCount, W.FrameCount).
See https://github.com/AviSynth/AviSynthPlus/blob/master/avs_core/filters/conditional/conditional.cpp#L233

So the output contains exactly 1 frames and when you do StackHorizontal with the original 256-frame clip, it will show the same single frame on the right.

StainlessS
22nd October 2019, 09:23
Thanks P,
I guess that I have generally misunderstood the operation of that filter, also explains why I usually avoid it altogether.
I am now questioning my entire mental model of the Universe.

EDIT: OT
There was a TV series in the UK called "Baby Its you" :- https://www.walltowall.co.uk/program/baby-its-you-a-babys-world_26.aspx
(Google search to avoid song of same name, "Baby Its you" TV -song")
EDIT: aka "A Baby’s World", narrated by Bill Paterson. [Ally Frazer in "Auf Wiedersehen Pet"]

They had a ~6 month old strapped into a chair, blank room with nothing of interest to distract infant.
In front of baby, a table and an up/down sliding wall.

From the side, out comes a little wooden doll and goes behind the wall. Wall goes down and there is the single wooden doll.
Doll exits stage right, back behind curtain from whence it came, wall goes up.

Operation repeats with two individual dolls going behind all, wall drops, two dolls revealed, both exit stage right, wall goes up.

Operation repeats again with two individual dolls going behind wall, wall drops,
but this time there are three dolls revealed.
Baby in chair throws up its arms and with look look of total horror on its face,
you could read its thoughts, "Damn, sometimes 1 + 1 = 3 ???".

That baby is probably now a theoretical mathematician, or total math dunce.

The above award winning TV program is available on DVD, (Think I'll get it, it was most compelling viewing).

pinterf
22nd October 2019, 12:44
As I mentioned in the other two threads, install the non-GCC version.
I see that the Avisynth+ link was updated on videohelp, pointing on the GCC release build as the "portable" version. But it won't work properly?
Also, the changelog is also much shorter there than it appears in the readme.txt. I don't know who is maintaining the links there.

Note, that my earlier releases with suffix filesonly.7z were containing the same dlls as the main installer, in this 3.4 release there is no such option yet.

And a question: in which environment should someone use the GCC build?

tormento
22nd October 2019, 12:46
I am finding AviSynth+ 3.4.0–20191020 bit slower than previous 2915 (x64 environment).

First script:
SetMemoryMax(8000)
SetFilterMTMode("DEFAULT_MT_MODE", 2)
LoadPlugin("D:\eseguibili\media\DGDecNV_x64\DGDecodeNV.dll")
DGSource("E:\in\2_23 Shining (remastered extended)\01222.dgi")
CompTest(1)
SMDegrain (tr=4, thSAD=500, refinemotion=false, n16=true, mode=0, contrasharp=false, PreFilter=4, truemotion=false, plane=4, chroma=true)
Prefetch(6)

2915: encoded 2072 frames, 10.49 fps, 2432.63 kb/s
3.4.0–20191020: encoded 2072 frames, 10.05 fps, 2432.63 kb/s

Same script but with tr=6:

2915: encoded 2072 frames, 7.91 fps, 2312.11 kb/s
3.4.0–20191020: encoded 2072 frames, 7.42 fps, 2312.09 kb/s

Can you confirm this?

Groucho2004
22nd October 2019, 13:05
I am finding AviSynth+ 3.4.0–20191020 bit slower than previous 2915 (x64 environment).
Can you confirm this?Why are you adding useless complexity to this comparison by bringing an encoder into it? Measure the speed of the script and report memory usage, fps, etc.

tormento
22nd October 2019, 13:56
Why are you adding useless complexity to this comparison by bringing an encoder into it? Measure the speed of the script and report memory usage, fps, etc.
Results:

AviSynth+ 0.1 (r2900, MT, x86_64)
Frames processed: 2072 (0 - 2071)
FPS (min | max | average): 1.548 | 500000 | 12.84
Process memory usage (max): 1444 MiB
Thread count: 74
CPU usage (average): 69.6%
GPU usage (average): 31%
VPU usage (average): 8%
GPU memory usage: 1811 MiB
Time (elapsed): 00:02:41.330

AviSynth+ 0.1 (r2915, MT, x86_64)
Frames processed: 2072 (0 - 2071)
FPS (min | max | average): 1.546 | 588235 | 12.86
Process memory usage (max): 1442 MiB
Thread count: 74
CPU usage (average): 69.5%
GPU usage (average): 30%
VPU usage (average): 9%
GPU memory usage: 1788 MiB
Time (elapsed): 00:02:41.072

AviSynth+ 3.4 (r2923, 3.4, x86_64)
Frames processed: 2072 (0 - 2071)
FPS (min | max | average): 1.627 | 500000 | 12.80
Process memory usage (max): 1445 MiB
Thread count: 74
CPU usage (average): 69.5%
GPU usage (average): 30%
VPU usage (average): 8%
GPU memory usage: 1810 MiB
Time (elapsed): 00:02:41.868

Not so different indeed. But, using Simple x264 launcher:

AviSynth+ 0.1 (r2900, MT, x86_64)
10.18 fps, 2432.64 kb/s

AviSynth+ 0.1 (r2915, MT, x86_64)
10.50 fps, 2432.63 kb/s

AviSynth+ 3.4 (r2923, 3.4, x86_64)
9.72 fps, 2432.63 kb/s

Strange, uh?

qyot27
22nd October 2019, 14:20
I see that the Avisynth+ link was updated on videohelp, pointing on the GCC release build as the "portable" version. But it won't work properly?
Also, the changelog is also much shorter there than it appears in the readme.txt. I don't know who is maintaining the links there.

Note, that my earlier releases with suffix filesonly.7z were containing the same dlls as the main installer, in this 3.4 release there is no such option yet.

I noticed that too. I *think* it might be a script that just automatically thinks .7z archive = portable.

I mean, there is Installation_Instructions.txt in the archive that says exactly what you need to do with it, and the .dlls being in typical FHS-style directories (x86_64-w64-mingw32/[bin|include|lib] and i686-w64-mingw32/[bin|include|lib]) rather than the way they're organized for DLL-only MSVC builds should be another point making it obvious.

And a question: in which environment should someone use the GCC build?
I could say 'to test with', but that's only somewhat true because the build does work just fine on its own and with the plugins included with it (and C plugins). It can be used to test whether your C++ plugin can work correctly when built with GCC, though (or to run speed tests, or to be able to use gdb to debug, I suppose, although that's not a debug build).

64-bit builds of FFmpeg and VirtualDub2 are fine with the GCC builds. The 32-bit ones need separate builds to work correctly with it (at least in FFmpeg's case).

tebasuna51
23rd October 2019, 11:35
I mean, there is Installation_Instructions.txt in the archive that says exactly what you need to do with it...

"However, GCC-built C++ plugins cannot reside in the same directories as MSVC-built C++ plugins, and AviSynth+GCC cannot use MSVC-built C++ plugins. Mixing C++ plugins built by MSVC and GCC in a single directory will cause AviSynth+ (MSVC or GCC) to crash."

Really?!

Another set of plugins?

Please some pity with the users.

manolito
23rd October 2019, 14:35
Please some pity with the users.

+1 :p

If even a guru like StainlessS downloads the wrong version just because it is at the top of the list then something is wrong with the download page.

No "normal" AVS user knows the difference between an MSVC build and a GCC build, and nobody has a clue about the restrictions of the GCC build.

So at least the GCC version should be slightly hidden, and there should be a clear warning (in red bold letters) that this version is not meant for the average user.


Cheers
manolito

wonkey_monkey
23rd October 2019, 15:00
What is the GCC version for?

qyot27
23rd October 2019, 18:18
Really?!

Another set of plugins?

Please some pity with the users.
Unless you're fine completely abandoning the use of C++ plugins, there's no way around that problem. C++ implementations are compiler-specific, and C++ plugins must be built with the same compiler that built the program core. The things that might have been able to partially smooth over this problem would have the effect of completely breaking existing 2.5, 2.6, and Plus plugins and would have had to have been done years before AviSynth+ even existed.

The C API is the easiest way to avoid that problem, because it sidesteps the issue entirely. But there's not a whole lot of C plugins, and only two or three I'd consider to be of major importance (the C-plugin variant of FFMS2, AssRender, and maybe yadif).

So at least the GCC version should be slightly hidden, and there should be a clear warning (in red bold letters) that this version is not meant for the average user.
I had to rename it in order for it not to be first in the list anymore (the order is down to Github's own sorting), and I added a warning to the release post.

What is the GCC version for?
Under Windows? Speed tests, compiler compliance tests, and debugging with gdb (although as I noted before, the available GCC build is not a debug build and has its symbols stripped). Cross-compiling with MinGW-w64 under MSys2, Cygwin, or from Linux distros.

GCC support is paramount for cross-platform development, though. GCC (or compilers that stay compatible with GCC's output) is dominant on pretty much everything that's not Windows. At present in one of the development branches, nearly all of the AviSynth+ core and filters can compile natively on Linux. The missing bits are critical for it actually working on there, but basically, that leap to being fully cross-platform is tantalizingly close now - and a significant reason is because GCC compliance was added 3 years ago.

Myrsloik
23rd October 2019, 18:41
The previous post is mostly false. There's clang-cl which does support the visual studio c++ ABI on windows. Thin api wrapper layers are also an option. För some reason you chose to produce a mostly unusable build configuration on windows.

manolito
23rd October 2019, 19:04
Thanks qyot27 for the clarifications and for editing the GitHub download page... :)

About the speed issues which were reported by tormento:

I tried to replicate the issues under a 32-bit environment, and I couldn't. The script speeds reported by AvsMeter were always identical, and measuring the speeds for a real conversion using X264 was also uneventful. I always got the same speed with AVS+ 3.40 and AVS+ r2915, no matter how simple or complex my script was.

Could this issue be a 64-bit thing?


Cheers
manolito

qyot27
23rd October 2019, 21:21
There's clang-cl which does support the visual studio c++ ABI on windows.
I didn't mention clang-cl mostly because my point was that VC++ and MinGW/GCC have incompatible ABIs and avisynth.h and related bits don't try to reconcile them. I could have been more precise, or just pointed to this post by JEEB from several years ago (https://forum.doom9.org/showthread.php?p=1653392#post1653392).

Thin api wrapper layers are also an option.
A C++ wrapper over a standard C API (tp7 mentioned this as the goal for AviSynth+'s future API development, but it obviously never happened), or a C++ wrapper around an incompatible C++ ABI? The former is what I usually see suggested, not the latter.

manolito
24th October 2019, 12:51
The AviSynth main page at avisynth.nl still points to the latest GitHub pinterf Avisynth+ r2772 version instead of the current page for version 3.40.

Could someone please consolidate the links?

r0lZ
25th October 2019, 09:59
The AviSynth main page at avisynth.nl still points to the latest GitHub pinterf Avisynth+ r2772 version instead of the current page for version 3.40.

Could someone please consolidate the links?
I agree. Currently, it is a nightmare for the newbie to find the correct version to install. The first result when you google Avisynth+ is avs-plus.net, and finding this thread is not obvious for many peoples.

avs-plus.net should be closed, and a similar site with clear links to download the latest stable version should be created.

tormento
26th October 2019, 10:42
Could this issue be a 64-bit thing?
Can't you do a try with x64?

manolito
26th October 2019, 12:24
Sorry, no, I can't...

Since I do not use any 64-bit software which uses AviSynth, I only have the 32-bit version of AVS+ installed. I also have no desire to maintain additional plugin folders for the 64-bit plugins. My 32-bit plugins are good and fast enough for me, 2 plugin folders (plugins and plugins+) are enough for me.

And last but not least 1 of my computers has a 32-bit only CPU, and I want identical AVS setups on all my machines.

Reel.Deel
27th October 2019, 16:37
The AviSynth main page at avisynth.nl still points to the latest GitHub pinterf Avisynth+ r2772 version instead of the current page for version 3.40.

Could someone please consolidate the links?

Done.

-----------

1st post on this thread also needs to be updated.

manolito
27th October 2019, 23:27
:thanks:

filler56789
28th October 2019, 00:24
1st post on this thread also needs to be updated.

Yes, a moderator should do that, because ultim's last Activity = 3rd July 2019 09:11 :–/

tebasuna51
28th October 2019, 10:19
1st post on this thread also needs to be updated.

A temporal EDIT is done.

stax76
3rd November 2019, 19:00
I would like to request AviSynth+ 3.4.0 without vcredist, it's too big to distribute with staxrip.

qyot27
3rd November 2019, 21:17
I've uploaded a plain 7z portable for 3.4.0 (well, technically, r2925 built from master, but the extra commit* only touched the READMEs, it's still otherwise-identical to 3.4). I also removed the GCC archive since videohelp still was (or, is at this time of writing) pointing at it as a 'portable' even when that was not the intention.

*the other's just the merge commit for that one change

stax76
4th November 2019, 00:05
staxrip requires the install version of avisynth (and vapoursynth).

real.finder
4th November 2019, 06:04
A C++ wrapper over a standard C API (tp7 mentioned this as the goal for AviSynth+'s future API development, but it obviously never happened), or a C++ wrapper around an incompatible C++ ABI? The former is what I usually see suggested, not the latter.

why not both? or for now C++ wrapper around an incompatible C++

Stereodude
16th November 2019, 19:32
A temporal EDIT is done.
IMHO, your edit could be clearer. Someone is going to click on the first link inside your edit and think that's what they need when those are actually the old ones.

My opinion is it should be something like this:

[MODERATOR EDIT:]
Current branch as of November 2019:
The pinterf fork was integrated (https://forum.doom9.org/showthread.php?p=1888102#post1888102) in main line like AviSynth+ 3.4.0
Download and sources: From GitHub (https://github.com/AviSynth/AviSynthPlus/releases)


Older superseded branch/fork:
[Download: From GitHub (https://github.com/pinterf/AviSynthPlus/releases) (use version with vc_redist when installing for the first time)
Sources: https://github.com/pinterf/AviSynthPlus]
[END MODERATOR EDIT]