video/filter: remove some vf_lavfi wrappers

I see no point in keeping these around. Keeping wrappers for some select
libavfilter filters just because MPlayer had these filters is not a good
reason.

Ultimately, all real filtering work should go to libavfilter, and users
should get used to using vf_lavfi directly. We might even not require
the awful double-nested syntax for using libavfilter one day.

vf_rotate, vf_yadif, vf_stereo3d are kept because mpv uses them
internally. (They all extend the lavfi filters or change their
defaults.) vf_mirror is kept for symmetry with vf_flip. vf_gradfun and
vf_pullup are probably semi-popular, so I'll remove them not yet - only
after some more discussion.
This commit is contained in:
wm4 2015-09-11 23:47:00 +02:00
parent 876e93d8b7
commit 7020908691
8 changed files with 0 additions and 380 deletions

View File

@ -409,41 +409,6 @@ Available filters are:
``'--vf=lavfi=yadif:o="threads=2,thread_type=slice"'``
forces a specific threading configuration.
``noise[=<strength>[:averaged][:pattern][:temporal][:uniform][:hq]``
Adds noise.
``strength``
Set the noise for all components. If you want different strength
values for luma and chroma, use libavfilter's noise filter directly
(using ``--vf=lavfi=[noise=...]``), or tell the libavfilter developers
to stop being stupid.
``averaged``
averaged temporal noise (smoother, but a lot slower)
``pattern``
mix random noise with a (semi)regular pattern
``temporal``
temporal noise (noise pattern changes between frames)
``uniform``
uniform noise (Gaussian otherwise)
``hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]``
This filter aims to reduce image noise producing smooth images and making
still images really still (This should enhance compressibility.).
``<luma_spatial>``
spatial luma strength (default: 4)
``<chroma_spatial>``
spatial chroma strength (default: 3)
``<luma_tmp>``
luma temporal strength (default: 6)
``<chroma_tmp>``
chroma temporal strength (default:
``luma_tmp*chroma_spatial/luma_spatial``)
``eq[=gamma:contrast:brightness:saturation:rg:gg:bg:weight]``
Software equalizer that uses lookup tables (slow), allowing gamma correction
in addition to simple brightness and contrast adjustment. The parameters are
@ -470,23 +435,6 @@ Available filters are:
and just plain white. A value of 0.0 turns the gamma correction all
the way down while 1.0 leaves it at its full strength (default: 1.0).
``unsharp[=lx:ly:la:cx:cy:ca]``
unsharp mask / Gaussian blur
``l`` is for the luma component, ``c`` for the chroma component. ``x``/``y``
is the filter size. ``a`` is the amount.
``lx``, ``ly``, ``cx``, ``cy``
width and height of the matrix, odd sized in both directions (min =
3:3, max = 13:11 or 11:13, usually something between 3:3 and 7:7)
``la``, ``ca``
Relative amount of sharpness/blur to add to the image (a sane range
should be -1.5-1.5).
:<0: blur
:>0: sharpen
``pullup[=jl:jr:jt:jb:sb:mp]``
Pulldown reversal (inverse telecine) filter, capable of handling mixed
hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
@ -545,22 +493,6 @@ Available filters are:
when inserting yadif with ``--vf``, so using the above methods is
recommended.
``delogo[=x:y:w:h:t:show]``
Suppresses a TV station logo by a simple interpolation of the surrounding
pixels. Just set a rectangle covering the logo and watch it disappear (and
sometimes something even uglier appear - your mileage may vary).
``<x>,<y>``
top left corner of the logo
``<w>,<h>``
width and height of the cleared rectangle
``<t>``
Thickness of the fuzzy edge of the rectangle (added to ``w`` and
``h``). When set to -1, a green rectangle is drawn on the screen to
simplify finding the right ``x``,``y``,``w``,``h`` parameters.
``show``
Draw a rectangle showing the area defined by x/y/w/h.
``sub=[=bottom-margin:top-margin]``
Moves subtitle rendering to an arbitrary point in the filter chain, or force
subtitle rendering in the video filter as opposed to using video output OSD

View File

@ -99,13 +99,9 @@ SOURCES-$(WAYLAND) += video/out/vo_wayland.c \
video/out/wayland/memfile.c
SOURCES-$(LIBAVFILTER) += video/filter/vf_lavfi.c \
video/filter/vf_delogo.c \
video/filter/vf_gradfun.c \
video/filter/vf_hqdn3d.c \
video/filter/vf_noise.c \
video/filter/vf_pullup.c \
video/filter/vf_rotate.c \
video/filter/vf_unsharp.c \
video/filter/vf_yadif.c \
audio/filter/af_lavfi.c

View File

@ -46,14 +46,10 @@ extern const vf_info_t vf_info_noformat;
extern const vf_info_t vf_info_flip;
extern const vf_info_t vf_info_rotate;
extern const vf_info_t vf_info_mirror;
extern const vf_info_t vf_info_noise;
extern const vf_info_t vf_info_eq;
extern const vf_info_t vf_info_gradfun;
extern const vf_info_t vf_info_unsharp;
extern const vf_info_t vf_info_hqdn3d;
extern const vf_info_t vf_info_dsize;
extern const vf_info_t vf_info_pullup;
extern const vf_info_t vf_info_delogo;
extern const vf_info_t vf_info_sub;
extern const vf_info_t vf_info_yadif;
extern const vf_info_t vf_info_stereo3d;
@ -79,12 +75,8 @@ static const vf_info_t *const filter_list[] = {
&vf_info_mirror,
&vf_info_lavfi,
&vf_info_rotate,
&vf_info_noise,
&vf_info_gradfun,
&vf_info_unsharp,
&vf_info_hqdn3d,
&vf_info_pullup,
&vf_info_delogo,
&vf_info_yadif,
&vf_info_stereo3d,
#endif

View File

@ -1,76 +0,0 @@
/*
* Copyright (C) 2002 Jindrich Makovicka <makovick@gmail.com>
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include "common/msg.h"
#include "vf.h"
#include "vf_lavfi.h"
#include "options/m_option.h"
static struct vf_priv_s {
int xoff, yoff, lw, lh, band, show;
struct vf_lw_opts *lw_opts;
} const vf_priv_dflt = {
.band = 1,
};
static int vf_open(vf_instance_t *vf){
struct vf_priv_s *p = vf->priv;
int band = p->band;
int show = p->show;
if (band < 0) {
band = 4;
show = 1;
}
if (vf_lw_set_graph(vf, p->lw_opts, "delogo", "%d:%d:%d:%d:%d:%d",
p->xoff, p->yoff, p->lw, p->lh, band, show) >= 0)
{
return 1;
}
MP_FATAL(vf, "This version of libavfilter has no 'delogo' filter.\n");
return 0;
}
#define OPT_BASE_STRUCT struct vf_priv_s
static const m_option_t vf_opts_fields[] = {
OPT_INT("x", xoff, 0),
OPT_INT("y", yoff, 0),
OPT_INT("w", lw, 0),
OPT_INT("h", lh, 0),
OPT_INT("t", band, 0),
OPT_INT("band", band, 0), // alias
OPT_FLAG("show", show, 0),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
};
const vf_info_t vf_info_delogo = {
.description = "simple logo remover",
.name = "delogo",
.open = vf_open,
.priv_size = sizeof(struct vf_priv_s),
.priv_defaults = &vf_priv_dflt,
.options = vf_opts_fields,
};
//===========================================================================//

View File

@ -1,64 +0,0 @@
/*
* Copyright (C) 2003 Daniel Moreno <comac@comac.darktech.org>
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include "common/msg.h"
#include "options/m_option.h"
#include "vf.h"
#include "vf_lavfi.h"
struct vf_priv_s {
double strength[4];
struct vf_lw_opts *lw_opts;
};
static int vf_open(vf_instance_t *vf)
{
struct vf_priv_s *s = vf->priv;
if (vf_lw_set_graph(vf, s->lw_opts, "hqdn3d", "%f:%f:%f:%f",
s->strength[0], s->strength[1],
s->strength[2], s->strength[3]) >= 0)
{
return 1;
}
MP_FATAL(vf, "This version of libavfilter has no 'hqdn3' filter.\n");
return 0;
}
#define OPT_BASE_STRUCT struct vf_priv_s
const vf_info_t vf_info_hqdn3d = {
.description = "High Quality 3D Denoiser",
.name = "hqdn3d",
.open = vf_open,
.priv_size = sizeof(struct vf_priv_s),
.options = (const struct m_option[]){
OPT_DOUBLE("luma_spatial", strength[0], 0),
OPT_DOUBLE("chroma_spatial", strength[1], 0),
OPT_DOUBLE("luma_tmp", strength[2], 0),
OPT_DOUBLE("chroma_tmp", strength[3], 0),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
},
};
//===========================================================================//

View File

@ -1,71 +0,0 @@
/*
* Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at>
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include "config.h"
#include "common/msg.h"
#include "options/m_option.h"
#include "vf.h"
#include "vf_lavfi.h"
struct vf_priv_s {
int strength;
int averaged;
int pattern;
int temporal;
int uniform;
struct vf_lw_opts *lw_opts;
};
static int vf_open(vf_instance_t *vf){
#define CH(f) ((f) ? '+' : '-')
struct vf_priv_s *p = vf->priv;
if (vf_lw_set_graph(vf, p->lw_opts, "noise", "-1:%d:%ca%cp%ct%cu",
p->strength, CH(p->averaged), CH(p->pattern),
CH(p->temporal), CH(p->uniform)) >= 0)
{
return 1;
}
MP_FATAL(vf, "This version of libavfilter has no 'noise' filter.\n");
return 0;
}
#define OPT_BASE_STRUCT struct vf_priv_s
const vf_info_t vf_info_noise = {
.description = "noise generator",
.name = "noise",
.open = vf_open,
.priv_size = sizeof(struct vf_priv_s),
.options = (const struct m_option[]){
OPT_INTRANGE("strength", strength, 0, 0, 100, OPTDEF_INT(2)),
OPT_FLAG("averaged", averaged, 0),
OPT_FLAG("pattern", pattern, 0),
OPT_FLAG("temporal", temporal, 0),
OPT_FLAG("uniform", uniform, 0),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
},
};
//===========================================================================//

View File

@ -1,85 +0,0 @@
/*
* Copyright (C) 2002 Remi Guyomarch <rguyom@pobox.com>
*
* This file is part of mpv.
*
* mpv is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include "common/msg.h"
#include "options/m_option.h"
#include "vf.h"
#include "vf_lavfi.h"
typedef struct FilterParam {
int msizeX, msizeY;
double amount;
} FilterParam;
struct vf_priv_s {
FilterParam lumaParam;
FilterParam chromaParam;
struct vf_lw_opts *lw_opts;
};
static int vf_open(vf_instance_t *vf)
{
struct vf_priv_s *p = vf->priv;
p->lumaParam.msizeX |= 1;
p->lumaParam.msizeY |= 1;
p->chromaParam.msizeX |= 1;
p->chromaParam.msizeY |= 1;
if (vf_lw_set_graph(vf, p->lw_opts, "unsharp", "%d:%d:%f:%d:%d:%f",
p->lumaParam.msizeX, p->lumaParam.msizeY, p->lumaParam.amount,
p->chromaParam.msizeX, p->chromaParam.msizeY, p->chromaParam.amount)
>= 0)
{
return 1;
}
MP_FATAL(vf, "This version of libavfilter has no 'unsharp' filter.\n");
return 0;
}
// same as MIN_/MAX_MATRIX_SIZE
#define MIN_SIZE 3
#define MAX_SIZE 63
#define OPT_BASE_STRUCT struct vf_priv_s
const vf_info_t vf_info_unsharp = {
.description = "unsharp mask & gaussian blur",
.name = "unsharp",
.open = vf_open,
.priv_size = sizeof(struct vf_priv_s),
.priv_defaults = &(const struct vf_priv_s){
.lumaParam = {5, 5, 1.0},
.chromaParam = {5, 5, 0.0},
},
.options = (const struct m_option[]){
OPT_INTRANGE("lx", lumaParam.msizeX, 0, MIN_SIZE, MAX_SIZE),
OPT_INTRANGE("ly", lumaParam.msizeY, 0, MIN_SIZE, MAX_SIZE),
OPT_DOUBLE("la", lumaParam.amount, CONF_RANGE, .min = -2, .max = 6),
OPT_INTRANGE("cx", chromaParam.msizeX, 0, MIN_SIZE, MAX_SIZE),
OPT_INTRANGE("cy", chromaParam.msizeY, 0, MIN_SIZE, MAX_SIZE),
OPT_DOUBLE("ca", chromaParam.amount, CONF_RANGE, .min = -2, .max = 6),
OPT_SUBSTRUCT("", lw_opts, vf_lw_conf, 0),
{0}
},
};

View File

@ -286,7 +286,6 @@ def build(ctx):
( "video/filter/vf.c" ),
( "video/filter/vf_buffer.c" ),
( "video/filter/vf_crop.c" ),
( "video/filter/vf_delogo.c", "libavfilter"),
( "video/filter/vf_dlopen.c", "dlopen" ),
( "video/filter/vf_dsize.c" ),
( "video/filter/vf_eq.c" ),
@ -294,17 +293,14 @@ def build(ctx):
( "video/filter/vf_flip.c" ),
( "video/filter/vf_format.c" ),
( "video/filter/vf_gradfun.c", "libavfilter"),
( "video/filter/vf_hqdn3d.c", "libavfilter"),
( "video/filter/vf_lavfi.c", "libavfilter"),
( "video/filter/vf_mirror.c", "libavfilter"),
( "video/filter/vf_noformat.c" ),
( "video/filter/vf_noise.c", "libavfilter"),
( "video/filter/vf_pullup.c", "libavfilter"),
( "video/filter/vf_rotate.c", "libavfilter"),
( "video/filter/vf_scale.c" ),
( "video/filter/vf_stereo3d.c", "libavfilter"),
( "video/filter/vf_sub.c" ),
( "video/filter/vf_unsharp.c", "libavfilter"),
( "video/filter/vf_vapoursynth.c", "vapoursynth-core" ),
( "video/filter/vf_vavpp.c", "vaapi-vpp"),
( "video/filter/vf_vdpaupp.c", "vdpau" ),