videofilt_breakingchanges - shekh/VirtualDub2 GitHub Wiki
VirtualDub Plugin SDK 1.2
Breaking changes (API V16+)
Starting with API V16, some deprecated features in previous versions of the video filter API are blocked. The runtime will throw an error if you attempt to use these features in a filter declared as V16 or later. These restrictions do not apply if your filter targets API V15 or lower, as declared by the module initialization function.
-
GDI access to frame buffers: The
NEEDS_HDC
flag can no longer be set on a frame buffer to request GDI access. This was already functional only for certain RGB formats and incurred a significant performance penalty. -
Last output frame access:
paramProc can no longer return the
FILTERPARAM_NEEDS_LAST
flag. This flag can create an ordering dependency which is hard to reconcile with flexible frame access and introduced seek-related artifacts. -
ALTFORMATS flag is now required: paramProc must return the
FILTERPARAM_SUPPORTS_ALTFORMATS
flag. This removes the need for the runtime to enforce bottom-up layout for V16+ filters, which was a source of frequent alignment copies with old filters. -
Change in default output layout behavior: On entry to paramProc,
a V16+ filter has the output layout initialized differently, with
depth
andpitch
set to 0. This selects theVDXPixmapLayout
structure as authoritative and allows the runtime to select the output pitch. - Frame buffers are no longer bound in startProc: On entry to startProc, frame buffers are no longer bound to the source and output ports. This prevents a spike in memory usage when starting up the filter graph.
-
stringProc and copyProc are now prohibited: The
stringProc video filter method has
been deprecated in favor of
stringProc2 for a long time since
it does not include a destination buffer length, but starting with
API V16 it is disabled. You can declare
stringProc
, but it is ignored by the runtime. Similarly, copyProc has been disabled in favor of copyProc2 since the former has the annoying problem of not supplying the filter activation and function context pointers for the new instance. The VDXFrame library implements all four methods for full backwards compatibility.
Copyright (C) 2007-2012 Avery Lee.