mpv/video/filter
Crend King 6031a0e173 vf_vapoursynth: upgrade to VapourSynth API v4
VapourSynth introduced their version 4 API in R55, 3 years ago. mpv is
still using the deprecated version 3. I think it is good to migrate
before VapourSynth completely removes it.

The most impacted area is the video format. Previously we have a fixed
table of supported formats, each represented by an integer. In v4, the
integer is replaced by pointer to the full struct of the format.

Second, the way to create video filter is changed. Previously caller
needs to supply a "initialization" callback to `createFilter()`, which
sets up video info etc. In v4, video info is prepared first, passed to
the `createVideoFilter2()` and we get back the node.

Also, previously mpv was using the `fmSerial` filter mode, which means
VapourSynth 1) can only request one frame from mpv at a time, and 2) the
order of frames requested must be sequential. I propose to change it to
the parallel request mode, which requests multiple frames at a time in
semi random order. The reasons are, for 1), the get frame function,
`infiltGetFrame()`, unlocks the mutex during output image generation,
thus can benefit from parallel requests. For 2) thanks to the frame
buffer, unordered frame requests are acceptable. Just make sure the
buffer is large enough.

Third, the way VapourSynth scripting environment works change. In v4,
the scripting API is operated through struct pointer, much like the
exist `vsapi` pointer. The "finalize" function is also no longer needed.
2024-06-14 00:25:18 +02:00
..
refqueue.c various: fix trailing whitespace 2024-05-07 11:23:08 +02:00
refqueue.h video/filter: add field order support for built in deinterlacers 2024-03-04 17:41:40 -08:00
vf_d3d11vpp.c video/filter: add field order support for built in deinterlacers 2024-03-04 17:41:40 -08:00
vf_fingerprint.c all: add missing repr assignments 2024-01-26 18:17:02 +02:00
vf_format.c vf_format: add hdr10plus sub-parameter to format video filter 2024-03-09 05:58:52 +00:00
vf_gpu.c vf_gpu: vulkan and egl implementations 2024-04-27 01:08:22 +02:00
vf_gpu.h vf_gpu: vulkan and egl implementations 2024-04-27 01:08:22 +02:00
vf_gpu_egl.c vf_gpu: vulkan and egl implementations 2024-04-27 01:08:22 +02:00
vf_gpu_vulkan.c filter/vf_gpu_vulkan: fix Vulkan handle type 2024-05-08 18:52:40 +02:00
vf_sub.c various: drop unused #include "config.h" 2023-02-20 14:21:18 +00:00
vf_vapoursynth.c vf_vapoursynth: upgrade to VapourSynth API v4 2024-06-14 00:25:18 +02:00
vf_vavpp.c video/filter: add field order support for built in deinterlacers 2024-03-04 17:41:40 -08:00
vf_vdpaupp.c video/filter: add field order support for built in deinterlacers 2024-03-04 17:41:40 -08:00