[vlc-devel] [PATCH v1 00/33] Push Model for video filters
Steve Lhomme
robux4 at ycbcr.xyz
Fri Sep 25 16:46:36 CEST 2020
This patchset change video filters (deinterlacers, converters, filters) into a
push model. Each filter sends its output into a "video sink" rather than
returning one picture with potentially more pictures attached.
To achieve this a parallel system is added next to pf_video_filter and
filter_chain_VideoFilter to gradually add the feature to filters. In the end
they all use the new system and pf_video_filter is replaced with the new
signature.
Theses patches sit on top of picture_chain patchset sent on 2020-09-24 and
patchset picture_chain_GetAndClear​.
The whole branch can be found at https://code.videolan.org/robUx4/vlc/-/commits/pic_chain/6
Steve Lhomme (33):
filter: add a function to do the picture filtering
vout_subpictures: use helper function to filter a picture
image: use helper function to filter a picture
opencv_wrapper: use helper function to filter a picture
video_filter: use helper function to filter a picture
filters: allow filters to output multiple pictures without chaining
them
filter: allow using filters with a sink callback to filter into a
single picture
deinterlace: add a filter callback using the video sink
fps: add a filter callback using the video sink
filter_chain: allow filtering into a sink with
filter_chain_VideoFilterInto
video_output: keep the output of the static filters in a FIFO
mosaic_bridge: output the filtered pictures directly into the picture
chain
transcode: use filter chains with multiple output
filter_chain: use a local video sink to implement
filter_chain_VideoFilter
filter_chain: remove dead code
fps: only support push mode
deinterlace: only support push mode in common deinterlacer code
mmal: deinterlace: only support push mode in common deinterlacer code
vaapi: deinterlace: only support push mode in deinterlacer code
vdpau: deinterlace: only support push mode in deinterlacer code
picture_chain: remove unused vlc_picture_chain_AppendChain
filter: add a wrapper for filters sending the output into a sink
video_chroma: switch filters to push mode
d3d11_surface: switch filters into push mode
video_filter: add a helper function to push the output picture
video_filter: use the filter push mode
ci_filters: use the filter push mode
chroma: chain: use the filter push mode
opencv: use the filter push mode
video_filter: replace unused pf_video_filter by pf_video_filter_into
picture: remove unused picture_GetAndResetChain
filter: rename pf_video_filter_into to pf_video_filter
filter: rename VIDEO_FILTER_WRAPPER2 to VIDEO_FILTER_WRAPPER
include/vlc_filter.h | 72 ++++++++++--
include/vlc_picture.h | 22 ----
modules/hw/d3d11/d3d11_deinterlace.c | 4 +-
modules/hw/d3d11/d3d11_filters.c | 10 +-
modules/hw/d3d11/d3d11_surface.c | 15 +--
modules/hw/d3d9/d3d9_filters.c | 10 +-
modules/hw/d3d9/dxa9.c | 15 +--
modules/hw/d3d9/dxva2_deinterlace.c | 4 +-
modules/hw/mmal/converter.c | 16 ++-
modules/hw/mmal/deinterlace.c | 17 ++-
modules/hw/nvdec/chroma.c | 16 +--
modules/hw/vaapi/chroma.c | 29 +++--
modules/hw/vaapi/filters.c | 66 ++++++-----
modules/hw/vdpau/adjust.c | 6 +-
modules/hw/vdpau/chroma.c | 39 ++++---
modules/hw/vdpau/deinterlace.c | 17 ++-
modules/hw/vdpau/sharpen.c | 6 +-
modules/spu/audiobargraph_v.c | 6 +-
modules/spu/logo.c | 8 +-
modules/stream_out/mosaic_bridge.c | 22 ++--
modules/stream_out/transcode/video.c | 42 ++++---
modules/video_chroma/chain.c | 6 +-
modules/video_chroma/cvpx.c | 44 +++----
modules/video_chroma/grey_yuv.c | 7 +-
modules/video_chroma/i420_rgb.c | 35 +++---
modules/video_chroma/i420_yuy2.c | 25 ++--
modules/video_chroma/i422_i420.c | 10 +-
modules/video_chroma/i422_yuy2.c | 21 ++--
modules/video_chroma/rv32.c | 12 +-
modules/video_chroma/swscale.c | 13 +--
modules/video_chroma/yuvp.c | 4 +-
modules/video_chroma/yuy2_i420.c | 9 +-
modules/video_chroma/yuy2_i422.c | 11 +-
modules/video_filter/adjust.c | 28 ++---
modules/video_filter/alphamask.c | 6 +-
modules/video_filter/anaglyph.c | 12 +-
modules/video_filter/antiflicker.c | 12 +-
modules/video_filter/ball.c | 10 +-
modules/video_filter/blendbench.c | 12 +-
modules/video_filter/bluescreen.c | 10 +-
modules/video_filter/canvas.c | 6 +-
modules/video_filter/ci_filters.m | 22 ++--
modules/video_filter/colorthres.c | 22 ++--
modules/video_filter/croppadd.c | 10 +-
modules/video_filter/deinterlace/common.c | 47 ++++++--
modules/video_filter/deinterlace/common.h | 4 +-
.../video_filter/deinterlace/deinterlace.c | 6 +-
modules/video_filter/edgedetection.c | 8 +-
modules/video_filter/erase.c | 10 +-
modules/video_filter/extract.c | 12 +-
modules/video_filter/filter_picture.h | 7 ++
modules/video_filter/fps.c | 22 ++--
modules/video_filter/freeze.c | 13 ++-
modules/video_filter/gaussianblur.c | 10 +-
modules/video_filter/gradfun.c | 11 +-
modules/video_filter/gradient.c | 10 +-
modules/video_filter/grain.c | 9 +-
modules/video_filter/hqdn3d.c | 12 +-
modules/video_filter/invert.c | 10 +-
modules/video_filter/magnify.c | 8 +-
modules/video_filter/mirror.c | 10 +-
modules/video_filter/motionblur.c | 10 +-
modules/video_filter/motiondetect.c | 11 +-
modules/video_filter/oldmovie.c | 20 ++--
modules/video_filter/opencv_example.cpp | 16 +--
modules/video_filter/opencv_wrapper.c | 17 ++-
modules/video_filter/posterize.c | 10 +-
modules/video_filter/postproc.c | 8 +-
modules/video_filter/psychedelic.c | 10 +-
modules/video_filter/puzzle.c | 20 ++--
modules/video_filter/puzzle.h | 2 +-
modules/video_filter/ripple.c | 10 +-
modules/video_filter/rotate.c | 22 ++--
modules/video_filter/scale.c | 13 +--
modules/video_filter/scene.c | 17 +--
modules/video_filter/sepia.c | 10 +-
modules/video_filter/sharpen.c | 8 +-
modules/video_filter/transform.c | 9 +-
modules/video_filter/vhs.c | 16 +--
modules/video_filter/wave.c | 10 +-
src/libvlccore.sym | 1 +
src/misc/filter_chain.c | 109 ++++++++++--------
src/misc/image.c | 7 +-
src/video_output/video_output.c | 29 ++++-
src/video_output/vout_subpictures.c | 4 +-
85 files changed, 732 insertions(+), 655 deletions(-)
--
2.26.2
More information about the vlc-devel
mailing list