digitalFAQ.com Forums [Archives]

digitalFAQ.com Forums [Archives] (http://www.digitalfaq.com/archives/)
-   Video Encoding and Conversion (http://www.digitalfaq.com/archives/encode/)
-   -   KDVD: To denoise or not to denoise (split) (http://www.digitalfaq.com/archives/encode/13789-kdvd-denoise-denoise.html)

nicksteel 09-08-2005 01:33 PM

Thanks as usual, Boulder. :D I've been using your scripts for a long time. Will try this tonight.

Is this exactly what you mean?

LoadPlugin("C:\video\moviestacker\Filters\MPEG2Dec 3dg.dll")
LoadPlugin("C:\video\moviestacker\Filters\RepairSS E3.dll")
LoadPlugin("C:\video\moviestacker\Filters\RemoveGr ainSSE3.dll")
LoadPlugin("C:\video\moviestacker\Filters\SSE3Tool s.dll")

Mpeg2Source("C:\film\film.d2v",idct=7)

Crop(8, 60, 704, 360)# 60_60

LRemoveDust_YV12(17,2)

Addborders(0,60,0,60) # 60_60

ConverttoRGB24()
function LRemoveDust_YV12(clip input, int clmode, int "limit")
{
limit=default(limit,1)
clmode=default(clmode,17)
repmode = 2
clensed = Clense(input)
rep = Repair(clensed, input, mode=repmode)
rg = RemoveGrain(rep, mode=clmode)
return LimitChange(rg, input, limit, limitU=255)
}

Boulder 09-08-2005 02:42 PM

Nope, change LRemoveDust_YV12(17,2) to LRemoveDust_YV12(17,1). Other than that it's ok. I would also use Crop(8,60,704,360,true) as kassandro's filters might benefit speed-wise from it. Moving the colorspace conversion before AddBorders might also give some more performance.

supermule 09-09-2005 07:23 AM

Interesting article..............only one avs function works as superfilter and gives good results.

:roll: I was wondering if this superscript can be used for putting multiple movies in one DVD also......will it work ????

supermule 09-09-2005 08:24 AM

Quote:

Originally Posted by nicksteel
Thanks as usual, Boulder. :D I've been using your scripts for a long time. Will try this tonight.

Is this exactly what you mean?

LoadPlugin("C:\video\moviestacker\Filters\MPEG2Dec 3dg.dll")
LoadPlugin("C:\video\moviestacker\Filters\RepairSS E3.dll")
LoadPlugin("C:\video\moviestacker\Filters\RemoveGr ainSSE3.dll")
LoadPlugin("C:\video\moviestacker\Filters\SSE3Tool s.dll")

Mpeg2Source("C:\film\film.d2v",idct=7)

Crop(8, 60, 704, 360)# 60_60

LRemoveDust_YV12(17,2)

Addborders(0,60,0,60) # 60_60

ConverttoRGB24()
function LRemoveDust_YV12(clip input, int clmode, int "limit")
{
limit=default(limit,1)
clmode=default(clmode,17)
repmode = 2
clensed = Clense(input)
rep = Repair(clensed, input, mode=repmode)
rg = RemoveGrain(rep, mode=clmode)
return LimitChange(rg, input, limit, limitU=255)
}

First of all if I run this script I realized there is no mode 17 for removegrain causing an error and also which function runs limitchange() ???

nicksteel 09-09-2005 08:58 AM

Quote:

Originally Posted by supermule
LoadPlugin("C:\video\moviestacker\Filters\MPEG2Dec 3dg.dll")
LoadPlugin("C:\video\moviestacker\Filters\RepairSS E3.dll")
LoadPlugin("C:\video\moviestacker\Filters\RemoveGr ainSSE3.dll")
LoadPlugin("C:\video\moviestacker\Filters\SSE3Tool s.dll")


First of all if I run this script I realized there is no mode 17 for removegrain causing an error and also which function runs limitchange() ???

I think limitchange is part of "SSE3Tools.dll". Also note that I am using the "SSE3" versions due to my processor. I assume you are using the correct ones for your system.

nicksteel 09-09-2005 09:11 AM

Quote:

Originally Posted by Boulder
Quote:

Originally Posted by nicksteel
Think I will start with Boulder's routine (above). I don't know if my 2.8 Gateway 820 dual-core is Prescott P4 or not, so will try different SSE versions.

Try CPU-Z, it will tell you which instruction set your CPU can deal with. I'm quite sure you can use the SSE3 versions of Repair and RemoveGrain and SSETools.

I would also recommend you try tsp's MT plugin, it adds some multithreading capability to Avisynth. If you have a dual-core CPU which also supports hyperthreading, you could run 4 threads. Try MT("LRemoveDust(17,1)",4) and see if you notice any difference in the performance.

http://forum.doom9.org/showthread.php?t=94996

Remember to use the latest Avisynth, now at release candidate stage.

I'm going to try this this weekend with two complete encodes. I think my system will only run with 2 as a MT parameter as it supposedly doesn't hyperthread. Also, I still have XP Home Media running (not Pro), as I want to add a HDTV capture board and some of those require XP Media. We'll see.

Will use:

LoadPlugin("C:\video\moviestacker\Filters\MPEG2Dec 3dg.dll")
LoadPlugin("C:\video\moviestacker\Filters\RepairSS E3.dll")
LoadPlugin("C:\video\moviestacker\Filters\RemoveGr ainSSE3.dll")
LoadPlugin("C:\video\moviestacker\Filters\SSE3Tool s.dll")

Mpeg2Source("C:\film\film.d2v",idct=7)
Crop(8,60,704,360) # 60_60

LRemoveDust_YV12(17,1) # First test

and

MT("LRemoveDust_YV12(17,1)",2) # Second Test

ConverttoRGB24()
Addborders(0,60,0,60) # 60_60

function LRemoveDust_YV12(clip input, int clmode, int "limit")
{
limit=default(limit,2)
clmode=default(clmode,17)
repmode = 2
clensed = Clense(input)
rep = Repair(clensed, input, mode=repmode)
rg = RemoveGrain(rep, mode=clmode)
return LimitChange(rg, input, limit, limitU=255)
}

Boulder 09-09-2005 09:17 AM

Quote:

Originally Posted by supermule
Interesting article..............only one avs function works as superfilter and gives good results.

One function which contains many parts that affect the output.
Quote:

:roll: I was wondering if this superscript can be used for putting multiple movies in one DVD also......will it work ????
I put 2-3 movies per disc most of the time, note that I haven't used LRemoveDust with DVD sources much so it's not "the missing key". Everything depends on the complexity of the movie and the aspect ratio too.

Boulder 09-09-2005 09:20 AM

Quote:

Originally Posted by nicksteel
I'm going to try this this weekend with two complete encodes. I think my system will only run with 2 as a MT parameter as it supposedly doesn't hyperthread. Also, I still have XP Home Media running (not Pro), as I want to add a HDTV capture board and some of those require XP Media. We'll see.

I think any newer Intel processor should have HT capability..but you can check it in Task Manager. See how many CPU usage history boxes you've got, that many CPUs the OS sees. If you haven't installed Windows while hyperthreading has been enabled, it won't show up IIRC. Nevertheless, two threads should already give a nice boost.

Boulder 09-09-2005 09:22 AM

Quote:

Originally Posted by supermule
First of all if I run this script I realized there is no mode 17 for removegrain causing an error and also which function runs limitchange() ???

You'll need the latest RemoveGrain package, www.removegrain.de.tf .

nicksteel 09-09-2005 09:22 AM

Quote:

Originally Posted by Boulder
Quote:

Originally Posted by supermule
Interesting article..............only one avs function works as superfilter and gives good results.

One function which contains many parts that affect the output.
Quote:

:roll: I was wondering if this superscript can be used for putting multiple movies in one DVD also......will it work ????
I put 2-3 movies per disc most of the time, note that I haven't used LRemoveDust with DVD sources much so it's not "the missing key". Everything depends on the complexity of the movie and the aspect ratio too.

Boulder,

I am still mostly into PVR-250 captures. What exact modifications should I do to my above avs to use for testing. I get very clear analog cable captures as source. Also, what will be affect of changing size to 352x480 (half DVD) instead of cropping? I capture at 720x480 DVD Full.

Boulder 09-09-2005 09:30 AM

Quote:

Originally Posted by nicksteel
I am still mostly into PVR-250 captures. What exact modifications should I do to my above avs to use for testing. I get very clear analog cable captures as source. Also, what will be affect of changing size to 352x480 (half DVD) instead of cropping? I capture at 720x480 DVD Full.

I probably wouldn't change the script, possibly add CPU=4 to MPEG2Source for slight deblocking. If you decide to do the postprocessing, you should definitely update to the latest DGIndex/DGDecode package as there were some bugs fixed in the deblocking routines.

Do all the cleaning before downsizing to avoid any oversmoothing.

When I used the card, I disabled all internal denoising.

nicksteel 09-09-2005 09:42 AM

So, I should

Mpeg2Source("C:\capture\capture.d2v",idct=7)

Telecide/Decimate

LRemoveDust_YV12(17,1)

Resize
ConverttoRGB24()
Addborders()

supermule 09-09-2005 09:46 AM

Quote:

Originally Posted by nicksteel
Quote:

Originally Posted by supermule
LoadPlugin("C:\video\moviestacker\Filters\MPEG2Dec 3dg.dll")
LoadPlugin("C:\video\moviestacker\Filters\RepairSS E3.dll")
LoadPlugin("C:\video\moviestacker\Filters\RemoveGr ainSSE3.dll")
LoadPlugin("C:\video\moviestacker\Filters\SSE3Tool s.dll")


First of all if I run this script I realized there is no mode 17 for removegrain causing an error and also which function runs limitchange() ???

I think limitchange is part of "SSE3Tools.dll". Also note that I am using the "SSE3" versions due to my processor. I assume you are using the correct ones for your system.

From where can I download it, I searched without success.

EDIT: Got it....Its part of removegrain 0.9

Also I use SSE2 version for removegrain since the document says

Code:

The binary package contains four versions of RemoveGrain, two small dynamically linked versions RemoveGrain.dll, RemoveGrainSSE2.dll, RemoveGrainSSE3.dll  and the big staticly linked RemoveGrainS.dll. The first one only requires integer SSE (Athlon and Pentium 3 design), the second requires a SSE2 capable cpu (Pentium 4 or Athlon 64) and the third is for Prescott P4s only
I have pentium machine.

Boulder 09-09-2005 09:49 AM

Quote:

Originally Posted by nicksteel
So, I should

Mpeg2Source("C:\capture\capture.d2v",idct=7)

Telecide/Decimate

LRemoveDust_YV12(17,1)

Resize
ConverttoRGB24()
Addborders()

Yes.

Boulder 09-09-2005 09:52 AM

Quote:

Originally Posted by supermule
Quote:

I think limitchange is part of "SSE3Tools.dll". Also note that I am using the "SSE3" versions due to my processor. I assume you are using the correct ones for your system.
From where can I download it, I searched without success.

It's in the latest RemoveGrain package as well.
Quote:

Also I use SSE2 version for removegrain since the document says
Use it if your CPU supports it. Use CPU-Z to determine which instruction sets are available.

supermule 09-09-2005 10:26 AM

Quote:

Originally Posted by Boulder
Nope, change LRemoveDust_YV12(17,2) to LRemoveDust_YV12(17,1).

Thanks for your help "Boulder". But how does reducing the limit from 2 to 1 help. just for my understanding, how to handle the parameters for this function and how do they effect the picture quality/size by their Increase or decrease. ???

Boulder 09-09-2005 10:51 AM

Quote:

Originally Posted by supermule
Thanks for your help "Boulder". But how does reducing the limit from 2 to 1 help. just for my understanding, how to handle the parameters for this function and how do they effect the picture quality/size by their Increase or decrease. ???

The first parameter is the mode from RemoveGrain. Mode 17 is my favourite as it preserves thin lines much better than many other modes. Limit means the maximum amount of change per pixel.

The higher the limit, the closer the output gets to a regular RemoveGrain(mode=17), which is way too blurry for my taste.

Try this:
Code:

xxxSource()
a=last.subtitle("original")
b=LRemoveDust_YV12(17,1).subtitle("17,1")
c=LRemoveDust_YV12(17,2).subtitle("17,2")
d=LRemoveDust_YV12(17,3).subtitle("17,3")
e=LRemoveDust_YV12(17,4).subtitle("17,4")
Interleave(a,b,c,d,e)

Open it in VDub and advance frame-by-frame. You can clearly see how changing the limit affects the output.

supermule 09-09-2005 12:33 PM

Quote:

Originally Posted by Boulder
Quote:

Originally Posted by supermule
Thanks for your help "Boulder". But how does reducing the limit from 2 to 1 help. just for my understanding, how to handle the parameters for this function and how do they effect the picture quality/size by their Increase or decrease. ???

The first parameter is the mode from RemoveGrain. Mode 17 is my favourite as it preserves thin lines much better than many other modes. Limit means the maximum amount of change per pixel.

The higher the limit, the closer the output gets to a regular RemoveGrain(mode=17), which is way too blurry for my taste.

Try this:
Code:

xxxSource()
a=last.subtitle("original")
b=LRemoveDust_YV12(17,1).subtitle("17,1")
c=LRemoveDust_YV12(17,2).subtitle("17,2")
d=LRemoveDust_YV12(17,3).subtitle("17,3")
e=LRemoveDust_YV12(17,4).subtitle("17,4")
Interleave(a,b,c,d,e)

Open it in VDub and advance frame-by-frame. You can clearly see how changing the limit affects the output.

Hmmmm....which basically means that the higher the limit the more softer the picture will become and so more compression can be performed and lesser file size, right and vice versa.

Boulder 09-09-2005 12:41 PM

Exactly.

Dialhot 09-09-2005 02:42 PM

Boulder, your little demo script is somehow erroneous.

like you did c is not LremoveDust(17,2), it is LremoveDust(17,1).LremoveDust(17,2) !

I don't know if this was what you supposed (but this demultiplicate the power of the lesson)).

Boulder 09-09-2005 03:08 PM

It shouldn't be like that as Avisynth always assumes "last" at the beginning.

That is: a,b,c,d and e are not connected to each other, they get the video as it is directly after xxxSource().

Dialhot 09-09-2005 03:44 PM

Quote:

Originally Posted by Boulder
It shouldn't be like that as Avisynth always assumes "last" at the beginning.

Exactly.
Quote:

That is: a,b,c,d and e are not connected to each other, they get the video is it is directly after xxxSource().
That is not like I understand this.
last is the result of the last command that produced a clip.
So last = b after the first line, then last = c, then last = d.
If you want to force each LremoveDust to affect a, you have to use "a" as first parameter.

But what I read in the doc seems to say you are right :
Quote:

variable_name = expression

In this example expression is evaluated and the result is assigned to variable_name.

Very important is the common shortcut form:

expression

In this case, expression is evaluated and the result is assigned to the special clip variable last.
This is the same as

last = expression
last is set only if no other variable is used. I discovered something. :o

Boulder 09-09-2005 04:05 PM

You'll see the behaviour already from the overlayed subtitle. If "a was last" for b etc., all the subtitles would be overlayed over each other.

It's also fast to check
Code:

a=LeakKernelDeint(order=1).Greyscale()
b=LeakKernelDeint(order=1)
Interleave(a,b)

and see what that does: every other frame is b/w, every other coloured.

Dialhot 09-09-2005 04:23 PM

Quote:

Originally Posted by Boulder
You'll see the behaviour already from the overlayed subtitle. If "a was last" for b etc., all the subtitles would be overlayed over each other.

You're right, I never thought about that :oops:

I always use :
Code:

video=xxxsource(...)
a=video.filter()
b=video.otherfilter()
interleave(a,b)

:roll:

Boulder 09-09-2005 04:29 PM

Your version is just as right as mine, it just takes longer to type. Just like in programming, many ways to do the same thing :wink:

supermule 09-09-2005 09:04 PM

Quote:

Originally Posted by Boulder
The higher the limit, the closer the output gets to a regular RemoveGrain(mode=17), which is way too blurry for my taste.

What limit value (i.e. 4,5,6,7) makes it exactly like mode=17, if you are aware. Why I am asking is since I want to do a balance between Quality and size according to my preferences :wink: .

EDIT: In the tests that I made I realised that increasing the limit from 1 to 4 does not bring considerable difference in the compressions but do bring in noticable difference in the Quality of the encode. Probably since I am already using limitU=255 so no more compression can be achieved.
Code:

return LimitChange(rg, input, limit, limitU=255)
I guess limit=1 or limit=2 are the ones that will work for most of us.

Boulder 09-10-2005 01:53 AM

Quote:

Originally Posted by supermule
Quote:

Originally Posted by Boulder
The higher the limit, the closer the output gets to a regular RemoveGrain(mode=17), which is way too blurry for my taste.

What limit value (i.e. 4,5,6,7) makes it exactly like mode=17, if you are aware. Why I am asking is since I want to do a balance between Quality and size according to my preferences :wink: .

I don't know, and it's actually impossible to know as the process depends on the current frame.
Quote:

EDIT: In the tests that I made I realised that increasing the limit from 1 to 4 does not bring considerable difference in the compressions but do bring in noticable difference in the Quality of the encode. Probably since I am already using limitU=255 so no more compression can be achieved.
Code:

return LimitChange(rg, input, limit, limitU=255)
I guess limit=1 or limit=2 are the ones that will work for most of us.
You are using the limit for luma only, chroma smoothing is not limited, hence limitU=255. Chroma can be processed more aggressively before it comes noticable.

supermule 09-17-2005 10:41 AM

Quote:

Originally Posted by Boulder
Quote:

Originally Posted by nicksteel
So, I should

Mpeg2Source("C:\capture\capture.d2v",idct=7)

Telecide/Decimate

LRemoveDust_YV12(17,1)

Resize
ConverttoRGB24()
Addborders()

Yes.

Hi Boulder,

Do you think adding STmedian() filter would further help along with Lremovedust for non-DVD sources.

Whats ur opinion

incredible 09-17-2005 11:25 AM

We only can suggest if we know whats the kind of that source?
Its an avi? If yes what kind of AVI? A hollywoodmovie? If yes, a capture?

Boulder 09-17-2005 11:42 AM

Regardless of the source, I wouldn't add any filters in addition to LRemoveDust.

supermule 09-17-2005 12:51 PM

Quote:

Originally Posted by Boulder
Regardless of the source, I wouldn't add any filters in addition to LRemoveDust.

Does that mean that in your opinion Lremovedust handles pretty well, what STmedian is supposed to do for the source ????

Prodater64 09-17-2005 01:31 PM

How would it be the script using gripcrop?

kwag 09-17-2005 02:01 PM

Quote:

Originally Posted by supermule
Do you think adding STmedian() filter would further help along with Lremovedust for non-DVD sources.

I hope when you mean "non-DVD sources" you are refering to captures, and not AVI (DivX/XviD) sources :roll:

-kwag

Boulder 09-17-2005 03:10 PM

Quote:

Originally Posted by Prodater64
How would it be the script using gripcrop?

Uhm, just place the three thingies, GripCrop, GripSize and GripBorders where they belong and remove all other items that crop, resize and add borders. SansGrip's functions are just different ways of doing the same thing.

supermule 09-17-2005 09:26 PM

Quote:

Originally Posted by kwag
Quote:

Originally Posted by supermule
Do you think adding STmedian() filter would further help along with Lremovedust for non-DVD sources.

I hope when you mean "non-DVD sources" you are refering to captures, and not AVI (DivX/XviD) sources :roll:

-kwag

Yes, how can I forget the forum rules!!!!!! :) ,

supermule 09-17-2005 09:32 PM

Quote:

Originally Posted by Boulder
Quote:

Originally Posted by Prodater64
How would it be the script using gripcrop?

Uhm, just place the three thingies, GripCrop, GripSize and GripBorders where they belong and remove all other items that crop, resize and add borders. SansGrip's functions are just different ways of doing the same thing.

Hi,

Can you post a sample script using the three, I cant find no help in the filter.

Boulder 09-18-2005 01:18 AM

GripCrop equals Crop, GripSize equals xxxResize, GripBorders equals AddBorders. The parameters have been explained a thousand times so I'm not going to do that now, the search will help you. The official GripFit thread started by SansGrip contains all the necessary information.

Prodater64 09-18-2005 05:44 AM

Quote:

Originally Posted by Boulder
GripCrop equals Crop, GripSize equals xxxResize, GripBorders equals AddBorders. The parameters have been explained a thousand times so I'm not going to do that now, the search will help you. The official GripFit thread started by SansGrip contains all the necessary information.

I think he asked for filter position in the script.

Boulder 09-18-2005 05:48 AM

The positions are exactly the same as with normal cropping, resizing and adding borders, no reason for any other order. One crops, one resizes and one adds the borders, the only difference is that the calculations are done internally and the user doesn't need to figure the values out.

Prodater64 10-09-2005 04:07 PM

When to use lremovedust_yv12(17,1) and when ...(17,2)?

Could somebody post a latest optimal script in that section please?
(Also Im wondering why Dialhot scripts are not in that section)


All times are GMT -5. The time now is 01:08 PM  —  vBulletin © Jelsoft Enterprises Ltd

Site design, images and content © 2002-2024 The Digital FAQ, www.digitalFAQ.com
Forum Software by vBulletin · Copyright © 2024 Jelsoft Enterprises Ltd.