TDeint


Abstract

author: tritical
version: v1.1
download: http://bengal.missouri.edu/~kes25c/
category: Deinterlacing & Pulldown Removal
requirements: 

license: GPL


Description

TDeint is a bi-directionally, motion adaptive, sharp deinterlacer. It can adaptively choose between using per-field and per-pixel motion adaptivity, and can use cubic interpolation, kernel interpolation (with temporal direction switching), or one of two forms of modified ELA interpolation which help to reduce "jaggy" edges in moving areas where interpolation must be used. TDeint also supports user overrides through an input file, and can act as a smart bobber or same frame rate deinterlacer, as well as an IVTC post-processor.

Syntax

TDeint (clip, int "mode", int "order", int "field", int "mthreshL", int "mthreshC", int "map", string "ovr", int "ovrDefault", int "type", bool "debug", int "mtnmode", bool "sharp", bool "hints", PClip "clip2", bool "full", int "cthresh", bool "chroma", int "MI", bool "tryWeave", int "link", bool "denoise", int "AP", int "blockx", int "blocky", int "APType", PClip "edeint", PClip "emask", float "blim", int "metric", int "expand", int "slow", PClip "emtn", bool "tshints", int "opt")

PARAMETERS

mode:

order:

field:

mthreshL/mthreshC:

map:

ovr:

ovrDefault:

type:

debug:

mtnmode:

sharp:

hints:

clip2:

full:

cthresh:

blockx:

blocky:

chroma:

MI:

tryWeave:

link:

denoise:

AP:

APType:

edeint:

emask:

blim:

metric:

expand:

slow:

emtn:

tshints:

opt:


TSwitch

TSwitch is able to read hints from TDeint indicating which frames were deinterlaced or not deinterlaced. Based on these hints, TSwitch then delivers frames from one of two clips (c1 or c2). If the input frame was not deinterlaced, then the corresponding frame from clip c1 is returned. If the input frame was deinterlaced, then the corresponding frame from clip c2 is returned.

To use TSwitch, you must set tshints=true in TDeint and place TSwitch immediately after TDeint in your Avisynth script.

The reasons why a frame may not have been deinterlaced by TDeint are overrides, hints, full=false, or tryweave=true.

Syntax

TSwitch (clip, clip "c1", clip "c2", bool "debug")

PARAMETERS

c1:

c2:

debug:


Example Scripts

Same rate deinterlacing:

Bobbing:

Deinterlacing with EEDI2 for interpolation:

Bobbing with EEDI2 for interpolation:

Smartbobbed field-matching (same rate deinterlacing via blending of bobbed frames):

Smartbobbed field-matching with EEDI2 for interpolation:

Using TSwitch to sharpen only deinterlaced frames:


Changelog

01/21/2006 v1.1
+ added TSwitch() filter
+ added new blend deinterlacing mode (type = 5)
+ expanded ovr line input buffers
+ added new map outputs (map=3/4) which output both a map and deinterlaced frame
+ map output works correctly with ap post-processing
+ map output works correctly with hints/ovr/full/tryweave
+ support passing through of dgdecode hints and tivtc's new hints
+ added ability to run motion detection on a separate clip (emtn parameter)
- motion map now checks top/bottom lines

10/16/2006 v1.0 Final
+ added blend deinterlacing option (type = 4)
- changed denoise default to false
- pixels detected as moving, but with absolute difference < 4 to both vertical neighbors are no longer automatically weaved (should fix problems with slow fades)

10/04/2006 v1.0 RC8
+ added expand parameter
+ added slow parameter and slow=1/2 matching modes from tfm
- fixed a typo causing mode 2 to crash with yuy2 input

04/10/2006 v1.0 RC7
+ optimized combed frame detection functions (now matches tivtc)
+ added second spatial combing metric and "metric" parameter (same as tfm and is/showcombeditvtc)
+ optimized denoise routines
+ improved the field comparison routine (now equal to slow=0 in tfm)
+ mode 2 uses the field comparison routine instead of full frame subtract for determining the best matching frame (more accurate)
- directly assign frames from emask clip (no need to copy)
- changed blim default to -2.0 (disabled)
- call setcachehints for emask/edeint clips when used

03/22/2006 v1.0 RC6
+ optimized motion map and field comparison routines
+ added opt parameter
- fixed missing cache in mode 2

03/21/2006 v1.0 RC5
- fixed mode 2 mmx/isse subtract frames functions (contained paddq sse2 instruction)

03/19/2006 v1.0 RC4
+ output MIC values in debug info when tryweave=true or full=false
+ added value 70 to emask input
+ added mmx versions of isse/sse2 compare/blend routines for mode=2
- refactored/rewrote a lot of the code to clean up and simply things, no changes that effect output... should give a slight speed up

03/18/2006 v1.0 RC3
+ Added mode 2 and blim parameter

12/18/2005 v1.0 RC2
+ Added emask parameter
- Fixed edeint not working correctly with mode=1
- Changed field=-1 operation when hints=false

12/03/2005 v1.0 RC1
+ Added edeint parameter

08/14/2005 v1.0 beta 4
- SetCacheHints call to diameter instead of radius
- Fixed type=1 YUY2 interpolation routine giving messed up chroma output (bug was introduced in v1.0 beta 3)

05/14/2005 v1.0 beta 3
+ Added APType parameter, adds 2 new AP post-processing modes that take surrounding motion into account
+ Small changes (hopefully improvements) to type 3 (ELA-2) interpolation

04/26/2005 v1.0 beta 2
+ Added modes -2 and -1... will upsize vertically by a factor of 2 using ELA or ELA2
+ Call SetCacheHints in filter constructor
+ Some small optimizations, should give a very small speed up

04/23/2005 v1.0 beta 1
+ Added AP threshold and post-processing
+ Added blockx and blocky for variable window size during combed frame detection
- Changed default MI value to 64 (default window size is now 16x16 = 256 pixels)
- changed default cthresh value to 6
- Small change to denoising routine

04/20/2005 v0.9.7.2
- Fixed not correctly using the field information from tfm's hints when acting as a post-processor for it. Also fixed not correctly altering the match info of tfm's hints when acting as a post-processor for it (PP=1 in tfm).
+ Improvements to type 3 interpolation, renamed to modified ELA-2

03/10/2005 v0.9.7.1
+ Fixed not correctly reading hints from newer versions of tivtc and if colorimetry hints were present from dgdecode.

01/20/2005 v0.9.7
+ Added link and denoise parameters, link defaults to 2 and denoise to true
+ Added ELA interpolation (tomsmocomp version) as type = 3
+ Hints option can now read hints from tfm as well as telecide
+ map = 2 now sets the chroma pixels that are to be interpolated to 255 and not just the luma
- Changed default type value to 2 (kernel interpolation)
- Changed default tryWeave value to false

10/03/2004 v0.9.6
+ Added full parameter, allows for ivtc post-processing. full defaults to true.
+ Added cthresh, chroma, and MI parameters... these are used when full=false
+ Added tryWeave option, allows TDeint to adaptively switch between per-field and per-pixel motion adaptation. tryWeave defaults to true.
+ Improved field differencing
+ changed mtnmode default to 1

09/26/2004 v0.9.5
+ Sped up mtnmodes 2 and 3, was doing it the hard way and not the easy way...

09/25/2004 v0.9.4
+ Added auto hints detection
+ Added mtnmodes 2 and 3
+ Added ability to deinterlace from the original stream when using hints via clip2 parameter
- Fixed field differencing using the wrong fields doh!

09/18/2004 v0.9.3
+ Added order = -1 option, will detect parity from avisynth
+ Added hints option for reading telecide hints for interlaced/progressive
+ 5 field motion check now includes checks over 4 field distances
- Fixed a bug in YUY2 type = 1 deinterlacing method

09/14/2004 v0.9.2
+ Added kernel interpolation and sharp parameter
+ Added 5 field motion check and mtnmode parameter
+ Changed default motion thresholds to 6

09/12/2004 v0.9.1
- Fixed some really stupid bugs, one motion check was incorrect for the first and last frame of a clip, and mode = 1 would only work for the first half of the video

09/12/2004 v0.9
- Initial Release