Add opt-in thread-pool dispatch of pad callbacks via Pipeline.run(threaded=...)
for elements that set thread_safe = True. This composes with subprocess
parallelization: threaded is now forwarded through the automatic
Parallelize path, so thread_safe elements still dispatch onto the thread
pool in the main process while Parallelize* elements run in workers.
Pad callbacks (new/pull/internal) are now invoked positionally rather
than by keyword (e.g. call(pad) instead of call(pad=...)), required for
thread-pool dispatch. Subclasses that renamed the first new/pull
parameter away from pad/frame are unaffected as long as they accept it
positionally.
Add on_startup() hook on elements for setup that runs after the
pipeline is fully constructed but before the first frame, called in
graph order
Support name in pipeline membership tests for elements and pads
Support building reusable composed elements by subclassing
ComposedSourceElement, ComposedTransformElement, and
ComposedSinkElement, as an alternative to the Compose builder
Add Compose class for composing multiple elements into reusable units
Support for ComposedSourceElement, ComposedTransformElement,
ComposedSinkElement via .as_source(), .as_transform(), .as_sink()
Add class-level fixed/extra pad configuration for elements via
static_sink_pads, static_source_pads, allow_dynamic_sink_pads,
allow_dynamic_source_pads
Add validation decorators for element reuse
Add CollectSink flag to keep frames where data is None