Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Closed Thread
 
Thread Tools Search this Thread Display Modes
Old 2nd July 2018, 19:07   #4141  |  Link
jpsdr
Registered User
 
Join Date: Oct 2002
Location: France
Posts: 2,308
__________________
My github.
jpsdr is offline  
Old 2nd July 2018, 23:45   #4142  |  Link
real.finder
Registered User
 
Join Date: Jan 2012
Location: Mesopotamia
Posts: 2,587
Quote:
Originally Posted by LigH View Post
I already wonder if complex scripts like QTGMC can take advantage of these changes (or even need adaptions to the new plugins?)...
it will get more speed if it use expr especially with HBD, I need some times to update QTGMC and others
__________________
See My Avisynth Stuff
real.finder is offline  
Old 3rd July 2018, 05:14   #4143  |  Link
Sparktank
47.952fps@71.928Hz
 
Sparktank's Avatar
 
Join Date: Mar 2011
Posts: 940
Not just AVS+, but other plugins as well.

Thanks a lot for these
__________________
Win10 (x64) build 19041
NVIDIA GeForce GTX 1060 3GB (GP106) 3071MB/GDDR5 | (r435_95-4)
NTSC | DVD: R1 | BD: A
AMD Ryzen 5 2600 @3.4GHz (6c/12th, I'm on AVX2 now!)
Sparktank is offline  
Old 22nd July 2018, 22:22   #4144  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
EDIT: RUBBISH POST, PLEASE IGNORE.
Seems that I generated this bit with Grunt installed, thought is was from AVS+
I investigated it with Grunt not installed, however it had already been generated some time previous.
The scan examined builtin names, but got parameters from the Grunt plugin because of same Scriptclip name, oops.
Code:
ScriptClip  "cs[showx]b[after_frame]b[args]s[local]b"


I'm trying to figure out how to adapt to using AVS standard with Grunt, or AVS+ without (concerning ScriptClip).

From http://avisynth.nl/index.php/GRunT
Quote:
GRunT provides extended versions of the following run-time filters:
ScriptClip, ...

ScriptClip (clip clip, string filter [, bool showx, bool after_frame, string args, bool local])
GScriptClip(clip clip, string filter [, bool show , bool after_frame, string args, bool local])

As in the AviSynth internal counterparts, show (or showx) to true will display the actual values on the screen.
Presume that show/showx can be used to force original Scriptclip or GRunt version of ScriptClip when Grunt extended args NOT used.

AVS+, I See this Auto Generated using RT_InternalFunctions from Avisynth r2728 [EDIT: Via RT_Stats Make_Avisynth_BuiltIn_FunctionList.avs]
Code:
ScriptClip  "cs[showx]b[after_frame]b[args]s[local]b"
There are probably multiple function definitions in AVS+ source, but there is only a single one available via InternalFunctions().

Code:
Colorbars(Pixel_Type="YV12").ShowFrameNumber
SSS="""
	x=averageluma
	Subtitle("Fred Exist="+String(VarExist("fred"))+String(x," : X=%f"),Size=24,align=5)
"""
fred=true
# UnComment below lines one at a time
#####################################
##### AVS+ With GRunt Installed #####
#ScriptClip(SSS,show=true)      # OK, builtin
#ScriptClip(SSS,showx=true)     # OK, Grunt
#ScriptClip(SSS,args="fred")    # OK, Grunt
#ScriptClip(SSS,local=true)     # OK, Grunt
#
#GScriptClip(SSS,show=true)     # OK
#GScriptClip(SSS,showx=true)    # Script Error. GScriptclip does not have a named argument 'showx'. EDIT: So OK, expected
#GScriptClip(SSS,args="fred")   # OK
#GScriptClip(SSS,local=true)    # OK
#####################################
##### AVS+ With GRunt Missing   #####
#ScriptClip(SSS,show=true)      # OK
#ScriptClip(SSS,showx=true)     # Script Error. Scriptclip does not have a named argument 'showx'.
#ScriptClip(SSS,args="fred")    # Script Error. Scriptclip does not have a named argument 'args'.
#ScriptClip(SSS,local=true)     # Script Error. Scriptclip does not have a named argument 'local'.
#
#GScriptClip(SSS,show=true)     # All GScripClip fail with missing Grunt dll, as not supported in Avs+
#GScriptClip(SSS,showx=true)    #
#GScriptClip(SSS,args="fred")   #
#GScriptClip(SSS,local=true)    #
#####################################
Is AVS+ ScriptClip with showx, args and local documented somewhere ? [EDIT: the func definition 2 code blocks up suggests it exists]

GScript dll:- http://avisynth.nl/index.php/GScript
GSCript in Avs+: http://avisynth.nl/index.php/AviSynth%2B#GScript

Quote:
In AviSynth+ there is no need to wrap your GScript code in a string. The language extensions are native to
AviSynth+ and can be used transparently.
Might best be rewritten in docs as
Quote:
In AviSynth+ you must not wrap your GScript code in a GScript(" ... ") ...
Also, should be doc'ed that as well as GScript(), GEval(), and GImport() are not supported.

EDIT: I'm using below to implement script in both AVS with GSCript and AVS+ without [needs RT_FunctionExist()]
Where InstS = a multiline string.
Code:
    IsAvsPlus=(FindStr(UCase(versionString),"AVISYNTH+")!=0) HasGScript=RT_FunctionExist("GScript")  
    Assert(IsAvsPlus || HasGScript,RT_String("%sNeed either GScript or AVS+",myName))
   ...
    HasGScript ? GScript(InstS) : Eval(InstS)   # Use GSCript if installed (loaded plugs override builtin)
EDIT:
Maybe GScript, GEval, and GImport, could be implemented as script functions (with some other names) and act based on
whether GScript dll or AVS+ present, GImport equivalent though might be tricky as I think the ScriptDir() type stuff changes
to the target directory of the imported file, probably not impossible to kludge around.

EDIT: If anybody wants complete listing of AVS+ r2728 BuiltIn function definitions, see SendSpace in sig below this post, or here:
http://www.mediafire.com/file/py8985...on_List.TXT.7z [~5KB]
NOTE, Only a single definition for each function is available, eg AssumeFPS has multiple definitions, using float FPS, or int numerator, int denominator.
(Not sure if its the first or last definition that is produced by Avs API.)
The actual script to produce the list is included in RT_Stats (any recentish version, last 3 or 4 years).
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 23rd July 2018 at 22:16.
StainlessS is offline  
Old 2nd August 2018, 00:29   #4145  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
I've been using Avisynth since 2006 and I've got many plugins in my Avisynth plugin directory.
Unfortunately, the development of Avisynth didin't really make any step forward for a while and even thought I have been able to use some sort of "workaround" to accomplish my tasks, time has come for me to move to Avisynth+.
I downloaded AviSynthPlus-MT-r2728-with-vc_redist.exe from Github (the latest Pinterf release).
I generally compile binaries myself, but I never used Avisynth+ so I wanted to download the official binaries.
I started the installation and it asked me whether I wanted to replace Avisynth or just "upgrade" and I clicked "upgrade".
It installed itself and also the C++ Redistributable 2017.

Unfortunately, I removed my old Avisynth plugin directory 'cause some of my old plugins make Avisynth+ crash.

So, I started adding them one by one until I found out which ones were breaking Avisynth+ and now it works.

I was kinda skeptical at the very beginning, but I tested it with a few simple scripts and I got very excited!
I mean, overall I find it faster than Avisynth 2.6.1 as it reacted immediately when I tried to preview results with AVSPmod and the syntax is basically identical, so I don't have to learn things from scratch, but just new functions!
I started to play with colorbars and test sources...
ConvertBit() is really useful, but what I found most exciting is that many internal filters are already capable to work at 10, 12, 14, 16bit and they are blazing fast!
I mean, I can simply use ConvertBit(10) and then use... I don't know... Tweak and Spline64Resize? Really? I don't have to Dither it up to 16bit stacked, use Dither functions and Dither it down to 10bit with Dither_Quantize, but I can work directly at 10bit if I want to? I know it sounds silly and easy to you, but it sounds really cool to me.
Besides, if I use FFMpegSource2 it will index the source and output it in its native Bitdepth... this is amazing!! It really is amazing, 'cause last time I had to compile ffms2 myself to include "enable10bithack=true".
I mean, again, it may sound silly to you but it sounds cool to me.
Avisynth+ also solved some nasty bug I have been dealing with for years...! Yes, for years...! Including some I reported but never got fixed in Avisynth 2.6.1... this is amazing!

I'm far too excited...
A big fat "thank you" to pinterf and to everybody who committed changes to the developing branch.

Last edited by FranceBB; 2nd August 2018 at 00:34.
FranceBB is offline  
Old 2nd August 2018, 01:01   #4146  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by FranceBB View Post
Unfortunately, I removed my old Avisynth plugin directory 'cause some of my old plugins make Avisynth+ crash.

So, I started adding them one by one until I found out which ones were breaking Avisynth+ and now it works.
Any chance you could tell us which plugins "break" AVS+?
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline  
Old 2nd August 2018, 01:13   #4147  |  Link
manolito
Registered User
 
manolito's Avatar
 
Join Date: Sep 2003
Location: Berlin, Germany
Posts: 3,078
Alright, this seems to be the time when everybody is abandoning plain vanilla AviSynth, I probably also should take a closer look at AVS+, but I am still very reluctant to make this step.

My needs are probably a little different than the needs of many other folks, especially the folks on this forum, so I'd like to ask a few questions about the advantages I would get in my usual projects by switching to AVS+.

I do not care at all about high bit depths and hi color. Most of my projects are SD, either for DVD or for AVC/AAC output (only rarely in HD resolution). The most demanding conversions I sometimes do for other folks are BD structures or AVCHD files which play on a standard hardware BD player. And all these formats are 8-bit with 4:2:0 color subsampling.

So I believe that most of the newer AVS+ features are not needed for me. I also need ALL of my old AVS plugins to continue working, this includes some VDub filters. Is this a realistic expectation?

Next question is about multithreading. Is there any speed gain in AVS+ when using old single threaded plugins and just add the "prefetch" command to the end of my scripts?

And then the question about AVS+ stability. I am very conservative here, I have not much use for software which gets bug fix updates every couple of weeks. I prefer software which is stable and has an update frequency of no less than one year. From loosely following the related threads I got the impression that AVS+ as well as some important "modernized" plugins (like MaskTools and MVTools) are still work in progress and need frequent bug fix updates.


So after considering all these aspects I wonder if I should really switch to AVS+ yet. It may be inevitable at a later time, but it seems too early right now, at least for my needs...


Cheers
manolito

Last edited by manolito; 2nd August 2018 at 01:18.
manolito is offline  
Old 2nd August 2018, 01:41   #4148  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
Quote:
Originally Posted by Groucho2004 View Post
Any chance you could tell us which plugins "break" AVS+?
Only ancient 2.0 C plugins like InpaintFunc, a delogo I've been using for years, but there are alternatives, so I don't mind.
FranceBB is offline  
Old 2nd August 2018, 07:25   #4149  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by FranceBB View Post
Only ancient 2.0 C plugins like InpaintFunc, a delogo I've been using for years, but there are alternatives, so I don't mind.
I see. When someone mentions 'break' or 'crash' I wouldn't assume that it's related to a feature simply not supported.

Anyway, I'm glad you like AVS+, I also find the ConvertBits() and ConvertToStacked() functions very useful.
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline  
Old 2nd August 2018, 09:49   #4150  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Manolito,
FranceBB seems quite happy, (not surprisingly).
Any problems are quite rare and fixed almost immediately (no 6 month wait till next update), Pinterf dont hang about.
Avs+ is I think definitely faster than standard, and seems to swallow less amounts of memory, although neither of those
qualities have been benchmarked by me in any way, everything just feels better. (I'm still on XP32, mostly).
Its easy enough to switch versions, Groucho even does a fast switcher, I got it but have yet to try (easy enough to just switch without it).
The only irksome difference to v2.60/2.61, is the GScript thing, but that is easily overcome just by installing GScript dll and ignoring the Avs+ built in
Gscript parsing (loaded plugs override builtin). [GScript Thing, Avs+ dont like the surrounding GScript(""" ... """) stuff.]

However, you can avoid such difficulties using code in last code block in post #4144
(a few posts previous, requires RT_Stats though, not something that I have a problem with).

Give it a try, easy enough to switch back, but I'm guessin' that you will not be doing that, ever.

EDIT: Any problems/bugs that rarely occur are usually in new functionality, if you dont use it, you will not have to be a guinea pig.
EDIT: And if you is still on the ol' Vdub, then switch that too to VD2, another recentish 'fantabulism'.
EDIT: 'GSCript thing', I think (but am not sure) that you should be able to mix GScript(""" ... """) and unwrapped gscript code
even in same script when you have the Gscript dll installed. I'm currently modding all of my script to work with either GSCript or
avs+ without Gscript.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 2nd August 2018 at 10:05.
StainlessS is offline  
Old 2nd August 2018, 11:39   #4151  |  Link
Gser
Registered User
 
Join Date: Apr 2008
Posts: 418
Quote:
Originally Posted by FranceBB View Post
Thiss is amazing!
I'm far too excited...
A big fat "thank you" to pinterf and to everybody who committed changes to the developing branch.
See I told you avs+ was nice

Quote:
Originally Posted by FranceBB View Post
Only ancient 2.0 C plugins like InpaintFunc, a delogo I've been using for years, but there are alternatives, so I don't mind.
Yeah that's the only plugin I haven't found an x64 version for, but it runs perfectly with MP Pipeline.

Perhaps the most beneficial thing for me about converting to avs+ and x64 was how rock solid QTGMC runs on HD content.
Gser is offline  
Old 2nd August 2018, 15:01   #4152  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,419
Quote:
Originally Posted by manolito View Post
I do not care at all about high bit depths and hi color.
AviSynth+ was already three years old by the time high bit depth was added. Many of the differences you'd be likely to see a benefit from are actually the older ones that happened right after the fork occurred in 2013. Stuff like improved caching behavior, lower memory usage, autoloading of C plugins, 64-bit support, many filters getting faster because the old SoftWire assembly was removed and replaced by intrinsics that work much better on modern compilers (it also means that support for newer instruction sets like AVX, AVX2, and AVX512 were added much more easily as well), and so on.

Quote:
I also need ALL of my old AVS plugins to continue working, this includes some VDub filters. Is this a realistic expectation?
2.0 plugins won't work, but 2.5 and 2.6 plugins are fine (with the same 'you do need to update this one' issues that classic AviSynth 2.6 is affected by as well). VDub filters should be okay, as VirtualDubFilter still exists - although it's an external plugin now. I can't personally speak to that part, since I don't use any VDub filters myself, or if I ever did, it was only one or two.

Quote:
Next question is about multithreading. Is there any speed gain in AVS+ when using old single threaded plugins and just add the "prefetch" command to the end of my scripts?
It depends. It's much more dependent on how the script is written and which MT mode the plugins are marked as (you can either use SetFilterMTMode to set the mode yourself, or use MTmodes.avsi to automatically use the community consensus on the proper modes for the most widely used plugins). If all the plugins you want to use happen to be good with the MT_NICE_FILTER setting, then yes, there should be a boost.

Basically, the order of the filters matters more in MT, because the MT_SERIALIZED mode can basically negate all benefits of MT if such a filter is used late in a script. Anything that uses that mode should occur at the beginning of the script, and then I'm not sure about whether it matters where filters using MT_MULTI_INSTANCE are.

In comparison to the old MT forks (where the only thing to set was a script-wide MT mode and maybe a Distributor call), AviSynth+'s approach is a scalpel, not a hammer. The cost of that is that the process to set things correctly is a tad more complicated, but MTmodes.avsi can take care of the bulk of that for you.

Quote:
And then the question about AVS+ stability. I am very conservative here, I have not much use for software which gets bug fix updates every couple of weeks. I prefer software which is stable and has an update frequency of no less than one year. From loosely following the related threads I got the impression that AVS+ as well as some important "modernized" plugins (like MaskTools and MVTools) are still work in progress and need frequent bug fix updates.
That's mostly just a different release pattern due to it being more actively maintained and going with a more x264-like setup where people mostly refer to the revision numbers. More frequent builds get released, sure, but if a particular build works for you, it's usually safe to keep using on it if you've not hit any bugs. And if you do find a bug, see if it still exists in the latest build - if it doesn't, great, if it does, report it.

There actually was going to be a '0.2' stable release somewhere around the r1830 point, but that never came to be. By now we'd probably be at a 0.3 or 0.4. Considering that, 0.1 was released in December 2013, r1825 (close to where 0.2 would have been) was early-mid 2016 and had MT but not high bit depth, and so by my estimation, 0.3 would likely have been September 2016, roughly around the time high bit depth support had gotten all of the major kinks hammered out and external support for them in FFmpeg and x264 showed up. We'd currently be inside the development cycle for 0.4, but the stuff lately hasn't been quite so dramatic, so the cycle for 0.4 could be longer (it might be when GCC and cross-platform support fully congeal, I dunno).

Stability is something of a different question. Despite new features showing up or getting improved actively (most recently it was the Expr stuff), existing features don't just disappear or change, save for users submitting bug reports and it being addressed much more quickly. From a developer point of view, the API has remained stable for years, because it has to be backward compatible with 2.6 and programs that still use 2.6.

Last edited by qyot27; 2nd August 2018 at 15:12.
qyot27 is offline  
Old 2nd August 2018, 18:04   #4153  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Nice write-up qyot27, it should make the decision to upgrade (or not) to AVS+ easier for some folks.

__________________
Groucho's Avisynth Stuff
Groucho2004 is offline  
Old 2nd August 2018, 21:24   #4154  |  Link
rco133
Registered User
 
Join Date: Mar 2006
Posts: 44
Hi.

I have a question about using AVS+ multithreaded or not.

Maybe there is a simple explanation to the behaviour I see.

The source is 1920x1080 bluray with progressive video. This Means that the AVS file is quite simple.

LoadPlugin("d:\dgdecnv\x64 Binaries\DGDecodeNV.dll")
DGSource("test.dgi")
crop(0,140,1920,800)
Spline36Resize(1280,536)

Thats it.

I have been doing some tests with AVSMeter 281, and am a bit surprised by the results. The 1080 results have a bit different crop in the AVS file, and the resize command is of course gone.

All the tests have been running for 1 minute and then stopped.

-----

720p with no Prefetch.

Frames processed: 17080 (0 - 17079)
FPS (min | max | average): 76.40 | 369.2 | 282.8
Memory usage (phys | virt): 213 | 369 MiB
Thread count: 27
CPU usage (average): 6%

Time (elapsed): 00:01:00.394

-----

1080p with no Prefetch.

Frames processed: 16940 (0 - 16939)
FPS (min | max | average): 101.1 | 374.6 | 280.2
Memory usage (phys | virt): 210 | 366 MiB
Thread count: 27
CPU usage (average): 4%

Time (elapsed): 00:01:00.465

-----

720p with pefetch(4).

Frames processed: 15550 (0 - 15549)
FPS (min | max | average): 22.65 | 544.3 | 255.7
Memory usage (phys | virt): 241 | 397 MiB
Thread count: 31
CPU usage (average): 12%

Time (elapsed): 00:01:00.812

-----

1080p with prefetch(4).

Frames processed: 13550 (0 - 13549)
FPS (min | max | average): 22.81 | 412.2 | 222.8
Memory usage (phys | virt): 258 | 414 MiB
Thread count: 31
CPU usage (average): 6%

Time (elapsed): 00:01:00.816

-----

I have also done tests with

SetFilterMTMode("DGSource", 3)
DGSource("test.dgi")
SetFilterMTMode("DEFAULT_MT_MODE", 2)

in the AVS file. But it doesn't really make any difference.

What makes me wonder is the big difference in CPU useage, and also the minimum FPS which drops very low.
The resulting average is quite a bit lower as soon as I use Prefetch in the script.

Is it normal for very simple AVS files like this, that enabling MT actually hurts the performance?

For now I am of course just not using Prefetch in AVS files like this, but it made me wonder.

I have some avsi and DLL files located in the plugins64+ folder, but that shouldn't really matter or?

Thanks in advance.

rco133
rco133 is offline  
Old 2nd August 2018, 21:30   #4155  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,752
If multithreading doesn't matter, then you have a single threaded bottleneck filter. And it's probably DGSource, because you can't multithread hardware decoding. The one decoder chip on your graphics card is as fast as it is.

And who cries about an average of >200 fps? Multithreading is the more useful the slower the video is filtered, in relation to the decoding speed. Cropping and scaling, that's quite "nothing" compared to e.g. deinterlacing and denoising.
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid

Last edited by LigH; 2nd August 2018 at 21:35.
LigH is offline  
Old 3rd August 2018, 06:41   #4156  |  Link
manolito
Registered User
 
manolito's Avatar
 
Join Date: Sep 2003
Location: Berlin, Germany
Posts: 3,078
Quote:
Originally Posted by StainlessS View Post
Give it a try, easy enough to switch back, but I'm guessin' that you will not be doing that, ever.
Thanks for this, but I will probably hang in there with the old standard AVS for another simple reason:
I have several computers running in parallel, the main desktop machine is the old P3 Coppermine under XP SP3, and this one does not support SSE2. AVS+ does support XP, but it chokes on a CPU without SSE2 (just like all the "modernized" plugins).

Yes, I know your answer, but I am still not ready to throw this old computer away, I believe in sustainability, and I won't throw away things which still work. My newer laptops would not have any problems running AVS+, but I have no intention to maintain different AviSynth installations on my several machines.

A big thanks to qyot27 for his detailed explanation. It really makes the decision for upgrading to AVS+ or not a lot easier.


Cheers
manolito
manolito is offline  
Old 3rd August 2018, 16:01   #4157  |  Link
magiblot
Eurobeat Fan
 
Join Date: Sep 2014
Posts: 108
That was a great explanation, qyot27. I believe a similar summarised and easy to understand text should be added to the AviSynth Wiki, in addition to other changes to make AviSynth+ the new recommended build.

When newcomers to AviSynth enter the Wiki, the first link they see is the one under 'Official builds'. Also, searching Google for 'avisynth download' leads to downloads of the 2.6 branch in SourgeForge and VideoHelp as well.
magiblot is offline  
Old 3rd August 2018, 19:07   #4158  |  Link
jpsdr
Registered User
 
Join Date: Oct 2002
Location: France
Posts: 2,308
Quote:
Originally Posted by manolito View Post
TAVS+ does support XP, but it chokes on a CPU without SSE2 (just like all the "modernized" plugins).
A lot of devs, included me, dropped things before SSE2. Begining with SSE2 already give enough differents code branch (roughly SSE2, SSE41, AVX, AVX2). Don't want to add at least two more (MMX, SSE). Even in my own old plugins, which had at the beginig only MMX, then after SSE, after SSE2, after... I deleted some old specific code path to reduce them, otherwise, you'll finish your plugin with a dozen of specific optimised code path !
__________________
My github.
jpsdr is offline  
Old 3rd August 2018, 19:25   #4159  |  Link
Atak_Snajpera
RipBot264 author
 
Atak_Snajpera's Avatar
 
Join Date: May 2006
Location: Poland
Posts: 7,806
Quote:
Originally Posted by jpsdr View Post
A lot of devs, included me, dropped things before SSE2. Begining with SSE2 already give enough differents code branch (roughly SSE2, SSE41, AVX, AVX2). Don't want to add at least two more (MMX, SSE). Even in my own old plugins, which had at the beginig only MMX, then after SSE, after SSE2, after... I deleted some old specific code path to reduce them, otherwise, you'll finish your plugin with a dozen of specific optimised code path !
These days you just need two versions (SSE2 and AVX2). Rest can be omitted.
Atak_Snajpera is offline  
Old 3rd August 2018, 20:39   #4160  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,419
It's not even that. AviSynth+ dropped the MMX and some of the SSE paths with the removal of SoftWire, but re-implemented some of them that were more obvious and useful with intrinsics (meaning: on a pre-SSE2 machine, some filters may be a mixed bag of whether they're faster than AviSynth 2.6; some of the other caching and memory improvements may make up some of the lost ground, though). But that's not actually what spurred the current build restrictions. Look at CMakeLists.txt. All anyone building it needs to do to 're-enable'* pre-SSE2 support is swap the commented out ARCH line for the other one. One of these days I'll figure out how to pass a selectable ARCH option to CMake so that optimizing for any of MSVC's supported levels (or disabling it completely) can be done at configure time instead of having to edit CMakeLists.txt before building it. The issue is that to build it with MSVC 2015 or 2017, you need at least Windows 7 (I think? maybe Win8.1) and an SSE2 CPU - MSVC itself doesn't run on older machines or versions of Windows, although it can still build for them.

*Because it's not really disabled, it's just a compiler optimization switch. You could even turn it completely off by passing ARCH:IA32.
qyot27 is offline  
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 10:40.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.