summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-04-02 17:59:45 +0200
committerwm4 <wm4@nowhere>2017-04-02 18:00:16 +0200
commit3a9e661e929c34d25810fa903abbd9961f73ecef (patch)
tree2d559b17bba2402d430c34f6dd7832ea8068885c /video/filter
parent6b9d3f4f7bcc51c9b0ec6407b5df33106b028285 (diff)
downloadmpv-3a9e661e929c34d25810fa903abbd9961f73ecef.tar.bz2
mpv-3a9e661e929c34d25810fa903abbd9961f73ecef.tar.xz
video: deprecate almost all video filters
The plan is to nuke the custom filter chain completely. It's not clear what will happen to the still needed builtin filters (mostly hardware deinterlacing and vf_vapoursynth). Most likely we'll replace them with different filter chain concept (whose main purpose will be providing builtin things and bridging to libavfilter). The undocumented "warn" options are there to disable deprecation warnings when the player inserts filter automatically. The same will be done to audio filters, at a later point.
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf.c6
-rw-r--r--video/filter/vf_buffer.c1
-rw-r--r--video/filter/vf_crop.c1
-rw-r--r--video/filter/vf_dlopen.c2
-rw-r--r--video/filter/vf_dsize.c2
-rw-r--r--video/filter/vf_eq.c3
-rw-r--r--video/filter/vf_expand.c2
-rw-r--r--video/filter/vf_flip.c2
-rw-r--r--video/filter/vf_gradfun.c2
-rw-r--r--video/filter/vf_lavfi.h4
-rw-r--r--video/filter/vf_mirror.c1
-rw-r--r--video/filter/vf_noformat.c1
-rw-r--r--video/filter/vf_pullup.c2
-rw-r--r--video/filter/vf_rotate.c5
-rw-r--r--video/filter/vf_scale.c7
-rw-r--r--video/filter/vf_stereo3d.c6
-rw-r--r--video/filter/vf_sub.c1
-rw-r--r--video/filter/vf_yadif.c6
18 files changed, 53 insertions, 1 deletions
diff --git a/video/filter/vf.c b/video/filter/vf.c
index 5208c7f824..fcf273e207 100644
--- a/video/filter/vf.c
+++ b/video/filter/vf.c
@@ -579,7 +579,11 @@ static void update_formats(struct vf_chain *c, struct vf_instance *vf,
}
query_formats(fmts, vf);
const char *filter = find_conv_filter(fmts, out_formats);
- struct vf_instance *conv = vf_open(c, filter, NULL);
+ char **args = NULL;
+ char *args_no_warn[] = {"warn", "no", NULL};
+ if (strcmp(filter, "scale") == 0)
+ args = args_no_warn;
+ struct vf_instance *conv = vf_open(c, filter, args);
if (conv) {
conv->autoinserted = true;
conv->next = vf->next;
diff --git a/video/filter/vf_buffer.c b/video/filter/vf_buffer.c
index 772f7cbe72..f08dfec12d 100644
--- a/video/filter/vf_buffer.c
+++ b/video/filter/vf_buffer.c
@@ -65,6 +65,7 @@ static void uninit(vf_instance_t *vf)
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "This filter is deprecated. No replacement.\n");
vf->filter_ext = filter_ext;
vf->control = control;
vf->uninit = uninit;
diff --git a/video/filter/vf_crop.c b/video/filter/vf_crop.c
index 6f9a788fef..79a2fce88c 100644
--- a/video/filter/vf_crop.c
+++ b/video/filter/vf_crop.c
@@ -100,6 +100,7 @@ static int query_format(struct vf_instance *vf, unsigned int fmt)
}
static int vf_open(vf_instance_t *vf){
+ MP_WARN(vf, "This filter is deprecated. Use lavfi crop instead.\n");
vf->reconfig=reconfig;
vf->filter=filter;
vf->query_format=query_format;
diff --git a/video/filter/vf_dlopen.c b/video/filter/vf_dlopen.c
index 1ef37e31a5..a53b0d191c 100644
--- a/video/filter/vf_dlopen.c
+++ b/video/filter/vf_dlopen.c
@@ -263,6 +263,8 @@ static int vf_open(vf_instance_t *vf)
return 0;
}
+ MP_WARN(vf, "This filter is deprecated. No replacement.\n");
+
vf->priv->dll = DLLOpen(vf->priv->cfg_dllname);
if (!vf->priv->dll) {
MP_ERR(vf, "library not found: %s\n",
diff --git a/video/filter/vf_dsize.c b/video/filter/vf_dsize.c
index b498b317f6..27d21c085e 100644
--- a/video/filter/vf_dsize.c
+++ b/video/filter/vf_dsize.c
@@ -83,6 +83,8 @@ static int reconfig(struct vf_instance *vf, struct mp_image_params *in,
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "This filter is deprecated. No replacement.\n");
+
vf->reconfig = reconfig;
return 1;
}
diff --git a/video/filter/vf_eq.c b/video/filter/vf_eq.c
index 33b340e792..9be749a1de 100644
--- a/video/filter/vf_eq.c
+++ b/video/filter/vf_eq.c
@@ -390,6 +390,9 @@ int vf_open(vf_instance_t *vf)
vf_eq2_t *eq2;
double *par = vf->priv->par;
+ MP_WARN(vf, "This filter is deprecated. Use lavfi eq instead.\n"
+ "For interactive eq, there is no replacement.\n");
+
vf->control = control;
vf->query_format = query_format;
vf->filter = filter;
diff --git a/video/filter/vf_expand.c b/video/filter/vf_expand.c
index a788568e14..216c47a6ac 100644
--- a/video/filter/vf_expand.c
+++ b/video/filter/vf_expand.c
@@ -142,6 +142,8 @@ static int query_format(struct vf_instance *vf, unsigned int fmt)
}
static int vf_open(vf_instance_t *vf){
+ MP_WARN(vf, "This filter is deprecated. Use lavfi pad instead.\n");
+
vf->reconfig=reconfig;
vf->query_format=query_format;
vf->filter=filter;
diff --git a/video/filter/vf_flip.c b/video/filter/vf_flip.c
index bec7e9b52f..30658e48dd 100644
--- a/video/filter/vf_flip.c
+++ b/video/filter/vf_flip.c
@@ -41,6 +41,8 @@ static int query_format(struct vf_instance *vf, unsigned int fmt)
}
static int vf_open(vf_instance_t *vf){
+ MP_WARN(vf, "This filter is deprecated. Use lavfi vflip instead.\n");
+
vf->filter=filter;
vf->query_format = query_format;
return 1;
diff --git a/video/filter/vf_gradfun.c b/video/filter/vf_gradfun.c
index 78e1f4e3d6..c34b77f82a 100644
--- a/video/filter/vf_gradfun.c
+++ b/video/filter/vf_gradfun.c
@@ -59,6 +59,8 @@ static int lavfi_reconfig(struct vf_instance *vf,
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
+
bool have_radius = vf->priv->cfg_radius > -1;
bool have_size = vf->priv->cfg_size > -1;
diff --git a/video/filter/vf_lavfi.h b/video/filter/vf_lavfi.h
index 0b1f49323a..9196532138 100644
--- a/video/filter/vf_lavfi.h
+++ b/video/filter/vf_lavfi.h
@@ -18,4 +18,8 @@ void vf_lw_set_reconfig_cb(struct vf_instance *vf,
struct mp_image_params *in,
struct mp_image_params *out));
+#define VF_LW_REPLACE "This filter will be replaced by using libavfilter " \
+ "option syntax directly. Parts of the old syntax will stop working, " \
+ "and some defaults may change.\n"
+
#endif
diff --git a/video/filter/vf_mirror.c b/video/filter/vf_mirror.c
index 342c6abd2a..f835d38130 100644
--- a/video/filter/vf_mirror.c
+++ b/video/filter/vf_mirror.c
@@ -22,6 +22,7 @@
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "This filter is deprecated. Use lavfi hflip instead.\n");
return vf_lw_set_graph(vf, NULL, NULL, "hflip") >= 0;
}
diff --git a/video/filter/vf_noformat.c b/video/filter/vf_noformat.c
index 7fcc3de8a2..2d3985c216 100644
--- a/video/filter/vf_noformat.c
+++ b/video/filter/vf_noformat.c
@@ -44,6 +44,7 @@ static int query_format(struct vf_instance *vf, unsigned int fmt){
}
static int vf_open(vf_instance_t *vf){
+ MP_WARN(vf, "This filter is deprecated and will be removed (no replacement)\n");
vf->query_format=query_format;
return 1;
}
diff --git a/video/filter/vf_pullup.c b/video/filter/vf_pullup.c
index 39907da17c..eee6f43d7f 100644
--- a/video/filter/vf_pullup.c
+++ b/video/filter/vf_pullup.c
@@ -38,6 +38,8 @@ struct vf_priv_s {
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
+
struct vf_priv_s *p = vf->priv;
const char *pname[3] = {"y", "u", "v"};
if (vf_lw_set_graph(vf, p->lw_opts, "pullup", "%d:%d:%d:%d:%d:%s",
diff --git a/video/filter/vf_rotate.c b/video/filter/vf_rotate.c
index dcaba53c6a..be1247f4e9 100644
--- a/video/filter/vf_rotate.c
+++ b/video/filter/vf_rotate.c
@@ -29,6 +29,7 @@
struct vf_priv_s {
int angle;
+ int warn;
struct vf_lw_opts *lw_opts;
};
@@ -67,6 +68,9 @@ static int vf_open(vf_instance_t *vf)
{
struct vf_priv_s *p = vf->priv;
+ if (p->warn)
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
+
if (vf_lw_set_graph(vf, p->lw_opts, NULL, "%s", rot[p->angle]) >= 0) {
vf_lw_set_reconfig_cb(vf, lavfi_reconfig);
return 1;
@@ -88,6 +92,7 @@ const vf_info_t vf_info_rotate = {
{"180", 2},
{"270", 3},
{"auto", 4})),
+ OPT_FLAG("warn", warn, 0, OPTDEF_INT(1)),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
},
diff --git a/video/filter/vf_scale.c b/video/filter/vf_scale.c
index 8b1f0a1116..0759d28723 100644
--- a/video/filter/vf_scale.c
+++ b/video/filter/vf_scale.c
@@ -39,6 +39,8 @@
#include "options/m_option.h"
+#include "vf_lavfi.h"
+
static struct vf_priv_s {
int w, h;
int cfg_w, cfg_h;
@@ -47,11 +49,13 @@ static struct vf_priv_s {
struct mp_sws_context *sws;
int noup;
int accurate_rnd;
+ int warn;
} const vf_priv_dflt = {
0, 0,
-1, -1,
0,
{SWS_PARAM_DEFAULT, SWS_PARAM_DEFAULT},
+ .warn = 1,
};
static int find_best_out(vf_instance_t *vf, int in_format)
@@ -238,6 +242,8 @@ static int vf_open(vf_instance_t *vf)
vf->priv->sws->log = vf->log;
vf->priv->sws->params[0] = vf->priv->param[0];
vf->priv->sws->params[1] = vf->priv->param[1];
+ if (vf->priv->warn)
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
return 1;
}
@@ -250,6 +256,7 @@ static const m_option_t vf_opts_fields[] = {
OPT_INTRANGE("chr-drop", v_chr_drop, 0, 0, 3),
OPT_INTRANGE("noup", noup, 0, 0, 2),
OPT_FLAG("arnd", accurate_rnd, 0),
+ OPT_FLAG("warn", warn, 0),
{0}
};
diff --git a/video/filter/vf_stereo3d.c b/video/filter/vf_stereo3d.c
index bde261712e..51cfff8afa 100644
--- a/video/filter/vf_stereo3d.c
+++ b/video/filter/vf_stereo3d.c
@@ -72,10 +72,12 @@ struct vf_priv_s {
int in_fmt;
int out_fmt;
bool auto_in;
+ int warn;
struct vf_lw_opts *lw_opts;
} const vf_priv_default = {
SIDE_BY_SIDE_LR,
ANAGLYPH_RC_DUBOIS,
+ .warn = 1,
};
const struct m_opt_choice_alternatives stereo_code_names[] = {
@@ -185,6 +187,9 @@ static void lavfi_init(vf_instance_t *vf)
static int vf_open(vf_instance_t *vf)
{
+ if (vf->priv->warn)
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
+
if (vf->priv->out_fmt == STEREO_AUTO) {
MP_FATAL(vf, "No autodetection for stereo output.\n");
return 0;
@@ -200,6 +205,7 @@ static int vf_open(vf_instance_t *vf)
static const m_option_t vf_opts_fields[] = {
OPT_CHOICE_C("in", in_fmt, 0, stereo_code_names),
OPT_CHOICE_C("out", out_fmt, 0, stereo_code_names),
+ OPT_FLAG("warn", warn, 0),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
};
diff --git a/video/filter/vf_sub.c b/video/filter/vf_sub.c
index a3680a3b9a..184ab8deb3 100644
--- a/video/filter/vf_sub.c
+++ b/video/filter/vf_sub.c
@@ -127,6 +127,7 @@ static int control(vf_instance_t *vf, int request, void *data)
static int vf_open(vf_instance_t *vf)
{
+ MP_WARN(vf, "This filter is deprecated and will be removed (no replacement)\n");
vf->reconfig = reconfig;
vf->query_format = query_format;
vf->control = control;
diff --git a/video/filter/vf_yadif.c b/video/filter/vf_yadif.c
index d1e1ffbac0..e044dcc6d7 100644
--- a/video/filter/vf_yadif.c
+++ b/video/filter/vf_yadif.c
@@ -32,12 +32,16 @@ struct vf_priv_s {
int mode;
int interlaced_only;
struct vf_lw_opts *lw_opts;
+ int warn;
};
static int vf_open(vf_instance_t *vf)
{
struct vf_priv_s *p = vf->priv;
+ if (p->warn)
+ MP_WARN(vf, "%s", VF_LW_REPLACE);
+
#if LIBAVFILTER_VERSION_MICRO >= 100
const char *mode[] = {"send_frame", "send_field", "send_frame_nospatial",
"send_field_nospatial"};
@@ -69,6 +73,7 @@ static const m_option_t vf_opts_fields[] = {
{"frame-nospatial", 2},
{"field-nospatial", 3})),
OPT_FLAG("interlaced-only", interlaced_only, 0),
+ OPT_FLAG("warn", warn, 0),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
};
@@ -81,6 +86,7 @@ const vf_info_t vf_info_yadif = {
.priv_defaults = &(const struct vf_priv_s){
.mode = 1,
.interlaced_only = 1,
+ .warn = 1,
},
.options = vf_opts_fields,
};