diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst index 86f6b8ff67..3e3a251754 100644 --- a/DOCS/man/vf.rst +++ b/DOCS/man/vf.rst @@ -433,7 +433,7 @@ Available mpv-only filters are: subtitle colors and video under the influence of the video equalizer settings. -``vapoursynth=file:buffered-frames:concurrent-frames`` +``vapoursynth=file:buffered-frames:concurrent-frames:user-data`` Loads a VapourSynth filter script. This is intended for streamed processing: mpv actually provides a source filter, instead of using a native VapourSynth video source. The mpv source will answer frame @@ -559,6 +559,10 @@ Available mpv-only filters are: By default, this uses the special value ``auto``, which sets the option to the number of detected logical CPU cores. + ``user-data`` + Optional arbitrary string that is passed to the script. Default to empty + string if not set. + The following ``.vpy`` script variables are defined by mpv: ``video_in`` @@ -589,6 +593,10 @@ Available mpv-only filters are: to the height. These values can be 0. Note that this will not respond to monitor changes and may not work on all platforms. + ``user_data`` + User data passed from the filter. This variable always exists, and defaults + to empty string. + ``vavpp`` VA-API video post processing. Requires the system to support VA-API, i.e. Linux/BSD only. Works with ``--vo=vaapi`` and ``--vo=gpu`` only. diff --git a/video/filter/vf_vapoursynth.c b/video/filter/vf_vapoursynth.c index 597ef5cbf2..5446fc5ce5 100644 --- a/video/filter/vf_vapoursynth.c +++ b/video/filter/vf_vapoursynth.c @@ -46,6 +46,7 @@ struct vapoursynth_opts { char *file; int maxbuffer; int maxrequests; + char *user_data; const struct script_driver *drv; }; @@ -699,6 +700,7 @@ static int reinit_vs(struct priv *p, struct mp_image *input) p->vsapi->propSetFloat(vars, "container_fps", container_fps, 0); p->vsapi->propSetFloat(vars, "display_fps", display_fps, 0); p->vsapi->propSetIntArray(vars, "display_res", display_res, 2); + p->vsapi->propSetData(vars, "user_data", p->opts->user_data, -1, 0); if (p->drv->load(p, vars) < 0) goto error; @@ -830,6 +832,7 @@ static const m_option_t vf_opts_fields[] = { OPTDEF_INT(4)}, {"concurrent-frames", OPT_CHOICE(maxrequests, {"auto", -1}), M_RANGE(1, 99), OPTDEF_INT(-1)}, + {"user-data", OPT_STRING(user_data), OPTDEF_STR("")}, {0} };