Log in

View Full Version : QMF & FMF v1.5 b1 (page 3)


Pages : 1 [2]

HomiE FR
7th July 2003, 20:27
Wilbert: I'd like to ask you a little question. I do not like to do some "hacks" in my little script, and this problem about resizing within motion filter functions isn't that simple to handle. Indeed, if people try to enlarge the video clip inside the functions, my "Crop hack" (I hope you remember what I suggested before) won't work. So I guess I need to do something else such as PointResize (which seems to be the fastest internal resizing filter).

If you believe this is the best solution, I'm ready to release a new version. :)

Then I'm a little worried about the memory leaks problems when using ScriptClip (necessary for the transitions handling). I really wanted that QMF had no problems with any Avisynth plugin, that's why I think I'll leave the transitions for FMF (which is a more complex QMF where the parameters within each motion level are scaled linearly according to current motion level). This way people can choose between a simple filter which can handle ANY Avisynth script without any problem and another script (more powerful) which has problems with plugins that have a memory leak. Does it sound right?

Wilbert
7th July 2003, 20:46
Indeed, if people try to enlarge the video clip inside the functions, my "Crop hack" (I hope you remember what I suggested before) won't work. So I guess I need to do something else such as PointResize (which seems to be the fastest internal resizing filter).
I forgot about upscaling. The problem is, there is a bug in PointResize.

I guess the best to do is the following: just use pointresize, but add a warning that upscaling should only be used in AviSynth v2.53 and more recent versions. I hope Sh0dan corrected the bug by that time, or maybe he has some time to release a bugfix :D

that's why I think I'll leave the transitions for FMF (which is a more complex QMF where the parameters within each motion level are scaled linearly according to current motion level). This way people can choose between a simple filter which can handle ANY Avisynth script without any problem and another script (more powerful) which has problems with plugins that have a memory leak. Does it sound right?
Good idea!

HomiE FR
7th July 2003, 21:10
Thanks for the quick answer! :) Then, I'll do what you suggest, and I'll try to post new versions in less than 12 hours (both FMF and QMF). I have a full system reinstall to do before releasing them so it could take a little more time.

Wilbert
7th July 2003, 21:19
Speaking of the devil :) Have a look at: http://cultact-server.novi.dk/kpo/avisynth/avs_cvs.html. The bug is probably fixed in the latest binary. Thanks Sh0dan!

sh0dan
7th July 2003, 21:25
PointResize is actually (believe it or not) stretching the limits of the generic resizer - my fix is an attempt to fix it - the results looks ok here, but I'm not 100% sure it's correct.

bond
10th July 2003, 10:58
any news about this great filter?

HomiE FR
10th July 2003, 15:29
Yes it'll come tonight (it's not the first time I say that I know, but this time it'll come :) ). I'm writing a little help file for FMF (I already did one in French before but I have to translate it), and QMF is okay now (maybe it'll be the final version I don't know yet, you'll say if there are still bugs).

But I have some problems with FMF, the version that will come out is beta (maybe even alpha), just for trials.

Thanks for waiting for it! ;)

HomiE FR
10th July 2003, 20:47
So there are two new releases tonight:

1. QMF (Quantified Motion Filter) v1.5 beta 1
This new version doesn't bring new features: on the contrary, the motion level transitions are gone (but don't worry, they are built-in inside FMF v1.5 b1, see below). The bug about resizing inside motion filter functions should be gone now. This release could be a final release for QMF (at least the final version with this kind of motion estimation and thresholds).
The objective of this script is to be usable with ANY Avisynth filter (which is NOT the case when using the ScriptClip function inside the script), so I believe that QMF has become very powerful, since the user can really tweak it according to his needs.

Link: QMF v1.5 b1 (http://perso.wanadoo.fr/homie.fr/qmf-1.5b1.rar)

2. FMF (Full Motion Filter) v1.5 beta 1
Ok now it gets a little bit more complicated! :) If you don't fully understand QMF (but I think it isn't that hard), don't try to play with FMF. To put it in a nutshell, FMF is just an improved version of QMF: improved in the sense that there are many more options inside FMF which make it more powerful, but these new features don't allow it to be usable with any Avisynth filter (the ScriptClip issue I talked about many times before).

I didn't have time to make a proper help file, but since I'm late I post a version with a little help in this post, I think everyone should understand how to use it.

How do FMF work?
There are 3 motion levels just like QMF (Low, Medium and High), but inside these motion levels the user can use variable parameters instead of fixed ones in QMF. For instance here are two Low motion filter functions, the first for QMF, the second for FMF.

FOR QMF:
function Low_Motion_Filter(clip c)
{
c = FluxSmooth(c,14,-1)
c = UnFilter(c,-10,-10)
return c
}

FOR FMF:
function Low_Motion_Filter(clip c)
{
c = FluxSmooth(c,param1_lm,-1)
c = UnFilter(c,param2_lm,param2_lm)
return c
}

You can see the paramx_lm (lm for low motion, there are also paramx_mm and paramx_hm) for FMF, which are parameters which are linearly scaled on each frame according to the current motion level (not only low, medium and high but also the current average difference between the current frame and its neighbours). That's why it's more powerful than QMF: the filtering is really adapted for each frame (if the user does its job right).

How can we control these parameters in FMF?
When you call FMF, you must specify what the ranges for each used parameter are. For instance, in the example above, I should use at least write that (I don't take medium and high motion into account but they work the same):

FMF(param1_lm_min=14,param1_lm_max=7, \
param2_lm_min=-10,param2_lm_max=-20, \
...

param1_lm_min is the value for param1_lm when the current average difference is <= to the lower side of the low motion level.
param1_lm_max is the value for param1_lm when the current average difference is = to the upper side of the low motion level.

NOTE: There is no problem if param2_lm_min > param2_lm_max, the min and max are for min current average difference and max current average difference.

How can we set the different limits between the motion levels?

There are some thresholds (already defaulted) inside FMF:

THESE THRESHOLDS ARE FOR THE CURRENT AVERAGE DIFFERENCE, THE ONE YOU CAN SEE WITH DEBUG=TRUE (the debug thing looks like the one in QMF, just some more infos).

1. Below threshold_min, the low motion filter is used with the parameters fixed at their min values.
2. Between threshold_min and threshold_lm, the low motion filter is used with the parameters scaled (linearly) between their min and max according to the current average difference.
3. Between threshold_lm and threshold_hm, the medium motion filter is used with the parameters scaled (linearly) between their min and max according to the current average difference.
4. Between threshold_hm and threshold_max, the high motion filter is used with the parameters scaled (linearly) between their min and max according to the current average difference.
5. Above threshold_max, the high motion filter is used with the parameters fixed at their max values.

When a motion level function is applied to the video clip, the two other motion level functions are ignored for this frame.

I hope it does make sense, I already released this script on a French forum called Unité-Vidéo and the people understood it really quickly,so I guess it does make sense.

Now I quote the parameter list for FMF:

function FMF(clip c,
\ float "threshold_min",float "threshold_lm",
\ float "threshold_hm",float "threshold_max",
\ float "threshold_sc_min",float "threshold_sc_max",
\ int "distance_sc_min",
\ float "temporal_influence",bool "chroma",
\ int "transition_length",bool "debug",
\ val "param1_lm_min",val "param1_lm_max",
\ val "param2_lm_min",val "param2_lm_max",
\ val "param3_lm_min",val "param3_lm_max",
\ val "param4_lm_min",val "param4_lm_max",
\ val "param5_lm_min",val "param5_lm_max",
\ val "param1_mm_min",val "param1_mm_max",
\ val "param2_mm_min",val "param2_mm_max",
\ val "param3_mm_min",val "param3_mm_max",
\ val "param4_mm_min",val "param4_mm_max",
\ val "param5_mm_min",val "param5_mm_max",
\ val "param1_hm_min",val "param1_hm_max",
\ val "param2_hm_min",val "param2_hm_max",
\ val "param3_hm_min",val "param3_hm_max",
\ val "param4_hm_min",val "param4_hm_max",
\ val "param5_hm_min",val "param5_hm_max")

So you can find the threshold values that I talked about. There are also the parameters for each motion level (I put five "moving" parameters for each motion level, I believe it should be enough).
You can also find threshold_sc_min and threshold_sc_max which are the min and max scene change thresholds. The scene change threshold is just like a "moving" parameter, but it's scaled between threshold_min and threshold_max (so a bigger scale than the other "moving" parameters). Distance_sc_min, temporal_influence, chroma and debug are just the same as if in QMF.

The last (but not least) parameter is transition_length. It's the length in frames for the transitions between motion levels, so that these transitions aren't noticed. It's defaulted at 10, but you can disabled it with the 0 value if you don't like it (but why?).

Here is the link: FMF v1.5 b1 (http://perso.wanadoo.fr/homie.fr/fmf-1.5b1.rar)

Ok that's all for now, I'm here if there is any help needed (I think that I'm not the guy with clean explanations, so I don't mind "trying to" help).

Thanks for testing these scripts, I don't guarantee any results! :)

bond
10th July 2003, 22:24
great work!

one question:
the scene change thresholds are not clear to me:
if the old default ones were 30<40<50 does this mean the new equivalents are 30 (min) and 50 (max) and the thresholds are scaled linearly independently of the motion levels?

and then it would be great if you could tell us the new default settings.

thanks again for your great filter :)

sh0dan
10th July 2003, 22:30
Very nice work! Looking forward to getting to know this one! :)

A word of advice: Cut out your excellent explanation above and paste it into a html/txt file and put it along with the script. Furthermore - if you give your script a ".avsi" extension it fits right into the plugin directory along with the documentation! :)

HomiE FR
10th July 2003, 22:47
@bond: Thanks. Ok let's write all the defaults:

threshold_min = 0.0
threshold_lm = 4.0 (chroma=true) or 5.0 (chroma=false)
threshold_hm = 12.0 (chroma=true) or 15.0 (chroma=false)
threshold_max = 16.0 (chroma=true) or 20.0 (chroma=false)
threshold_sc_min = 20.0 (chroma=true) or 30.0 (chroma=false)
threshold_sc_max = 40.0 (chroma=true) or 60.0 (chroma=false)
distance_sc_min = 10
temporal_influence = 50.0 (means 50%)
chroma = false
transition_length = 10 (frames)
debug = false

I hope it helps! :)

@sh0dan: Thanks a lot for the advices (advice could be uncountable...)
I'll do the proper help file tomorrow morning, and I'll use the .avsi extension (I didn't know it existed!).

bond
10th July 2003, 23:28
thanks, thats a nice guideline!

two things on the "negative" side:

1) it seems that fmf doesnt really seem to work with nic's mpegdecoder (doesnt support seeking) because of jumping scenes (old scenes are shown again aso...)
this problem doesnt seem to occur with mpeg2dec3 (which means a speed loss of course compared to mpegdecoder)

2) I got the following error message while playing back a fmf script in vd (with debug on) exactly after the frame before a scene change:
"avisynth read error, avisynth caught an access violation at 0x01a2106c, attempting to read from 0x00142a11"
my fmf sttings were:
FMF(4,7,16,25,13,50,debug=true,parameter settings)

EDIT: added 2)

CruNcher
11th July 2003, 15:11
@ HomiE FR

i still get the same text message overlayed that says

Evaluate: Unrecognized exception!
([Conditio([ScriptClip]line1 <- i think 2 messages are overlayed
([ScriptClip],line 1)

i also tried to deactivate plugin autoloading by changing the plugins dirname and loading the plugings mpeg2dec3 and simpleresize with the Loadplugin command ,but it doesn't helped a similiar error also occours in the FMF script

Evaluate: Unrecognized exception!
([Conditio([ScriptClip]line1 <- i think 2 messages are overlayed
(fmf-1.5b1.avs, line 206)
(fmf-1.5b1.avs, line 263)
([ScriptClip],line 1)

anybody a idea ? got the newest avisynth version from shodans site

HomiE FR
11th July 2003, 22:33
@bond: I have the same crashs when using filters with memory leaks... Could you do some Ctrl+Alt+Del (if you're using Win2000/XP) and tell me if the memory usage is growing abnormally fast. Thanks.

@Cruncher: I don't know where it comes from: did you use the defaults parameters for FMF? If not, could you please provide the parameters used? Thanks in advance. :)

bond
11th July 2003, 22:58
Originally posted by HomiE FR
[B]@bond: I have the same crashs when using filters with memory leaks... Could you do some Ctrl+Alt+Del (if you're using Win2000/XP) and tell me if the memory usage is growing abnormally fast.sorry i am using winme :(

i used
undot
unfilter
temporalcleaner
mpeg2dec3 1.08
bicubic, simple and bilinear resize

CruNcher
11th July 2003, 23:39
@ HomiE FR

i still try it with that simple script one page ago


import("qmf-1.5b1.avs")

function Low_Motion_Filter(clip c)
{
c = LanczosResize(c,640,272)

return c
}

function Medium_Motion_Filter(clip c)
{
c = BicubicResize(c,640,272)

return c
}

function High_Motion_Filter(clip c)
{
c = SimpleResize(c,640,272)

return c
}

MPEG2Source("pearlharbor.d2v",idct=5,cpu2="oxxxxx")
crop(2,74,716,428)
QMF()


also the same ([scriptclip], line 1) error



import("fmf-1.5b1.avs")

function Low_Motion_Filter(clip c)
{
c = UnFilter(c,param1_lm,param1_lm)

return c
}

function Medium_Motion_Filter(clip c)
{
c = UnFilter(c,param1_mm,param1_mm)

return c
}

function High_Motion_Filter(clip c)
{
c = UnFilter(c,param1_hm,param1_hm)

return c
}

MPEG2Source("pearlharbor.d2v",idct=5,cpu2="oxxxxx")
crop(2,74,716,428)
LanczosResize(640,272)
FMF(param1_lm_min=14,param1_lm_max=7, \
param1_mm_min=14,param1_mm_max=7, \
param1_hm_min=14,param1_hm_max=7)

tempetai
13th July 2003, 19:32
I don't know whether this happen to everyone or only happen to me. OK on version 1.3 and 1.4, but when I use version 1.5b1, the frame 0 of my clip will be shown again at frame 300. A few more incorrect frame has occurred at 305, 318 and so on.

HomiE FR, perhaps you can check this out.

HomiE FR
13th July 2003, 22:31
@bond, CruNcher & tempetai: Ok thanks for the bug reports, I'll check everything tomorrow morning. :)

ssaga
14th July 2003, 02:06
Originally posted by tempetai
I don't know whether this happen to everyone or only happen to me. OK on version 1.3 and 1.4, but when I use version 1.5b1, the frame 0 of my clip will be shown again at frame 300. A few more incorrect frame has occurred at 305, 318 and so on.

Which source plugin did u use?
If you're using Nic's Mpegdecoder plugin, and move randomly in VirtualDub, u may got this problem.

I'm using mpeg2dec3 and I didn't find any duplicate frames with FMF.
Hope this imformation can help u.;)

tempetai
14th July 2003, 02:47
ssaga, thanks for the info. I already been using mpeg2dec3 since I play around with HomiE's excellent script.

Now OK after take out the GoldDust filter from High Motion Filter function. I guess the QMF does not like GoldDust.

cweb
14th July 2003, 07:52
I am trying out your qmf script version 1.5b1 and I've got the latest cvs binary installed of Avisynth 2.52 (the one dated 11th july 2003). It tells me "Script error: there is no function named ConditionalFilter" (qmf-1.5b1.avs, line 105). I think it's a bug in the latest cvs... :)

I'm reinstalling Avisynth 2.52 from the sourceforge project page for the moment.
Edit: oops - avisynth 2.52 did the same thing. I'm using Virtualdubmod (latest cvs binary) by the way. I think I found the culprit. Virtualdubmod's directory contained another avisynth.dll. I renamed this (rather than deleting it, for the moment) and IT WORKED. I think it was left over from a previous version. It was dated March..

So if you have the same error message like I got, check whether you have
another avisynth.dll somewhere such as the VirtualDubMod directory. You should be able to safely delete it (or just rename it like I did).

cweb
14th July 2003, 08:17
Originally posted by ssaga
Which source plugin did u use?
If you're using Nic's Mpegdecoder plugin, and move randomly in VirtualDub, u may got this problem.

I'm using mpeg2dec3 and I didn't find any duplicate frames with FMF.
Hope this imformation can help u.;)

I did a small test with Nic's Mpegdecoder and VirtualDubMod, and QMF 1.5b1 - there were no duplicate frames. So using QMF may be a solution also.

Edit: I did another test and the first frame looked like a frame from further on, so you were right... it seems there is an interaction.

I also noticed some corrupted blocks when viewing with virtualdubmod - they were not there with mpeg2dec3.

MasterYoshidino
15th July 2003, 20:24
omg this is what I was lookin for all this time (a filter to get rid of edge crawl in anime, happens when someone masters a dvd to have no rainbows but leaves the line edge crawl effect in)

Something to temporal filter heavily on luma but just on low motion :)

:D good job on this nice coding

HomiE FR
17th July 2003, 08:53
Thanks for the nice reports! :)

I don't use Nic's MPEGDecoder so I wasn't aware of this problem of duplicate frames... I really don't know what to do about it, so I suggest using MPEG2Dec3 instead (sorry).

@tempetai: Thanks for the info. I'll try GoldDust too.

@cweb: Thanks for explaining your problems (and your solutions to them too :p ). It seems it would be safer to use MPEG2Dec3 with QMF/FMF. I'll add a warning in the readme.

@MasterYoshidino: Thanks. I'm really happy if this script can help. :)

There are not so many bugs it seems, apart from GoldDust and Nic's MPEGDecoder.

Didée
17th July 2003, 11:40
When Steady introduced his Dust filter package, he stated that dust *must not* appear in more than one instance in the filter chain.

- Didée

HomiE FR
17th July 2003, 14:37
Didée: Thanks, it may explain why GoldDust doesn't get along well with QMF/FMF.

AlphaDivxMovies
2nd August 2003, 18:55
Originally posted by CruNcher
@ HomiE FR

i still get the same text message overlayed that says

Evaluate: Unrecognized exception!
([Conditio([ScriptClip]line1 <- i think 2 messages are overlayed
([ScriptClip],line 1)

i also tried to deactivate plugin autoloading by changing the plugins dirname and loading the plugings mpeg2dec3 and simpleresize with the Loadplugin command ,but it doesn't helped a similiar error also occours in the FMF script

Evaluate: Unrecognized exception!
([Conditio([ScriptClip]line1 <- i think 2 messages are overlayed
(fmf-1.5b1.avs, line 206)
(fmf-1.5b1.avs, line 263)
([ScriptClip],line 1)

anybody a idea ? got the newest avisynth version from shodans site

Altough QMF 1.5b1 seems to work properly, FMF 1.5b1 spits out the exact same error in the the exact same way but at different (i think) lines. VirtualDubMod (latest bug fix) crashes the encoding and displays an error message saying there was some avisynth reading error error of sorts, the resulting avi is marked with the error messages described above until VdubMOD crashes the encoding.
I have all the latest versions of required software, problem prevails even when changing to more "stable" versions of Avisynth and VDubMOD. The only filters used are FluxSmooth, Unfilter and Undot.
Trying only the first two results are the same. I am baffled since i cannot pinpoint the problem, i am sure it is not the main avs script since i tried almost every possible variation.

Ps(Until it crashes it seems to work well!)

Script:

#SET FUNCTION VALUES
SetMemoryMax(40)
PluginPath ="C:\MAINUS~1\MULTIM~1\Video\GKnot\"

#SET PLUGINS
LoadPlugin("C:\MAINUS~1\MULTIM~1\Video\GKnot\MPEG2Dec3.dll")
LoadPlugin("C:\MAINUS~1\MULTIM~1\Video\GKnot\FLUXSMOOTH.dll")
LoadPlugin("C:\MAINUS~1\MULTIM~1\Video\GKnot\UNDOT.dll")
LoadPlugin("C:\MAINUS~1\MULTIM~1\Video\GKnot\UNFILTER.dll")

#LOADING FMF SCRIPT
Import("C:\MAINUS~1\MULTIM~1\Video\GKnot\fmf-1.5b1.avs")

# LOW MOTION FILTER FUNCTION
# -> STRONG FRAME ADAPTED TEMPORAL SMOOTHING (USING FLUXSMOOTH)
# -> SOFT FRAME ADAPTED SPATIAL SMOOTHING (USING UNFILTER)

function Low_Motion_Filter(clip c)
{
c = FluxSmooth(c,param1_lm,-1)
c = UnFilter(c,param2_lm,param2_lm)
return c
}

# MEDIUM MOTION FILTER FUNCTION
# -> MEDIUM FRAME ADAPTED TEMPORAL SMOOTHING (USING FLUXSMOOTH)
# -> MEDIUM FRAME ADAPTED SPATIAL SMOOTHING (USING FLUXSMOOTH AND UNFILTER)

function Medium_Motion_Filter(clip c)
{
c = FluxSmooth(c,param1_mm,param2_mm)
c = UnFilter(c,param3_mm,param3_mm)
return c
}

# HIGH MOTION FILTER FUNCTION
# -> NO TEMPORAL SMOOTHING
# -> STRONG FRAME ADAPTED SPATIAL SMOOTHING (USING FLUXSMOOTH AND UNFILTER)

function High_Motion_Filter(clip c)
{
c = FluxSmooth(c,-1,param1_hm)
c = UnFilter(c,param2_hm,param2_hm)
return c
}


# OPENING VIDEO SOURCE
MPEG2Source("E:\DVD Ripping Layouts\The Deep End\THE_DEEP_END\DeepEnd.d2v",cpu=4,moderate_h=40,moderate_v=40,iDCT=2)

# CROPPING AND CUTTING THE VIDEO SOURCE
crop(2,74,716,432)

#APPLYING GENERAL STRAY PIXEL REMOVER
Undot()

# APPLYING FRAME BY FRAME ADAPTATIVE SPATIO-TEMPORAL SMOOTHER (USING FMF)
FMF(param1_lm_min=14,param1_lm_max=7,param2_lm_min=-1,param2_lm_max=-4,param1_mm_min=7,param1_mm_max=5,param2_mm_min=3,param2_mm_max=7,param3_mm_min=-2,param3_mm_max=-4,param1_hm_min=8,param1_hm_max=14,param2_hm_min=-4,param2_hm_max=-8)


# RESIZING VIDEO CLIP
LanczosResize(640,272)

# TWEAKING BRIGHTNESS AND OTHER PROPERTIES
#tweak(-1.5,1.6,3,1.1)
Limiter()

The VdubMod error message is:
Avisynth read error: avisynth:caught an access violation at 0x01a2187a
attempting to read from 0xfffff

bond
2nd August 2003, 22:37
any fmf updates, because of the above mentioned errors?

HomiE FR,
i hope it is still under development as it is really a great idea imho

HomiE FR
3rd August 2003, 14:59
I just came back from holidays. :) I'll have time to check any possible bugs (and looking at the last posts it seems there are some). Thanks again for the interest!

Assault
19th August 2003, 18:22
@ AlphaDivxMovies

I got the same error message today. Fluxsmooth seems to be the reason for this crash because when I removed it VdubMod didn't crash anymore. I think Fluxsmooth has a memory leak because the memory usage grows very fast when it is in use(as HomiE FR already suspected).

P.S.: I haven't read the whole thread. If this bug of Fluxsmooth has already been reported then please apologize.

Assault

Dreassica
19th August 2003, 19:00
i used fluxsmoth in combinatin with qmf a few times and never experienced the problem at all.

AlphaDivxMovies
19th August 2003, 19:10
Thanks for the tip, i just assumed that if it worked well with QMF i would have no "memory leaking" in FMF, but FMF is much more involved.
Any suggestions about a suitable replacement?
Gonna test it without FluxSmooth and gonna try to find ou if it is true about the memory leak.

Regards
AlphaDivxMovies

Assault
19th August 2003, 19:13
@ Dreassica
Yes, I didn't get a crash with qmf either. :)
But I think HomiE FR was right when he said that this crash occurs when you use FMF with filters which have memory leaks.

Assault

HomiE FR
20th August 2003, 16:16
Hi,

I'm really happy to see that QMF/FMF can be useful to anyone besides me. :) I'm really sorry for the problems with FMF, but in fact I can't do anything about them since I play with "high level" functions only. I can't unload plugins from memory (which could be a GREAT feature for Avisynth 3.0 even though I'm not sure this is possible...) so I depend on the plugins used in the script.

In latest FMF I use MergeLuma and MergeChroma for motion levels smooths transitions and I'm not even sure that these internal plugins have no memory leaks (I mean no bits left behind).

The only thing to do is to test a script before launching a full encode to see if the memory usage is stable. Pretty annoying but... :( Sorry. Or to use QMF which is quite good in fact. ;)

HomiE FR

PS : Feel free to share your problems/working scripts here, it'll help me (and others). Thanks in advance.

DDogg
20th August 2003, 16:27
FYI, just for the heck of it I did a search and replace on a modified version of the script AlphaDivxMovies posted above. replacing Fluxsmooth with TemporalCleaner and changing the parameters of the LM line:
c = FluxSmooth(c,param1_lm,-1) #(TC does not allow the -1)
to
c = TemporalCleaner(c,param1_lm,param2_lm)

I was just trying to verify if it was Fluxsmooth causing the memory problem and was not concerned about the parameters being passed to TC so long as it worked to test the memory problem.

The result was no more memory problems.

So, I am wondering if one of the programmers could take a look at the source of Fluxsmooth and see if they could fix the memory leaks? That does not sound like a lot of fun but it is a good filter and I hope somebody will feel it is worth the effort. Alternatively, could anyone suggest an alternative to Fluxsmooth that uses a similar technique?

AlphaDivxMovies
20th August 2003, 18:55
Yeah you are right, FluxSmooth is the culprit.
Too bad since my theory script depended on it.
Gonna check other available options and report back.

@Homie
The guys at http://www.kvcd.net/forum/ would love too see your work!
They make wide use of their Motion Adapted Optimal Scripts, check it out, your work is right on the sweetspot in here.

DDogg
20th August 2003, 19:25
Speaking of the MAF script, If you substitute fluxsmooth where they use temporal cleaner like this you get the exact same
memory leak problems.


mpeg2source("C:\usual\DVD2AV~1.D2V")
nf=0
GripCrop(480, 480+0+0, overscan=1, source_anamorphic=true, dest_anamorphic=false)
GripSize(resizer="BiCubicResize")
Undot()
Asharp(1, 4)
STMedianFilter(8, 32, 0, 0 )
MergeChroma(blur(1.58))
MergeLuma(blur(0.1))
SwitchThreshold = (Width<=352) ? 4 : (Width<=480) ? 3 : 2
ScriptClip("nf = round(YDifferenceToNext())"+chr(13)+ "nf >= SwitchThreshold ? unfilter(-(fmin(nf*2,100)),-(fmin(nf*2,100))) : Fluxsmooth(6+nf,11+nf) ")
GripBorders()
function fmin(int f1, int f2) { return (f1<f2) ? f1 : f2 }

DDogg
7th September 2003, 20:23
AlphaDivxMovies, did you (or anybody else) make any progress finding a replacement in the FMF script for fluxsmooth that would not exhibit the memory leak problem?
Gonna check other available options and report back.

NOTE: I noticed the Sep 3 CSV build of avisynth and the QMF script shows an error in mplayer (but not in VDub). It has been reported in the devel section. Never got an answer as to whether it was replicatable by others or specific to my setup only.

Wilbert
11th November 2003, 22:53
AlphaDivxMovies, did you (or anybody else) make any progress finding a replacement in the FMF script for fluxsmooth that would not exhibit the memory leak problem?
A new version of fluxsmooth is out (hopefully without memory leaks):

http://forum.doom9.org/showthread.php?s=&threadid=64831