From 702090869122a42622623a94d0d43e9cf10d91db Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 11 Sep 2015 23:47:00 +0200 Subject: 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. --- DOCS/man/vf.rst | 68 ------------------------------------- TOOLS/old-makefile | 4 --- video/filter/vf.c | 8 ----- video/filter/vf_delogo.c | 76 ------------------------------------------ video/filter/vf_hqdn3d.c | 64 ----------------------------------- video/filter/vf_noise.c | 71 --------------------------------------- video/filter/vf_unsharp.c | 85 ----------------------------------------------- wscript_build.py | 4 --- 8 files changed, 380 deletions(-) delete mode 100644 video/filter/vf_delogo.c delete mode 100644 video/filter/vf_hqdn3d.c delete mode 100644 video/filter/vf_noise.c delete mode 100644 video/filter/vf_unsharp.c diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst index 6479560444..2bc4391448 100644 --- a/DOCS/man/vf.rst +++ b/DOCS/man/vf.rst @@ -409,41 +409,6 @@ Available filters are: ``'--vf=lavfi=yadif:o="threads=2,thread_type=slice"'`` forces a specific threading configuration. -``noise[=[: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.). - - ```` - spatial luma strength (default: 4) - ```` - spatial chroma strength (default: 3) - ```` - luma temporal strength (default: 6) - ```` - 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). - - ``,`` - top left corner of the logo - ``,`` - width and height of the cleared rectangle - ```` - 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 diff --git a/TOOLS/old-makefile b/TOOLS/old-makefile index d2b9d215df..5477811832 100644 --- a/TOOLS/old-makefile +++ b/TOOLS/old-makefile @@ -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 diff --git a/video/filter/vf.c b/video/filter/vf.c index 6a28b55059..6ad484c7ff 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -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 diff --git a/video/filter/vf_delogo.c b/video/filter/vf_delogo.c deleted file mode 100644 index 899a972764..0000000000 --- a/video/filter/vf_delogo.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2002 Jindrich Makovicka - * - * 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 . - */ - -#include - -#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, -}; - -//===========================================================================// diff --git a/video/filter/vf_hqdn3d.c b/video/filter/vf_hqdn3d.c deleted file mode 100644 index e29e98bafd..0000000000 --- a/video/filter/vf_hqdn3d.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2003 Daniel Moreno - * - * 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 . - */ - -#include - -#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} - }, -}; - -//===========================================================================// diff --git a/video/filter/vf_noise.c b/video/filter/vf_noise.c deleted file mode 100644 index 7945878a0d..0000000000 --- a/video/filter/vf_noise.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2002 Michael Niedermayer - * - * 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 . - */ - -#include -#include - -#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} - }, -}; - -//===========================================================================// diff --git a/video/filter/vf_unsharp.c b/video/filter/vf_unsharp.c deleted file mode 100644 index dfee945afd..0000000000 --- a/video/filter/vf_unsharp.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2002 Remi Guyomarch - * - * 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 . - */ - -#include - -#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} - }, -}; diff --git a/wscript_build.py b/wscript_build.py index adaded8c79..ee4321926d 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -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" ), -- cgit v1.2.3