Log in

View Full Version : fft3dGPU 0.8.2


Pages : 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19

aberforthsgoat
11th October 2005, 14:49
If you need deinterlace your video, put FFT3DGPU after deinterlacer. Also, try TDeint instead TomsMoComp.
FFT3DGPU don't have plane=2. plane=1 denoise all chroma planes.

Oh - OK! I carried that over from the fft3dfilter, thinking it would work here. Back to R-ing TFM ...

And I also just discovered that simply not re-weaving at the end takes care of my combing problem. GSpot say I've upped the ante to 50 FPS, which doesn't seem like a bad thing anyway, aprticularly since this is fast moving sports stuff. (Or am I making a fool of myself again? Sigh.)

Mike

tsp
11th October 2005, 20:24
aberforthsgoat: You will only have half the vertical resolution(and double framerate) if you don't weave the result.

Ferux
21st October 2005, 15:42
Hi,

Thank you for this great filter, the speed is x3 here (AMD Athlon 64 3500+ and Radeon 9800). The only problem for me is that I can't set the system in standby when using your filter. After resuming I receive the following message:

Unexpected error encountered

File:
Line: 387
Error Code: D3DERR_DEVICELOST (0x88760868)
Calling: ResetDevice
Do you want to debug the application?

When I hit 'No':

fft3dGPU

Direct3D device lost. Please restart the application



I use Avisynth 2.5.6 and VirtualDub 1.6.11.

tsp
22nd October 2005, 00:46
Do you have any other program running that are using directx 3D? The filter should handle resuming from standby without that error. It only happends if fft3dGPU can't reinitialize the graphics card. I did a resume from suspend with fft3dGPU and vdub 1.6.11 and what worked. You are using the latest version of fft3dgpu right?

Ferux
22nd October 2005, 01:54
I think that my Windows logon screen (which appears when resuming from standby) uses directx, because I have the same problem when switching users. :(

Leak
23rd October 2005, 12:19
I think that my Windows logon screen (which appears when resuming from standby) uses directx, because I have the same problem when switching users. :(
Ummm... making your system go into standby mode will completely power off the graphics card, which means you need to completely re-initialize both the driver and the part of the application that was using the card, so without tsp handling this gracefully in fft3dGPU it simply can't work - which is a pity, of course, if you happen to try to sleep next to a machine chugging away on a long encoding job; nothing like sending it into standby mode until breakfast... ;)

@tsp: where does the need to restart the application come from? Shouldn't it be enough to just re-init DirectX and upload all the needed data again, which might include re-processing a few earlier frames, if their data is needed for the current frame?

np: Stockfinster - Verge (All Becomes Music)

tsp
23rd October 2005, 14:42
leak: I do reinitialize DirectX. That error only occurs if the reinitializing fails for some reason. On my machine fft3dGPU handles a suspend/standby/hibernate without problem. In this case the error occurs because the directx device can't be reset. se this link: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/IDirect3DDevice9__TestCooperativeLevel.asp And fft3dGPU is not a fullscreen application so it doesn't need focus to work. Currently in fft3dGPU there is a 120 sec timeout before the error is reported. So maybe I set this value to low in this case?

Ferux could you post the script you use.

Leak
23rd October 2005, 21:26
Currently in fft3dGPU there is a 120 sec timeout before the error is reported. So maybe I set this value to low in this case?
I'm just going out on a limb here, but could it be that in his case the timeout triggers because it starts right before/during going into standby (as the applications aren't stopped, but the drivers have to be), so that if you wake the machine after more than 2 minutes it will have already timed out?

If he gets the message right after waking his machine instead of about 2 minutes later that's probably the case...

(All speculation, of course... ;))

np: Stockfinster - Last Report (All Becomes Music)

Ferux
24th October 2005, 23:30
Ferux could you post the script you use.


AVISource("E:\Video's in productie\Prullebak\4de video ffvfw quant1.avi",pixel_type="yuy2")

Trim(0,6303) ++ Trim(6422,12260) ++ Trim(12295,19201) ++ Trim(19218,21088) ++ Trim(21104,21508) ++ Trim(21573,23771) ++ Trim(23799,25292) ++ Trim(25327,29465) ++ Trim(29475,31139) ++ Trim(31143,31348) ++ Trim(31509,32302) ++ Trim(32657,33452) ++ Trim(33496,45127) ++ Trim(45149,51298) ++ Trim(51489,52859) ++ Trim(52911,58559) ++ Trim(58659,67096) ++ Trim(67113,73240) ++ Trim(73314,75169) ++ Trim(75192,81295) ++ Trim(81348,97794) ++ Trim(97905,108199) ++ Trim(108242,115934) ++ Trim(115980,119239) ++ Trim(119260,120939) ++ Trim(120986,122388) ++ Trim(122526,126301) ++ Trim(126415,141354) ++ Trim(141364,153625) ++ Trim(153690,155834) ++ Trim(155907,156938) ++ Trim(156961,174748) ++ Trim(174873,180006) ++ Trim(180029,200628) ++ Trim(200675,206831) ++ Trim(206854,207221) ++ Trim(207239,207567) ++ Trim(207810,211420) ++ Trim(211528,211639) ++ Trim(211670,219630)

AssumeTFF()
SeparateFields()
AssumeFieldBased()
SmoothDeinterlace(tff=true, doublerate=true)

ConvertToYV12()
FFT3DGPU(plane=0,bt=3,sigma=2.0,bw=48,bh=48,mode=1)
FFT3DGPU(plane=1,bt=3,sigma=2.0,bw=48,bh=48,mode=1)

Crop(12,0,-12,-12)

FadeIO2(150)

Subtitle("Video 4",first_frame=0,last_frame=350,align=5,size=60,text_color=$FFFFFF,y=225)
Subtitle("31-01-1991",first_frame=0,last_frame=350,align=5,size=60,text_color=$FFFFFF,y=315)
Subtitle("tot",first_frame=0,last_frame=350,align=5,size=60,text_color=$FFFFFF,y=370)
Subtitle("17-02-1992",first_frame=0,last_frame=350,align=5,size=60,text_color=$FFFFFF,y=425)
Subtitle("SPEELDUUR 2:24", first_frame=0,last_frame=275,align=5,size=14,text_color=$FFFFFF,y=495)
Subtitle("ZET DEBLOCKING OP IN DE DECODER", first_frame=0,last_frame=275,align=5,size=14,text_color=$FFFFFF,y=510)
Subtitle("CAPTURE DOOR VIRTUALDUB & DIVX QUANTIZER 93%", first_frame=0,last_frame=275,align=5,size=14,text_color=$FFFFFF,y=525)
Subtitle("POSTPROCESSING DOOR AVISYNTH: TRIM, SMOOTH DEINTERLACE, FFT3DGPU, CROP, FADE EN TITELS", first_frame=0,last_frame=275,align=5,size=14,text_color=$FFFFFF,y=540)
Subtitle("VIDEO CODERING: XVID (MPEG4-ASP) 2PASS 3300KBPS, GECODEERD IN OKTOBER 2005", first_frame=0,last_frame=275,align=5,size=14,text_color=$FFFFFF,y=555)



After the 'smooth deinterlacer', the video has 50 fps. This took 24h for a 2:24 homevideo. If I process this with FFT3DFILTER, it takes 3 days. So I open this script in Virtual Dub 1.6.11, check 'fast recompress' and save it to FFVFW Quantizer 1 (latest version). (and later on, I encode it to XviD in 2 passes).

My system is:
Athlon 64 3500+
MSI Neo2 Platinum
1024MB Ram
Radeon 9800 Pro

The OS is Windows XP SP2 (not an x64 edition)

I noticed that the problem also occurs when I touch the PC when the screensaver is on and when I switch to another WinXP-user.

Currently in fft3dGPU there is a 120 sec timeout before the error is reported. So maybe I set this value to low in this case?

When I switch to another WinXP-user, it comes just after loging on. And that's much faster than 120 sec.


Thanks


nothing like sending it into standby mode until breakfast...

²!!!

Boulder
25th October 2005, 08:00
A little sidenote: you don't need SeparateFields() and AssumeFieldBased() in your script.

Ferux
25th October 2005, 12:16
A little sidenote: you don't need SeparateFields() and AssumeFieldBased() in your script.

I know, but without those 3 lines SmoothDeinterlace doesn't work! I have that problem since I use SmoothDeinterlace in AVISynth 2.56 instead of 2.08. But whatever, this makes no difference for FFT3DGPU.

Boulder
25th October 2005, 13:23
How about trying some other smart bobber such as LeakKernelBob (in LeakKernelDeint.dll) or TDeint(mode=1)? Seems weird that you need to separate the fields because in my logic the result won't be the same as you already have a 50fps stream before bobbing. Maybe it simply resizes the fields to full height?

LeakKernelBob should be quite a bit faster as well ;)

Ferux
25th October 2005, 23:21
How about trying some other smart bobber such as LeakKernelBob (in LeakKernelDeint.dll) or TDeint(mode=1)? Seems weird that you need to separate the fields because in my logic the result won't be the same as you already have a 50fps stream before bobbing. Maybe it simply resizes the fields to full height?

LeakKernelBob should be quite a bit faster as well ;)


I have tested a lot of deinterlacers for myself, and I found that SmoothDeinterlace was the best. So I used that deinterlacer already in Virtualdub and AVISynth 2.08. Last week I changed to AVS 2.56 and my previous script didn't work anymore (of course, I downloaded the right plugin for this new version). I searched a bit and found that the results after doing this:

AssumeTFF()
SeparateFields()
AssumeFieldBased()
SmoothDeinterlace(tff=true, doublerate=true)
has exactly the same result as this:

SmoothDeinterlace(tff=true, doublerate=true)

Why? I don't know (and I don't care), but it works.

Wilbert
26th October 2005, 00:05
Try the following version of SmoothDeinterlacer. It should work without any problems.

Attachment needs to be approved :)

Ok, here: http://www.geocities.com/wilbertdijkhof/SmoothDeinterlacer_25.zip

Revgen
26th October 2005, 03:06
To Nvidia users with dual-core systems:


The new 81.85 dual-core optimized drivers slow down FFT3DGPU.

I encoded a Huffyuv file and got about 10FPS with the older non-dualcore 81.26 driver. I got about 8fps with the 81.85's. Thats about a 20% decrease in performance. Which is about the same performance decrease that running FFT3DGPU using the MT filter does.

It does, however, improve performance in games that are CPU bound. So make sure to change your driver if you plan to encode.

tsp
26th October 2005, 19:44
Ferux: Could you try this (http://www.avisynth.org/tsp/FFT3dGPU.zip) version. I disabled the timeout so it might hang instead of reporting an error.

Ferux
28th October 2005, 18:42
Ferux: Could you try this (http://www.avisynth.org/tsp/FFT3dGPU.zip) version. I disabled the timeout so it might hang instead of reporting an error.

It doesn't work, but maybe something went wrong when uploading the file? This file is 390KB, the original FFT3DGPU is 1,02MB.




Try the following version of SmoothDeinterlacer. It should work without any problems.

It works, thanks!


Sorry for not answering more quickly, but I was already encoding for 3 days. Today it just finished..

tsp
28th October 2005, 20:23
It doesn't contain the source or the directx 9.0b version. Did it refuse to start or just showed the same error?

acrespo
30th October 2005, 03:25
Can be implement BT=-1 as described in fft3dfilter documentation:

Sharpening

At sharpening stage (after denoising) the plugin amplifies high spectrum (spatial, 2D) frequencies .
There is also sharpen-only mode without denoising (bt=-1).
Since version 1.1, some special limited sharpening method is used :

* the weakest frequencies (with small amplitudes) are not amplifyed to prevent noise increasing;
* the strongest frequencies (with large amplitudes) are not amplifyed to prevent oversharping and haloing.

The sharpening strength is maximal for frequencies with middle-range amplitudes. Of course, you can control both these margins and general sharpening strength.

Since v.1.7, Gaussian High Pass Filter with variable cutoff frequency is used for sharpening.
----------

I need a very fast sharpening plugin but all filters run very very low speed in my computer.

Ferux
30th October 2005, 10:18
It doesn't contain the source or the directx 9.0b version. Did it refuse to start or just showed the same error?

It refused to start:
"This application can't be started because d3dx9_2 can't be found."

The AVS error message:
"Script error: there is no function named "FFT3DGPU"

tsp
30th October 2005, 13:01
Ferux: I hoped that wouldn't happend. Same problem as with the new virtualdub. You can solve it by installing the latest version of directx: http://www.microsoft.com/downloads/details.aspx?FamilyId=9930EFA6-9F7B-4C8A-AEA2-97DD6AB307A2&displaylang=en
if you have a slow connection (the file is about 34 MB!) I have compressed the neccesary files in this (http://www.avisynth.org/tsp/directx.zip) zip file (2 MB). Just exctract them to windows\system32

acrespo: I'm working on it. But it will take a while

Ferux
30th October 2005, 22:03
I installed that DirectX.

When I open a AVS-script in AVISynth, I get these messages (about 20 of them):

C2R (The title is always different)

C:\Program Files\AviSynth2\plugins\ps.hlsl(524): warning X3083: Truncating 4-vector to size 1


After clicking these messages away, I can use VirtualDub like always. So, I save and AVS starts processing. No problems, until I trie to go to another Windows-user. When I log on to this Windows user (where AVS is running), it gives a lot of errors like these:


File:
Line: 1249
Error Code: S_OK (0x00000000)
Calling: FFT3p
Do you want to debug the application?

File:
Line: 1047
Error Code: S_OK (0x00000000)
Calling: WFilter
Do you want to debug the application?

File:
Line: 1317
Error Code: D3DERR_INVALIDCALL (0x8876086c)
Calling: iFFT3p
Do you want to debug the application?

File:
Line: 684
Error Code: S_OK (0x00000000)
Calling: BitReverseButterFlyV
Do you want to debug the application?

File:
Line: 947
Error Code: S_OK (0x00000000)
Calling: ButterflyCollectV
Do you want to debug the application?


...and many more.

After clicking those messages away, the processing continues! But AVS changed the color of 4 frames (it must have been at the time those errors occured).

When I'm "in" the other Windows user, I see that the CPU usage is about 0%, so FFT3DGPU doesn't do anything at that moment.

tsp
2nd November 2005, 21:53
Ferux: Just to prove that I'm not dead here is a new version that might fix the corrupted frames after recovering (should also fix the popups).

You can get it here (http://www.avisynth.org/tsp/fft3dgpu_47.zip)

Ferux
4th November 2005, 17:48
And... it works! But I'm still having those colored frames. That's not really a problem because it's possible to replace those 4 frames in Virtualdub.


Many thanks for the support, tsp!

tsp
6th November 2005, 23:05
Ferux: Could you try this (http://www.avisynth.org/tsp/fft3dgpu_47.zip) version. It shouldn't produce those colered frames.

Ferux
7th November 2005, 20:06
Congrats, it works!

The messages in the beginning 'Truncating 4 vector size to 1' (+/- 20 of them) still apear, but the rest of the plugin seems to work normal.

Again, many thanks.

AI
8th November 2005, 06:52
tsp

I can not loadplugin your new plugin version fft3dgpu_47.zip from 6-november and FFT3dGPU_047.zip from 2-november

In both versions dll have small size - 400Kb, but ver 0.46.1 900kb

PS Excuse me, my very bad English

tsp
8th November 2005, 12:19
Ferux: Just replace the ps.hlsl file with the ps.hlsl file in the version in fft3dgpu_47.zip archive. If you did that and you still get the error could you post the line number it reports.

AI: Did you put the file d3dx9_25.dll in the your c:\windows\system32 directory? else try installing the latest directx version:
http://www.microsoft.com/downloads/details.aspx?FamilyId=9930EFA6-9F7B-4C8A-AEA2-97DD6AB307A2&displaylang=en

Ferux
8th November 2005, 16:52
Oh, sorry I forgot that ps.hlsl. Everything is OK now.

Great job tsp!

tsp
9th November 2005, 21:44
good I posted the new version 0.47 at the first post. Only new is the above fix and the readme.txt has been renamed to fft3dgpu.txt

aberforthsgoat
21st November 2005, 09:41
Hmm.

I just tried installing the latest version of fft3dgpu - and AVS says it cant load. I copied *both* the new version of ps.hlsl and the new version of fft3dpgu into my plugins directory. As soon as I revert back to the version 0.42 stuff, everything is fine again.

Any tips?

Mike

tsp
21st November 2005, 11:31
aberforthsgoat: from the first post:

if you don't have the latest version of directx installed (october 2005) you can get it here: http://www.microsoft.com/downloads/...&displaylang=en(34 MB)
or extract the file d3dx9_25.dll to the c:\windows\system32 directory or use the directx 9.0b version.

Did you try that?

AI
21st November 2005, 12:04
2 tsp

add string about "d3dx9_2x.dll" to change list, and bold this text in first post

(becouse this is not obviously)

PS Excuse my very bad English :(

tsp
21st November 2005, 14:32
added a comment to the changelog about reading the install instructions. Also I got the degrid working for bt=1 but it seems to only work well with mode=1. I will release the next version then degrid has been added to bt=2,3 (might also change the sharp code to)

ariga
25th November 2005, 14:36
Version 0.46 with a GeForce FX 5600 Ultra, I get

Line: 605
Error Code: D3DERR_INVALIDCALL (0x8876086c)
Calling: Create TextureM:Texture

Line: 380
Error Code: D3DERR_INVALIDCALL (0x8876086c)
Calling: FFT2dRR::Create R2CLUT

Using DirectX 9c, 2.6GHz P4 HT.

tsp
26th November 2005, 03:01
ariga: I will post the next version shortly but please post your script else it is very difficult to figure out that is wrong.

tsp
26th November 2005, 15:57
ok version 0.5 is ready to download. Includes Kalman, sharpening, bt=4, degrid from fft3dfilter. Degrid only works well with mode=1. Also currently Kalman filtering is not supported on the geforce fx 5xxx. Rewrote some of the code so it might be faster than the last version.

Chainmax
26th November 2005, 16:39
Thanks for this much expected update, keep up the good work :).

Fizick
26th November 2005, 17:33
degrid: ... (but it does degrid sharpening with kalman
What is degrid sharpening?

tsp
26th November 2005, 18:16
sharpening with degrid.

tsp
26th November 2005, 23:06
Uploaded version 0.5a. It fix a bug with bt=2. Only file changed is fft3dgpu.hlsl.

Revgen
26th November 2005, 23:59
What is degrid sharpening?

sharpening with degrid.

LOL :D

I'll eventually try it out and see how it works, once I find some time.

Kopernikus
27th November 2005, 19:13
@tsp: Is there somewhere more information about shader programming available? Perhaps a sort of SDK?

AssassiNBG
27th November 2005, 19:57
Umm ... am I blind or is there no new version on http://www.avisynth.org/tsp/ ?

tsp
27th November 2005, 20:33
Sorry forgot to update the index page. It should be fixed now. Also I uploaded a new version 0.51 that fixes a bug where the parameters after NVPerf was shifted one place so degrid=scutoff,scutoff=svr, etc. Improved download speed from GPU and Kalman should work with geforce fx 5xxx.

I created a special version of fft3dGPU that reports the time it takes to download the final image from the gpu. You can get it here (http://www.avisynth.org/tsp/bwtest.zip). Just run the included download speed.avs after the included fft3dgpu.dll has been extracted to the plugin directory. On my computer with a AGP Geforce 6800GT it takes ~4.3 mikrosec to download it. That's about 100 MBytes/sec 92MBytes/sec (the other is million bytes/sec). AGPx8 speed upload speed is about 2100 MBytes/sec. So if anyone with a PCI-express GPU would run the test to compare the result.

Kopernikus: There are the DirectX SDK (http://msdn.microsoft.com/directx/sdk/) that contains some sample. Also both NVidia (http://developer.nvidia.com/object/sdk_home.html) and ATI (http://www.ati.com/developer/radeonSDK.html) have SDK available. Most of the sample is game orientatet but there are also some image/video and general purpose GPU (GPGPU) shader examples. The sample chapters (http://www.ati.com/developer/shaderx/index.html) from the ShaderX bookseries contains some nice sample for image manipulations on the GPU.
www.gpgpu.org is also a good site although mostly OpenGL.

Kopernikus
27th November 2005, 20:58
Thank you

ariga
28th November 2005, 11:02
ariga: I will post the next version shortly but please post your script else it is very difficult to figure out that is wrong.

It's a simple
AviSource("dv.avi")
LeakKernelDeint(order=0)
FFT3DGPU() # no params

Doesn't matter what params i pass, the error is the same.

BTW, I tried 0.47 and it complained about missing d3dx9_27.dll

Just d/l 0.51. Will see if it works.

acrespo
28th November 2005, 14:57
I am trying a compare between FFT3Dfilter and FFT3DGPU.

FFT3Dfilter is more efficient than FFT3DGPU in my anime captures. The parameters I used:

FFT3DFilter(sigma=5, sharpen=1.0) << version 1.8.3
FFT3DGPU(sigma=5, bh=48, bw=48, mode=1, sharpen=1.0) << version 0.5a

I still have some grid lines with fft3dgpu in some frames and fft3dfilter don't have any grid in all video. I guess the only thing is different in the parameters above is the overlap. The default overlap in fft3dfilter is bw,bh/3 and I don't know the default overlap of fft3gpu.

tsp
28th November 2005, 15:16
all: I made an installer. It might be more userfrindly ;)

acrespo:the default overlap is ow=bw/2 oh=bh/2 currently that can't be changed. Also there where a bug in 0.5a that assigned the value from svr to degrid. So the default value was 0.3. That might explain it. That is fixed in 0.51. Another difference is the precision used. By default fft3dgpu uses 16 bit floating point precission while fft3dfilter uses 32 bit precision. You can change that by setting useFloat16=false. This slows down the filter and uses more memory on the GPU.

ariga: I don't get any errors with 0.51, fft3dgpu() and a Geforce fx 5200.

AI
29th November 2005, 05:16
I created a special version of fft3dGPU that reports the time it takes to download the final image from the gpu. You can get it here (http://www.avisynth.org/tsp/bwtest.zip). Just run the included download speed.avs after the included fft3dgpu.dll has been extracted to the plugin directory. On my computer with a AGP Geforce 6800GT it takes ~4.3 mikrosec to download it. That's about 100 MBytes/sec. AGPx8 speed upload speed is about 2100 MBytes/sec. So if anyone with a PCI-express GPU would run the test to compare the result.

ATI x700 DDR(I) 128bit, A64 3000+ S939

if core ratio = 4 (i.e. 800Mhz - min) = 7,5e-4 (sec?)
if core ratio = 9 (i.e. 1800Mhz) 1,2e-3 (sec?)

I can test in PIII800 fx5200, but later.