View Full Version : upscaling standard dvd movies to 1080p using ffdshow and your htpc
Jeremy Duncan
9th September 2006, 07:44
I Downloaded the sw kit.
I unzipped the sw kit.
I first installed Avisynth. With the Avisynth in the sw kit you don't need to replace the avisynth.dll as shown in the video.
Then I install ffdshow.
During the install of ffdshow there is a page that's called "Select Additional tasks", I check these boxes besides what's already checked:
mpeg2: libmpeg2
vc1: wmv9
raw video
Then after ffdshow is installed there is a final page that says "Run ffdshow video decoder configuration", so I check that box then press Finish.
Now ffdshow video decoder configuration pops up, here is how I set it up.
From the codecs tab I scroll down to mpeg2 and highlight it and check the "dvd decoding" box, then I click apply.
From the Decoder Options tab I uncheck the "Detect soft telecine and average frame durations" box, then I click apply.
Then I scroll down the check boxes until I see the Subtitles check box, and I click it with my mouse and hold down the mouse button and drag the subtitles check box to the top of the list, so it's right below Decoder Options.
Then I go through every list in subtitles and make sure every box is unchecked, so the subtitles checkbox has all the boxes unchecked, the titles sub list has all the boxes unchecked, then I press apply.
Then I drag the avisynth check box so it's right below the subtitles check box, and I check the avisynth checkbox and uncheck these boxes in the avisynth tab:
"add ffdshow video source"
"yuy2"
"rgb24"
"rgb32"
Still in the avisynth tab, I check the Buffers back/ahead box and leave the values at 10 10.
Then I check and drag the resize & aspect check box so it's below the avisynth check box, and this is how I setup the ffdshow resize & aspect check box:
I check the Multiply by circle and set it to the value of 1.000
I check the "No Aspect ratio correction" circle, then I click Apply.
Then I scroll down to the Output tab and uncheck these boxes:
"yuy2"
"yvyu"
"uyvy"
"rgb32"
"rgb24"
"rgb16"
"rgb15"
"High quality yv12 to rgb conversion"
"select closest matching colorspace"
I leave the YV12 check box checked, then I press Apply and OK to close the ffdshow video decoder configuration.
Third, I install Matroskasplitter.
Fourth I unzip mpc-hc and put it on my desktop.
Fifth, in Windows 7, I open windsfiltertweaker and go to the Preferred decoders tab and the 32 bit decoders to use ffdshow, specifically these decoders:
h.264
xvid
divx
mp4v
vc-1
mpeg-2
Then I click Apply and Close.
Then I check the tweaks tab and disable the "Microsoft dtv-dvd video decoder", then I click apply, close and then exit.
Sixth, I unzip the plugins folder and go to this folder C:\Windows\SysWOW64 to put the fftw3.dll.
Then I drag and drop the other dll’s into that folder and accept when it asks if I want to modify those dll's into the C:\Program Files (x86)\AviSynth 2.5\plugins folder.
You can tell it's the right folder because Directshowsource.dll is in that folder.
For non-64 bit windows you would put the fftw3.dll into the C:\WINDOWS\system32 folder, and the other plugins go into the C:\Program Files\AviSynth 2.5\plugins folder where directshowsource.dll is.
Seventh, I open media player classic home cinema player, and go to the "View, Options, Output" tab and check vmr9 windowed.
Then I go to the "view, Options, External filters tab" and check the Add filter box, and add "ffdshow video decoder", that set ffdshow video decoder to "Prefer", Click Apply and Ok to close the options box.
Then I go to "view, options, internal filter" and check every box.
Reboot and then put a movie in the computer and then open the movie with mpc-hc using the file tab and go to the dvd drive to open the movie.
___________________________________________
video guide at youtube link (http://www.youtube.com/user/foxhoundfan).
sw kit. Updated May 8, 2011. (http://www.mediafire.com/?lpm6nsnvp2j1mh8)
overview
____________________________________________
Step 1.) install software: avisynth before ffdshow.
Step 2.) configure ffdshow digital audio
Step 2.) configure ffdshow analog audio
Step 3.) configure ffdshow video
Step 4.) configure media player classic
Step 5.) install avisynth plugins
Step 6.) Reboot, twice.
pictures
____________________________________________
________ FFDshow configuration options ________
- for vista, use aero. for quality.
FFDshow configuration options.
________ upscaling ffdshow configuration ________
Codecs tab
Set Mpeg2 to Libmpeg2, and check "DVD decoding".
Set Avisynth to Avisynth, Raw video to All supported
Decoder options tab
Uncheck "Detect soft telecine and average frame durations"
Subtitles tab, Unchecked
Uncheck "Decode closed captions"
Uncheck "Accept embedded subs"
Uncheck "Accept SSA, ASS, ASS2 Subtitle (experimental)
Vobsub subpage, uncheck Vobsub Enable.
Avisynth tab checked
YV12 checked,
Add FFdshow Video source Unchecked,
3:2 Pulldown box: Ignore Pulldown checked,
check Buffer back/Ahead: 10, 10
setmtmode(5,0)
SetMemoryMax(512)
video=ffdshow_source().changefps(ffdshow_source(), linear=true)
A=video
setmtmode(2)
SetMemoryMax(712)
B=a.Spresso_JD()
C=a.SeeSaw_JD(B).limitedsharpenfaster(strength = 11)
return C
GetMTMode(false) > 0 ? distributor() : last
Resize & aspect tab checked
Process whole image checked
Specify horizontal and vertical Resize: 1920, 1080 (or your monitors resolution)
Process Pixel aspect ratio internally checked
No aspect ratio correction checked
spline
Luma Sharpen: 0.00
Luma Guassian Blur 0.50 (On small monitors like laptops it's best not to use this. Set it to 0.00)
Accurate rounding checked
Output tab
yv12 checked
________ Media Player Classic ________
Click the View button. Check only the top three in the drop down list.
Click options.
Click the output tab, and set Directshow output to vrm9 windowed.
Directshow Audio: Select Reclock Audio Renderer
Click the External Filters Tab.
Click the Add Filter Button.
Double click the filters you want. You'll need;
FFdshow Audio decoder
FFdshow video decoder
________ Potplayer ________
Run the potplayer installer.
Open Potplayer and right click the screen,
Set the renderer to use madvr:
Video, Video Renderer, click "Madshi Video Renderer"
Set FFDshow to be the video decoder:
- Filters, Advanced Filter Settings, video decoder, filter management, press "scan", press "Ok".
Now in "Video decoder" press the drop down menu and set all the filters to use ffdshow video decoder, press "Ok".
To open a DVD, go to:
Right click screen, "Open", "Open Directory", "Computer", highlight the DVD drive, click Ok.
________ FFdshow Audio Decoder: Analog ________
Codecs tab
- Uncompressed Tab
Set it to "32 bit integer"
Mixer tab
- checked
I use 5.1 speakers so I set the number of speakers to 5, and check the Lfe box.
Output tab,
- Select 32 bit integer.
________ FFdshow Audio Decoder: Bitstream HD Audio in Windows 7 ________
Install Haali Media Splitter
Step 1
Codecs tab
- Uncompressed Tab
Set it to "All Supported"
Output tab,
- Passthrough boxes: ac3, dts, dolby digital plus, dts hd, dolby truehd are checked.
- Connect as PCM first is unchecked
- Supported output formats: check only 16bit, 24bit.
- Check direct to file
Step 2
Put the files from the bat folder into the system32 folder. To register the bat files you need to get permission to, here is how to do that.
- Using MPCVideoDec.ax as a example. Right click and select Properties.
Go to Security, Advanced, Owner tab, Edit, Hightlight Administerators, click Apply.
From the MPCVideoDec.ax properties, security tab, click Edit. From the Group or user names list, highlight each one and make sure it has Full Control checked.
Click ok and close the properties tab.
- Do this for these three files: MPCVideoDec.ax, MpegSplitter.ax, regsvr32.exe.
- Then right click the MPCVideoDec bat file and run as Administrator. It should successfully register the .ax file.
- For 64 bit windows. Put the MPCVideoDec.ax, MpegSplitter.ax into the system32 folder and the MPCVideoDec bat, MpegSplitter bat files into the syswow64 folder.
Change the permissions for the MPCVideoDec.ax, MpegSplitter.ax, regsvr32.exe as usual.
Step 3
- Run the reg file in the My Documents folder.
Step 4
- Run the Win7DSFilterTweaker.
Under the "Preferred Directshow decoding filters in Windows 7" tab, set H.264, and VC1 to MPCVideoDec.
The "Media Foundation" tab is left at default.
Under the "More Tweaks for Windows 7", check "Disable Microsoft DTV-DVD Audio Decoder", "Disable Media Foundation".
________ Software ________
Potplayer (http://www.videohelp.com/tools/PotPlayer)
Win7DSFilterTweaker (http://fileforum.betanews.com/download/Win7DSFilterTweaker/1262732488/1)
Haali (http://haali.su/mkv/)
FFDshow. Updated May 8, 2011. (http://www.mediafire.com/?6u134g61lu2bp95)
media player classic home cinema. updated March 13, 2011 (http://mpc-hc.sourceforge.net/download-media-player-classic-hc.html)
Avisynth: custom build I made (http://www.mediafire.com/?330b17h61ra2v49)
________ Optional Software ________
J River (http://www.jrmediacenter.com/download.html)
spdifer (http://ac3filter.net/projects/spdifer)
Reclock (http://www.mediafire.com/?v4qitymgwmf)
Test disks for comparison. (http://forum.doom9.org/showthread.php?t=140747)
________ Plugins ________
plugins: link. Updated May 8, 2011. (http://www.mediafire.com/?kh9f8q1ab5t18bp)
\\\\\ List of the nessessary Avisynth plugins to go in the plugin folder. 9 in total.
\\\\\ fftw3.dll goes into the System32 folder.
If your using a 64 bit version of windows, put the fftw3.dll into the SysWOW64 folder, instead of the system32 folder.
C:\Windows\System32
C:\Windows\Syswow64
\\\\\ I use the ati 4670 and the 11.2 drivers.
I use hdmi to my 1080p tv.
The pixel format I use is full rgb: 4:4:4
I use a intel E6600 cpu, 2GB ram, Sata HDD, Sound card
Pictures
____________________________________________
Spdifer (For DTS and AC3)
http://thumbnails6.imagebam.com/4744/38125d47437764.gif (http://www.imagebam.com/image/38125d47437764)
profiles
http://thumbnails8.imagebam.com/1750/c9496317492022.gif (http://www.imagebam.com/image/c9496317492022)
ffdshow
http://thumbnails30.imagebam.com/12348/2d51ce123470804.jpg (http://www.imagebam.com/image/2d51ce123470804)
media player classic
http://thumbnails23.imagebam.com/12348/0c7962123470811.jpg (http://www.imagebam.com/image/0c7962123470811)
avisynth plugins folder
http://thumbnails41.imagebam.com/12348/eb479e123470795.jpg (http://www.imagebam.com/image/eb479e123470795)
link to a different guide that shows you how to setup profiles (http://www.homecinema-hd.com/ffdshow-video-profiles_en.html)
________________________
See this link for Frame Doubling, or Frame Interpolation. (http://www.avsforum.com/avs-vb/showthread.php?p=20410401#post20410401)
Jeremy Duncan
9th September 2006, 07:50
Step 1.) Install the SW Ilinked to.
Step 2.) Make a text file using MS Notepad, and copy and paste the code below into it. Then change the file extension from .txt to .avs.
Step 3.) Set Media Player Classic to use ffdshow raw video filter. Options ->External filters->Add filters->ffdshow raw video filter
You may not need step 3, if your source has two different pictures of the same thing but different quality. But I use ffdshow here to make one picture different than the other, for comparison purposes.
Step 4.) Open the video in media player classic. Go to a frame, pause, then from file, choose 'save image' and it takes a snapshot of a frame. Do this three times.
The first two pictures are of the same frame, and call them 1 and 2 in the order you took them.
Then open the other video or change ffdshow and then since this video has different quality then the first two, it can be compared. Go to the frame you took for the first two snapshots, then pause, then save a screen snapshot and call it 3.
Save the images as bmp.
step 5.) Now it gets a bit complicated. Make 3 folders, one for each of the three pictures you took.
Copy picture 1 and paste it twice in folder 1 - in this folder you will name them 1 and 2. So picture one is called 1, and picture 2 is called 2.
Do this for folder 2, but this time copy picture 2.
Then do this for folder three, but this time copy and paste picture 3.
So if you did it right, each of the three folders has two pictures: 1, 2.
step 6.) Now assuming you have java on your PC, you open bmptoavi. You use bmptoavi to join the two pictures and make them a avi. You then open the named avi's using virtualdub via the script below. Doing this shows you the differences in the pictures.
Making the first avi - Source.avi
Open bmpseq.jar
Go to Action, start. Go to folder 1, and choose 1.
Go to Action, end. Go to folder 1, and choose 2.
Go to Action, frame rate, and set it to 2, so you type in '2'.
Go to Action, save, and name the file "source.avi", no quotes, type the avi extension or it will create a junk file.
Go to Action, run. It will make the source.avi to yor desktop.
Making the second avi - picture 1.avi
Open bmpseq.jar
Go to Action, start. Go to folder 2, and choose 1.
Go to Action, end. Go to folder 2, and choose 2.
Go to Action, frame rate, and set it to 2, so you type in '2'.
Go to Action, save, and name the file "picture 1.avi", no quotes, type the avi extension or it will create a junk file.
Go to Action, run. It will make the picture 1.avi to yor desktop.
Making the third avi - picture 1.avi
Open bmpseq.jar
Go to Action, start. Go to folder 3, and choose 1.
Go to Action, end. Go to folder 3, and choose 2.
Go to Action, frame rate, and set it to 2, so you type in '2'.
Go to Action, save, and name the file "picture 2.avi", no quotes, type the avi extension or it will create a junk file.
Go to Action, run. It will make the picture 2.avi to yor desktop.
Step 7.) Now I assume you have a avs file that points to the location you avi files are on your desktop. It will be a different location than C:\Users\Jeremy\Desktop\. Right click the files on your desktop to get their location and change the location in the script.
Open virtualdub, Video->check "Direct Stream Copy", and Then from file choose Open, go the the avs script and open that and fingers crossed it opens the file so you can see the differences between the two pictrues.
Don't open the avs file without first checking Direct stream Copy.
___________________________________
The script that actually shows the changes.
clip1=aviSource("C:\Users\Jeremy\Desktop\Source.avi")
clip2=AVISource("C:\Users\Jeremy\Desktop\Picture 1.avi").Subtitle("No luma mask")
clip3=AVISource("C:\Users\Jeremy\Desktop\Picture 2.avi").Subtitle("Luma mask")
clip4=Blankclip(clip1)
# --- special purpose clips below, for comparison ---
clip5 = SUBTRACT(clip1, clip2).LEVELS(107,1,149,0,255)
clip6 = SUBTRACT(clip1, clip3).LEVELS(107,1,149,0,255)
clip7 = SUBTRACT(clip2, clip3).LEVELS(107,1,149,0,255)
desc_clip1 = "Source"
desc_clip2 = "Picture 1"
desc_clip3 = "Picture 2"
desc_clip4 = "Difference between clip 2 and 3"
desc_clip5 = "Difference Source - Picture 1"
desc_clip6 = "Difference Source - Picture 2"
desc_clip7 = "Difference Source - Difference between clip 2 and 3"
# The two lines below will usually call clips 1-2-3-4, but 1-5-6-7 may be inserted
# to see [amplified] mathematical difference between clips
# To put it another way, these are the four clips we want to display
vertclip1 = STACKVERTICAL(clip1.SUBTITLE(desc_clip1), clip5.SUBTITLE(desc_clip5))
vertclip2 = STACKVERTICAL(clip6.SUBTITLE(desc_clip6), clip7.SUBTITLE(desc_clip7))
STACKHORIZONTAL(vertclip1,vertclip2)
avisynth (http://sourceforge.net/projects/avisynth2/)
virtualdub (http://virtualdub.sourceforge.net/)
bmptoavi (http://sourceforge.net/projects/bmpseq/)
media player classic (http://sourceforge.net/projects/guliverkli2/)
FFDshow (http://ffdshow-tryout.sourceforge.net/)
haali media splitter (http://haali.su/mkv/MatroskaSplitter.exe)
Ok. There you go.
http://thumbnails33.imagebam.com/10807/70453c108067662.jpg (http://www.imagebam.com/image/70453c108067662)
In this image the source is left as it was taken by MPC, Different Source -Picture 1 is processed and remains totally grey, meaning there is no difference between different source - picture 1 and the Source.
different source - Picture 2 shows a image and this is where it is different from the source.
Different source - Difference between clips 2 and 3 shows the difference between different source - picture 1, and different source - picture 2.
:helpful:
midelic
9th September 2006, 22:51
@Jeremy
Can you post the settings for "Levels" in FFdshow?I now that it depends on the source,but it's good for information.
I've seen them somewhere in your last thread.
toby77jo
13th September 2006, 09:47
Quote
Here's a speed tweak that might help.
It's meant for dual core cpu's when you use MT in FFdshow Avisynth..
Each time a movie is played you need to set it.
- CTRL-ALT-DEL to the Task Manager, Under the Processes tab, right click the .exe file for your video player (example: mplayerc.exe), and go to Set Affinity, Uncheck CPU 1.
Here's where I got the info. Thanks arfster.
Link
/Quote
For me it does not make sense, by removing the affinity of 1 core out of 2, you force the media player to only utilize 1 of the cores, MT is supposed to work on both cores? Please explain why this is a speed tweak for dual cores?
arfster
13th September 2006, 15:15
The reason it works is because ffdshow is biased towards one core. Even when you force affinity to core 0, it'll still end up with half on core 1. For example, I often end up with 20/90 core balance, but with the affinity tweak it's 60/50 or so.
It sometimes causes problems with large avisynth scripts though when you're near maxxed though, so it needs trial and error.
check
13th September 2006, 15:24
why are you linking to a 2 year old ffdshow?
Jeremy Duncan
14th September 2006, 00:22
How to encode blu ray to mpeg2.
First.) rip the blu ray to the pc. I use anydvd and in the anydvd settings I check get rid of trailers and only the main movie is ripped as a result.
Second.) open the tsmuxer program and add the m2ts file from the blu ray you ripped.
It's in the bdmv\stream folder where you ripped the blu ray too.
You only need the 00000.mt2s file in tsmuxer.
it will list different file types: 1 or more audio, 1 or more pgs (subtitle), and 1 video.
You only want one language because of how the file is read by powerdvd ultra.
If you choose more than one language you need to use media player classic to access the languages, powerdvd ultra will only have 1 language available.
Also subtitles are not available. They are in the pgs but there is no way I know of to get them to be a option in mpc or powerdvd ultra.
So you added the 00000.mt2s file and got a list of audio options. lets say you just want one language.
Third.) Check the ts option in the output tab.
Check where to save the ts. Some people say to change the profile but I don't and haven't.
Fourth.) Press the start muxing tab and it will make the movie into a ts file you can play with powerdvd or media player classic.
In media player classic you need to go to the options and make sure the internal filters include ac3. i just checked every internal filter option.
Fifth.) Steps 1-4 were for mpeg2. For vc1 the procedure is more tricky. I am working on a simple solution.
Notes.)
- There is no quality loss, no need to fiddle with cropping.
- The mpc says the dts is 1000 or so kb, but powerdvd says the audio is ac3 kb level. So mpc seems to have the hd audio whereas powerdvd doesn't
- To open the ts with mpc you need to select the ts file from the file tab.
Software used.)
tsmuxer (http://www.videohelp.com/download/tsMuxeR_1.8.35b.zip)
anydvd hd (http://www.slysoft.com/en/anydvdhd.html)
mpc (http://downloads.sourceforge.net/guliverkli2/mplayerc_20081210.zip?modtime=1229004652&big_mirror=0)
________
Blu ray vc1 files.
Steps 1 and 2 are the same as before. This guide begins at step 3.
Step 3.) Demux the audio and video.
Step 4.) Install mkvtoolnix-unicode-2.6.0-setup.
Open the demuxed vc1 file that you made with tsmuxer, and add the audio you demuxed from tsmuxer.
Click start muxing, and it will make the mkv in the location you specified.
mkvtoolnix (http://www.videohelp.com/download/mkvtoolnix-unicode-2.6.0-setup.exe)
Notes.)
A benefit in encoding the vc1 this way is it doesn't use pulldown even though you use a 60hz monitor.
I tested this with mpc and reclock.
________
Blu ray avc files
If you try to make a mkv like with vc1 the video is ugly if I use ffdshow or mpc hc video decoders, and the audio is out of sync if I skip forward.
So I choose the video I want from the ripped m2ts, and then use ts muxer to make it a "AVCHD disk".
If the video is on many m2ts files not just one, use bdinfo to get the files nessessay, then use tsmuxer to make the avshd disk.
Then to open the video you made, go to the bdmv/streams folder and it should be there.
You can open it with mpc or powerdvd. Your choice.
In some movies there is no 00000.m2ts file in the streams folder.
For these movies use bdinfo to see the files that make up your movie, as there may be not one main file but 3 or 4.
bdinfo (http://www.videohelp.com/download/BDInfo.v.0.5.2.zip)
ffdshow works fine with the vc1 mkv. I could have used lsf if I wanted but my e6600 was taxed already using both cores.
Jeremy Duncan
14th September 2006, 00:23
That FFdshow links to afterdawn.com. They have a fairly new version of FFdshow. Maybe they display a different page for Australia ?
check
14th September 2006, 10:17
sorry, i was referring to
"Here's Andy's FFDShow.
Link"
Jeremy Duncan
14th September 2006, 10:31
People seem to like Andy's FFdshow and ask for it.
anton_foy
14th September 2006, 23:32
Having problems running FFDShow in avisynth 2.5, it says error: ffavisynth.dll is not an Avisynth 2.5 plugin.
This was after I had download the newest version of FFDShow.
Edit: sorry bout that I forgot the "C" in LoadCPlugin
foxyshadis
14th September 2006, 23:43
Does it work with LoadCPlugin? It has a bad habit of rarely working even then; it always does with my compiles, but not always for others. If not try this: ffavisynth (http://foxyshadis.slightlydark.com/random/ffavisynth.dll).
anton_foy
15th September 2006, 00:24
Thanks Foxyshadis it works great now using LoadCPlugin.
Would it be possible to use FFDShow when rendering in Adobe After Effects? I think I read that somewhere but I cant find the thread.
foxyshadis
21st September 2006, 08:32
No, sorry, the Devil lib is used in ImageSource only for decoding image formats. (Sort of like ImageMagick library.) Has absolutely nothing to do with avisynth internals or with video at all.
foxyshadis
25th September 2006, 18:39
Okay, this is getting a little off the paranoid deep end. Why are you bringing all of this up? Of what interest is this to people using ffdshow & avisynth to play movies?
Pookie
25th September 2006, 18:53
If only it was 777 , he could have won at the slots in Vegas :D
Nostradamus predicted the emergence of a Windows DLL that would be used in video playback.
He was only off by 5 letters.
Didée
26th September 2006, 08:08
I'm going to reformat all my scripts, to make them appear in grouped paragraphs with the following linecounts:
4 8 15 16 23 42
:D
Pookie
26th September 2006, 09:43
Lol
http://www.moviesounds.com/easy/ufo.wav
:D
toby77jo
12th October 2006, 09:13
if using hardware deinterlacing you should also check YUV2
Jeremy Duncan
15th October 2006, 21:11
If your using the Nvidia video decoder and it uses YUY2 instead of YV12.
Set FFdshow Raw video to YV12 instead of All supported.
Output YV12.
Now the Nvidia video decoder should use YV12 instead of YUY2.
If you use the HW Deinterlacing feature, you still need to tick YUY2 in the Outout tab.
Jeremy Duncan
30th October 2006, 04:44
This is my HTPC setup and my favourite FFdshow Settings.
Display: 793df Samsung CRT Monitor
Size of image: 17" including case
Viewing distance: a foot and a half
Connection type: VGA
Video card: Rage 128 Ultra AGP 4x
CPU: 3.06 Northwood
Memory: 1 stick 512 DDR-SDRAM
OS: XP Pro
Driver version: ati2dvaa.dll, version 6.13.0010.5004 (English)
Output resolution: 1024x768
Add. enh: (ie. AA, AF) None
Video & Audio Codec: DScaler 5008
Video Renderer: VMR 7 Windowed
Ffdshow version: October 29, 2006 20:51:25 (msvc 2005, x86, ansi)
FFdshow (in order)
- Raw Video: All supported
- Avisynth:
Input colorspaces; YV12
LoadPlugin("G:\Program Files\AviSynth 2.5\plugins\colormatrix.dll")
setmtmode(2, 0)
colormatrix(mode="Rec.601->Rec.709")
SPresso(limit=2, limitC=13, bias=100, biasC=100, RGmode=17, RGmodeC=17)
- Resize and aspect:
Specify Size; 1280x720
No aspect ratio correction
Lanczos
Number of Taps; 2
Luma Sharpen; 0.50
Accurate rounding checked
- Queue & Misc: Check Queue output samples. Uncheck "Use Queue only in"
- Output: YV12
Allow output format hanges during playback, checked Green.
Here's a picture of my settings.
Link (http://img182.imageshack.us/img182/586/settingsn4.jpg)
foxyshadis
7th November 2006, 00:49
LSF with ss of 1.0 wil cause crazy aliasing, you really need at least 1.1 for watchability and 1.25-1.4 is better. You also might try using soft=-1 (or something like 10-15 to manually set it), which refrains from sharpening the smoother areas (like a rudimentary seesaw). I think, it's kind of hard to tell.
Still, seesaw is definitely designed to be better for denoising than LSF, and some videos don't need much sharpening, as it probably the case here.
Jeremy Duncan
7th November 2006, 03:29
________LimitedSharpenFaster Configuration made by Me________
Codecs: All supported
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Avisynth: YV12 checked
SPresso(limit=2, limitC=2, bias=76, biasC=76, RGmode=4, RGmodeC=4)
LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=80, overshoot=1)
Queue & Output: Queue output samples checked
Output: YV12 checked
LSF with ss of 1.0 wil cause crazy aliasing, you really need at least 1.1 for watchability and 1.25-1.4 is better.
That's why I resize before Avisynth. This gets rid of the Aliasing.
If I use ss of 1.1 or more it becomes unplayable in realtime.
Probably a nice idea to use the ss you recommend when you encode though.
Boulder
8th November 2006, 13:00
A small correction to some of your scripts: the SetMTMode line needs to be before any xxxSource line for it to work.
toby77jo
16th November 2006, 11:28
I have been trying to use seesaw for some time. I am a bit confused. I am running on a core2duo @ 3.3 ghz, 2 gb of pc8500 dual channel corsair memory and a nvidia 8800GTX graphics card, kind of a monster machine, no?
With your seesaw configuration I am on around 45% cpu usage on each core using your MT() 3 threaded script. Yet the movie is slow, it is not smooth at all yet I have lots of resources not being used? It's as slow on both dvd's and xvid's.
Any help on these issues, limited sharpen, spresso etc is running super smooth, but I agree limited sharpen produce too much noise/blocking.
Why don't you recommend people to run a second denoiser at the end of all the other processing, like the built in blur&Nr built into ffdshow, have seen posts on other sites it is good to run one in the avisynth script and one at the end as well.
Lots of questions, hoping for lots of answers =)
toby77jo
16th November 2006, 20:50
I am using this now,
LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\FluxSmooth.dll")
a = last
b = a.FluxSmoothT(11)
SeeSaw(a, b, NRlimit=2, NRlimit2=1, Sstr=1.4, Slimit=7, Spower=2, Sdamplo=8, SdampHi=10, Szp=10, bias=1, sootheT=30)
SPresso(limit=2, limitC=2, bias=76, biasC=76, RGmode=4, RGmodeC=4)
it works like a dream, but how do I put all this in a MT("Script",3)
thanks for keeping this thread so updated, great work!!
Adub
10th December 2006, 23:58
I can't believe I never saw this thread! I stumbled upon it while doing a search for spresso, and bam! Praise Avisynth!
This is so great, keep up the good work man!
This is sticky material.
Adub
12th December 2006, 01:12
either way, it doesn't matter to me except that it is easily accesible to the masses. Like with the way it is now, normally you would have to search for it. With a sticky it is right there, and with Avisynth.org, it is readily available.
Adub
13th December 2006, 03:08
righteous!
Thanks a bunch man! I can't wait to test these out on my e6600. It will be fun. By the way, Reclock is a interesting little program.
Edit: Do you think that IIP could be configured to have some realtime options? Cause that is like an all in one of sorts, which helps with keeping the scripts small. And easy to cut and paste! :)
Truthfully I really don't care about script size, just options, performance and output.
Adub
16th December 2006, 05:01
the only problem with MT is that I can't use it with MeGUI yet. Since it uses 2.5.6, MeGUI cannot automatically load TIVTC for interlaced detection. So, unless I want to switch the Avisynth dll's every time, I will just have to wait until 2.6 is stable enough to use, if I want to use MT.
Adub
20th December 2006, 03:17
Ill update my settings. Thanks.
Kool3ds
20th December 2006, 21:02
Firstly thanks jeremy for this wonderful thread. U made my day. CAn somebody tell me what is da line which i have to type in da avs script if i want to crop da video? Help would be really appreciated. Thanks in advance.
Jeremy Duncan
20th December 2006, 23:10
Here's a link for how to crop Link (http://img45.imageshack.us/img45/5356/cropio0.jpg)
Adub
21st December 2006, 02:18
I thought those pictures were a little off.
Oh, and your welcome about that SeeSaw script.
Pookie
23rd December 2006, 06:50
Guys, at least give Didée his props for writing the scripts, all references have been removed from the ones above.
foxyshadis
23rd December 2006, 07:42
Removed to the SeeSaw thread.
Kool3ds
25th December 2006, 06:55
I am using this script which is added below in da attachments.
But still even after deinterlacing i find some artifacts in da video. Am i doing some mistake or some thing? I am new to all this so plz help me out guys. Let me know if there is some fault in da script also. Thanks in advance. One more thing is seesaw better or LSf?
Da script has been added in da next post.
Kool3ds
25th December 2006, 07:02
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DGDecode.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mt_masktools.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\masktools.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\RemoveGrainSSE2.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\Decomb.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\MT.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\FluxSmooth.dll")
Import("C:\Program Files\AviSynth 2.5\Plugins\LimitedSharpenFaster.avsi")
setmtmode(2, 0)
DGDecode_mpeg2source("F:\DHOOM\VTS_02_1.d2v",info=3)
fieldDeinterlace(full=true, blend=true, dthreshold=10)
assumeTFF()
telecide(guide=1, post=0, dthresh=0, vthresh=0, gthresh=0, back=0, bthresh=0, nt=0)
Decimate(cycle=5, threshold2=0, quality=0)
crop( 4, 44, -4, -48)
LanczosResize(640,288)
FluxSmoothT(3)
LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=80, overshoot=1)
SPresso(limit=2, limitC=0, bias=15, biasC=0, RGmode=17, RGmodeC=0)
Adub
25th December 2006, 07:14
What kind of artifacts are you getting? Do you have a screenshot?
Kool3ds
25th December 2006, 12:15
What kind of artifacts are you getting? Do you have a screenshot?
I have uploaded a small 6 mb video which contains artifacts. Da link is
http://www.sendspace.com/file/ofk8hq
Jeremy Duncan
27th December 2006, 03:08
Kool3ds,
I'm not a Avisynth technician.
Maybe you better start a new thread for your problems.
Kool3ds
28th December 2006, 12:15
Kool3ds,
I'm not a Avisynth technician.
Maybe you better start a new thread for your problems.
Ok.Thanks anyways.
Adub
4th January 2007, 07:08
Well, it looks great on a completely denoised source. But who has one? I ran it through an MKV file of V for vendetta, and man, noise showered me like machine gun fire.
Is this because of the Sdamplo/hi now equal 0?
foxyshadis
4th January 2007, 13:20
Why not put two variables at the top of the script - DENOISE_STR and SHARPEN_STR if you like - which correspond to fluxsmooth's and sdamplo's values. That way you don't have to keep posting new tweaks everytime one version looks better on some particular movie.
btw, you might also want to end it with something like "height > 600 ? o : last" where o is set to last at the top. That way HD won't get filtered and start dropping frames.
Terka
10th January 2007, 17:17
please add to compare the ffdshow builtin unsharpmasking
Jeremy Duncan
12th January 2007, 04:40
please add to compare the ffdshow builtin unsharpmasking
I'm using Denoise3d first:
0.00, 2.00, 3.00 HQ checked
I'm resizing second
1280x720, no aspect ratio correction, Luma sharpen 1.60, accurate rounding checked
I'm using unsharp mask third
Strength 25
Using Unsharp Mask (http://www.slibe.com/fullimage/4fae1c86-Unsharpmask.png)
Terka
12th January 2007, 09:10
thank you Jeremy
Adub
13th January 2007, 03:07
Oh, right. I seem to have noticed a bug, of sorts.
When Fluxsmooth is loaded through ffdshow, in addition to the seesaw advanced setup, every 3 seconds or so, the screen jiggles.
Actually it is almost like the bitrate recenters itself, so to speak.
Can anyone confirm?
I am watching a V for Vendetta mkv upsized to 1280,1024 via ffdshow.
foxyshadis
13th January 2007, 09:48
Is it randomly skipping, or is it a regular judder? Does this happen only when using fluxsmooth, or even when enabling avisynth with no filters?
If both are the second, you might be running into a limitation of ffdshow's avisynth use with vfr. I fixed it so that it should at least always work normally with cfr recently, I may have to go with the plan I had for vfr.
Didée
14th January 2007, 07:09
It's kind of interesting to see how "THE configuration to use" changes by the day. Could it be that the "preferred configuration" mostly depends on the kind of source that you just happened to look at lately ... ;)
SeeSaw(a, b, NRlimit=2, NRlimit2=1, Sstr=1.4, Szp=1, Slimit=16, Spower=1, bias=0, sootheT=0, Sdamplo=8, SdampHi=0)
Well ... Congratulations for deactivating practically everything that makes up SeeSaw. You're only one little step away from arriving at almost the same result as "sharpen(1).mergechroma(last)" would give. :)
If you're pleased with the results, it's fine. But sorry for I just can't hold back to mention the "casting pearls before swine" proverb.
Jeremy Duncan
16th January 2007, 10:02
Picture comparisons
None
http://www.slibe.com/fullimage/a5a8422d-None.png
Basic configuration
http://www.slibe.com/fullimage/f24c4d1e-Basic.png
Intermediate configuration
http://www.slibe.com/fullimage/21b60420-Intermediate.png
Limitedsharpenfaster configuration using the new denoising configuration
http://www.slibe.com/fullimage/b1f8fa9b-LSF.png
Seesaw configuration using Lanczos resize
http://www.slibe.com/fullimage/fcb13887-LRszSeesaw.png
Jeremy Duncan
16th January 2007, 19:31
It's kind of interesting to see how "THE configuration to use" changes by the day. Could it be that the "preferred configuration" mostly depends on the kind of source that you just happened to look at lately ...
Yes. I use the HQV Calibration disk.
What happens is if I measure the noise the results can change from test to test.
That's because if I pause right on the frame I want I get a real result, but if I pause then frame step a few frames the result is much cleaner.
I have been frame stepping on the detail comparisons for all the configurations, so they use the same standard, but for noise tests I can pause right on the frame I want, or not quite and have to frame step which ruins the test results.
So one day I make a configuration and I frame step, the next day I get the exact frame I want exactly when I pause. The same settings but vastly different results.
I thought it might be because I was using different FFDshow versions, but it's this weird denoising effect that happens when I frame step. I'm sure it has nothing to do with which FFDshow version I'm using.
It's this way for both the LSF and Seesaw configurations.
Jeremy Duncan
16th January 2007, 20:11
Seesaw configuration, the one that uses Lanczosresize
http://www.slibe.com/fullimage/7fbaadc1-Seesaw.png
Same Seesaw configuration, but I used frame stepping.
http://www.slibe.com/fullimage/926a6fd1-Frame_Step_Seesa.png
Adub
17th January 2007, 02:42
Is it randomly skipping, or is it a regular judder? Does this happen only when using fluxsmooth, or even when enabling avisynth with no filters?
If both are the second, you might be running into a limitation of ffdshow's avisynth use with vfr. I fixed it so that it should at least always work normally with cfr recently, I may have to go with the plan I had for vfr.
It is a regular judder. I am pretty sure that it is only through using fluxsmooth in avisynth though. I can't test for sure right now though as I am not at my computer. I can report back tomorrow though.
Jeremy Duncan
23rd January 2007, 18:55
Here's a Avisynth Deinterlacer. It keeps slightly more detail than the Nvidia Purevideo Video Deinterlacer. The setting uses something called "Vertical", which raises the picture a bit, so when you compare tomsmocomp to some other deinterlaced the picture using Tom's deinterlacer will rise a bit.
If you don't need to deinterlace, or your going to use TomsMocomp to Deinterlace, set the Cyberlink video decoder to weave, and the Purevideo decoder to Film. Also use the settings on page 1, post 2 if your not going to deinterlace using Tomsmocomp.
________LimitedSharpenFaster Configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
MT("TomsMocomp(1,5,1)",3)
colormatrix(mode="Rec.601->Rec.709", threads=1)
LanczosResize(1280,720)
MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=1)",3)
Queue & Output: Queue output samples checked
Output: YV12 checked
________SeeSaw Intermediate configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
MT("TomsMocomp(1,5,1)",3)
colormatrix(mode="Rec.601->Rec.709", threads=1)
MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=1.4, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Luma Sharpen: 1.10
Queue & Output: Queue output samples checked
Output: YV12 checked
________SeeSaw Advanced configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
MT("TomsMocomp(1,5,1)",3)
colormatrix(mode="Rec.601->Rec.709", threads=1)
MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=2.0, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
LanczosResize(1280,720)
Queue & Output: Queue output samples checked
Output: YV12 checked
_________________
Here's the link to Tomsmocomp. Just put the tomsmocomp.dll into the avisynth plugins directory.
Using the newer FFDshow versions there's no need to load the plugin manually, and doing so will cause the plugin to fail.
Link (http://www3.impacthosting.com/trbarry/TomsMoComp.zip)
Adub
23rd January 2007, 21:23
Sorry I didn't get back to you sooner, my life has been crazy.
The advanced Seesaw script looks pretty nice accept that when a denoised clip is not specified, Seesaw uses a crappy temporal denoiser. So I just set a and b equal to last before hand. That way the denoising done by ffdshow before hand is used instead of a crap temporal subsitute.
When that was changed, I just upped the soothT() parameter to 15 or so, changed the spower to 3, an it looked quite fantastic. I will have to run some more of my own parameter adjustments, but for now they look great.
Also, I will test the Avisynth Deinterlace script later, although most of my material is progressive. I still have some interlaced material lying around though.
Jeremy Duncan
25th January 2007, 09:15
SeeSaw Basic Deluxe (http://img142.imageshack.us/img142/5928/seesawbasicdeluxe2zb.jpg)
SeeSaw Advanced Deluxe (http://img126.imageshack.us/img126/622/seesawdeluxe21bt.jpg)
Pictures showing the Detail quality of the different configurations. Updated January 25, 2007 (http://rapidshare.com/files/13282076/Detail_Tests.zip.html)
________SeeSaw Basic Deluxe configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=1.4, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Soothe(sharp, dull, 5)
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Luma Sharpen: 1.10
Queue & Output: Queue output samples checked
Output: YV12 checked
________SeeSaw Advanced Deluxe configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=2.0, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Soothe(sharp, dull, 7)
LanczosResize(1280,720)
Queue & Output: Queue output samples checked
Output: YV12 checked
The configurations use this version of Soothe;
function Soothe(clip sharp, clip orig, int "keep")
{
Assert(sharp.width == orig.width && sharp.height == orig.height,
\ "Soothe: clip dimentions must match!")
keep = default(keep, 24)
keep = (keep>100) ? 100 : (keep<0) ? 0 : keep
KP = string(keep)
diff = mt_makediff(orig,sharp)
diff2 = diff.temporalsoften(1,255,0,32,2)
diff3 = mt_lutxy(diff,diff2, "x 128 - y 128 - * 0 < x 128 - 100 / " + KP
\ + " * 128 + x 128 - abs y 128 - abs > x " + KP
\ + " * y 100 " + KP + " - * + 100 / x ? ?")
return( mt_makediff(orig,diff3,chroma="copy first") )
}
The calibration for the old version that used Masktools is different.
Didée
25th January 2007, 11:07
The calibration for the old version that used Masktools is different.
"different calibration"? Do you find that "old" and "new" Soothe give different results, when used with the same settings?
If so, that should not be. Both versions ought to give the very same result.
Jeremy Duncan
25th January 2007, 16:13
Yeah, check out the oncoming car, and the car behind the statue.
FFDshow configuration
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=2.0, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Soothe(sharp, dull, 15)
LanczosResize(1280,720)
Queue & Output: Queue output samples checked
Output: YV12 checked
Soothe at 15 using Masktools (http://www.slibe.com/fullimage/235ec650-mt15.png)
Soothe at 15 using MT_Masktools (http://www.slibe.com/fullimage/1e6ab461-MT_Masktools_15.png)
Folder containing both pictures (http://rapidshare.com/files/13330764/Masktools_Comparison_Pictures.zip.html)
HeadBangeR77
25th January 2007, 17:21
Providing you've used exactly the same settings, then those two mentioned elements do differ, indeed (the rest is the same). MT_MaskTools' version (2.0alpha30 I bet?) is brighter a bit, the older one produces more dimmed details.
:confused:
Jeremy Duncan
25th January 2007, 18:31
After post # 61, none of the pictures I've posted use frame stepping to capture a certain frame.
Jeremy Duncan
25th January 2007, 21:06
Pictures
Configuration using No Soothe (http://www.slibe.com/fullimage/baeed996-LimitedSharpenfa.png)
Configuration using Soothe (http://www.slibe.com/fullimage/630977d6-LimitedSharpenfa.png)
________Configuration not using Soothe________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 5.00, HQ Checked
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Luma Sharpen: 1.10
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
colormatrix(mode="Rec.601->Rec.709", threads=2)
LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=1)
Queue & Output: Queue output samples checked
Output: YV12 checked
________Configuration using Soothe________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 5.00, HQ Checked
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Luma Sharpen: 1.10
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=1)",3)
Soothe(sharp, dull, 6)
Queue & Output: Queue output samples checked
Output: YV12 checked
I calibrated LSF using Spatial Noise as my guideline. I adjusted the temporal denoising because it was set to low.
I also retook the LSF screenshots using the new teomporal denoising setting,
and calibrated the Soothe using this new Temporal denoising setting.
If the Slibe.com links go down, I've updated the main pictures folder in the first post to include the pictures using these settings.
HeadBangeR77,
Yes, they were the same settings.
And I use MT_Masktools 2.0.30.0 and Masktools 1.5.1.0
JarrettH
26th January 2007, 00:07
It's kind of interesting to see how "THE configuration to use" changes by the day. Could it be that the "preferred configuration" mostly depends on the kind of source that you just happened to look at lately ... ;)
Well ... Congratulations for deactivating practically everything that makes up SeeSaw. You're only one little step away from arriving at almost the same result as "sharpen(1).mergechroma(last)" would give. :)
If you're pleased with the results, it's fine. But sorry for I just can't hold back to mention the "casting pearls before swine" proverb.
What's wrong with it Didee :eek:
I'd be happy if we just stuck with three SeeSaw configurations and ditched the resize and MT lines. The configs change way too often to be any definitive. It almost looks as if you're about to rediscover the LimitedSharpen for live tv thread;)
So what makes SeeSaw, SeeSaw? We should make sure the design goals of your script are met too. What settings to preserve?
I don't think we need degrees of sharpening strength, and myself, I tend to only stick with one of my presets. If I need to deinterlace an avi file I'll use a preset that does exclusively that.
Jeremy Duncan
27th January 2007, 10:43
Only Resized. No sharpening or denoising.
http://www.slibe.com/fullimage/2c9443d0-ResizeOnly.png
Seesaw Advanced
http://www.slibe.com/fullimage/d9104bdb-SeesawAdvanced.png
Seesaw Advanced. Soothe Set to 100.
http://www.slibe.com/fullimage/f1f8c491-SeesawAdvanced_S.png
________Resize only Configuration________
Codecs: All Supported
Resize & aspect:
Specify Resize: 1280x720
No aspect ratio correction checked
Lanczos
Taps: 2
Luma Sharpen: 0.00
Queue & Output: Queue output samples checked
Output: YV12 checked
________SeeSaw Advanced configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=2.0, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Soothe(sharp, dull, 7)
LanczosResize(1280,720)
Queue & Output: Queue output samples checked
Output: YV12 checked
All of these configurations used the NVidia video decoder, using the Film setting.
If I set it to Automatic, the pictures were blurred, and I could not get accurate results.
I retook these pictures January 27, 2007. After I found out about the difference between Film and Automatic.
Look at the tires of the oncoming car, and the car on the left of the statue.
I thinned out the second post, and updated the pictures and kit links.
The settings are the same, I just reformatted it to be easier to understand.
I made a typo with the LSF configuration before.
I had the denoise3d time set to 3, it was meant to be 5.
Sorry for the inconvenience.
These configurations used FFDshow and Media Player Classic.
If the slibe.com links go down, I've included these pictures in the Detail comparison folder in the second post.
I don't remember seeing if I used Film or Automatic for all the screen shots I took before.
So all the pictures in the comparison folder and the ones I'm posting here were taken today, using the Nvidia Film setting, and none were taken using frame stepping which messes up the picture.
Setting the Soothe to 100 is the same as not using it. It has the same effect.
Didée
27th January 2007, 17:48
Edit:
In this post, I have been totally wrong.
Setting the Soothe to 100 is the same as not using it. It has the same effect.
"It has the same effect" -> this is not true.
It's quite possible that you don't see a difference. I don't know your eyes.
But that there IS a difference, for this I already gave you proof (http://forum.doom9.org/showthread.php?p=943767#post943767).
Tip: care about wording.:) - If you had said sth like "I don't see any difference with or without Soothe", then your statement would've been unchallengeable. ;)
Didée
29th January 2007, 13:12
Follow-up to "Soothe(100)":
Jeremy, I beg your pardon. You were right, and I was wrong!
I stumbled in my own trap of making Soothe-as-Standalone and Soothe-within-SeeSaw interpret the parameters differently.
Your comment "Soothe(100) is the same as not using Soothe" is absolutely correct, when using the standalone function. And you obviously were using the standalone function.
For unknown reason, I was blindly thinking in "SeeSaw-terms" ...
Again: Sorry! :o
toby77jo
29th January 2007, 14:45
There are so many different settings and configurations. Can you please recommend the best setting in your own opinion on
1: 2 cd xvid/divx source
2: Original dvd source
3: 4,5 gb clonedvd source, bitrate a bit lower than original most of the time.
4: 720P HD x264 source
I have a Intel core2duo 6600 @ 3.2 ghz, 2 gb pc 8500 corsair memory, windows vista OEM ultimate, nvidia 8800 GTX. and a LG 42 inch plasma tv dvi 2 hdmi.
I want to get the best quality possible on all configurations but I am lost which one to use.
Did you try KMplayer in windows vista with EMR (enhanced video renderer) has built in functions for denoise, resize, sharpen etc, but damn it looks so much better than vmr9 in xp, obviously it is somehow based on ffdshow, but it does not work on dvd source with emr , don't know why yet. But ghosting, pixelation, gradient colors etc looks so damn nice with emr. I can even run resize, denoise HQ, and sharpening on HD content without any problems, if trying the same with vmr9 and mediplayer classic it is jerky like hell
thanks for any help and feedback
Jeremy Duncan
30th January 2007, 04:50
Hi toby77jo,
I designed these configurations for use with DVD's.
Those other types of video I don't use.
I like both the Seesaw and LSF with Sooth configurations.
I don't like the Seesaw advanced configuration so much, I can't place why but it's missing something the Seesw configuration has, and it's not detail.
Jeremy Duncan
30th January 2007, 04:51
Hi Didée,
I'm glad I wasn't wrong. Thank you for Seesaw LSF and Soothe. :)
Jeremy Duncan
30th January 2007, 06:04
"ATI_and_nVidia_crush_highend_DVD_players"
Look at page 10, test 5.
Link (http://www.hardware.info/en-UK/articles/am9nY2pqZA/ATI_and_nVidia_crush__2000_DVD_players/)
Nvidia Geforce 7900GTX with ForceWare 91.33 drivers and Sharpness at 100, or Maximum sharpness.
Using the nVidia’s PureVideo MPEG2 decoder version 1.02-223
http://img262.imageshack.us/img262/2337/nvidia100oo4.jpg
Nvidia Geforce 7900GTX with ForceWare 91.33 drivers and Denoising at 100, or Maximum Denoising.
Using the nVidia’s PureVideo MPEG2 decoder version 1.02-223
http://img297.imageshack.us/img297/5577/nvidianoise100yr3.jpg
Seesaw configuration on Intel GMA 900
Using the Nvidia Purevideo MPEG2 decoder version 4020.185.0.0
Detail
http://img262.imageshack.us/img262/8664/seesawlf9.jpg
Denoising
http://img329.imageshack.us/img329/9121/seesawlr6.jpg
Here's the same Seesaw configuration, but using TomsMoComp
Detail
http://img262.imageshack.us/img262/5135/seesawtomsmocomptm3.jpg
Denoising
http://img166.imageshack.us/img166/271/seesawtomsmocompdenoisewh4.jpg
SetMemoryMax(220)
dull = colormatrix(mode="Rec.601->Rec.709", threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=3, Sstr=1.4, Szp=1, Slimit=50, Sdamplo=6, Spower=0, bias=0, sootheT=0, SdampHi=0)",3)
Soothe(sharp, dull, 5)
MT("Tomsmocomp(1,5,1)",3)
Note; These Seesaw pictures used FFDsow as shown in post # 2 of this thread.
The Seesaw configuration picture shows lines in the cars and rolercoaster because the picture is interlaced.
The Nvidia card uses HW Deinterlacing, while the Seesaw configuration picture uses no deinterlacing.
On a progressive dvd you would not have a problem with the lines seen in the Seesaw advanced picture.
Also the Denoising done in the Seesaw configuration is good enough for dvd's I think.
The Seesaw with Tomsmocomp software deinterlacing vs the Nvidia Geforce 7900GTX using HW Deinterlacing.
The Geforce shows more detail.
The Seesaw with tomsmocomp has a problem with deinterlacing on the road by the bridge,
and this problem blurs the stairs below the statue.
As you can see in the denoising tests. Both seesaw configurations show more detail than the Nvidia solution.
Spatial detail, or sharpness, brings noise too.
So I could use a better denoiser, but the spatial detail will decrease as well.
You can find the Seesaw configuration here;
Link (http://forum.doom9.org/showthread.php?t=115727)
Link to folder with Pictures in case the imageshack links go down. (http://rapidshare.com/files/14042624/Pictures.zip.html)
Jeremy Duncan
2nd February 2007, 09:12
________SeeSaw Deinterlace configuration________
Codecs: All supported
Blur & NR: denoise3d: Luma: 0.00, Chroma: 2.00, Time: 3.00, HQ Checked
Avisynth: YV12 checked, Add FFdshow Video source checked
SetMemoryMax(1024)
tdeint(mtnmode=3,type=4,mthreshL=11,mthreshC=11,link=0,slow=0)
Resize & aspect:
Multiply by 2.000
No aspect ratio correction
Lanczos
Taps: 2
Luma Sharpen: 1.10
Queue & Output: Queue output samples checked
Output: YV12 checked
Boulder
2nd February 2007, 09:14
You got it the wrong way around. If you filter before deinterlacing, you are asking for trouble.
acebrain
3rd February 2007, 17:41
i tried so many times but after seleting .avs i tired to save avi file everytime i am getting error "statsfile not found" .How to solve this error .
thanx
Jeremy Duncan
3rd February 2007, 17:55
Seesaw is bad for Halo's, and Halo's is a way to calibrate how sharp the picture can be.
Luma Sharpen doesn't seem to have the same problem with Halo's Seesaw has, so I set Seesaw as high as it would go before the halo's became a problem, then I upped the Luma sharpen the same way.
acebrain,
Maybe somebody else can answer this. I never had that problem.
Adub
3rd February 2007, 19:42
@acebrain
What are you trying to do exactly? Save an avs file? What programs are you using?
Also, this is probably in the wrong thread.
Jeremy Duncan
5th February 2007, 12:07
The Seesaw and Seesaw deinterlacing configurations are in the folder and on the first page.
The configurations have been updated since I last did this comparison test.
"ATI_and_nVidia_crush_highend_DVD_players"
Look at page 10, test 5.
Link (http://www.hardware.info/en-UK/articles/am9nY2pqZA/ATI_and_nVidia_crush__2000_DVD_players/)
Nvidia Geforce 7900GTX with ForceWare 91.33 drivers and Sharpness at 100, or Maximum sharpness.
Using the nVidia’s PureVideo MPEG2 decoder version 1.02-223
http://img262.imageshack.us/img262/2337/nvidia100oo4.jpg
Nvidia Geforce 7900GTX with ForceWare 91.33 drivers and Denoising at 100, or Maximum Denoising.
Using the nVidia’s PureVideo MPEG2 decoder version 1.02-223
http://img297.imageshack.us/img297/5577/nvidianoise100yr3.jpg
Seesaw Detail test
http://img208.imageshack.us/img208/6174/seesawey5.jpg
Seesaw Deinterlacing configuration, Detail test
http://img218.imageshack.us/img218/303/seesawdeinterlacenb4.jpg
Seesaw Noise test
http://img218.imageshack.us/img218/5373/seesawdenoiseyl9.jpg
Seesaw Deinterlacing configuration, Noise test
http://img218.imageshack.us/img218/9796/seesawdeinterlacedenoisyl9.jpg
Note; The Seesaw configuration picture shows lines in the cars and rolercoaster because the picture is interlaced.
Link to folder with Pictures. (http://rapidshare.com/files/15000069/Comparison_Pictures.zip.html)
Jeremy Duncan
9th February 2007, 02:25
- Install Powerstrip.
- Click the powerstrip icon, by the clock and click Display Profiles, Configure.
- Click Advanced timing options.
- Uncheck Real-time adjustment.
- The pixel clock under the Ramdac sign, click it's arrow up or down, this is how you setup Powerstrip. When your done, click apply.
- My monitor uses a refreshrate of 75 Hz. This is what it shows in Windows monitor settings.
When I open up the Powerstrip Advanced timing options, it shows my refresh rate to be 75.194 Hz.
I need the refresh rate to be as close to 75 Hz as possible, so I click the Pixel clock arrow number down.
- When I lower the pixel clock number, the refresh rate number changes and gets lower as well.
The closest the refresh rate will go to 75 Hz is 75.045 Hz or 74.995 Hz. I chose 74.995 Hz. I then clicked Apply, ok, ok.
- I set Reclock to use 25 fps.
While playing a dvd, I open the reclock configuration and look at the "Video Hardware Refresh Rate".
Once the reclock icon is a steady green color, "Video Hardware Refresh Rate" shows me that the refresh rate is 74.998 Hz.
This number is different than the one I set Powerstrip too, the Reclock number is more accurate.
The audio correction number in reclock is now low.
This is a basic overview of how to use Powerstrip. There's more advanced guides if you google them.
toby77jo
9th February 2007, 15:34
Would it be possible in the future to create a guide for The KMPLAYER in Windows VISTA using the EMR renderer (next generation of vmr9 is EVR "enhanced video renderer")
I can't find a way with your guides to achieve the same video quality in MPC or Zoomplayer in windows XP or VISTA.
THE KMPLAYER has built in ffdshow features. I am not using any avisynth features.
I let the program choose Blur/Denoise values, resize * 2, and it's default advanced sharpen values are way different than yours, anyway the quality is superior, and I can even run all these features enabled on HD movies (1280*544 OAR, x264)
It would be nice to see a comparison with screen shots.
Jeremy Duncan
9th February 2007, 20:42
Hi toby,
Here you go. Just uncheck Normalize Audio in the Audio tab.
I can't get the root menu to work without using overlay.
http://img252.imageshack.us/img252/4681/kmplayertb9.th.jpg (http://img252.imageshack.us/my.php?image=kmplayertb9.jpg)
Link (http://rapidshare.com/files/15721811/KMPlayer.zip.html)
If you open the picture using Microsoft Paint, it will be easier to read.
In the DVD Setting, Decoder tab. You can configure the Nvidia video decoder to use film or Automatic.
In the Video (Advanced) tab, you can set it to use VMR, Or Overlay, Or what toby suggested, EMR.
Jeremy Duncan
14th February 2007, 06:03
TheaterTek
- Right Click the TheaterTek screen and click Configuration.
- Click the Video Tab, under Post Processing "Primary" set FFDshow MPEG-4 Video Decoder.
Set Nothing for Secondary Post Processor.
If your going to use FFDshow's Avisynth for Deinterlacing, set the Deinterlacing "Control" to Film,
"Mode" Best Available.
- Click the Audio Tab, under Audio Device set ReClock Audio Renderer.
- Click the File Types Tab, check the .ifo box. This is for DVD's, so you can use FFDshow.
- Click Apply and Ok.
Pictureof Theatertek configuration Walkthrough (http://img484.imageshack.us/img484/7706/theatertektr8.jpg)
Theatertek Download (http://www.theatertek.com/Downloads/TheaterTek%20Setup.exe)
alph@
17th February 2007, 14:55
jeremy,why you us the driver nvidia 91.33 and not the last 97.92
http://www.tweaksrus.com/index.php
you have one reason
Jeremy Duncan
4th March 2007, 09:11
jeremy,why you us the driver nvidia 91.33 and not the last 97.92
http://www.tweaksrus.com/index.php
you have one reason
I don't own a Nvidia video card.
That picture was taken from a web review I linked to. :thanks:
Jeremy Duncan
5th March 2007, 01:34
I uploaded the wrong test pattern. I fixed the links.
Here it is. :)
Test Pattern (http://rapidshare.com/files/19449683/Crossbar.zip.html)
Fizick
16th March 2007, 23:48
recently Leak created a patch (beta version) to ffdshow for extended Avisynth support, in particular realtime pulldown.
http://sourceforge.net/tracker/index.php?func=detail&aid=1676882&group_id=173941&atid=867362
Recent download link:
http://forum.doom9.org/showthread.php?p=969919#post969919
there some issue.
Jeremy Duncan
22nd March 2007, 05:01
I updated the first post.
I updated the FFDshow audio configuration to include equalizer settings.
I updated the Seesaw code to Didée's specifications, it's got less haloing (not as a result of following Didée's advice) and now you can set the sharpness higher using the crossbar pattern.
I updated the FFDshow picture, and the FFDshow.exe in the software package.
And I added a "Seesaw Avisynth" configuration that's better than the Seesaw configuration (I can just barely play it smoothly on my e6600 core 2 duo :D ).
Jeremy Duncan
22nd March 2007, 06:22
Fizick,
I tried the patch but the variables are to confusing.
The 10 10 10.
I tried adjusting it, and I think if I use it I'll leave it at default 10 10 10, and I'll wait till it's included in clsid's and drevil's bulids before I use it all the time.
I'm not entirely sure that the defualt setting of 10 10 10 is actually helping things or being more cpu intensive for no good reason.
Slightly confused by it.
Leak
22nd March 2007, 09:13
NB: I made that patch, so you might want to ask me... :)
I'm not entirely sure that the defualt setting of 10 10 10 is actually helping things or being more cpu intensive for no good reason.
The only CPU intensive part is that last value, and only at the beginning since it has to buffer that number of frames as quickly as possible.
The middle value is a just a limit to a calculated value, which for normal filters should be around 1 or 2 frames, and the first value is just a number of buffers to keep around longer, i.e. it just uses some more memory.
So exactly what is confusing about those variables? I can't just guess their values, as that would mean my filter would have to know internals of all AviSynth filters used in your script, which of course it can't.
The first and last variables set to 5 and 10 mean that a filter can access frames from n-5 (the first setting) to n+10 (the last setting) if n is the current frame, and the middle value means that up to x consecutive frames are buffered for the current frame if your filter returns only 1/x of the input frames.
So if you're using TFM and TDecimate to remove 3:2 pulldown for example, you'd need a back value of 1 since TFM accesses both the last and the next frame to compare the current frame against, you'd need a middle value of 2 since it uses 1,25 input frames per output frame (5 frames go in, 4 frame come out, and you need to round 5/4 up - but the default of 10 is just fine), and you'd need an ahead value of 10 or 15 depending on whether TDecimate's conCycle is 1 or 2, since TDecimate analyzes one or two cycles of 5 frames after the current cycle, which is also 5 frames.
That's why I went with 10/10/10 as the defaults, since buffering 10-and-a-bit frames ahead shouldn't be that CPU intensive (unless you're using it with HD video, which is probably not too good an idea) except for the very beginning - but I'll take a bit of stutter in the first second over constant stutter (i.e. 3:2 pulldown judder) over the full length of the video any day of the week.
Also, if you want the old behaviour where no filter that accesses more than the current frame is going to work you just have to use 0/1/0 and turn off "Apply pulldown".
Jeremy Duncan
22nd March 2007, 10:25
Leak,
Could you please advise the best setting for realtime Avisynth use in FFDshow ?
I only use it with these four codes that I'll post.
Please look these codes over and advise the best setting to use and if it's still 10 10 10.
If there's a best setting instead of 10 10 10 for each code I'll post, please advise the best setting for each individual code.
SetMemoryMax(220)
dull = ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
sharp = dull.MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=1)",3)
Soothe(sharp, dull, 3)
SetMemoryMax(1024)
dull = ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=1.00, Szp=1, Slimit=50, Sdamplo=29, Spower=1, sootheT=0, SdampHi=35)",3)
Soothe(sharp, dull, 5)
SetMemoryMax(1024)
FluxSmoothT(8)
dull = ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=1.70, Szp=1, Slimit=50, Sdamplo=29, Spower=1, sootheT=0, SdampHi=35)",3)
Soothe(sharp, dull, 5)
Lanczosresize(1680, 1050)
SetMemoryMax(1024)
tdeint(mtnmode=3, type=2, mthreshL=11, mthreshC=11, link=0, slow=0, sharp=false)
:thanks:
Leak
22nd March 2007, 10:32
Leak,
Could you please advise the best setting for realtime Avisynth use in FFDshow ?
Sorry, but no - that's something you'll have to do for yourself; I don't even know half the filters you're using... but what's with the crazy SetMemoryMax values? If the filters really need that much memory for a handful of frames I wouldn't bet on anything running in realtime with all the cache trashing going on.
I do, however, plan to add some values to the filter's OSD info showing the maximum number of ahead and back buffers accessed since the filter's last reset, which should help tuning a script - as long as the filters behave somewhat deterministic.
Jeremy Duncan
22nd March 2007, 18:11
Pookie ran a test and the best results used 1024 MB ram.
Link (http://forum.doom9.org/showthread.php?t=120371)
So I just took setmemorymax and set it to 1024.
I ran some tests and I only need about 25 mb of ram for avisynth,
but I still set it to 1024 because on one of my pc's setting a higher setmemorymax value than the default amount of ram avisynth uses (Avisynth uses 1/2 of the free ram) allowed me to run a more complex code in realtime playback.
So setting a higher setmemorymax does help.
A patch the forces ffdshow avisynth to use all of the free ram instead of only half would help.
Then I wouldn't need to use setmemorymax. :)
Jeremy Duncan
22nd March 2007, 18:16
Leak,
With your next addition to your patch, when you add the osd info showing the maximum number of ahead and back buffers accessed since the filter's last reset.
Do I leave the current buffer at 10 and just calibrate the back and ahead buffer values ?
Leak
22nd March 2007, 18:43
Do I leave the current buffer at 10 and just calibrate the back and ahead buffer values ?
You really shouldn't have to change the current buffer (unless you want to do something like making a slideshow via "SelectEvery(30,1)" or something), but it should just report what the AviSynth filter requests no matter what your settings are - the settings just decide whether the filter will get the frame it requests or the closest buffered one instead.
np: B.Fleischmann - Melancholie (Melancholie/Sendestraße (Disc 1))
Jeremy Duncan
22nd March 2007, 19:45
Leak,
When you add the OSD features you mentioned, could you add whether or not 3:2 pulldown is being used.
If I check it and look at the OSD I want to know if it's being applied or not doing anything.
:thanks:
Leak
23rd March 2007, 01:08
When you add the OSD features you mentioned, could you add whether or not 3:2 pulldown is being used.
If I check it and look at the OSD I want to know if it's being applied or not doing anything.
Well, if it's not doing anything it doesn't hurt either, but if you want to know whether there's any pulldown flags being used in the input - yeah, I can add that.
I'm afraid it's going to take a bit longer than I thought so look out for an updated version sometimes this weekend...
Jeremy Duncan
25th March 2007, 00:39
Here's some pictures I took comparing different Seesaw configurations, the New Limitedsharpenfaster config I made today, and one that just uses resizing with no filters.
Link is about 30 MB (http://rapidshare.com/files/22623284/Pictures.zip.html)
Leak
26th March 2007, 09:43
Well, if it's not doing anything it doesn't hurt either, but if you want to know whether there's any pulldown flags being used in the input - yeah, I can add that.
Of course, now that I look at this I see that I've forgotten to do exactly that... :rolleyes:
I'll put up a new build tonight, but could you perhaps give the current build (http://leak.no-ip.org/AviSynth/ffdshow/) a try anyway? :D
Jeremy Duncan
26th March 2007, 19:56
Hi Leak,
I tried your new build. I checked Avisynth in the OSD tab, and played a movie.
I set Avisynth to 10 10 10, and tried with and without checking Apply Pulldown.
The osd showed 0 back, 0 ahead. And there was no interuption of the movie, before the first few frames would stutter.
http://img377.imageshack.us/img377/3563/snapshot20070326115207bo3.jpg
Leak
26th March 2007, 20:07
I set Avisynth to 10 10 10, and tried with and without checking Apply Pulldown.
The osd showed 0 back, 0 ahead. And there was no interuption of the movie, before the first few frames would stutter.
Well, what was your script if I may ask?
Looks like it doesn't request more than 1 frame anyway - which would be what my patch is all about. :)
In your case, setting back and ahead to 0 would probably remove any pause you'd get when starting playback - but you have to use higher values when you're using temporal filters or one of the IVTC packages or bobbers or whatever requests more frames or changes the number of frames in a clip.
I'll upload a new build that'll say "applying pulldown" (provided "Apply pulldown" is checked) in the OSD info shortly...
np: Denzel + Huhn - July (Paraport)
Jeremy Duncan
26th March 2007, 20:17
I was running the Limitedsharpenfaster script with resizing last, which gimps the picture a bit.
Here's a picture where I used the tdeint setting on the first page.
http://img518.imageshack.us/img518/6408/snapshot20070326121343dn0.jpg
So it is working.
Leak
26th March 2007, 20:19
So it is working.
I'm glad to hear that... :D
np: Denzel + Huhn - Cauka (Paraport)
Jeremy Duncan
26th March 2007, 20:34
Here's a picture showing the osd. I'm using the Seesaw Avisynth settings on the first page.
http://img516.imageshack.us/img516/2363/snapshot20070326123059sb4.jpg
Can you explain the benefit of your patch again. Please ?
Leak
26th March 2007, 21:07
Can you explain the benefit of your patch again. Please ?
<lecture>
Well - ffdshow without my patch only hands a single, "current", freshly decoded frame to the AviSynth script while it is requesting the a new, filtered frame from the AviSynth script - just like it does with all it's other internal filters.
That works fine as long as you just resize the image, or apply a (spatial) blur or sharpen or whatever, because all those operations just work on a single frame. But AviSynth actually isn't that simple - it allows filters to request any frame they like, and that's something you can't do in a DirectShow graph, which aside from the occasional seek by the player application just runs from start to finish. That's what my patch works around, as long as the requested frames are near the "current" frame - that's the distance, so to speak, you adjust with the ahead and back buffer settings.
Filters like temporal blur, temporal denoising, field matching, decimation or similar expect to be able to just request more than one frame (which is easily done when using AviSynth stand-alone), but which just doesn't work without my patch since ffdshow doesn't have any other frames than the "current" available.
My patch buffers up some frames before it requests the first filtered frame from AviSynth, so filters can request frames ahead of the "current" one. And it keeps a history of already used buffers so filters can also access frames behind the "current" one. Just look at the OSD - the very first number is the number of the "current" frame, while the numbers at the end are the numbers of the frames that were requested by AviSynth to produce the frame you're currently looking at.
Unpatched ffdshow also expects to get a single frame from AviSynth for every frame it requests. So filters that produce more frames (like bobbers) or less frames (like SelectEvery, or decimation filters) also don't work.
As you can see in your last SeeSaw image, the AviSynth script requested one frame before the "current" one, and looked two frames ahead - without my patch, it would have always got the same, "current" frame, which would have made any kind of analysis/calculations it would have done with those frames moot.
For optimal performance, you should choose the ahead value as small as possible, but it's not easily found just by looking at the script. The OSD just displays the facts it finds while the script does it's work.
</lecture>
I hope that makes sense... :)
np: Denzel + Huhn - Coend (Time Is A Good Thing)
Jeremy Duncan
26th March 2007, 21:53
There seems to be a problem. When I use this code in Avisynth in FFDshow:
SetMemoryMax(1024)
FluxSmoothT(8)
dull = ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=1.70, Szp=1, Slimit=50, Sdamplo=29, Spower=1, sootheT=0, SdampHi=35)",3)
Soothe(sharp, dull, 5)
Lanczosresize(1680, 1050)
I get 1 back 2 ahead.
But when I use this code, just a bit different.
SetMemoryMax(1024)
tdeint(mtnmode=3, type=4, mthreshL=11, mthreshC=11, link=0, slow=0)
FluxSmoothT(8)
dull = ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
sharp = dull.MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=1.70, Szp=1, Slimit=50, Sdamplo=29, Spower=1, sootheT=0, SdampHi=35)",3)
Soothe(sharp, dull, 5)
LanczosResize(1680, 1050)
I get 4 ahead and zero back.
Using the second code, shouldn't there still be one back ?
It's still set to 10 10 10.
Leak
26th March 2007, 22:24
I get 4 ahead and zero back.
Using the second code, shouldn't there still be one back?
That depends on the script. There's an implicit "ffdshowsource()" filter (that just looks for the frame nearest to the one that was requested in the buffers my patch utilizes) added at the beginning of every script since you can't pull frames out of thin air in AviSynth.
Only filters requesting frames from that source filter actually get exactly what they ask for - don't forget that AviSynth filters actually request frames from their parent filters, which is either the source or some other filter; so offsets to the "current" frame number add up going from the filter at the end of the script through all filters before it until you get to the source.
Looking at your image further up where you were using Tdeint it was always requesting two frames ahead, i.e. to produce frame 192 it actually requested frame 194 from the source, as can be seen in the OSD.
So if some other AviSynth filter now requests frame n from Tdeint Tdeint will actually request frame n+2 from ffdshowsource. Thus if your other filter was requesting frame n-1 before (thus yielding a "back" value of 1) it now ultimately requests n+1 from ffdshowsource by requesting frame n-1 from Tdeint - but since you can't buffer less than 0 buffers the back value stays at 0.
The same goes for ahead. If it was requesting n+2 directly it will now request n+4 via Tdeint, yielding an ahead value of 4.
Like I said, it's not easy getting those values right by just looking at the script - you need to actually know what happens inside the filters, or you just need to use the values you get from the OSD.
10/10/10 is still fine, it'll just buffer ahead further at the beginning (thus making the actual start of playback take a bit longer) and keeps more frames around than are actually used (thus using a bit more memory than neccessary).
Still, no harm done - the values displayed in the OSD are just the minimum values you need to use for exactly that script to work properly (in the sense of the script getting all the right frames that it requests, and not the nearest that actually is in the buffer), and if you use more you'll just get more delay when playback starts and more memory is used. To get to those minimum values it's actually a good idea to start out with bigger values, as you can't be sure the filter will behave properly if it can't analyze all frames correctly because not all frames it needs were in the buffer.
Okay, VMR9 starts to act up if you use really high values (>30) for buffering ahead because it takes too long for the first frame to actually arrive at the Renderer, but there's nothing I can do about that...
Or, the short executive version - everything works as it should, but it's a bit complicated to explain why... :)
np: Donato Wharton - Senke (Trabanten)
jidelite
29th March 2007, 02:34
Leak, I tried your patched FFDshow using SeeSaw as the only Avisynth filter to sharpen my DVD alittle during realtime playback. The OSD shows 1 back and 1 ahead which is what I expected (using setting 10/10/10 with no pulldown) but some DVDs during scene switches, tiltle changes etc. (especially when watching trailers at the beginning of a DVD) may get a 2-3 second pause and the counter would reset. For instance, the video montage on my old Video Essentials disk (title 19)pauses several times. Even when I use setting 0/1/0 (to allow FFDshow/Avisynth to exhibit old behavior?) the video pauses. Not sure what the problem is but unpatched version of FFDshow work fine.
jidelite
Leak
29th March 2007, 08:11
The OSD shows 1 back and 1 ahead which is what I expected (using setting 10/10/10 with no pulldown) but some DVDs during scene switches, tiltle changes etc. (especially when watching trailers at the beginning of a DVD) may get a 2-3 second pause and the counter would reset. For instance, the video montage on my old Video Essentials disk (title 19)pauses several times.
That pause is caused by the AviSynth filter being flushed & reset at those points (when the MPEG2 stream signals an end of the current sequence), because if it didn't a) several frames at the end of said MPEG2 sequence would be silently dropped and b) static (i.e. non-animated) DVD menus might not be displayed correctly.
But then again I didn't experience any noticeable pause there - what hardware are you using, and what filters? If the AviSynth filters you use take long to initialize that's the most probable cause of a delay - I'm mainly using TIVTC and that doesn't take any noticeable time at all.
And is that really that much of a problem if it doesn't happen during the main content? I could make the AviSynth resets after flushing optional and see if that makes it better, but that could cause some filters to give weird results during the sequence change.
foxyshadis
29th March 2007, 15:43
Scripts like SeeSaw and LimitedSharpenFaster take an unfortunately long time to re-initialize, I believe it's because of the mass use of masktools. Not a huge burden for me, although editing the script on the fly takes at least 4-5 seconds to reinit on my system, much longer than it takes to open in vdub. Must just be some ffdshow issue.
Fizick
29th March 2007, 18:58
If we can not supress delays, IMHO we must have an option for old behavior for pure spatial avisynth filters.
jidelite
29th March 2007, 20:28
That pause is caused by the AviSynth filter being flushed & reset at those points (when the MPEG2 stream signals an end of the current sequence), because if it didn't a) several frames at the end of said MPEG2 sequence would be silently dropped and b) static (i.e. non-animated) DVD menus might not be displayed correctly.
But then again I didn't experience any noticeable pause there - what hardware are you using, and what filters? If the AviSynth filters you use take long to initialize that's the most probable cause of a delay - I'm mainly using TIVTC and that doesn't take any noticeable time at all.
And is that really that much of a problem if it doesn't happen during the main content? I could make the AviSynth resets after flushing optional and see if that makes it better, but that could cause some filters to give weird results during the sequence change.
I'm using the following:
Abit AG8 Motherboard
P4 530J 3.0 GHz using hyperthreading
GeForce 6600
1 Gb ((2) 512 ddr-sdram)
The only filter/Avisynth script I'm using is:
SetMemoryMax(224)
SetMTMode(2)
SeeSaw(NRlimit=1, NRlimit2=3,Sstr=1.4,Slimit=5,Spower=2,Sdamplo=2,SdampHi=20,Szp=10,Bias=65,SootheT=10)
Once I start watching an actual movie, it seems to work ok. I understand that the initial load will take longer but the pauses I get are well after everything is loaded - especially the montage on my darn Video Essential disc (could it have a problem seeking the next frame?).
Fizick, I used a setting of 0/1/0 which I thought was the option for the 'old' behavior but I got the same results.
jidelite
Leak
29th March 2007, 21:49
Once I start watching an actual movie, it seems to work ok. I understand that the initial load will take longer but the pauses I get are well after everything is loaded - especially the montage on my darn Video Essential disc (could it have a problem seeking the next frame?).
Which part of "AviSynth gets re-initialized on an MPEG2 sequence end" (like title changes, some chapter stops, static images, etc.) does everyone here not understand? :confused:
It works just the same as re-loading an AVS script in VirtualDub... and no, there's no exception (yet) to this for the 0/1/0 case. That's why the state it's in is called "in development"... :rolleyes: (and I'll probably not find any time to work on it before the weekend - a bit of patience please...)
np: Bleubird - Very Beautiful Dangerous Joke (Rip USA (The Birdfleu))
jidelite
29th March 2007, 21:59
Which part of "AviSynth gets re-initialized on an MPEG2 sequence end" (like title changes, some chapter stops, static images, etc.) does everyone here not understand? :confused:
It works just the same as re-loading an AVS script in VirtualDub... and no, there's no exception (yet) to this for the 0/1/0 case. That's why the state it's in is called "in development"... :rolleyes: (and I'll probably not find any time to work on it before the weekend - a bit of patience please...)
np: Bleubird - Very Beautiful Dangerous Joke (Rip USA (The Birdfleu))
Ok, I got it :thanks: .
Leak
3rd April 2007, 08:27
Leak. When is your patch going to be finished and added to the FFDshow build's of Clsid and xxl ?
Sorry, I'm currently a bit short on time, so it's gonna take a while longer (but until this weekend at worst - I've got Friday and Monday off) - but the next revision that doesn't reset AviSynth but just skips the AviSynth frame position ahead to, ummm, emulate a reset is almost working, it just needs to be cleaned up and tweaked a bit.
I'll also remove the "current" buffer setting, as it all it seems to do is confuse people and it's not strictly neccessary, as you can just increase the "ahead" setting accordingly now that the OSD shows the needed value.
Are you going to add that osd feature ?
I'm pretty sure the OSD feature was in my latest build - just check "OSD" in ffdshow then check "AviSynth info" in the OSD settings; the latest build will add "applying pulldown" to the OSD if pulldown is being applied...
Or did you mean something else?
fight2win
2nd May 2007, 19:37
where to get seesaw.avs from?
Jeremy Duncan
2nd May 2007, 19:48
# SeeSaw v0.3e (02 Jan 2006)
#
# (Full Name: "Denoiser-and-Sharpener-are-riding-the-SeeSaw" )
#
# This function provides a (simple) implementation of the "crystality sharpen" principle.
# In conjunction with a user-specified denoised clip, the aim is to enhance
# weak detail, hopefully without oversharpening or creating jaggies on strong
# detail, and produce a result that is temporally stable without detail shimmering,
# while keeping everything within reasonable bitrate requirements.
# This is done by intermixing source, denoised source and a modified sharpening process,
# in a seesaw-like manner.
#
# This version is considered alpha.
#
# Usage:
#
# a = TheNoisySource
# b = a.YourPreferredDenoising()
# SeeSaw( a, b, [parameters] )
#
# You're very much encouraged to feed your own custom denoised clip into SeeSaw.
# If the "denoised" clip parameter is omitted, a simple "spatial pressdown" filter is used.
#
#
# Fiddled together by Didée, for your pleasure.
#
# ======= Main function =======
function SeeSaw( clip clp, clip "denoised",
\ int "NRlimit",int "NRlimit2",
\ float "Sstr", int "Slimit", float "Spower", float "SdampLo", float "SdampHi", float "Szp",
\ float "bias", int "Smode", int "sootheT", int "sootheS", float "ssx", float "ssy")
{
ssx = default( ssx, 1.0 ) # supersampling factor x / SeeSaw doesn't require supersampling urgently.
ssy = default( ssy, ssx ) # supersampling factor y / if at all, small values ~1.25 seem to be enough.
NRlimit = default( NRlimit, 2 ) # absolute limit for pixel change by denoising
NRlimit2 = default( NRlimit2, NRlimit+1) # limit for intermediate denoising
Sstr = default( Sstr, 1.5 ) # Sharpening strength (don't touch this too much)
Slimit = default( Slimit, NRlimit+2 ) # positive: absolute limit for pixel change by sharpening
# negative: pixel's sharpening difference is reduced to diff=pow(diff,1/abs(limit))
Spower = default( Spower, 4 ) # exponent for modified sharpener
Szp = default( Szp, 16+2 ) # zero point - below: overdrive sharpening - above: reduced sharpening
SdampLo = default( SdampLo, Spower+1 ) # reduces overdrive sharpening for very small changes
SdampHi = default( SdampHi, 24 ) # further reduces sharpening for big sharpening changes. Try 15~30. "0" disables.
bias = default( bias, 49 ) # bias towards detail ( >= 50 ) , or towards calm result ( < 50 )
Smode = default( Smode, ssx<1.35 ? 11 : ssx<1.51 ? 20 : 19 )
sootheT = default( sootheT, 49 ) # 0=minimum, 100=maximum soothing of sharpener's temporal instableness.
# (-100 .. -1 : will chain 2 instances of temporal soothing.)
sootheS = default( sootheS, 0 ) # 0=minimum, 100=maximum smoothing of sharpener's spatial effect.
Szp = Szp / pow(Sstr, 1.0/4.0) / pow( (ssx+ssy)/2.0, 1.0/2.0 )
SdampLo = SdampLo / pow(Sstr, 1.0/4.0) / pow( (ssx+ssy)/2.0, 1.0/2.0 )
ox=clp.width
oy=clp.height
xss = m4(ox*ssx)
yss = m4(oy*ssy)
NRL = string( NRlimit )
NRL2 = string( NRlimit2 )
NRLL = string( int(round( NRlimit2 * 100.0/bias - 1.0 )) )
SLIM = string( abs(Slimit) )
BIAS1 = string( bias )
BIAS2 = string( 100-bias )
#ZRP = string( abs(Szp) )
#PWR = string( abs(Spower) )
#DMP = string( SdampLo )
denoised = defined(denoised) ? denoised : mt_lutxy(clp,clp.removegrain(4,-1),"x "+NRL+" + y < x "+NRL+" + x "+NRL+" - y > x "+NRL+" - y ? ?",chroma="copy first")
NRdiff = mt_makediff(clp,denoised,chroma="process")
tame = mt_lutxy(clp,denoised,"x "+NRLL+" + y < x "+NRL2+" + x "+NRLL+" - y > x "+NRL2+" - x "+BIAS1+" * y "+BIAS2+" * + 100 / ? ?")
head = tame.sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,4)
# head = head.mt_merge(tame,tame.prewitt(multiplier=1.0).mt_expand().removegrain(20))
(ssx==1.0 && ssy==1.0) ? repair(tame.sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,Smode),head,1,-1,-1)
\ : repair(tame.lanczosresize(xss,yss).sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,Smode),head.bicubicresize(xss,yss,-.2,.6),1,-1,-1).lanczosresize(ox,oy)
SootheSS(last,tame,sootheT,sootheS)
sharpdiff= mt_makediff(tame,last)
(NRlimit==0) ? clp : \
mt_lutxy(clp,NRdiff, "y 128 "+NRL+" + > x "+NRL+" - y 128 "+NRL+" - < x "+NRL+" + x y 128 - - ? ?",chroma="process")
Slimit>=0 ? mt_lutxy(last,sharpdiff,"y 128 "+SLIM+" + > x "+SLIM+" - y 128 "+SLIM+" - < x "+SLIM+" + x y 128 - - ? ?",chroma="copy first")
\ : mt_lutxy(last,sharpdiff,"y 128 == x x y 128 - abs 1 "+SlIM+" / ^ y 128 - y 128 - abs / * - ?",chroma="copy first")
return( last )
}
# ======= Modified sharpening function =======
function sharpen2(clip clp, float strength, int power, float zp, float lodmp, float hidmp, int rgmode)
{
STR = string( strength )
PWR = string( 1.0/float(power) )
ZRP = string( ZP )
DMP = string( lodmp )
HDMP = (hidmp==0) ? "1" : "1 x y - abs "+string(hidmp)+" / 4 ^ +"
mt_lutxy( clp, clp.RemoveGrain(rgmode,-1,-1), \
"x y == x x x y - abs "+ZRP+" / "+PWR+" ^ "+ZRP+" * "+STR+" * x y - 2 ^ x y - 2 ^ "+DMP+" + / * x y - x y - abs / * "+HDMP+" / + ?",chroma="copy first")
return( last )
}
# ======= Soothe() function to stabilze sharpening =======
function SootheSS(clip sharp, clip orig, int "sootheT", int "sootheS")
{
sootheT = default(sootheT, 25 )
sootheS = default(sootheS, 0 )
sootheT = (sootheT > 100) ? 100 : (sootheT < -100) ? -100 : sootheT
sootheS = (sootheS > 100) ? 100 : (sootheS < 0) ? 0 : sootheS
ST = string( 100 - abs(sootheT))
SSPT = string( 100 - abs(sootheS))
mt_makediff(orig,sharp)
(sootheS==0) ? last
\ : mt_lutxy( last, last.removegrain(20,-1,-1),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+SSPT+" * 128 + x 128 - abs y 128 - abs > x "+SSPT+" * y 100 "+SSPT+" - * + 100 / x ? ?", chroma="ignore")
(sootheT==0) ? last
\ : mt_lutxy( last, last.temporalsoften(1,255,0,32,2),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+ST+" * 128 + x 128 - abs y 128 - abs > x "+ST+" * y 100 "+ST+" - * + 100 / x ? ?", chroma="ignore")
(sootheT > -1) ? last
\ : mt_lutxy( last, last.temporalsoften(1,255,0,32,2),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+ST+" * 128 + x 128 - abs y 128 - abs > x "+ST+" * y 100 "+ST+" - * + 100 / x ? ?",chroma="ignore")
mt_makediff(orig,last)
# mergechroma(sharp) # not needed in SeeSaw
return( last )
}
# ======= MOD4-and-atleast-16 helper function =======
function m4(float x) {x<16?16:int(round(x/4.0)*4)}
Jeremy Duncan
5th May 2007, 10:28
Just fyi,
Lowering the SootheT=95, to SootheT=15, increases the resolution a whole lot.
But the downside is the noise is increased so there's literally no denoising and all the noise is sharpened.
So if you have anoisey dvd, leave the soothet=95, but on a dvd with no noise set it to 15 to get more detail out.
If you only want detail.
The LSF config has no soothet in it, and as a result is very sharp, but suffers from the noise problem soothet fixes.
It'll look like this
SetMemoryMax(1024)
FluxSmoothT(3)
ColorMatrix(Mode="Rec.601->Rec.709",scaling=2,threads=2)
MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=2.40, Szp=1, Slimit=50, Sdamplo=16, Spower=1, sootheT=15, SdampHi=39)",3)
lanczosresize(1680, 1050)
Jeremy Duncan
8th May 2007, 19:12
I tried to encode using the software I linked, in post one.
But virtualdub kept crashing.
So, I updated the virtualdub and included a software kit for basic deinterlacing with software I know works.
fight2win
9th May 2007, 17:22
MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=1)",3)
gave me a nice video but with jagged edges,how to tweak this?
Boulder
9th May 2007, 18:05
Jaggies are probably caused by you using a supersampling factor of 1.0. You can't use a higher one though because MT doesn't like resizing in both horizontally and vertically.
Jeremy Duncan
17th May 2007, 18:40
Copy and paste the Seesaw code into notepad, name it Seesaw, save it in the avisynth plugins folder. Change the .txt extension to .avsi by opening the tools tab in the avisynth folder, folder options, Uncheck "Hide extensions for known types".
# SeeSaw v0.3e (02 Jan 2006)
#
# (Full Name: "Denoiser-and-Sharpener-are-riding-the-SeeSaw" )
#
# This function provides a (simple) implementation of the "crystality sharpen" principle.
# In conjunction with a user-specified denoised clip, the aim is to enhance
# weak detail, hopefully without oversharpening or creating jaggies on strong
# detail, and produce a result that is temporally stable without detail shimmering,
# while keeping everything within reasonable bitrate requirements.
# This is done by intermixing source, denoised source and a modified sharpening process,
# in a seesaw-like manner.
#
# This version is considered alpha.
#
# Usage:
#
# a = TheNoisySource
# b = a.YourPreferredDenoising()
# SeeSaw( a, b, [parameters] )
#
# You're very much encouraged to feed your own custom denoised clip into SeeSaw.
# If the "denoised" clip parameter is omitted, a simple "spatial pressdown" filter is used.
#
#
# Fiddled together by Didée, for your pleasure.
#
# ======= Main function =======
function SeeSaw( clip clp, clip "denoised",
\ int "NRlimit",int "NRlimit2",
\ float "Sstr", int "Slimit", float "Spower", float "SdampLo", float "SdampHi", float "Szp",
\ float "bias", int "Smode", int "sootheT", int "sootheS", float "ssx", float "ssy")
{
ssx = default( ssx, 1.0 ) # supersampling factor x / SeeSaw doesn't require supersampling urgently.
ssy = default( ssy, ssx ) # supersampling factor y / if at all, small values ~1.25 seem to be enough.
NRlimit = default( NRlimit, 2 ) # absolute limit for pixel change by denoising
NRlimit2 = default( NRlimit2, NRlimit+1) # limit for intermediate denoising
Sstr = default( Sstr, 1.5 ) # Sharpening strength (don't touch this too much)
Slimit = default( Slimit, NRlimit+2 ) # positive: absolute limit for pixel change by sharpening
# negative: pixel's sharpening difference is reduced to diff=pow(diff,1/abs(limit))
Spower = default( Spower, 4 ) # exponent for modified sharpener
Szp = default( Szp, 16+2 ) # zero point - below: overdrive sharpening - above: reduced sharpening
SdampLo = default( SdampLo, Spower+1 ) # reduces overdrive sharpening for very small changes
SdampHi = default( SdampHi, 24 ) # further reduces sharpening for big sharpening changes. Try 15~30. "0" disables.
bias = default( bias, 49 ) # bias towards detail ( >= 50 ) , or towards calm result ( < 50 )
Smode = default( Smode, ssx<1.35 ? 11 : ssx<1.51 ? 20 : 19 )
sootheT = default( sootheT, 49 ) # 0=minimum, 100=maximum soothing of sharpener's temporal instableness.
# (-100 .. -1 : will chain 2 instances of temporal soothing.)
sootheS = default( sootheS, 0 ) # 0=minimum, 100=maximum smoothing of sharpener's spatial effect.
Szp = Szp / pow(Sstr, 1.0/4.0) / pow( (ssx+ssy)/2.0, 1.0/2.0 )
SdampLo = SdampLo / pow(Sstr, 1.0/4.0) / pow( (ssx+ssy)/2.0, 1.0/2.0 )
ox=clp.width
oy=clp.height
xss = m4(ox*ssx)
yss = m4(oy*ssy)
NRL = string( NRlimit )
NRL2 = string( NRlimit2 )
NRLL = string( int(round( NRlimit2 * 100.0/bias - 1.0 )) )
SLIM = string( abs(Slimit) )
BIAS1 = string( bias )
BIAS2 = string( 100-bias )
#ZRP = string( abs(Szp) )
#PWR = string( abs(Spower) )
#DMP = string( SdampLo )
denoised = defined(denoised) ? denoised : mt_lutxy(clp,clp.removegrain(4,-1),"x "+NRL+" + y < x "+NRL+" + x "+NRL+" - y > x "+NRL+" - y ? ?",chroma="copy first")
NRdiff = mt_makediff(clp,denoised,chroma="process")
tame = mt_lutxy(clp,denoised,"x "+NRLL+" + y < x "+NRL2+" + x "+NRLL+" - y > x "+NRL2+" - x "+BIAS1+" * y "+BIAS2+" * + 100 / ? ?")
head = tame.sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,4)
# head = head.mt_merge(tame,tame.prewitt(multiplier=1.0).mt_expand().removegrain(20))
(ssx==1.0 && ssy==1.0) ? repair(tame.sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,Smode),head,1,-1,-1)
\ : repair(tame.lanczosresize(xss,yss).sharpen2(Sstr,Spower,Szp,SdampLo,SdampHi,Smode),head.bicubicresize(xss,yss,-.2,.6),1,-1,-1).lanczosresize(ox,oy)
SootheSS(last,tame,sootheT,sootheS)
sharpdiff= mt_makediff(tame,last)
(NRlimit==0) ? clp : \
mt_lutxy(clp,NRdiff, "y 128 "+NRL+" + > x "+NRL+" - y 128 "+NRL+" - < x "+NRL+" + x y 128 - - ? ?",chroma="process")
Slimit>=0 ? mt_lutxy(last,sharpdiff,"y 128 "+SLIM+" + > x "+SLIM+" - y 128 "+SLIM+" - < x "+SLIM+" + x y 128 - - ? ?",chroma="copy first")
\ : mt_lutxy(last,sharpdiff,"y 128 == x x y 128 - abs 1 "+SlIM+" / ^ y 128 - y 128 - abs / * - ?",chroma="copy first")
return( last )
}
# ======= Modified sharpening function =======
function sharpen2(clip clp, float strength, int power, float zp, float lodmp, float hidmp, int rgmode)
{
STR = string( strength )
PWR = string( 1.0/float(power) )
ZRP = string( ZP )
DMP = string( lodmp )
HDMP = (hidmp==0) ? "1" : "1 x y - abs "+string(hidmp)+" / 4 ^ +"
mt_lutxy( clp, clp.RemoveGrain(rgmode,-1,-1), \
"x y == x x x y - abs "+ZRP+" / "+PWR+" ^ "+ZRP+" * "+STR+" * x y - 2 ^ x y - 2 ^ "+DMP+" + / * x y - x y - abs / * "+HDMP+" / + ?",chroma="copy first")
return( last )
}
# ======= Soothe() function to stabilze sharpening =======
function SootheSS(clip sharp, clip orig, int "sootheT", int "sootheS")
{
sootheT = default(sootheT, 25 )
sootheS = default(sootheS, 0 )
sootheT = (sootheT > 100) ? 100 : (sootheT < -100) ? -100 : sootheT
sootheS = (sootheS > 100) ? 100 : (sootheS < 0) ? 0 : sootheS
ST = string( 100 - abs(sootheT))
SSPT = string( 100 - abs(sootheS))
mt_makediff(orig,sharp)
(sootheS==0) ? last
\ : mt_lutxy( last, last.removegrain(20,-1,-1),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+SSPT+" * 128 + x 128 - abs y 128 - abs > x "+SSPT+" * y 100 "+SSPT+" - * + 100 / x ? ?", chroma="ignore")
(sootheT==0) ? last
\ : mt_lutxy( last, last.temporalsoften(1,255,0,32,2),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+ST+" * 128 + x 128 - abs y 128 - abs > x "+ST+" * y 100 "+ST+" - * + 100 / x ? ?", chroma="ignore")
(sootheT > -1) ? last
\ : mt_lutxy( last, last.temporalsoften(1,255,0,32,2),
\ "x 128 - y 128 - * 0 < x 128 - 100 / "+ST+" * 128 + x 128 - abs y 128 - abs > x "+ST+" * y 100 "+ST+" - * + 100 / x ? ?",chroma="ignore")
mt_makediff(orig,last)
# mergechroma(sharp) # not needed in SeeSaw
return( last )
}
# ======= MOD4-and-atleast-16 helper function =======
function m4(float x) {x<16?16:int(round(x/4.0)*4)}
Copy and paste the Soothe code into notepad, name it Soothe, save it in the avisynth plugins folder. Change the .txt extension to .avsi by opening the tools tab in the avisynth folder, folder options, Uncheck "Hide extensions for known types".
function Soothe(clip sharp, clip orig, int "keep")
{
Assert(sharp.width == orig.width && sharp.height == orig.height,
\ "Soothe: clip dimentions must match!")
keep = default(keep, 24)
keep = (keep>100) ? 100 : (keep<0) ? 0 : keep
KP = string(keep)
diff = mt_makediff(orig,sharp)
diff2 = diff.temporalsoften(1,255,0,32,2)
diff3 = mt_lutxy(diff,diff2, "x 128 - y 128 - * 0 < x 128 - 100 / " + KP
\ + " * 128 + x 128 - abs y 128 - abs > x " + KP
\ + " * y 100 " + KP + " - * + 100 / x ? ?")
return( mt_makediff(orig,diff3,chroma="copy first") )
}
Copy and paste the Limitedsharpenfaster code into notepad, name it Limitedsharpenfaster, save it in the avisynth plugins folder. Change the .txt extension to .avsi by opening the tools tab in the avisynth folder, folder options, Uncheck "Hide extensions for known types".
# LimitedSharpen() ( a modded version, 29 Oct 2005 )
#
# A multi-purpose sharpener by Didée
#
#
# Changes in this mod:
#
# - RemoveGrain >= v0.9 IS REQUIRED!!
# ==================================
#
# - Smode=4 / sometimes does the magic ;-)
# - a separate "undershoot" parameter, to allow for some line darkening in comic or Anime
# - Lmode=3 / on edges, limited sharpening with zero OS & US. On not-edges, limited sharpening with specified OS + LS
# - "soft" acts different now: no more boolean true/false, but instead integer 0 - 100 (or -1 -> automatic)
# instead of blurring before finding minima/maxima, it now softens the "effect-of-sharpening"
# - edgemode=-1 now shows the edgemask. (scaling still not implemented :p )
#
## - MODIFIED version using MaskTools 2.0
function LimitedSharpenFaster( clip clp,
\ float "ss_x", float "ss_y",
\ int "dest_x", int "dest_y",
\ int "Smode" , int "strength", int "radius",
\ int "Lmode", bool "wide", int "overshoot", int "undershoot",
\ int "soft", int "edgemode", bool "special",
\ int "exborder" )
{
ox = clp.width
oy = clp.height
Smode = default( Smode, 3 )
ss_x = (Smode==4)
\ ? default( ss_x, 1.25)
\ : default( ss_x, 1.5 )
ss_y = (Smode==4)
\ ? default( ss_y, 1.25)
\ : default( ss_y, 1.5 )
dest_x = default( dest_x, ox )
dest_y = default( dest_y, oy )
strength = (Smode==1)
\ ? default( strength, 160 )
\ : default( strength, 100 )
strength = (Smode==2&&strength>100) ? 100 : strength
radius = default( radius, 2 )
Lmode = default( Lmode, 1 )
wide = default( wide, false )
overshoot = default( overshoot, 1)
undershoot= default( undershoot, overshoot)
softdec = default( soft, 0 )
soft = softdec!=-1 ? softdec : sqrt( (((ss_x+ss_y)/2.0-1.0)*100.0) ) * 10
soft = soft>100 ? 100 : soft
edgemode = default( edgemode, 0 )
special = default( special, false )
exborder = default( exborder, 0)
#radius = round( radius*(ss_x+ss_y)/2) # If it's you, Mug Funky - feel free to activate it again
xxs=round(ox*ss_x/8)*8
yys=round(oy*ss_y/8)*8
smx=exborder==0?dest_x:round(dest_x/Exborder/4)*4
smy=exborder==0?dest_y:round(dest_y/Exborder/4)*4
clp.isYV12() ? clp : clp.converttoyv12()
ss_x != 1.0 || ss_y != 1.0 ? last.lanczosresize(xxs,yys) : last
tmp = last
edge = mt_logic( tmp.mt_edge(thY1=0,thY2=255,"8 16 8 0 0 0 -8 -16 -8 4")
\ ,tmp.mt_edge(thY1=0,thY2=255,"8 0 -8 16 0 -16 8 0 -8 4")
\ ,"max") .mt_lut("x 128 / 0.86 ^ 255 *") #.levels(0,0.86,128,0,255,false)
tmpsoft = tmp.removegrain(11,-1)
dark_limit1 = tmp.mt_inpand()
bright_limit1 = tmp.mt_expand()
dark_limit = (wide==false) ? dark_limit1 : dark_limit1 .removegrain(20,-1).mt_inpand()
bright_limit = (wide==false) ? bright_limit1 : bright_limit1.removegrain(20,-1).mt_expand()
minmaxavg = special==false
\ ? mt_average(dark_limit1, bright_limit1)
\ : mt_merge(dark_limit,bright_limit,tmp.removegrain(11,-1),Y=3,U=-128,V=-128)
Str=string(float(strength)/100.0)
normsharp = Smode==1 ? unsharpmask(strength,radius,0)
\ : Smode==2 ? sharpen(float(strength)/100.0)
\ : Smode==3 ? mt_lutxy(tmp,minmaxavg,yexpr="x x y - "+Str+" * +")
\ : mt_lutxy(tmp,tmpsoft,"x y == x x x y - abs 16 / 1 2 / ^ 16 * "+Str+
\ " * x y - 2 ^ x y - 2 ^ "+Str+" 100 * 25 / + / * x y - x y - abs / * + ?")
OS = string(overshoot)
US = string(undershoot)
mt_lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x y x - "+OS+" - 1 2 / ^ + "+OS+" + ?")
mt_lutxy( dark_limit, last, yexpr="y x "+US+" - > y x x y - "+US+" - 1 2 / ^ - "+US+" - ?")
Lmode==1 ? mt_clamp(normsharp, bright_limit, dark_limit, overshoot, undershoot) : last
normal = last
zero = mt_clamp(normsharp, bright_limit, dark_limit, 0,0)
Lmode==3 ? mt_merge(normal,zero,edge.mt_inflate()) : normal
edgemode==0 ? last
\ : edgemode==1 ? mt_merge(tmp,last,edge.mt_inflate().mt_inflate().removegrain(11,-1),Y=3,U=1,V=1)
\ : mt_merge(last,tmp,edge.mt_inflate().mt_inflate().removegrain(11,-1),Y=3,U=1,V=1)
AMNT = string(soft)
AMNT2 = string(100-soft)
sharpdiff=mt_makediff(tmp,last)
sharpdiff2=mt_lutxy(sharpdiff,sharpdiff.removegrain(19,-1),
\ "x 128 - abs y 128 - abs > y "+AMNT+" * x "+AMNT2+" * + 100 / x ?")
soft==0 ? last : mt_makediff(tmp,sharpdiff2)
(ss_x != 1.0 || ss_y != 1.0)
\ || (dest_x != ox || dest_y != oy) ? lanczosresize(dest_x,dest_y) : last
ex=blankclip(last,width=smx,height=smy,color=$FFFFFF).addborders(2,2,2,2).coloryuv(levels="TV->PC")
\.blur(1.3).mt_inpand().blur(1.3).bicubicresize(dest_x,dest_y,1.0,.0)
tmp = clp.lanczosresize(dest_x,dest_y)
clp.isYV12() ? ( exborder==0 ? tmp.mergeluma(last)
\ : mt_merge(tmp,last,ex,Y=3,U=1,V=1) )
\ : ( exborder==0 ? tmp.mergeluma(last.converttoyuy2())
\ : tmp.mergeluma( mt_merge(tmp.converttoyv12(),last,ex,Y=3,U=1,V=1)
\ .converttoyuy2()) )
(edgemode!= -1) ? last : edge.lanczosresize(dest_x,dest_y).greyscale
return last
}
:helpful:
Porsche_fan
18th June 2007, 03:20
I updated the first post.
I updated the FFDshow audio configuration to include equalizer settings.
I updated the Seesaw code to Didée's specifications, it's got less haloing (not as a result of following Didée's advice) and now you can set the sharpness higher using the crossbar pattern.
I updated the FFDshow picture, and the FFDshow.exe in the software package.
And I added a "Seesaw Avisynth" configuration that's better than the Seesaw configuration (I can just barely play it smoothly on my e6600 core 2 duo :D ).
Thanks Jeremy for your efforts to assemble information and components tailored to real-time playback. I appreciated it.
I was wondering in the above quote of yours…what are you referring to as to the updated SeeSaw code? I may be mistaken but I was under the impression that the latest version is SeeSaw v0.3e (02 Jan 2006) which to me implies that there weren’t any recent changes to Didee’s specifications. Also you indicate that it has less haloing but not as a result of Didee’s advice. Might you clarify what you mean here as well along with what is this "Seesaw Avisynth" configuration that you are referring to...I didn't see this info in your file. Thanks
Jeremy Duncan
19th June 2007, 03:20
When I said seesaw code, I meant the configuration.
Example.
SeeSaw(NRlimit=0, NRlimit2=5, Sstr=2.22, Szp=1, Slimit=50, Sdamplo=16, Spower=1, sootheT=95, SdampHi=39)
Didée said that a spower of 0 was wrong, and I had bias in there i think and that was set wrong. So i changed them like he showed and it was the same as before, but I was cool with that.
I made a crossbar pattern, and by using the ffdshow levels tab I can highlight luma sharpening halo's more than they are usual. And I tweaked some other settings than spower and bias and got the luma halo set properly. That's why I said it wasn't because of Didée's advice.
Jeremy Duncan
9th September 2007, 10:50
Ok. Upon further testing of Seesaw 2.5, I saw a strong halo on the upper rim that was not related to how strong the sharpening was in Seesaw or Luma sharpen.
So I changed from using the Warpsharp in FFDshow, to using the Warpsharp.dll in FFDshow avisynth.
Nothings changed but the halo artifact is gone.
midelic
9th September 2007, 11:40
Did you use original ffdshow warpsharp or awarpsharp,....because awarpsharp from ffdshow is very good for removing halo artifacts .....at least in my testing?
Jeremy Duncan
9th September 2007, 12:20
Did you use original ffdshow warpsharp or awarpsharp,....because awarpsharp from ffdshow is very good for removing halo artifacts .....at least in my testing?
ffdshow warpsharp.
magicclue
4th October 2007, 23:11
nice try but your thread is 8 pages long by now!
Do you expect everyone reading through all this to find your latest config?
Why don't you just update your first post on the first page?
Just curious..:confused:
Jeremy Duncan
4th October 2007, 23:21
magicclue,
That's the first thing I do before I add another post to the end of the thread.
Mashuto
9th November 2007, 00:50
I did a search and couldnt find anything, but I figured ide ask here.
Whenever I try to enable Avisynth through ffdshow, I get a runtime error. Anyone know how to fix this so I can actually load some filters?
Leak
9th November 2007, 10:39
Whenever I try to enable Avisynth through ffdshow, I get a runtime error. Anyone know how to fix this so I can actually load some filters?
Well, if you could provide a more in-depth description than "I get a runtime error", then someone might be able to help you...
What ffdshow and AviSynth versions are you using? What does the runtime error say exactly? What OS/player/etc. are you using? What's the script you're using? Details, details, details...
Mashuto
9th November 2007, 12:48
Well, if you could provide a more in-depth description than "I get a runtime error", then someone might be able to help you...
What ffdshow and AviSynth versions are you using? What does the runtime error say exactly? What OS/player/etc. are you using? What's the script you're using? Details, details, details...
Its a Visual C++ Runtime error. The error window is titled, "Microsoft Visual C++ Runtime Library" and says
Program: (insert program path here, regardless of which media player)
abnormal program termination.
It seems to happen regardless of what player I use. I tried installing a coupld different versions of avisynth and ffdshow, and even reinstalling the visual c++ runtime libraries. I normally use media player classic 6.4.9.0, but I tried the latest zoomplayer that was included in the package on the front page and it still happened. Avisynth was also the version included in the package, so i think 2.5.8, ffdshow was the latest official beta of ffdshow tryouts, which is beta 3, dated... july 07.
This happens irregardless of scripts. I cant even run a script. If media is playing and I go to the ffdshow properties and even just click the check box next to avisynth, I get this runtime error. If Avisynth is checked before hand, as soon as I load any media, I get the runtime error.
Sorry for not being specific before. Any help you can provide would be great... also, should this be moved to a new thread?
Leak
9th November 2007, 14:51
ffdshow was the latest official beta of ffdshow tryouts, which is beta 3, dated... july 07.
Well, that's quite an ancient version, and I think there was at least one fix to the AviSynth filter after beta 3, so I'd suggest you try a newer version from here (http://sourceforge.net/project/showfiles.php?group_id=173941)...
Mashuto
9th November 2007, 15:03
Well, that's quite an ancient version, and I think there was at least one fix to the AviSynth filter after beta 3, so I'd suggest you try a newer version from here (http://sourceforge.net/project/showfiles.php?group_id=173941)...
I will give that a try after I get home from work tonight
Mashuto
10th November 2007, 05:41
Well I tried the latest build from clsid, rev 1596 from 11-08 and I still get the exact same error, any ideas?
Leak
10th November 2007, 12:47
I thought something was broken with regard to DVD decoding when MPC kept crashing on me when I tried to play DVDs, but I just found out that it seems to be automatic preset loading that's crashing, because the crashes stop as soon as I turn it off - choosing the right preset
Some further testing seems to indicate that ffdshow crashes when none of the autoload presets match...
EDIT: I've put up my exported settings here (http://leak.no-ip.org/ffdshow/ffdshow_reg.7z) - could you please try if they also crash for you, Haruhiko?
EDIT^2: false alarm - it's actually the "DVD 800x600 PAL" preset crashing because KernelBob is turned on in it... :(
np: 2 Bit Pie - After Hours (2 Pie Island)
Wilbert
25th August 2008, 17:16
Please don't post to increase your number of posts or to keep this thread current. If i see your number of posts versus other's posts in this thread i should have said this a long time ago.
45tripp
25th August 2008, 21:05
you can post to bump an update...
sounds perfectly legitimate and normal to me.
if it's a general address to Jeremy Duncan's style,
the call out seems completely mistimed and completely misplaced
unless you're implying a faux update,
which i don't have the data to judge,
but i'd stake not.
Jeremy Duncan
2nd September 2008, 10:05
i updated the 2nd post.
i also deleted my previous reply so my post count wouldn't go up.
Blue_MiSfit
10th September 2008, 08:48
Anyone able to get real-time playback (with no dropped frames) of 1080p VC1 or H.264 with LSF or SeeSaw?? My Q6600 still stutters even with 4 threads set in MT().
~MiSfit
ruie
9th March 2009, 21:42
hey, I've been trying this and found the settings gave me a really better quality to my dvd's, but as a portuguese I need to view dvd's subtitles, and I wanted to ask if that is possible?
Jeremy Duncan
10th March 2009, 07:26
if you use media player classic. When playing the video open, right click the screen and choose the navigate tab.
There you can select various subtitle languages.
Jeremy Duncan
18th March 2009, 10:42
I added a guide to encode in the fourth post.
Edit,
I updated my encode guide.
Edit,
Adding the below text:
I've tried this three times now. I follow the video step by step, I even save all the files to the desktop as you did. But in HC, when I go to add the encode project.avs file, as soon as i mouse the arrow over to select it, HC completely shuts down. Whats my major malfunction?
Can I Remove the Ctfmon.exe File?
Removing the Ctfmon.exe might cause problematic behavior in your Office XP programs, so removing it is not recommended. To prevent Ctfmon.exe from running, follow these steps.
Step 1: Uninstall Alternative User Input
To uninstall the alternative user input feature, set the installation state to Not Available in Office XP Setup.
Microsoft Windows Millennium Edition (Me), Microsoft Windows 98, or Microsoft Windows NT 4.0:
1. Quit all Office programs.
2. Click Start, point to Settings, and then click Control Panel.
3. In Control Panel, double-click Add/Remove Programs.
4. On the Install/Uninstall tab, click to select Microsoft Office XP product, where Office XP product is the name of the specific Office product being used. If you are using a standalone version of one of the Office programs, click to select the appropriate product in the list. Click Add/Remove.
5. In the Maintenance Mode Options dialog box, select Add or Remove Features, and then click Next. This displays the Choose installation options for all Office applications and tools dialog box.
6. Click the plus sign (+) next to Office Shared Features to expand it.
7. Click the icon next to Alternative User Input, and then select Not Available.
8. Click Update.
NOTE: If you have multiple Office XP products installed, for example, Office XP Professional and Publisher 2002, you must repeat the preceding steps for each installed product.
Microsoft Windows 2000 and Microsoft Windows XP:
1. Quit all Office programs.
2. Click Start, point to Settings, and then click Control Panel. NOTE: In Windows XP, click Start and then click Control Panel.
3. In Control Panel, double-click Add/Remove Programs.NOTE: In Windows XP, click Add or Remove Programs.
4. In the Currently installed programs list, click to select Microsoft Office XP product, where Office XP product is the name of the specific Office product being used. If you are using a standalone version of one of the Office programs, click to select the appropriate product in the list. Click Change.
5. In the Maintenance Mode Options dialog box, select Add or Remove Features, and then click Next. This displays the Choose installation options for all Office applications and tools dialog box.
6. Click the plus sign (+) next to Office Shared Features to expand it.
7. Click the icon next to Alternative User Input, and then select Not Available.
8. Click Update.
NOTE: If you have multiple Office XP products installed, for example, Office XP Professional and Publisher 2002, you must repeat the preceding steps for each installed product.
Step 2: Remove Alternative User Input Services from Text Services
1. Click Start, point to Settings, and then click Control Panel.
2. In the Control Panel, double-click Text Services.NOTE: In Windows XP, click Date, Time, Language, and Regional Options, and then click Regional and Language Options. On the Languages tab, click Details.
3. Under Installed Services, select each input item that is listed, and then click Remove to remove the item. All items must be removed, one by one, except the following input service:
English (United States)- default Keyboard United States 101
Step 3: Run Regsvr32 /U on the Msimtf.dll and Msctf.dll Files
1. Click Start and then click Run.
2. In the Run dialog box, type the following command:
Regsvr32.exe /u msimtf.dll
3. Click OK.
4. Repeat steps 1 through 3 for the Msctf.dll file.
uninstall ctfmon (http://support.microsoft.com/default.aspx?scid=kb;EN-US;q282599)
To resolve this behavior, you can turn off speech recognition and text services. To turn on or turn off Windows XP text services, use one of the following methods.
Back to the top
Method One
To turn on or turn off Windows XP text services:
1. Click Start, and then click Control Panel.
2. Click Date, Time, Language, and Regional Options.
3. Click Regional and Language Options.
4. Click the Languages tab, and then click Details in the Text services and input languages box.
5. Click Language Bar in the Preferences box.
6. To turn off text services, click to select the Turn off advanced text services check box. To turn on text services, click to clear the Turn off advanced text services check box.
7. Click Yes if you are prompted to confirm your selection.
Back to the top
Method Two
To turn on or turn off Windows XP text services:
1. Right-click the Language bar.
2. Click Settings.
3. Click Language Bar in the Preferences box.
4. To turn off text services, click to select the Turn off advanced text services check box. To turn on text services, click to clear the Turn off advanced text services check box.
5. Click OK, and then click Yes or click OK to confirm your selection.
another malfunction (http://support.microsoft.com/kb/313176/EN-US/)
Jeremy Duncan
26th March 2009, 07:49
What does the basic configuration do?
The basic premise of using ffdshow is to resize the standard definition picture of a movie to a larger definition like 1080p.
You could just use the videocard scaling, but if you use my test disks (link (http://forum.doom9.org/showthread.php?t=140747)) and compare ffdshow spline resize to say powerdvd resize with only dxva from the videocard, the ffdshow resize would look cleaner and more detailed.
What does the intermediate ffdshow configuration do?
It adds two different sharpeners and a denoiser to increase the picture quality.
If you look at my test disks, if you increase the sharpness before resizing the resizng quality increases.
What does the advanced configuration do?
It uses frame interpolation.
This is to increase the number of frames used in order to get a more 3d, more realistic picture.
What is mt?
MT is useful to spread the cpu load between different cpu cores.
Doing this means one cpu core is not maxed out to 100% and so you have no stuttering during movie playback.
MT is more useful on cores rather than through hyper threading.
I have a tricore amd cpu and the mt is crashing my player?
Use the 2.5.7 version of avisynth.dll. link (http://www.avisynth.org/tsp/MT_07.zip)
im not up on bluray, but what is this actually doing?
with respect to standard def dvds, you aren't making the size smaller, so why not rip with dvd fab free to folder and be done? Why bother with the rest?
this is what i do now, can someone explain what benefit i would get from going through the rest of the steps?
The only benefit is to get rid of pulldown without having to use avisynth code or some other software to do it while the movie is playing.
If you do this and get rid of the pulldown the frame doubler tearing is not bad.
You get some tearing if you use mt with the frame doubler and none if you don't use mt.
The idea was that for people who want to use the ffdshow frame doubler with fair quality, then first getting rid of pulldown this way then running the ffdshow frame doubler was how to do it.
Also I find standard definition movies with no pulldown to look better than it does when it has pulldown. Even with no frame doubler.
Encoding.
The basic, intermediate, and advanced configurations can be modified and run through encoding so ffdshow is not needed.
You would need to link to the plugins, below dgdecode.dll.
And you would need to use a resizer like lanczosresize() or spline64resize(). The resizers would be below the other avisynth code.
Jeremy Duncan
2nd January 2010, 04:55
renethx wrote "There is no free DTS-HD decoder yet. So you have to be content with DTS core.
With M2TS/ISO with (by Clown_BD) or MKV (by MakeMKV or Clown_BD+mkvmerge) with the original video/audio/subtitle tracks intact + MPC-HC (or any DS player if you don't care about subtitle+DXVA) + ffdshow + HD 5xxx (+ WASAPI for LPCM), you will get perfect audio. Without HD 5xxx, you will get bit-perfect LPCM except for DTS-HD."
link (http://www.avsforum.com/avs-vb/showthread.php?p=17818912#post17818912)
"Hi,
we now have on FFDShow Tryout a working beta version which lets bitstream HD audio formats to the HDMI output of your sound/graphic adapter.
What is bitstream :
first there are compressed formats (MP3, MP2, AC3,DTS) and uncompressed formats (PCM, LPCM).
Compressed formats need to be decoded before sending them to your receiver or speakers.
However, it is possible to let the stream go compressed and send it to your receiver so that it takes in charge the decoding.
This was the case for AC3 and DTS : it is called SPDIF, based on IEC 61937 formats.
Now, new HD audio formats such as Dolby True HD, Dolby Digital Plus and DTS-HD (High Resolution or Master Audio) can also be sent compressed to the receiver.
This is called bitstream.
A HDMI output is required to do that (SPDIF has not a sufficient bandwidth).
This is interesting as receivers can be considered as better decoders than software decoders and furthermore there is no existing free DTS HD software decoder yet.
What has been done on FFDShow Tryout :
- bitstream support for TrueHD, DTS-HD (HR & MA) using the new radeon 5xxx series on Vista and Windows 7 (32 & 64 bits). Depending on the OS and the format, some audio renderers may not work. Try several : directsound, waveout and MPC renderer
- TrueHD, DTS HD and Dolby Digital Plus bistream are working on the xonar (Vista and Windows 7). waveout and Arcsoft renderer work well.
What needs to be fixed or improved :
- Dolby Digital Plus bitstream on ATI 5xxx : this is likely due to a driver issue (ATI drivers don't support DD+ yet)
- auzentech : no HD bitstream support because the streams are encrypted by the software (powerdvd) to the audio driver. Ask Auzentech to bring support for third party players
- LPCM support to be added (on 24 bits sampling at 48000/96000/192000 Hz, LPCM 16 bits is already supported)
The HD audio bitstream is now integrated to FFDShow Tryout daily builds since revision 3161
Setup :
- Install FFDShow Tryout revision 3161 or greater, 32 or 64 bits
- On Vista : you will need the MPC audio renderer. It is very recent and in early stage but it is functional.
- On windows 7 : directsound renderer should work on most bistream formats. Otherwise use the waveout renderer or MPC renderer
- If you have a xonar : won't work with directsound renderer, the best is to use the the arcsoft renderer (on a dos window in administrator mode : regsvr32 (total media path)\codecs\asrenderer.dll). Otherwise try the waveout or MPC renderer (don't know if they will work)
- Player software :
1/MPC-HC : you will have to grab a very recent version of MPC-HC (revision 1413 or greater). If you don't have the right version the MPC mpeg splitter will break the DTS HD streams and the MPC renderer won't work
2/Other directshow players (WMP,...) : you will need MPC-HC *recent* standalone filters (revision 1413 or greater). Just register MPC audio renderer and MPC mpeg splitter. For MKV Haali media splitter should work too
Status for ATI 5xxx series owners
(with-if needed- or without tulli's override monitor driver)
- Windows Seven:
Just with Ati 9.12 hotfix drivers:
DTSHD: no problem with PDVD9 and MPC-HC (ffdshow 54+ MPC Audio Renderer)
THD: No problem with PDVD9 and the best renderer is Ati HDMI Output for MPC-HC (with ffdshow 54)
Realtek 239 over 12 hotfix:
Both HD formats may use Default DirectSound Device.
- Windows Vista:
ffdshow HD bitstreaming only works with Ati 9.12 hotfix drivers by alone using MPC HC Audio renderer on Vista; Realtek 239 doesn't work.
While PDVD9 can work even Realtek 239 is loaded over 9.12 hotfix."
source info (http://forum.doom9.org/showthread.php?p=1349575#post1349575)
- I updated the advanced settings in the first post and wanted to tell you without posting a new thread, so I deleted my previous reply then reposted it with this info I writting to you now. :)
jeremy33
8th March 2010, 04:37
Jeremy Duncan
Do you think it's a good idea to use your intermediate settings with fast SPP deblocking 35% (No fast SPP deblocking for DVD) and deband 1.15 for every SD video and add a resize?
setmtmode(2,4)
Last=ffdshow_source()
setmemorymax(550)
setmtmode(2)
a= last
b=a.Spresso_JD()
SeeSaw_JD(a,b)
LimitedSharpenFaster_JD(strength=11)
LimitedSharpenFaster_JD(strength=11)
mWidth = float(last.width)
mHeight = float(last.height)
ratio = (mWidth/mHeight)
newHeight = round((1280/ratio)/2)*2
MT("spline64resize(1280, last.height)",2)
MT("spline64resize(last.width, newHeight)",2, splitvertical=true)
distributor()
Jeremy Duncan
9th May 2010, 14:02
That avisynth script needs some form of luma blur to tone down those halos. The deband and deblocking don't helo much from the tests I did when I tried your code.
oddball
1st June 2010, 03:39
I have just followed this guide for basic Avisynth output in Windows 7 with the latest MPC HC build and all I get is a black screen when Avisynth is enabled.
Jeremy Duncan
25th March 2011, 03:54
I updated the first post.
oscar22
4th April 2011, 10:54
Hi, Thanks for all this info. I wanted to watch some dvd's and thought is was nice to upscale them.
I tried to follow your instructions. Downloaded the software kit, the plugins and all that stuff. But there doesn't seem to be a modified avisynth.dll in them. Also no MT folder.
Do you have maybe a link to this avisynth.dll that I have to put in the c:\windows\sysWOW64 folder.
Thanks anyway
Jeremy Duncan
4th April 2011, 11:20
Hi, Thanks for all this info. I wanted to watch some dvd's and thought is was nice to upscale them.
I tried to follow your instructions. Downloaded the software kit, the plugins and all that stuff. But there doesn't seem to be a modified avisynth.dll in them. Also no MT folder.
Do you have maybe a link to this avisynth.dll that I have to put in the c:\windows\sysWOW64 folder.
Thanks anyway
I made a custom avisynth.exe that when used means you don't need to replace the avisynth.dll in the system32 folder.
Just install the avisynth.exe and your good to go. That's why I didn't include the dll to replace, as it's pointless.
oscar22
6th April 2011, 09:40
Hi,
Thanks for your quick reply. It seems to be working. The quality definetly increases a lot. I use the intermediate configuration with seesaw and limitsharpenfaster with madvr. Because I am on a core I5 2500k (4 cores), I used setmtmode(4) instead of (2). I hope this is all right. I notice you sometimes use. setmtmode(2,2) and sometimes just setmtmode(2) with only a single 2 and not (2,2). (it's a little bit confusing for me).
My cpu usage is only 20% on the 4 cores. But I don't think I want frameratedoubling or interpolation. So the intermediate profile is then the best it gets I guess. It assume it is the avisynt alternative to the sharpen and denoise filter in ffdshow itself. Or should I still use the deband filter in ffdshow.
Also in the frameratedoubling script you recommend for strong i-7 cpu's, I don't see any code for denoise or sharpen (seesaw/limitsharpen faster). Does that script still sharpen or denoise or does it just double the framerate? And the double framerate of a 24fps dvd would be 48 wich my television does not support. It would be a 50hz refreshrate then.
Oke thanks a lot for putting up this nice guide.
Jeremy Duncan
13th May 2011, 09:48
I have updated the first post, and decided to post my interpolation code here as well:
svp_scheduler=true
svp_cache_reduce=true
svp_flow_lib="C:\Program Files\Avisynth 2.5\plugins\libflowsse.dll"
setmtmode(5,0)
SetMemoryMax(512)
video=ffdshow_source().changefps(ffdshow_source(), linear=true)
A = video.autolevels()
B = video
setmtmode(2)
SetMemoryMax(512)
super_1 = A.MSuper(pel=2, hpad=12, vpad=12, rfilter=2, isse=true)
super_2 = B.MSuper(pel=2, hpad=12, vpad=12, rfilter=1, isse=true)
F = Video.MFinest(super_2)
backward_vec = MAnalyse(super_1, isb=true, search=3, searchparam=3, isse=true, lambda=350, dct=4)
forward_vec = MAnalyse(super_1, isb=false, search=3, searchparam=3, isse=true, lambda=350, dct=4)
backward_vec_1 = MRecalculate(super_1, backward_vec, blksize=8, search=2, searchparam=1, dct=10)
forward_vec_1 = MRecalculate(super_1, forward_vec, blksize=8, search=1, searchparam=1, dct=10)
video.MSmoothFps(super_2, backward_vec_1, forward_vec_1, num=0, den=1, thscd1=248, thscd2=50, finest=F, algo=23, sadgamma=2, sadml=450, ml=0, blend=true)
GetMTMode(false) > 0 ? distributor() : last
All the plugins are linked to in the first post, thanks to the svp team for the libflowgpu vs libflowsse dlls which lets me use such advanced code.
corporalgator
2nd June 2012, 16:32
Does anyone have a link to download this package? Seems the original author does not post on here or avs forums anymore.
zipi
21st January 2013, 03:55
Thanks for this, +1 on the links request, links are dead.
setarip_old
21st January 2013, 07:05
@zipi
Hi!
Just use BD Rebuilder (use the "IMPORT" function) to convert the ripped DVD to 720x480 "Blu-ray" [720x480 is not Blu-ray compliant and is only used here as an intermediate step] and then convert to 1920x1080 Blu-ray)...
manono
21st January 2013, 12:16
720x480 is not Blu-ray compliant...
Sure it is.
setarip_old
21st January 2013, 20:12
I should have said that 720x480 is not Blu-ray HD (Not really pertinent to the OP's question - internal workings of BD-RB).
The important part of my post is the suggestion to use BD-RB ;>}
manono
21st January 2013, 20:59
The important part of my post is the suggestion to use BD-RB ;>} [/Color]
A waste of time, if you ask me, when he can go straight to Hi-Def Blu-Ray compliant video from the DVD.
Anyway, I'm not at all sure you're addressing his question which was about getting the files that can teach him to do on-the-fly upscaling of DVDs to 1080p for viewing via an HTPC. There's nothing in his question or in this thread about creating a Hi-Def Blu-Ray from a DVD source.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.