(Yeah, there's only one right now.)
Download filter with source code
"NoDrops" video filter for
v0.1 (3 Oct 2005)
by Charles Boling
Source code adapted from the
tutorial included with the VirtualDub SDK.
Do whatever you want with it.
This filter was created to get
rid of the annoying solid lavender fields put out
by my Osprey 100 video capture
card when capturing video from some
worn-out VHS video tapes.
They apparently represent fields it dropped because
it couldn't get a clean signal.
Most often, one field of a frame
will be dropped, while the other is okay.
In fact, many times that one
field will be dropped for several frames (i.e. it's
catching every other
field). Sometimes an entire frame will be dropped, or even
several consecutive frames.
The filter works with both
interlaced and non-interlaced sources, though it was
designed specifically for
HOW IT WORKS
Note: "Blank" refers to a dropped
frame that matches the specific lavender color.
It scans each row in a frame to
see if it's "blank"or not. If not, it keeps it
unchanged. If it's blank,
it attempts to reconstruct an approximation of the
original frame in one of two
ways: temporal duplication or spacial duplication.
If the corresponding row in the
previous frame is okay, it will copy it. If the
row in the previous frame is
blank too, it will instead grab the previous row
of the current frame (or next
row, if we're looking at the 1st row) and use it.
When the preferred temporal
duplication is used, the "comb effect" is increased
in moving parts of interlaced
frames where a single field is missing, but the
increased resultion is maintained
in the non-moving parts.
In non-interlaced video, or in
interlaced frames with both fields missing, this
will show up as jumpiness, since
the entire frame is copied, rather than every
When Spacial Duplication, or
"scan line doubling" is used in an interlaced video
stream, a temporary loss of
vertical resolution occurs over the entire frame.
If an more than one entire frames
are missing in a sequence, only the first one
will be repaired (unless half the
previous one was dropped too, in which it will
only have half the scan lines
repaired), but the rest of the frames in the
sequence will still be blanked
It's not perfect, but it's a vast
improvement over the constant "pink flashes".
This filter was created to
fulfill a pretty specific need for myself.
Things I can think of to improve,
but haven't because of a lack of time, as well
as not really knowing much about
either C programming or video filters:
1. Add MMX Optimizations
2. Allow user to change "dropped"
color (maybe not needed. I don't know if
other video cards do
a similar thing or not, or if a different setting on
the Osprey would
change the output color.)
3. Interpolate rather than
duplicate. Lots of interpolating filters out there
to copy; perhaps no
need to reinvent the wheel.
4. decide on each frame (or row,
or piece of a row) whether temporal or spacial
be more accurate; maybe use both when available to
produce a more
Comments? Send email to:
vdub <at> boling.us