View Full Version : manyPlus plugin


vcmohan
5th October 2020, 13:06
I have gathered modPlus, movePlus, fqPlus, Grid, testInput plugins into one and also included a couple of more functions and created this plugin. On my page links for this manyPlus (http://www.avisynth.nl/users/vcmohan/manyPlus/manyPlus.html) plugin now replace those 5 plugins.

real.finder
5th October 2020, 21:13
thanks, but where is the documentation of testInput? I didn't see it in the page

ChaosKing
5th October 2020, 22:02
Look at the index page http://www.avisynth.nl/users/vcmohan/manyPlus/manyPlus_src.7z
http://www.avisynth.nl/users/vcmohan/

real.finder
10th October 2020, 01:01
Look at the index page http://www.avisynth.nl/users/vcmohan/manyPlus/manyPlus_src.7z
http://www.avisynth.nl/users/vcmohan/

that source code

and I did looked at the index page and didn't find it

vcmohan
11th October 2020, 13:08
I get the link without any problem.

real.finder
11th October 2020, 14:04
I get the link without any problem.

the link work indeed and has a list for the others, but seems testInput is missed

vcmohan
13th October 2020, 13:10
The functions jitter, deJitter, Grid and pattern are part of the test input. I find they are in that plugin function list. Grid and pattern are used for testing many other functions. Jitter is used for testing dejitter. Jitter and pattern were developed on specific requests.

real.finder
14th October 2020, 10:05
The functions jitter, deJitter, Grid and pattern are part of the test input. I find they are in that plugin function list. Grid and pattern are used for testing many other functions. Jitter is used for testing dejitter. Jitter and pattern were developed on specific requests.

I see, thanks

vcmohan
24th December 2020, 07:12
I have added two new functions F2QBokeh that operates in frequency domain and bokeh that is in spatial domain. I understand that "bokeh" means to blur in Japanese. Many smart phones have this setting with camera.
A big difference between pics taken of birds, flowers or animals with high end cameras by seasoned photographers and taken by rest of us lies how the background appears vis-a-vis the object. Great pics have the background blurred beyond recognition in shapes similar to shape of Iris of camera, whereas ordinary pics show background with enough detail , though slightly blurred, to detract attention.
With a view to blur background more keeping in focus pic undisturbed these two functions are designed to operate. The metric used to discriminate in focus and out of focus parts are different in these two functions. Size of grid used and threshold play a key part in getting an acceptable result and so some experimentation using animate or scriptclip is required.
I have not yet posted the source code as I invite comments for improvement. As it is in my mind there are a couple of issues to be addressed. A link to a display of processed image
(http://www.avisynth.nl/users/vcmohan/manyPlus/f2qbokeh0.png). Top left is input, right is heavily blurred image, bottom left is F2QBokeh output, Right has difference between input and output.

real.finder
25th December 2020, 05:09
the image in http://www.avisynth.nl/users/vcmohan/manyPlus/Bokeh.html seems missing

vcmohan
26th December 2020, 07:54
Sorry for that. Capital and lower case letter usage problem. Corrected it. Hope you will get it now.

real.finder
26th December 2020, 16:38
Sorry for that. Capital and lower case letter usage problem. Corrected it. Hope you will get it now.

yes, it's ok now, thanks

real.finder
15th January 2021, 15:44
can GBlur rad limit be more than 8? I was plan to replace BinomialBlur in YAHRmask with gblur for HBD but seems gblur rad limit don't allow that

Variance = 4.0
rad=round(Variance*2)
#~ sh_Padding(rad,rad,rad,rad).GBlur(rad,sqrt(Variance)).crop(rad,rad,-rad,-rad)
BinomialBlur(Variance)

the code above show they are similar, but the Variance=4 is the maximum I can use, by the default settings in YAHRmask it has to be 10

vcmohan
3rd February 2021, 14:05
can GBlur rad limit be more than 8? I was plan to replace BinomialBlur in YAHRmask with gblur for HBD but seems gblur rad limit don't allow that

Variance = 4.0
rad=round(Variance*2)
#~ sh_Padding(rad,rad,rad,rad).GBlur(rad,sqrt(Variance)).crop(rad,rad,-rad,-rad)
BinomialBlur(Variance)

the code above show they are similar, but the Variance=4 is the maximum I can use, by the default settings in YAHRmask it has to be 10
Now I made it accept upto 32 for rad. Please check.

real.finder
3rd February 2021, 16:58
Now I made it accept upto 32 for rad. Please check.

thanks, it's seems work fine, time to replace BinomialBlur :)

real.finder
16th April 2021, 12:54
hi again

first why F2QTest/F2Quiver both need Field Based input?

Second:- F2QTest in small (SD) resolution the spectrum seems not display fully

real.finder
17th April 2021, 12:50
I find crash case

ColorBars(width=640, height=480, pixel_type="yv12")
AssumeFieldBased()
ScriptClip("F2Quiver(5,5,60,-35,20,1,2,120,60,8,4,1,70,80,4,3,4,40,42,18,morph =false,gamma=0.04)")
Prefetch(4)

same with F1Quiver(5,39,200,1, uv = true) and I think any plugin use fftw like F2QTest and others same as https://github.com/pinterf/fft3dfilter/commit/412c3237c3143797e4543499833a7a64d4766257

vcmohan
19th April 2021, 14:02
hi again

first why F2QTest/F2Quiver both need Field Based input?
If not field based, there can be displacement between two halves of interlaced frame. This causes step like variation in alternate scan lines and it will not be possible to get meaningful fft. If there is no displacement use assumefieldbased()

Second:- F2QTest in small (SD) resolution the spectrum seems not display fully
When you do 2D FFT in this case first width wise 1d fft is done . Then on that height wise 1d fft is done. With real data, During 1d fft, alternate points are treated as complex component of the data. So in effect it has half the number of points width wise. The output is complex numbers. Also by a math jugglery the zero of axis of spectrum is brought to center (near about) of frame. Width wise therefore there are only 1/ 4, and height wise there will be 1/2 number of complex numbers. Since it is spectrum the complex part is 0, so only real part of freq domain data is displayed. Hope I made it clear (or more confusing?).

real.finder
20th April 2021, 17:53
thanks for explain them

I understand your point about interlaced even if Video Seasoned will not fall in it but why not use frame properties then? since it for avs+ only, this way you will have both comfort and safety

vcmohan
22nd April 2021, 12:28
thanks for explain them

I understand your point about interlaced even if Video Seasoned will not fall in it but why not use frame properties then? since it for avs+ only, this way you will have both comfort and safety

It checks whether the video has seperated fields from frame properties. If not it will give that warning. I am not too sure whether I understood you correctly.

real.finder
22nd April 2021, 12:46
It checks whether the video has seperated fields from frame properties. If not it will give that warning. I am not too sure whether I understood you correctly.

so if "progressive" (0) it will not show warning?

edit: I just tested, it's not, seems you didn't get me correctly, and seems you mean clip properties which is old and not exclusive in avs+, avs+ frame properties is same as vs frame properties

http://avisynth.nl/index.php/Internal_functions#Functions_for_frame_properties

vcmohan
23rd April 2021, 13:30
Thanks for the link. I find that I am hopelessly outdated not following the thread regularly. All along I have been using what was indicated in a thread of avisynth+ in the initial stages and parent avisynth documentation. There are somethings not clear. It states one can get frame properties at run time only. This means they can change frame to frame. In case of vapoursynth if some properties change from frame to frame, in clip properties their value is set as 0. Is similar such arrangement happens in avs+ also or all frame properties will remain constant? I am asking this because in middle of clip an error condition should not arise.

real.finder
23rd April 2021, 14:21
Is similar such arrangement happens in avs+ also or all frame properties will remain constant?

don't know, but I think they changed so in middle of clip an error condition should arise, but I think you can make a code for this cases by seperated fields then Weave in these frames only, in any case we should wait pinterf about this or better ask him directly

vcmohan
24th April 2021, 07:51
I am also a bit confused as to how I can use it. On reading the documentatio I found following
Property get
Get properties by name or as a whole
Common parameters:
clip c,
string key_name,
integer "index", (default 0): for zero based indexing array access
integer "offset" (default 0), similar to the other runtime functions: frame offset (e.g. -1: previous, 2: next next)

I find clip is used not frame
I tried in the create section
if (has_at_least_v8)
if (propGetInt(args[0].AsClip(), "_FieldBased") == 0)
env->ThrowError("StepFilter: clip is progressive");
else
env->ThrowError("StepFilter: clip is interlaced");
It says there is no propGetInt function.
when I use in GetFrame section again I get message stating that there is no such function. I am with r3276.

real.finder
24th April 2021, 12:53
frame properties added in avs+ 3.6 IIRC, I think r3276 is 3.5

anyway, the last stable avs+ is 3.7 (r3382)

in any case you can make the plugin work in both cases (avs+ 3.5 and avs+ 3.6+) and even in 3.6+ when there are no frame properties like how most of these plugins works https://github.com/Asd-g?tab=repositories and https://github.com/pinterf?tab=repositories

vcmohan
24th April 2021, 13:59
frame properties added in avs+ 3.6 IIRC, I think r3276 is 3.5
version() on my system states it is 3.6.0

Almost all of my plugins excepting those operating in frequency domain do not need any other frame properties. Can I get link to any resize function source code? I understand that they need frame properties and I can get an idea of how to access them?

real.finder
24th April 2021, 14:16
this one use frame properties (not just copy them) http://avisynth.nl/index.php/Avsresize

vcmohan
25th April 2021, 07:54
Many thanks. I will go through. Hope I understand the code.
if in the script assumefieldbased() was used, will frame property _FieldBased become zero in that case? I need to check. Also it looks like that not only I need to test if version is 8 or more, whether that key in frame properties exist.

real.finder
25th April 2021, 11:22
if in the script assumefieldbased() was used, will frame property _FieldBased become zero in that case? I need to check.

I think assumefieldbased will not change _FieldBased

Also it looks like that not only I need to test if version is 8 or more, whether that key in frame properties exist.

Avsresize and many others did that, so you can make it do "if frame properties exist use it, if not then it do as it do right now (need field based clip)"

vcmohan
25th April 2021, 12:30
A bit confusing. If I use vi.IsFieldBased() for clip with seperated fields I will get true. But when I check frame properties the _FieldBased flag will be zero.

real.finder
25th April 2021, 12:52
I think pinterf make it do that then, and it make sense

so in this case the plugin should first check for IsFieldBased if not then check for _FieldBased and if there are no _FieldBased throw error

vcmohan
17th May 2021, 13:32
I have revised manyPlus (http://www.avisynth.nl/users/vcmohan/manyPlus/manyPlus.html) plugin and added a few new features and a new function all in frequency domain. All frequency domain functions operate as MT_SERIALIZED as FFTW3.dll has its own multi threading (is not external thread safe).
F1Quiver has a new filter type which makes it easier to specify in some cases, such as in Horizontal Noise Bars (https://forum.doom9.org/showthread.php?t=182712).
F2Quiver and F2QSharp functions have an option to modify filter behaviour using hamming function and radius parameters.
F2Qlimit is a new function that is easier to specify filters. Specially useful for the type Horizontal Noise Bars.
Added some images for the web documentation.
Will be grateful for suggestions and bug report.

kedautinh12
17th May 2021, 13:56
Thanks for your hardwork

real.finder
30th May 2021, 15:59
Many thanks. I will go through. Hope I understand the code.
if in the script assumefieldbased() was used, will frame property _FieldBased become zero in that case? I need to check. Also it looks like that not only I need to test if version is 8 or more, whether that key in frame properties exist.


the last update of avsresize has "- read frame properties from every frame (previously only from the first frame);"

I made a diff file of the changes https://www.solidfiles.com/v/eWWGjnm6gqBLr and in Attachments

don't know if it help here

kedautinh12
30th May 2021, 16:10
The file i download is avsresize_r6 diff with r5.ksh. I changed to avsresize_r6 diff with r5.zip but can't open with winrar

real.finder
30th May 2021, 16:16
The file i download is avsresize_r6 diff with r5.ksh. I changed to avsresize_r6 diff with r5.zip but can't open with winrar

it should has no extension, anyway try txt

kedautinh12
30th May 2021, 16:49
Thanks

real.finder
25th June 2021, 01:42
the changes for r5 vs r7 now in github https://github.com/realfinder/avsresize-mirror/commit/889da7a4f1b2f449fbc94dd183d6696ceffeb55f

vcmohan
15th September 2021, 08:00
I have added two functions in this plugin. 1. IFishI and 2. Circles.
IFishi corrects distortions introduced by camera lens. These include Barrel, Pin Cushion and Fish eye. The formula used for correcting Barrel and Pin Cushion distortions are different from those in DeBarrel function. Fish Eye correction has 4 versions viz: Orthogonal, Linear, Equi solid and Panoramic . The function can also convert a normal image into these 4 versions of Fish eye. Wikipedia and ALTERA Manipal DOT NET 2008 paper were used in the formulation. Test mode to see the data points for aiding in defining parameters. Arriving at proper parameters is a bit tedious.
Circles function draws concentric circles on an optionally dimmed input image. I felt the need when trying to process a fish eye image in which only part of the circular edge was seen. With this the diameter and center coordinates could be determined. May be of use.
Will be thankful for suggestions and bug reports.

vcmohan
1st November 2021, 13:34
The Barrel function of this plugin has been rewritten for two options and for speed. It is now much faster. The function FishEye corrects fish eye (wide angle lens) image and has 5 methods. Accepts all formats.

Kisa_AG
13th January 2022, 09:16
Hello!
When I'm trying to use F2Quiver (with different settings, like F2Quiver(3,4,74,84,20)), I'm getting the following error:

F2Quiver: Input must be fieldseparated.Please use either fieldbased() or assume framebased().separatefields()

But my video is progressive. Is it really works with interlaced videos only?

When I'm using AssumeFieldBased or AssumeFieldBased.SeparateFields the filter does nothing.

vcmohan
13th January 2022, 12:53
please use just assumefieldbased(). Only for interlaced data you need to use assumeframebased().seperatefields(). (There is a problem in avisynth+ nomeneclature. internally in frame properties framebased is progressive but in script it is interlaced. This is of no concern to user)

Kisa_AG
13th January 2022, 14:11
please use just assumefieldbased()

Thanks for the answer!
But in any case I cannot reproduce filter's effect shown here:
http://www.avisynth.nl/users/vcmohan/FFTQuiver/F2Quiver.htm

I'm using the following script:
ImageReader("FQInput0.png", end=99, fps = 25)
AssumeFieldBased
F2QTest(3,4,70,90,24)

I'm using the picture with frying pan from your tutorial.

My power spectrum looks different from your's, please take a look on screenshot.

When I'm swithing from F2QTest to F2Quiver(3,4,70,90,24), the picture looks like original, no visible filtration at all.
Am I wrong somewhere?

vcmohan
14th January 2022, 12:52
I just checked and I get image identical to what was shown in tutorial. I find my input was a jpg file. I could not access your output as the forum has not yet approved it.

vcmohan
2nd March 2022, 12:41
Thanks for the answer!
But in any case I cannot reproduce filter's effect shown here:
http://www.avisynth.nl/users/vcmohan/FFTQuiver/F2Quiver.htm


My power spectrum looks different from your's, please take a look on screenshot.

When I'm swithing from F2QTest to F2Quiver(3,4,70,90,24), the picture looks like original, no visible filtration at all.
Am I wrong somewhere?

It appears that the moderator has not yet permitted the attachment.

vcmohan
2nd March 2022, 12:46
I have added a new function F1QClean to this plugin. It operates on one dimensional Fourier transform row by row. Undesirable frequencies can either be cleaned in a band or individually limited. One need to run F1QTest prior to be able to specify frequency values. This is much easier to use than the more versatile F1Quiver.

StainlessS
2nd March 2022, 13:22
@Kisa_AG,
Quicker and just as easy to post image to Postimage.org,
See here[How to upload pictures]:- https://forum.doom9.org/showthread.php?p=1959414&highlight=postimage#post1959414

EDIT: Actual image shows in forum post.

vcmohan
3rd March 2022, 13:20
Thanks for the answer!
But in any case I cannot reproduce filter's effect shown here:
http://www.avisynth.nl/users/vcmohan/FFTQuiver/F2Quiver.htm

I
My power spectrum looks different from your's, please take a look on screenshot.

When I'm swithing from F2QTest to F2Quiver(3,4,70,90,24), the picture looks like original, no visible filtration at all.
Am I wrong somewhere?

As you stated the power spectrum looks completely different. As the dominant noise frequencies are differently oriented it is no wonder it has not filtered. I can not guess what went wrong except to request you to please check again your input image and your actual script.

vcmohan
4th March 2022, 12:30
giá gmail cổ (https://groups.google.com/g/bangmail) up phụ shop nÃ*o nhá»› thanks em nha em lÃ* khách quen cá»§a shop đó hi hi ^^

sorry. English translation is required.

kedautinh12
4th March 2022, 12:41
sorry. English translation is required.

It's spam advertisers. You can ignore it and it's Vietnamese language :D

coolgit
4th March 2022, 12:55
sorry. English translation is required.

Seriously... you want a spammer to translate it in English...:(:(:(

vcmohan
5th March 2022, 13:29
Sorry I did not think that it is spam. A similar message was in the AviSynth Devolepment forum also.

StainlessS
5th March 2022, 14:52
VC, yep, the same guy posted the same message in at least a dozen threads.
They 'hit-and-run' then get banned, then some time later do it again under different username.
Moderators usually ban and delete all posts before you will see them.
Very tedious, and kinda pointless. (I think they earn a penny or two for everyone that visits the spam post).

real.finder
21st November 2025, 16:56
hi vcmohan

seems those functions
https://i.postimg.cc/sfP6BgSS/image.png (https://postimg.cc/QVtkwsfx)

need to add this fix here https://forum.doom9.org/showthread.php?p=2025220#post2025220

vcmohan
22nd November 2025, 13:17
Thanks for the suggestion on possible multithread problem arising. I may take quite a time understanding and correcting as I am nearing 92 and grasping new ideas are taking time.

tormento
22nd November 2025, 22:20
I am nearing 92
Wow! Congratulations!

Sharc
24th November 2025, 23:47
@vcmohan
Incredible! Congratulations and all the best! You beat all of us!

Emulgator
27th November 2025, 12:26
My best wishes for health, luck and wisdom go to India, Mr.Mohan !

vcmohan
5th December 2025, 13:08
Many thanks for the good words above. As I was away last week I could not amend my code. However I have a doubt. My avisynth.h is of 2020vintage. I require a link to get new version. Request for it. Also do I need a new installer for avisynth.dlls?

wonkey_monkey
5th December 2025, 21:52
Here's the latest installer: https://github.com/AviSynth/AviSynthPlus/releases/download/v3.7.5/AviSynthPlus_3.7.5_20250420.exe

Or if you just want avisynth.h: https://raw.githubusercontent.com/AviSynth/AviSynthPlus/refs/heads/master/avs_core/include/avisynth.h

pinterf
6th December 2025, 09:18
Many thanks for the good words above. As I was away last week I could not amend my code. However I have a doubt. My avisynth.h is of 2020vintage. I require a link to get new version. Request for it. Also do I need a new installer for avisynth.dlls?
I wish you a good health and clear mind!

The necessary changes, which appeared in interface version 12, are still in a not-yet-released development version of Avisynth+.

- install 3.7.5 from the installer, wonkey_monkey linked
- download the latest development DLLs from here
https://github.com/pinterf/AviSynthPlus/releases/tag/v3.7.6pre-r4356
- and overwrite the existing 3.7.5 one, presumably in your system32 folder.

vcmohan
9th December 2025, 13:33
Many thanks pinterif. I installed following steps you mentioned.
I am having some doubts.
1. in my manyPlus plugin there are several functions which use fftw dll, I am thinking of having one global lock class code for all of them, Each will communicate its own env ptr to this class code. The code for preventing copying is raising concern.
2. various versions of header files avisynthPlus.h use differing #ifndef ..... Since I was using version 8 header in many other functions I ran into problem immediately. Is there some reason for using differing defines?

vcmohan
10th December 2025, 14:25
While trying to compile with new avisynth.h file I am getting error /warning C26495 for all AVSValue(....) in the AVSValue class. There appears to be other errors/warnings also. Am I doing something wrong?

pinterf
10th December 2025, 21:44
Many thanks pinterif. I installed following steps you mentioned.
I am having some doubts.
1. in my manyPlus plugin there are several functions which use fftw dll, I am thinking of having one global lock class code for all of them, Each will communicate its own env ptr to this class code. The code for preventing copying is raising concern.

I recommend you - perhaps you already found it - looking at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/FilterSDK/Cplusplus_api.html#cplusplus-acquiregloballock.

You should use the locker class only for a short time, just around the risky, non-thread safe fftw call. If you use C++ the automatic declaration of the shown locking class, then when the class goes out of scope, it just does the unlock automatically.

The class itself is not part of Avisynth.h, it is just provided in the docs as a convenient ready-made example for using global locks.

What is important, that you should call the lock and unlock with the same env pointer. When you use the GlobalLockGuard class, seen in the documentation example, then you don't even need to call unlock, since going out of scope, the class is destroyed and the unlock happens automatically.

You have to guard as short code part as you can, around those fftw functions (plans like fftwf_plan_many_dft_r2c, fftwf_malloc, fftwf_init_threads)

This was my commit when I made fft3dfilter global-thread-safe:
https://github.com/pinterf/fft3dfilter/commit/599632e3878caaf7aab93d822cc3a426b4003fbc

As you can see, I was already using a mutex there, but it ensured only the in-filter safety. I simply replaced it with the example GlobalLockGuard class.

I had problems with making fftw calls thread-safe in the desctructor (freeing up fftwf allocations), you can see in the fft3dfilter commit changes that there is a env_saved which I used here. I save end_saved in the constructor, just to be able to pass it to the GlobalLockGuard object (which in turn is using it for lock acquire and unlocking).

Internally, the global mutex - which Avisynth's core provides - exists only once for all plugins which use the same avisynth dll.


2. various versions of header files avisynthPlus.h use differing #ifndef ..... Since I was using version 8 header in many other functions I ran into problem immediately. Is there some reason for using differing defines?

I don't know where it causes problems, one single project usually should use one avisynth.h

Anyway, you can use the new headers without problem on older systems as well.

But note: global-lock environment function call is valid only since v12 interface capable Avisynth. Your plugin will crash if someone use your modernized plugin with older Avisynths, unless you use the class with v12-awareness. Whether the actual avisynth interface version is v12 or newer, can be established easily, see examples.

In order to be able to tolerate both old and new Avisynth.dll, the above mentioned locker-class has a dedicated bool v12 flag, when you create it. If it is set to false, the object won't call the new interface function, but will still use a filter-local mutex, which is still way better than nothing.

And as another example of a real-life filter modification: this is what Asd-g's changed in neo_DFTTest:
https://github.com/HomeOfAviSynthPlusEvolution/neo_DFTTest/commit/108bffe059bc97827be4259ec0261908ada1527b

I think the documentation and looking at fft3dfilter and neo_DTFTest changes can help you a lot.

pinterf
10th December 2025, 21:56
While trying to compile with new avisynth.h file I am getting error /warning C26495 for all AVSValue(....) in the AVSValue class. There appears to be other errors/warnings also. Am I doing something wrong?

It should work out-of-box. Are you seeing error or just warnings?
(please note that only avisynth.h is not enough to update, the avs/ folder has additional includes, which must exist there as well.)

It C26495 is really only a warning, ignore it.

Btw, which Visual Studio are you using?

vcmohan
11th December 2025, 07:31
Thanks. I commited a silly mistake due to which I was getting those errors and warnings. Shows how much I was out of practice. Sorry for the trouble.
/

vcmohan
16th December 2025, 12:34
I have introduced the Global_lock code in all my fftwf dependant plugins. How do I test the correct functioning of the lock?

pinterf
25th December 2025, 09:39
Dear vcmohan.

The interface version checker would crash on pre-V9 Avisynth interface, due to call env->GetEnvProperty without checking its availibility.

If you used the earlier example, please update your code to this modified one.

IScriptEnvironment *env = ...
avisynth_if_ver = 6; // guessed minimum
avisynth_bugfix_ver = 0;
try { env->CheckVersion(8); avisynth_if_ver = 8; }
catch (const AvisynthError&) {}
try {
env->CheckVersion(9); // if this works, we are at least V9, can use GetEnvProperty with AEP_INTERFACE_VERSION
avisynth_if_ver = env->GetEnvProperty(AEP_INTERFACE_VERSION); // only since V9!
avisynth_bugfix_ver = env->GetEnvProperty(AEP_INTERFACE_BUGFIX);
}
catch (const AvisynthError&) {}
has_at_least_v8 = avisynth_if_ver >= 8; // frame properties, NewVideoFrameP, other V8 environment functions
has_at_least_v12 = avisynth_if_ver >= 12; // global locks, GetCPUFlagsEx, query L2 cache size

pinterf
25th December 2025, 09:52
I have introduced the Global_lock code in all my fftwf dependant plugins. How do I test the correct functioning of the lock?
This is not easy, since for visible effect

- you have to load and call multiple fftw plugins
- without the locks, only an occasional garbage would sign that the different fftw planners are using each others data. If things work, it is just shown as no user report processing artifacts.
- After introducing the lock mechanism these disapperared.
- Here, in our original working conversation, asd-g prepared me very nice fftw wrapper DLLs, which created very detailed log files (what is called, when is called, detected concurrent - non-guarded - calls). This was a huge help to me in the development. This is where it is mentioned: https://github.com/AviSynth/AviSynthPlus/issues/444#issuecomment-2925664910

After the changes I wrote:
"Thank you very much. 100% failure without, 100% success with v12 GlobalLock."

Before the fix, such lines appeared in the log:

"[TID: 11744] !!! CONCURRENT PLANNER ACCESS DETECTED !!! fftwf_plan_dft_r2c_2d entered while 1 other planner call(s) active."

vcmohan
25th December 2025, 13:06
Thanks. That is reassuring. I will shortly update my manyPlus plugin on to my plugins web page,

real.finder
3rd February 2026, 15:17
I will shortly update my manyPlus plugin on to my plugins web page,

any news?

vcmohan
4th February 2026, 12:54
any news? A month back I have updated the manyPlus plugin functions using fftw dll to avoid racing. But unfortunately the avisynth site for uploading at present is not accessible due to some problem. I have brought this to the notice of the administrator Wilbert and awaiting the resolution. Meanwhile you can use the dll presently available on my page. Suggest use single thread only for the functions using fftw dll, Regards

tormento
4th February 2026, 13:17
Meanwhile you can use the dll presently available on my page.
The last modified date for ManyPlus still shows 30 June 2023.

vcmohan
5th February 2026, 13:56
Yes. That is correct. Recent one is in Dec 25-Jan 26 which I am still trying to upload.

tormento
6th February 2026, 13:16
Yes. That is correct. Recent one is in Dec 25-Jan 26 which I am still trying to upload.
Would you please have a look here (https://forum.doom9.org/showthread.php?p=2027910)?

I don't know if I can achieve what I am looking for with your frequency functions.

vcmohan
7th February 2026, 13:19
All my filters work on single frame. For removing flickering you will reqire filters that act on multiple frame input.

real.finder
15th February 2026, 03:49
unfortunately the avisynth site for uploading at present is not accessible due to some problem. I have brought this to the notice of the administrator Wilbert and awaiting the resolution

maybe you can give Wilbert the files so he can upload them on your behalf? I also went through this before https://forum.doom9.org/showthread.php?p=2025610#post2025610

vcmohan
17th February 2026, 13:03
Thanks for the suggestion. I requested wilbert address to which I need to send the files.

vcmohan
25th February 2026, 12:42
Thanks to the help of Wilbert the manyPlus plugin is now the latest. If any problems please indicate in this thread.