-
Notifications
You must be signed in to change notification settings - Fork 16
videofilt_handlingmultiplesources
VirtualDub Plugin SDK 1.2
Handling multiple sources
Starting with the V16 API, it is possible to create video filters that can combine multiple upstream video sources.
In order to read from multiple sources, a video filter must declare the
ability to do so via the VDXFilterDefinition
structure. Two new
fields, mSourceCountLowMinus1
and mSourceCountHighMinus1
, are used
to declare minimum and maximum source counts. As the field names
suggest, these must be set to the source counts minus one. For instance,
if a filter can take two or three sources, it should set these values to
1 and 2. The high value should always be greater than or equal to the
low value.
The V16 API adds the mSourceStreamCount
and mpSourceStreams
fields
to the VDXFilterActivation
context. These contain an array of
VDXFBitmap structure pointers which
represent the input streams in the
startProc method. The first pointer is
the same as the standard src
field and either can be used for the
first stream.
The prefetchProc or
prefetchProc2 method must be
implemented. The formerly unused srcIndex
parameter to the prefetch
functions is used to select which source stream to prefetch frames from.
In the runProc method, all prefetched video
frames appear in the mpSourceFrames
array as usual. There is no
indication in the source frame array of which source streams each frame
came from, so the video filter must rely on the order of the frames or
the cookies associated with each frame to determine any necessary
associations.
In-place filters are always assumed to modify frames from stream 0, and therefore the first frame prefetched for an in-place filter must always be from stream 0.
When pre-initializing the output stream metadata prior to invoking paramProc, the output stream is initialized based on the stream 0 metadata.
Copyright (C) 2007-2012 Avery Lee.
Setting up your development environment
Conventions
Plugin initialization
Dynamic loading
Reference counting
Using CPU extensions
Introduction
What's new
Breaking changes
Gotchas
Deprecated features
Migrating from the old Filter SDK
Programming model
Handling bitmaps
Creating a video filter
Setting filter parameters
Processing video frames
Managing filter data
Creating time-varying filters
Handling aspect ratio
Prefetching multiple source frames
Handling multiple sources
Making a filter configurable
Scripting support
CPU dependent optimization
VDXA index omitted
Getting started
Writing the module entry point
Creating a video filter
Adding configurability
Adding script support
Introduction
What's new
Autodetect
Direct mode
Video frames vs. samples
Video decodint model
Video decoder