From Avisynth wiki
Jump to: navigation, search
Author Steve Melenchuk, Arick Chan
Version v0.03
Download ExactDedup+Version+0.03.zip
Category Duplicate frame detectors
License GPLv3
Discussion TASVideos Thread



ExactDedup is a filter intended to remove frames that are exact duplicates of each other, leaving only the first and (optionally) last frames of a run intact, and generates a Matroska v2 timecodes file with timing information for the ensuing stream.

Due to the particulars of the AviSynth API, ExactDedup requires two passes to function efficiently. It could theoretically be designed to run with one pass, but this would result in a very long startup delay while the plugin precomputes all of the duplicate frame information and timecodes.

ExactDedup theoretically supports any input colorspace, but has been tested only with RGB colorspaces.

ExactDedup 0.04 (2017-02-16) (StainlessS) | Discussion | Download

  • Fixed number of bugs
  • AviSynth v2.6 plugin.
  • Fixed a number of bugs.
  • Added Support for v2.6 Planar (also added U & V chroma scan for YV12, only scanned luma).
  • Added Show Arg.
  • Write times and dupinfo files at end of scan,so you don't have to edit script in text editor before second pass.


*** vcredist_x86.exe is required for ExactDedup-x86
*** vcredist_x64.exe is required for ExactDedup-x64

Syntax and Parameters

ExactDedup (clip, bool "firstpass", string "dupinfo", string "times", int "maxdupcount", bool "_keeplastframe")

clip   =
Input clip.

bool  firstpass = true
Controls which pass the plugin is running.
The first pass generates a mapping of output frames to input frames (stored in the file specified by dupinfo) and Matroska v2 timecodes (stored in the file specified by times); seeking during this pass is impossible.

string  dupinfo = "dupinfo.txt"
The name of a temporary file generated by the first pass and read by the second pass; each line corresponds to a frame in the output video stream, and specifies the frame number of the frame in the input stream that will be used as that output frame.

string  times = "times.txt"
The name of the Matroska v2 timecodes file that will be output by the first pass.

int  maxdupcount = 20
The number of maximum consecutive duplicate frames corresponding to a single frame of the output; i.e. a maximum of (maxdupcount - 1) frames will be removed from a run of duplicates before another frame is kept.

bool  _keeplastframe = false
Keeps the last frame of a run of duplicates. If a run of duplicates is larger than maxdupcount, this keeps only the last frame of the entire run, not of the individual maxdupcount-size blocks.


ExactDedup with default settings:

ExactDedup(firstpass=true, dupinfo="dupinfo.txt", times="times.txt", maxdupcount=20, _keeplastframe=false)


Version      Date            Changes
v0.0.3 2011/12/18 - primarily incorporates changes from Aktan to fix some incompatibilities with AviSynth's Crop() function (and likely other AviSynth functions) and some VirtualDub usage patterns. - 64-bit binary courtesy of Velitha.
v0.0.2 2011/11/18 - fixes a bug resulting in incorrect timecodes being output for some framerates (such as NTSC NES), and also outputs timecodes to nanosecond precision (as opposed to the microsecond precision of 0.01).
v0.0.1 2011/11/16 - initial release

External Links

Back to External Filters

Personal tools