[vlc-devel] [PATCH 00/14] filter cleaning v2
robux4 at ycbcr.xyz
Thu Jul 25 12:33:59 CEST 2019
As one of the key use of the video context will be through filters, we need to
clean the code a bit. Especially to have only a few places to look at when
changing how pictures are allocated. The video context will be needed for
GPU filters and the filter chain will have to know which goes with what.
This new set of patches also updates the filter API to allow filters to
allocate their own output pictures. The plan is to use an (expandable) pool for
each filter which its specific video format and video context.
The filter buffer callbacks (also called owners) are split between video/spu/audio.
In the end only the video callbacks are really used. Audio filters don't have
callbacks, SPU filters only have one owner and one allocator (it may change if
one day we filter SPUs with the GPU).
In the end filter output pictures are always allocated using filter_NewPicture().
That will be the main place when the video context and pool can be added.
Passing NULL callbacks is now allowed to use the default implementation and
simplify using filter/filter chains.
Steve Lhomme (14):
filter_chain: only set the filter callbacks for video
filter_chain: don't use a filter_owner_t for local-only variables
filters: separate the filter owners by type
filter_chain: only set the video owner for video filters
filter_chain: use filter_NewPicture when getting pictures for the last
filter: allow the owner not to provide a buffer callback
ci filters: remove default buffer callback implementation
image: remove default buffer callback implementation
vout blend: remove default buffer callback implementation
vout_subpictures: remove default buffer callback implementation
filter: allow the filter to provide a callback to get output pictures
filter_chain: add a default implementation for the video_allocator
filters: allow the filter owner not to provide pictures
filter_chain: use an empty callback owner for intermediate filters
include/vlc_filter.h | 48 +++++++++---
modules/hw/d3d11/d3d11_surface.c | 6 +-
modules/hw/d3d9/dxa9.c | 6 +-
modules/stream_out/mosaic_bridge.c | 4 +-
modules/stream_out/sdi/SDIStream.cpp | 2 +-
modules/stream_out/transcode/video.c | 2 +-
modules/video_chroma/chain.c | 4 +-
modules/video_filter/canvas.c | 4 +-
modules/video_filter/ci_filters.m | 12 ---
modules/video_filter/edgedetection.c | 4 +-
src/audio_output/filters.c | 4 +-
src/misc/filter_chain.c | 109 +++++++++++++++------------
src/misc/image.c | 11 ---
src/video_output/display.c | 4 +-
src/video_output/video_output.c | 19 +----
src/video_output/vout_subpictures.c | 27 ++-----
16 files changed, 130 insertions(+), 136 deletions(-)
More information about the vlc-devel