02-08-2022, 10:50 AM
ThumperStrauss ThumperStrauss is offline
Premium Member
Join Date: May 2021
Location: Canada
Posts: 90
Thanked 7 Times in 6 Posts
I was curious to see with my own eyes the difference in quality between:
  1. video captured using the Panasonic ES15 built-in DVD recorder, and
  2. video captured using the ES15 as a passthrough to an AIW 9600XT AGP card (captured with VDub1911).
In both cases, I turned off NR settings in the ES15. Both videos were from an 8mm tape, played back on a Sony TRV66 using S-Video cables.

The VOB file created by the DVD recorder displays video that blocky (is that the correct term?). It also looks worse in a hard-to-describe way when played back in MPC compared to the version captured with the AIW 9600XT.

Then I ran the two videos through Hybrid using the same settings and upscaling both. I'm still experimenting so maybe I overdid it. Maybe the enhanced video is too cartoony. But I can't see a meaningful difference between the two videos once I applied the same filters to them. See the attachment (PNG inside ZIP) and zoom in.

What does this all mean?
  1. There really is a difference between the two filtered videos that my eyes don't perceive.
  2. I overdid the filters and therefore ruined whatever made the AIW version better in the first place.
  3. For some types of 8mm footage, a blocky VOB file might be good enough if one applies a bunch of filters later on.
I'm not planning on throwing way my new (old) Windows XP appliance, but I was surprised by what I found in the filters videos.

Here is the Hybrid/Vapoursyth script I used in both cases
# Imports
import os
import sys
import ctypes
# Loading Support Files
Dllref = ctypes.windll.LoadLibrary("C:/Program Files/Hybrid/64bit/vsfilters/Support/libfftw3f-3.dll")
import vapoursynth as vs
# getting Vapoursynth core
core = vs.core
# Import scripts folder
scriptPath = 'C:/Program Files/Hybrid/64bit/vsscripts'
sys.path.insert(0, os.path.abspath(scriptPath))
# Loading Plugins
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SharpenFilter/AWarpSharp2/libawarpsharp2.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/CTMF/CTMF.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/HQDN3D/libhqdn3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DeblockFilter/Deblock/Deblock.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DebandFilter/Flash3kDeband/flash3kyuu_deband.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/RemoveGrain/RemoveGrainVS.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/GrainFilter/AddGrain/AddGrain.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/NEO_FFT3DFilter/neo-fft3d.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/DenoiseFilter/DFTTest/DFTTest.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/EEDI3m.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/ResizeFilter/nnedi3/vsznedi3.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/libmvtools.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/temporalsoften.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/scenechange.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/Support/fmtconv.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/MiscFilter/MiscFilters/MiscFilters.dll")
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Import scripts
import adjust
import havsfunc
# source: 'J:\ES15 DVD recorded version.mkv'
# current color space: YUV420P8, bit depth: 8, resolution: 720x480, fps: 29.97, color matrix: 470bg, yuv luminance scale: limited, scanorder: top field first
# Loading J:\ES15 DVD recorded version.mkv using LWLibavSource
clip = core.lsmas.LWLibavSource(source="J:/ES15 DVD recorded version.mkv", format="YUV420P8", cache=0, prefer_hw=0)
# making sure input color matrix is set as 470bg
clip = core.resize.Bicubic(clip, matrix_in_s="470bg",range_s="limited")
# making sure frame rate is set to 29.970
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# setting field order to what QTGMC should assume (top field first)
clip = core.std.SetFrameProp(clip=clip, prop="_FieldBased", intval=2)
# Deinterlacing using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", InputType=0, TFF=True, TR2=0, SourceMatch=0, Lossless=0, EZDenoise=0.01, NoisePreset="Fast") # new fps: 29.97
# make sure content is preceived as frame based
clip = core.std.SetFieldBased(clip, 0)
clip = clip[::2]
# DEBUG: VsQTGMC changed scanorder to: progressive
# Color Adjustment
clip = adjust.Tweak(clip=clip, hue=3.00, sat=1.00, cont=1.00, coring=True)
# Color Adjustment using SmoothLevels
clip = havsfunc.SmoothLevels(input=clip, Ecurve=0)
# applying delocking using Deblock
clip = core.deblock.Deblock(clip=clip)
# cropping the video to 688x464
clip = core.std.CropRel(clip=clip, left=16, right=16, top=0, bottom=16)
# removing grain using TemporalDegrain
clip = havsfunc.TemporalDegrain(inpClip=clip, maxPxChange=1, HQ=2)
# Denoising using QTGMC
clip = havsfunc.QTGMC(Input=clip, Preset="Fast", InputType=2, TR2=3, Sharpness=1.0, TFF=False, SourceMatch=1, Lossless=0, EZDenoise=0.01, NoisePreset="Fast")
# sharpening using AWarpSharp2
clip = core.warp.AWarpSharp2(clip=clip, blur=2, depth=20)
clip = havsfunc.DeHalo_alpha(clip)
clip = core.fmtc.resample(clip=clip, kernel="spline16", w=2136, h=1440, interlaced=False, interlacedd=False)
# letterboxing 2136x1440 to 2560x1440
clip = core.std.AddBorders(clip=clip, left=212, right=212, top=0, bottom=0)
# adjusting output color from: YUV420P16 to YUV422P10 for ProResModel
clip = core.resize.Bicubic(clip=clip, format=vs.YUV422P10, range_s="limited")
# set output frame rate to 29.970fps
clip = core.std.AssumeFPS(clip=clip, fpsnum=30000, fpsden=1001)
# Output

Attached Files
File Type: zip VOB VERSUS AIW.zip (11.13 MB, 18 downloads)
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Ads / Sponsors
Join Date: ∞
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
02-08-2022, 02:12 PM
lordsmurf's Avatar
lordsmurf lordsmurf is online now
Site Staff | Video
Join Date: Dec 2002
Posts: 12,895
Thanked 2,350 Times in 2,004 Posts
I don't like all the filtering you're doing here. If you over-filter video, yes, it can look the same, and not in a good way. Video newbies have a bad habit of overfiltering. Don't. Resist that.

- Did my advice help you? Then become a Premium Member and support this site.
- For sale in the marketplace: TBCs, workflows, capture cards, VCRs
Reply With Quote
The following users thank lordsmurf for this useful post: ThumperStrauss (02-08-2022)
02-08-2022, 04:10 PM
lollo2 lollo2 is offline
Free Member
Join Date: Mar 2013
Location: Italy
Posts: 673
Thanked 184 Times in 161 Posts
It is difficult to judge from static pictures, but the filtered images seem to lead to a "plastic look". You should judge on the real video. You can post some sample here.

Concerning your question, a good restoration tends to generate a somehow "better" video, so the differences between the starting videos (AIW better than DVD-R) tends to decrease. For example the Deblock filter reduces the block artifacts cause by the mpeg2 compression (btw, you should not use this filter on AIW captures, except if your analog recording is from rom a low bitrate dvb-s or dvb-t source).
In addition, an over-filtering tends to "flat" and smooth the videos, so it is possible that they will differ less after processing.

Some comment about your filtering:
- too much denoise: TemporalDegrain is a strong filter, the less effective QTGMC denoise is redondant; in addition QTGMC routines on progressive inputs are not designed to denoise, but to remove artifacts caused by bad deinterlacing processes. Not your case, because you used QTGMC itself as deinterlacer.
- de haloing should be prior to sharpening, because this process enhaces the halo
- QTGMC sharpen by default, reduce its sharpen strenght while deinterlacing
- CAS and LSFmod introduce less artifacts than AWarpSharp2
- two color adjustements: SmoothLevels and Tweak are similar, use just one (btw, SmoothAdjust is more recent)
Just my opinion

A channel on S-VHS / VHS capture and AviSynth restoration https://bit.ly/3mHWbkN
Reply With Quote
The following users thank lollo2 for this useful post: ThumperStrauss (02-08-2022)
02-08-2022, 07:51 PM
ThumperStrauss ThumperStrauss is offline
Premium Member
Join Date: May 2021
Location: Canada
Posts: 90
Thanked 7 Times in 6 Posts
Thank you for the tips. I will experiment more by using less.

Attached Images
File Type: jpg TB400 front 20220208.jpg (115.1 KB, 13 downloads)
File Type: jpg TB400 back 20220208_201627.jpg (98.4 KB, 10 downloads)

Last edited by ThumperStrauss; 02-08-2022 at 08:00 PM. Reason: Posted reply to the wrong thread... oops
Reply With Quote

comparison, es15, hybrid, vob

Similar Threads
Thread Thread Starter Forum Replies Last Post
Better filtering options for VirtualDub? bzowk Restore, Filter, Improve Quality 3 10-02-2020 09:16 PM
Levels before and after filtering lollo2 Restore, Filter, Improve Quality 11 07-20-2020 03:39 AM
Recommendations for VHS filtering? blud Restore, Filter, Improve Quality 1 04-10-2012 01:21 PM
Problem with Virtualdub when filtering... jrodefeld Restore, Filter, Improve Quality 1 10-02-2011 04:59 PM
JVC filtering on SVHS VCR SR-V10 ramrod Restore, Filter, Improve Quality 4 12-24-2009 05:02 PM

Thread Tools

All times are GMT -5. The time now is 07:41 PM