Log in

View Full Version : KNLMeansCL: OpenCL NLMeans de-noising algorithm [2018-01-29]


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

Khanattila
29th January 2018, 18:03
First of all, thanks.

I use it as prefilter with SMDegrain.

Any idea of why video output size changed?

From changelog, nothing gives hints. :confused:

Hi... size changed? More info?

tormento
29th January 2018, 18:34
Hi... size changed? More info?
I am encoding a movie right now. After that I will give you some comparison.

tormento
30th January 2018, 11:21
Ok, first time I try this with some method. It could sound picky, but I am curious about deterministic influence of programming over a algorithm, that in theory should give always same results.

I used these (https://forum.doom9.org/showthread.php?p=1832139#post1832139) clips that I already uploaded. The first one has a very low bitrate, the second one is full of movement.

First of all a very simple script:
SetMemoryMax(8000)
SetFilterMTMode("DEFAULT_MT_MODE", 2)
SetFilterMTMode("ChangeFPS", 3)
SetFilterMTMode("DGSource", 3)
LoadPlugin("D:\eseguibili\media\DGDecNV\x64\DGDecodeNV.dll")
DGSource("E:\in\1_58 Hitman's bodyguard\hitman01.dgi")
ChangeFPS(last,last,true)
KNLMeansCL()

Results:
hitman01_KNL-1.1.0.mkv 1.465.303
hitman01_KNL-1.1.1.mkv 1.464.935

hitman04_KNL-1.1.0.mkv 11.701.482
hitman04_KNL-1.1.1.mkv 11.694.121


Then I tried to use KNLMeansCL as a prefilter, with this script (and these (https://forum.doom9.org/showthread.php?p=1832208#post1832208) modifications):
SetMemoryMax(8000)
SetFilterMTMode("DEFAULT_MT_MODE", 2)
SetFilterMTMode("ChangeFPS", 3)

SetFilterMTMode("DGSource", 3)
LoadPlugin("D:\eseguibili\media\DGDecNV\x64\DGDecodeNV.dll")
DGSource("E:\in\1_58 Hitman's bodyguard\hitman04.dgi")

ChangeFPS(last,last,true)

SMDegrain (tr=4,PreFilter=4,thSAD=400,contrasharp=false,refinemotion=false,truemotion=true,plane=4,chroma=true,lsb=true,mode=0)

Prefetch(6)

Results:
hitman04_SMD-1.1.0.mkv 7.828.657
hitman04_SMD-1.1.1.mkv 7.794.803

And the question is: why has output size changed?

Shouldn't be the applied algorithm always the same?

LigH
30th January 2018, 11:34
Why are you surprised? Obviously, KNLMeansCL alone filters the video in a different way than SMDegrain as a whole.

And is it even a different clip? (hitman01 vs. hitman04)


BTW, an algorithm has no rhythm.

tormento
30th January 2018, 12:13
Why are you surprised? Obviously, KNLMeansCL alone filters the video in a different way than SMDegrain as a whole
Comparison is between two versions of KNLMeansCL about same clip.

Do you think I would really ask why two different filters have different output sizes? :confused:

P.S: Thanks for english corrections.

jmartinr
30th January 2018, 15:08
hitman04_SMD-1.1.0.mkv 7.828.657
hitman04_SMD-1.1.1.mkv 7.794.803

And the question is: why has output size changed?

Shouldn't be the applied algorithm always the same?
7828657 / 7794803 = 1.0043

That's still a very small difference.

Khanattila
30th January 2018, 15:24
Comparison is between two versions of KNLMeansCL about same clip.

Do you think I would really ask why two different filters have different output sizes? :confused:

P.S: Thanks for english corrections.

Different approximations in some calculations in the kernel code.

KNLMeansCL/commit (https://github.com/Khanattila/KNLMeansCL/commit/f05be07cb907db8ec50a2ae385c5b26de49ed007#diff-f0e737d9f8d126b6e49cf6f7c52e7171)

tormento
30th January 2018, 19:23
Different approximations in some calculations in the kernel code.
That wasn't in changelog :D

Thanks.

LigH
30th January 2018, 20:03
Sorry, tormento, I thought you compared another pair of files... :o

Atak_Snajpera
30th January 2018, 21:23
What does this mean?
http://i.cubeupload.com/TlYuha.png

video=ConvertToYUV444(video).KNLMeansCL(d=1, a=2, s=4, h=4, device_type="CPU", device_id=0).ConvertToYUV420

Khanattila
30th January 2018, 22:00
What does this mean?
http://i.cubeupload.com/TlYuha.png

video=ConvertToYUV444(video).KNLMeansCL(d=1, a=2, s=4, h=4, device_type="CPU", device_id=0).ConvertToYUV420

add channels="YUV"

Atak_Snajpera
30th January 2018, 22:15
http://i.cubeupload.com/pGWnUp.png
video=ConvertToYUV444(video).KNLMeansCL(d=1, a=2, s=4, h=4, device_type="CPU", device_id=0,channels="YUV").ConvertToYUV420
Why CPU device does not support this mode?

Khanattila
30th January 2018, 23:04
http://i.cubeupload.com/pGWnUp.png
video=ConvertToYUV444(video).KNLMeansCL(d=1, a=2, s=4, h=4, device_type="CPU", device_id=0,channels="YUV").ConvertToYUV420
Why CPU device does not support this mode?

Implementation-defined, however, it is difficult for the CPUs to support that mode.

The program is GPU oriented, and GPU work well with INT8, INT16, INT32, HALF and FLOAT.
So it makes sense not to support intermediate precision like INT9, INT12 or INT14.
However, there is a special format INT_101010, where the channels of each element (10 bits per channel) are packed into a single INT32.
Unfortunately, it is not very supported.

Atak_Snajpera
31st January 2018, 12:35
Ok. No problem. I was just curious...

Khanattila
2nd February 2018, 10:51
Ok. No problem. I was just curious...

You are welcome

littlepox
12th February 2018, 15:41
Hi all, need some help with KNLMeansCL on AMD RX Vega64:

denoised Y clip comes with broken data (mostly zero, very few times random output). This is a known issue (https://github.com/Khanattila/KNLMeansCL/issues/26) and we will await the patch.

Meanwhile, we would like to know whether using RGB is a safe workaround or not(assume we don't want to touch UV planes) :


a = "your file with YUV-8bit format.m2ts"
src8 = core.lsmas.LWLibavSource(a,threads=1)
src16 = core.fmtc.bitdepth(src8, bits=16)

Y = core.std.ShufflePlanes(src16, 0, vs.GRAY)
nr16y = core.resize.Bicubic(Y, format=vs.RGB48,matrix_in_s="709")
nr16y = core.knlm.KNLMeansCL(nr16y, d=1, a=2, s=3, h=1.3, channels="RGB", device_type="GPU")
nr16y = core.resize.Bicubic(nr16y, format=vs.GRAY16,matrix_s="709")

nr16y.set_output()


It looks OK for a few samples but we would like to know whether it is indeed unaffected by the same issue. Thanks for help!

Khanattila
12th February 2018, 16:38
Hi all, need some help with KNLMeansCL on AMD RX Vega64:

denoised Y clip comes with broken data (mostly zero, very few times random output). This is a known issue (https://github.com/Khanattila/KNLMeansCL/issues/26) and we will await the patch.

Meanwhile, we would like to know whether using RGB is a safe workaround or not(assume we don't want to touch UV planes) :


a = "your file with YUV-8bit format.m2ts"
src8 = core.lsmas.LWLibavSource(a,threads=1)
src16 = core.fmtc.bitdepth(src8, bits=16)

Y = core.std.ShufflePlanes(src16, 0, vs.GRAY)
nr16y = core.resize.Bicubic(Y, format=vs.RGB48,matrix_in_s="709")
nr16y = core.knlm.KNLMeansCL(nr16y, d=1, a=2, s=3, h=1.3, channels="RGB", device_type="GPU")
nr16y = core.resize.Bicubic(nr16y, format=vs.GRAY16,matrix_s="709")

nr16y.set_output()


It looks OK for a few samples but we would like to know whether it is indeed unaffected by the same issue. Thanks for help!

Hi littlepox, thanks for your report.
The main problem is I do not have a Vega GPU. In the country where I live the cost is very high, over 800€!
I also tried AMD's CodeXL, but for now, I do not see something strange. Future investigations are required.

I do not know if the workaround you suggest works or not, there is a problem with the new AMD OpenCL compiler for Vega.
There are probably some optimizations in place that are not clear.

fadedmaple
25th February 2018, 12:14
Hi,i`m use KNLMeansCL in vapoursynth with GTX1060 .
The system is Win10 and driver 390.77.
I found the GPU performance can not be fully realized.

the vpy script like this

src = core.lsmas.LWLibavSource(r'E:\OB\MEET_THE_FOCKERS_HDCLUB\BDMV\STREAM\00372.m2ts')
src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="Y",device_type = "gpu" )
src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="UV",device_type = "gpu" )

Only 0.3 fps ,And take up 10%-30% GPU usage。
Is it unable to run out of GPU or is it my own problem?

Khanattila
25th February 2018, 15:56
Hi,i`m use KNLMeansCL in vapoursynth with GTX1060 .
The system is Win10 and driver 390.77.
I found the GPU performance can not be fully realized.

the vpy script like this

src = core.lsmas.LWLibavSource(r'E:\OB\MEET_THE_FOCKERS_HDCLUB\BDMV\STREAM\00372.m2ts')
src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="Y",device_type = "gpu" )
src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="UV",device_type = "gpu" )

Only 0.3 fps ,And take up 10%-30% GPU usage。
Is it unable to run out of GPU or is it my own problem?

Hi fadedmaple, can you post the whole script?
The situation you describe is typical of a CPU-bottleneck.

fadedmaple
25th February 2018, 16:57
Hi fadedmaple, can you post the whole script?
The situation you describe is typical of a CPU-bottleneck.

here the whole script ,nothing special

from vapoursynth import core
import vapoursynth as vs

src = core.lsmas.LWLibavSource(r'E:\OB\MEET_THE_FOCKERS_HDCLUB\BDMV\STREAM\00372.m2ts')

src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="Y",device_type = "gpu" )
src = core.knlm.KNLMeansCL(src,d = 3,a = 6, h = 1.2,channels="UV",device_type = "gpu" )

src.set_output()

If i set the parametes as default (d = 1,a = 2),the x265 get a faster speed,even faster than no denoise.
So I think it really is using my GPU.

I use vseditor to benchmark ,when set d=3 a=6 ,CPU usage is very low,why CPU-bottleneck?

Khanattila
25th February 2018, 17:52
I never used vseditor, but I suspect it could slow things down.

RX 480 8GB (1330MHz / 2000MHz) ~1,29 FPS with 90-100% GPU Load.

script.vpy

import vapoursynth as vs
core = vs.get_core()

clip = core.lsmas.LWLibavSource("Sample.mkv", format="YUV420P8")
# 1920x1080 clip from a Blu-ray.

clip = core.knlm.KNLMeansCL(clip, d=3, a=6, channels="Y", device_type = "GPU")
clip = core.knlm.KNLMeansCL(clip, d=3, a=6, channels="UV", device_type = "GPU")

clip.set_output()


launcher.bat

vspipe script.vpy NUL -p


PS. Furthermore, there is the possibility LWLibavSource has decoding problems in that particular situation.
You should use a blank clip rather:

core.std.BlankClip(width=1920, height=1080, format=vs.YUV420P8, length=1000)

fadedmaple
26th February 2018, 07:47
I never used vseditor, but I suspect it could slow things down.

RX 480 8GB (1330MHz / 2000MHz) ~1,29 FPS with 90-100% GPU Load.

script.vpy

import vapoursynth as vs
core = vs.get_core()

clip = core.lsmas.LWLibavSource("Sample.mkv", format="YUV420P8")
# 1920x1080 clip from a Blu-ray.

clip = core.knlm.KNLMeansCL(clip, d=3, a=6, channels="Y", device_type = "GPU")
clip = core.knlm.KNLMeansCL(clip, d=3, a=6, channels="UV", device_type = "GPU")

clip.set_output()


launcher.bat

vspipe script.vpy NUL -p


PS. Furthermore, there is the possibility LWLibavSource has decoding problems in that particular situation.
You should use a blank clip rather:

core.std.BlankClip(width=1920, height=1080, format=vs.YUV420P8, length=1000)


Thanks for you explain and advise,i find a very strange thing.
I record a short video here https://youtu.be/yvW8pOkl2_I

I have use a BlankClip in the video,you can see the GPU load change after I close and reopen the chrome .

fadedmaple
26th February 2018, 13:48
You should really use something like GPU-Z instead of Win10's task manager for measuring GPU Load.

A rookie mistake ... :stupid:
It works well with 90-100% GPU Load.

tuanden0
26th April 2018, 12:45
Could you give me a link to download onpencl for AMD? I can't find it anywhere :(

LigH
26th April 2018, 13:07
In general, a hardware accelerated OpenCL driver should be part of a current graphic card driver (not knowing AMD, but nVidia drivers do install OpenCL.dll and additional hardware specific DLL files in the system director{y/ies}).

Atak_Snajpera
26th April 2018, 13:49
Could you give me a link to download onpencl for AMD? I can't find it anywhere :(

OpenCL is a part of AMD GPU driver.

tuanden0
26th April 2018, 15:25
OpenCL is a part of AMD GPU driver.

thank you, I installed :thanks:

tormento
17th November 2018, 11:15
@Khanattila what about trying to create a FFT3DCL filter? :)

Arhu
21st November 2018, 09:54
I'm seeing some weird frame order issues that appear to be happening with KNLMeansCL for me. I'm not sure for how long it has been happening because I only noticed recently with some UHD encodes. It may go back a few months.

1. Without KNLMeansCL frames seem to be fine in the output.
2. With d=0 and some values vor s, a and h sometimes a frame is skipped and later on another frame is repeated.
3. With d>0 and particularly with some UHD sources I occasionally but repeatedly get jumbled frames. E.g. for frames 1, 2, 3, 4, 5, 6 I'd get 1, 2, 3, 2, 5, 6 or something like that.

I didn't have time for more tests yet, but wanted to ask if this is a known problem or if anyone knows why this could be happening? Maybe something with the GPU or some buffer? I'm using a Geforce 1060, currently updating drivers.

Here's a sample script from staxrip:

import os
import sys
ScriptPath = 'D:/stax/staxrip/Apps/Plugins/VS/Scripts'
sys.path.append(os.path.abspath(ScriptPath))
import vapoursynth as vs
core = vs.get_core()
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\both\ffms2\ffms2.dll")
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\vs\fmtconv\fmtconv.dll")
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\both\KNLMeansCL\KNLMeansCL.dll")
clip = core.ffms2.Source(r"D:\clip.mkv", cachefile = r"D:\clip_temp\clip.ffindex")
clip = core.fmtc.bitdepth(clip, bits=16)
clip = core.knlm.KNLMeansCL(clip, d = 2, s = 4, a = 4, h = 0.5)
clip.set_output()

Atak_Snajpera
21st November 2018, 13:34
I'm seeing some weird frame order issues that appear to be happening with KNLMeansCL for me. I'm not sure for how long it has been happening because I only noticed recently with some UHD encodes. It may go back a few months.

1. Without KNLMeansCL frames seem to be fine in the output.
2. With d=0 and some values vor s, a and h sometimes a frame is skipped and later on another frame is repeated.
3. With d>0 and particularly with some UHD sources I occasionally but repeatedly get jumbled frames. E.g. for frames 1, 2, 3, 4, 5, 6 I'd get 1, 2, 3, 2, 5, 6 or something like that.

I didn't have time for more tests yet, but wanted to ask if this is a known problem or if anyone knows why this could be happening? Maybe something with the GPU or some buffer? I'm using a Geforce 1060, currently updating drivers.

Here's a sample script from staxrip:

import os
import sys
ScriptPath = 'D:/stax/staxrip/Apps/Plugins/VS/Scripts'
sys.path.append(os.path.abspath(ScriptPath))
import vapoursynth as vs
core = vs.get_core()
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\both\ffms2\ffms2.dll")
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\vs\fmtconv\fmtconv.dll")
core.std.LoadPlugin(r"D:\stax\staxrip\Apps\Plugins\both\KNLMeansCL\KNLMeansCL.dll")
clip = core.ffms2.Source(r"D:\clip.mkv", cachefile = r"D:\clip_temp\clip.ffindex")
clip = core.fmtc.bitdepth(clip, bits=16)
clip = core.knlm.KNLMeansCL(clip, d = 2, s = 4, a = 4, h = 0.5)
clip.set_output()

I suspect that FFms2 plugin is unable to deliver frames in right order for knlmeanscl.

ChaosKing
21st November 2018, 14:30
I suspect that FFms2 plugin is unable to deliver frames in right order for knlmeanscl.

Test your source with seek-test https://gist.github.com/dubhater/3a2c8a59841cae49ecae25cd47ff78d2

Arhu
21st November 2018, 16:14
I suspect that FFms2 plugin is unable to deliver frames in right order for knlmeanscl.
Test your source with seek-test https://gist.github.com/dubhater/3a2c8a59841cae49ecae25cd47ff78d2
I'm too much of a newbie to get it to work, but I found an old post of yours where you describe the issue I'm having. Switched to LWLibavSouce in staxrip and frames look accurate now. Guess I'll use that one from now on.

Bummer. I suppose I won't have to redo all of my earlier encodes as most of them look fine. It's just a select few that suffer from relatively obvious jerkiness where isolated frames weren't just repeated or skipped but came out in the wrong order.

Anyway, thanks for the quick help.

ChaosKing
22nd November 2018, 00:20
I'm too much of a newbie to get it to work, but I found an old post of yours where you describe the issue I'm having.

Try the FATpack here https://forum.doom9.org/showthread.php?p=1858098#post1858098 (need to download seek-test zip AND the latest zip from the 1st page)

You literary just need to extract it and drag&drop your video file onto the bat file.

Katie Boundary
15th February 2019, 03:24
I just gave this a spin. What's interesting is that it delivers extremely uneven results from one frame to the next. On most, it'll deliver stronger denoising than blur(1.0) without the actual blurring, but on some frames (maybe 20 or 25%?), it seems to do nothing at all.

SaurusX
19th February 2019, 15:43
I just gave this a spin. What's interesting is that it delivers extremely uneven results from one frame to the next. On most, it'll deliver stronger denoising than blur(1.0) without the actual blurring, but on some frames (maybe 20 or 25%?), it seems to do nothing at all.

What are the parameters you're using? This is my go-to denoiser, but the choice of parameters makes a big difference.

Selur
24th February 2019, 15:30
Small question for clarification: What color spaces are supported when using Vapoursynth?
Because when loading an 8bit 4:2:0 source, I get no problem, but when loading a 10bit 4:2:0 source I get 'only YUV444P10 and RGB30 are supported!'
So does KNLMeansCL only support 4:2:0 when using 8bit?
script I used:
import vapoursynth as vs
core = vs.get_core()
# Loading Plugins
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/KNLMeansCL/KNLMeansCL.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Loading E:\Output\10bitTest.mkv using LWLibavSource
clip = core.lsmas.LWLibavSource(source="E:/Output/10BITT~1.MKV", format="YUV420P10", cache=0)
# making sure input color matrix is set as 470bg
clip = core.resize.Point(clip, matrix_in_s="470bg",range_s="limited")
# making sure frame rate is set to 25/1
clip = core.std.AssumeFPS(clip, fpsnum=25, fpsden=1)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# denoising using KNLMeansCL
clip = core.knlm.KNLMeansCL(clip=clip, device_type="gpu", device_id=0)
# adjusting output color from: YUV420P10 to YUV420P8 for x264Model (i420)
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, range_s="limited")
# Output
clip.set_output()
also adding:
clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P10, range_s="limited")
doesn't seem to fix the issue, when using:
# Imports
import vapoursynth as vs
core = vs.get_core()
# Loading Plugins
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/DenoiseFilter/KNLMeansCL/KNLMeansCL.dll")
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Loading E:\Output\10bitTest.mkv using LWLibavSource
clip = core.lsmas.LWLibavSource(source="E:/Output/10BITT~1.MKV", format="YUV420P10", cache=0)
# making sure input color matrix is set as 470bg
clip = core.resize.Point(clip, matrix_in_s="470bg",range_s="limited")
# making sure frame rate is set to 25/1
clip = core.std.AssumeFPS(clip, fpsnum=25, fpsden=1)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# denoising using KNLMeansCL (bit depth: 10)
clip = core.resize.Bicubic(clip=clip, format=vs.YUV444P10, range_s="limited")
clip = core.knlm.KNLMeansCL(clip=clip, device_type="gpu", device_id=0)
# adjusting output color from: YUV444P10 to YUV420P8 for x264Model (i420)
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, range_s="limited")
# Output
clip.set_output()
I still get:
Python exception: knlm.KNLMeansCL: only YUV444P10 and RGB30 are supported!
using:
clip = core.resize.Bicubic(clip=clip, format=vs.RGB30, matrix_in_s="470bg", range_s="limited")
does the trick for me, so from the looks of it bitdepth > 8 bit requires a conversion to RGB30.
Cu Selur

littlepox
25th February 2019, 17:03
Processing under YUV444P16 gives weird output, similar to the problems with Vega.

DJATOM
26th February 2019, 12:21
Tried with rtx2070 and I don't see any artifacts besides lost details from denoising: https://slowpics.org/comparison/ed6f00e4-b4f2-4a0d-8c6f-0a5f18a34bff

ChaosKing
26th February 2019, 12:38
Khanattila Last Activity: 26th October 2018 19:54
@selur maybe it would be better to open a github issue.

Selur
5th March 2019, 21:01
@ChaosKing: Thanks for the heads-up.
-> https://github.com/Khanattila/KNLMeansCL/issues/42

Natty
6th May 2019, 11:04
i recently upgraded to ryzen + radeon. i am getting weird frames while using knlmeans prefilter in smdegrain like this

https://i.imgur.com/YL2rHpH.jpg

it didnt happen in intel + nvidia... is there any solution ?

Atak_Snajpera
6th May 2019, 13:34
Try again with mod16 resolution (816p instead of 818p)

Natty
7th May 2019, 17:17
Try again with mod16 resolution (816p instead of 818p)

thanks. didn't make any difference.
i also tried following things

lwlibav instead of ffmsindex

mkvtoolnix and eac3to instead of makemkv

in all cases same issue... in some blurays it works fine and in some it gives garbage output.

Groucho2004
7th May 2019, 18:34
thanks. didn't make any difference.
i also tried following things

lwlibav instead of ffmsindex

mkvtoolnix and eac3to instead of makemkv

in all cases same issue... in some blurays it works fine and in some (mostly too noisy) sources it gives garbage output.
It might be a silly question but you have tested the filter without SMDegrain, right?

Natty
9th May 2019, 13:15
It might be a silly question but you have tested the filter without SMDegrain, right?

yes i did

https://imgur.com/a/N1y9OwH

dark frame on direct knlmeans,

others are with smdegrain(prefilter=4)

edit : i was getting this issue when windows updated few things automatically, now i uninstalled graphics drivers, everything works fine now. sounds strange but results are impressive now, thanks everyone.

Katie Boundary
2nd August 2019, 06:08
What exactly is opencl.dll and why do I need it now and why didn't I need it when I first tried this filter?

LigH
2nd August 2019, 07:25
The opencl.dll is a part of the graphic drivers set. It provides the OpenCL programming interface to allow the use of your GPU not to display fancy 3D worlds on the screen, but to calculate elaborate maths.

If you didn't need it before, it was probably available. If you need it now, it might not be available anymore in your system ... did you recently update your graphic drivers to a version which does not offer OpenCL support (e.g. shipped by Microsoft Windows, not by your graphic card vendor)?

Katie Boundary
2nd August 2019, 16:29
did you recently update your graphic drivers to a version which does not offer OpenCL support (e.g. shipped by Microsoft Windows, not by your graphic card vendor)?

Negatory but I did just learn something interesting: the filter works perfectly fine in my Win7 partition. Only my XP partition is missing the dll. I might be able to just search for the dll and then copy-paste.

EDIT: "The procedure entry point InitOnceExecuteOnce could not be located in the dynamic link library KERNEL32.dll". That's unfortunate. Kernel32.dll sounds like something really important that XP probably already has and that shouldn't just be overwritten with the Win7 version or else my computer might start vomiting green liquid and chanting backward in Latin.

StainlessS
2nd August 2019, 17:11
"The procedure entry point InitOnceExecuteOnce could not be located in the dynamic link library KERNEL32.dll"

That opencl.dll will only work on some later ver$ OS, "start vomiting", possibly, "chanting backward in Latin", less likely. :)

EDIT: Check out your graphics card maker's site (Intel/NVidia), might be an XP version [driver or Opencl only, but alas both seem to have dropped support for XP].

EDIT:
Both Intel and AMD used to supply [their version of] OpenCl.dll in a developers SDK,

AMD, old versions [that I have]
AMD-APP-SDK-v2.7-Windows-32.exe [~= 102MB]
AMD-APP-SDK-v2.9-1.599.381-GA-Full-windows-32.exe [~= 109MB]



Intel
intel_sdk_for_ocl_applications_2014_x86_setup.msi [~= 87MB]


I only managed to ever get the CPU version of OpenCL working,
Never did get my (crap, low power) graphics card to do anything at all [crashed Initializing, if I remember the error messages],


Graphics
Monitor
Name HP E231 on NVIDIA GeForce GT 520
Current Resolution 1920x1080 pixels
Work Resolution 1920x1036 pixels
State Enabled, Primary
Monitor Width 1920
Monitor Height 1080
Monitor BPP 32 bits per pixel
Monitor Frequency 60 Hz
Device \\.\DISPLAY1\Monitor0
NVIDIA GeForce GT 520
Manufacturer NVIDIA
Model GeForce GT 520
GPU GF119
Device ID 10DE-1040
Revision A2
Subvendor Undefined (0000)
Current Performance Level Level 1
Current GPU Clock 270 MHz
Current Memory Clock 405 MHz
Current Shader Clock 405 MHz
Voltage 0.900 V
Technology 40 nm
Die Size 79 mm²
Release Date Apr 12, 2011
DirectX Support 11.0
OpenGL Support 5.0
Bus Interface PCI Express x16
Temperature 43 °C
Driver version 23.21.13.9135
BIOS Version 75.19.1b.00.00
ROPs 4
Shaders 48 unified
Memory Type DDR3
Physical Memory 2047 MB
Virtual Memory 2048 MB
Bus Width 32x2 (64 bit)
Filtering Modes 16x Anisotropic
Noise Level Silent
Max Power Draw 29 Watts
Count of performance levels : 2
Level 1 - "2D Desktop"
GPU Clock 270 MHz
Memory Clock 540 MHz
Shader Clock 405 MHz
Level 2 - "3D Applications"
GPU Clock 810 MHz
Memory Clock 1620 MHz
Shader Clock 535 MHz


EDIT: I have another old crap nVidia, dont think I ever got that doing anything either. [GT206 or somethinglike that]
and same with some old AMD card.

EDIT: I should have 64 bit version of SDKs too, but cant seem to find them. [only 64 bit sdk I have is for Linux]

EDIT: There are (apparently) other OpenCl providers, WikiPedia:- https://en.wikipedia.org/wiki/OpenCL,
And the guys that govern the OpenCL standard, with lists of conformant Implementers of OpenCL[at bottom of page]:- https://www.khronos.org/opencl/

After my experience of trying to get OpenCL doing anything useful, I gave up, just dont care any more.

EDIT: And also some as yet non conformant providers, eg open source POCL:- http://portablecl.org/

Katie Boundary
2nd August 2019, 19:11
OMG Stainless you are literally the most helpful person on this whole forum. Have I ever told you that?

A Qwant search, plus following some links that seemed promising, revealed that version 3.0 of the AMD implementation can be found here:

http://amd-dev.wpengine.netdna-cdn.com/app-sdk/installers/APPSDKInstaller/3.0.130.135-GA/full/AMD-APP-SDKInstaller-v3.0.130.135-GA-windows-F-x86.exe
http://amd-dev.wpengine.netdna-cdn.com/app-sdk/installers/APPSDKInstaller/3.0.130.135-GA/full/AMD-APP-SDKInstaller-v3.0.130.135-GA-windows-F-x64.exe

If I'm using the 32-bit version of AVIsynth on a 64-bit OS, do I install the x86 version or the x64 version?

EDIT: "The operating system is not adequate for running AMD APP SDK 3.0". Son of a bitch.

I'm thinking of just using Virtualdub in win7 to create filtered and HuffYUV-compressed versions of the clips that I need, then loading them into my Premiere project in XP. Or maybe just do it all in Linux/WINE.