From 809936fdb93a5375699a7ba4be1e08acdf5e5645 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 3 Dec 2014 22:49:00 +0100 Subject: video/filter: kill vf_pp (libpostproc) This is an ancient filter, and we assume it's not useful anymore. If you really want this, it's still available in libavfilter (e.g. via --vf=lavfi=[pp...]). The disadvantage is that mpv doesn't pass through QP information to libavfilter. (This was probably the reason vf_pp still was part of mpv - it was slightly easier to pass QP internally.) --- DOCS/man/vf.rst | 150 -------------------------------------------------- old-configure | 3 - old-makefile | 1 - video/filter/vf.c | 4 -- video/filter/vf_pp.c | 153 --------------------------------------------------- wscript | 4 -- wscript_build.py | 1 - 7 files changed, 316 deletions(-) delete mode 100644 video/filter/vf_pp.c diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst index 6e7418c0c3..94ca07d96e 100644 --- a/DOCS/man/vf.rst +++ b/DOCS/man/vf.rst @@ -231,156 +231,6 @@ Available filters are: ```` Format name, e.g. rgb15, bgr24, 420p, etc. (default: 420p). -``pp=[filter string]`` - Enables the specified chain of post-processing subfilters. Subfilters must - be separated by '/' and can be disabled by prepending a '-'. Each - subfilter and some options have a short and a long name that can be used - interchangeably, i.e. ``dr``/``dering`` are the same. - - .. note:: - - Unlike in MPlayer or in earlier versions, you must quote the pp string - if it contains ``:`` characters, e.g. ``'--vf=pp=[...]'``. - - .. admonition:: Warning - - This filter is most likely useless on modern HD video. It might be - helpful with old low-resolution files. - - All subfilters share common options to determine their scope: - - ``a/autoq`` - Automatically switch the subfilter off if the CPU is too slow. - ``c/chrom`` - Do chrominance filtering, too (default). - ``y/nochrom`` - Do luminance filtering only (no chrominance). - ``n/noluma`` - Do chrominance filtering only (no luminance). - - .. note:: - - ``--vf=pp:help`` shows a list of available subfilters. - - Available subfilters are: - - ``hb/hdeblock[:difference[:flatness]]`` - horizontal deblocking filter - - :: Difference factor where higher values mean more - deblocking (default: 32). - :: Flatness threshold where lower values mean more - deblocking (default: 39). - - ``vb/vdeblock[:difference[:flatness]]`` - vertical deblocking filter - - :: Difference factor where higher values mean more - deblocking (default: 32). - :: Flatness threshold where lower values mean more - deblocking (default: 39). - - ``ha/hadeblock[:difference[:flatness]]`` - accurate horizontal deblocking filter - - :: Difference factor where higher values mean more - deblocking (default: 32). - :: Flatness threshold where lower values mean more - deblocking (default: 39). - - ``va/vadeblock[:difference[:flatness]]`` - accurate vertical deblocking filter - - :: Difference factor where higher values mean more - deblocking (default: 32). - :: Flatness threshold where lower values mean more - deblocking (default: 39). - - The horizontal and vertical deblocking filters share the difference and - flatness values so you cannot set different horizontal and vertical - thresholds. - - ``h1/x1hdeblock`` - experimental horizontal deblocking filter - - ``v1/x1vdeblock`` - experimental vertical deblocking filter - - ``dr/dering`` - deringing filter - - ``tn/tmpnoise[:threshold1[:threshold2[:threshold3]]]`` - temporal noise reducer - - :: larger -> stronger filtering - :: larger -> stronger filtering - :: larger -> stronger filtering - - ``al/autolevels[:f/fullyrange]`` - automatic brightness / contrast correction - - :f/fullyrange: Stretch luminance to (0-255). - - ``lb/linblenddeint`` - Linear blend deinterlacing filter that deinterlaces the given block by - filtering all lines with a (1 2 1) filter. - - ``li/linipoldeint`` - Linear interpolating deinterlacing filter that deinterlaces the given - block by linearly interpolating every second line. - - ``ci/cubicipoldeint`` - Cubic interpolating deinterlacing filter deinterlaces the given block - by cubically interpolating every second line. - - ``md/mediandeint`` - Median deinterlacing filter that deinterlaces the given block by - applying a median filter to every second line. - - ``fd/ffmpegdeint`` - FFmpeg deinterlacing filter that deinterlaces the given block by - filtering every second line with a (-1 4 2 4 -1) filter. - - ``l5/lowpass5`` - Vertically applied FIR low-pass deinterlacing filter that deinterlaces - the given block by filtering all lines with a (-1 2 6 2 -1) filter. - - ``fq/forceQuant[:quantizer]`` - Overrides the quantizer table from the input with the constant - quantizer you specify. - - :: quantizer to use - - ``de/default`` - default pp filter combination (hb:a,vb:a,dr:a) - - ``fa/fast`` - fast pp filter combination (h1:a,v1:a,dr:a) - - ``ac`` - high quality pp filter combination (ha:a:128:7,va:a,dr:a) - - .. note:: - - This filter is only available if FFmpeg/Libav has been compiled - with libpostproc enabled. - - .. admonition:: Examples - - ``--vf=pp=hb/vb/dr/al`` - horizontal and vertical deblocking, deringing and automatic - brightness/contrast - - ``--vf=pp=de/-al`` - default filters without brightness/contrast correction - - ``--vf=pp=[default/tmpnoise:1:2:3]`` - Enable default filters & temporal denoiser. - - ``--vf=pp=[hb:y/vb:a]`` - Horizontal deblocking on luminance only, and switch vertical - deblocking on or off automatically depending on available CPU time. - ``lavfi=graph[:sws-flags[:o=opts]]`` Filter video using FFmpeg's libavfilter. diff --git a/old-configure b/old-configure index 5fbbd6c5d4..91f83da2f9 100755 --- a/old-configure +++ b/old-configure @@ -179,7 +179,6 @@ options_state_machine() { opt_yes_no _dvdnav "libdvdnav" opt_yes_no _enca "ENCA charset oracle library" opt_yes_no _libass "subtitle rendering with libass" - opt_yes_no _libpostproc "postprocess filter (vf_pp)" opt_yes_no _libavdevice "libavdevice demuxers" opt_yes_no _libavfilter "libavfilter" opt_yes_no _jpeg "support for writing JPEG screenshots" @@ -837,8 +836,6 @@ check_pkg_config "libavfilter" $_libavfilter LIBAVFILTER 'libavfilter >= 3.90.10 check_pkg_config "libavdevice" $_libavdevice LIBAVDEVICE 'libavdevice >= 54.0.0' -check_pkg_config "libpostproc" $_libpostproc LIBPOSTPROC 'libpostproc >= 52.0.0' - check_trivial "TV interface" $_tv TV check_statement_libs "Video 4 Linux 2 TV interface" $_tv_v4l2 TV_V4L2 \ diff --git a/old-makefile b/old-makefile index 764df273a7..69db63983e 100644 --- a/old-makefile +++ b/old-makefile @@ -42,7 +42,6 @@ SOURCES-$(LIBASS) += sub/ass_mp.c sub/sd_ass.c \ SOURCES-$(LIBBLURAY) += stream/stream_bluray.c SOURCES-$(LIBBS2B) += audio/filter/af_bs2b.c -SOURCES-$(LIBPOSTPROC) += video/filter/vf_pp.c SOURCES-$(LIBSMBCLIENT) += stream/stream_smb.c SOURCES-$(MPG123) += audio/decode/ad_mpg123.c diff --git a/video/filter/vf.c b/video/filter/vf.c index bf3f73c0e6..d3441febf1 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -43,7 +43,6 @@ extern const vf_info_t vf_info_crop; extern const vf_info_t vf_info_expand; -extern const vf_info_t vf_info_pp; extern const vf_info_t vf_info_scale; extern const vf_info_t vf_info_format; extern const vf_info_t vf_info_noformat; @@ -86,9 +85,6 @@ static const vf_info_t *const filter_list[] = { &vf_info_rotate, &vf_info_mirror, -#if HAVE_LIBPOSTPROC - &vf_info_pp, -#endif #if HAVE_LIBAVFILTER &vf_info_lavfi, #endif diff --git a/video/filter/vf_pp.c b/video/filter/vf_pp.c deleted file mode 100644 index 4acce1c272..0000000000 --- a/video/filter/vf_pp.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * This file is part of MPlayer. - * - * MPlayer 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. - * - * MPlayer 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 MPlayer; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "config.h" -#include "common/msg.h" -#include "options/m_option.h" - -#include "video/img_format.h" -#include "video/mp_image.h" -#include "vf.h" - -struct vf_priv_s { - int pp; - pp_mode *ppMode[PP_QUALITY_MAX+1]; - void *context; - char *arg; -}; - -//===========================================================================// - -static int config(struct vf_instance *vf, - int width, int height, int d_width, int d_height, - unsigned int voflags, unsigned int outfmt){ - int flags= PP_CPU_CAPS_AUTO; - switch(outfmt){ - case IMGFMT_444P: flags|= PP_FORMAT_444; break; - case IMGFMT_422P: flags|= PP_FORMAT_422; break; - case IMGFMT_411P: flags|= PP_FORMAT_411; break; - default: flags|= PP_FORMAT_420; break; - } - - if(vf->priv->context) pp_free_context(vf->priv->context); - vf->priv->context= pp_get_context(width, height, flags); - - return vf_next_config(vf,width,height,d_width,d_height,voflags,outfmt); -} - -static void uninit(struct vf_instance *vf){ - int i; - for(i=0; i<=PP_QUALITY_MAX; i++){ - if(vf->priv->ppMode[i]) - pp_free_mode(vf->priv->ppMode[i]); - } - if(vf->priv->context) pp_free_context(vf->priv->context); -} - -static int query_format(struct vf_instance *vf, unsigned int fmt){ - switch(fmt){ - case IMGFMT_444P: - case IMGFMT_422P: - case IMGFMT_420P: - case IMGFMT_411P: ; - return vf_next_query_format(vf,fmt); - } - return 0; -} - -static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi) -{ - // pass-through if pp disabled - if (!vf->priv->pp) - return mpi; - - bool non_local = vf->priv->pp & 0xFFFF; - - struct mp_image *dmpi = mpi; - if (!mp_image_is_writeable(mpi) || non_local) { - dmpi = vf_alloc_out_image(vf); - if (!dmpi) - return NULL; - mp_image_copy_attributes(dmpi, mpi); - } - - // apparently this is required - assert(mpi->stride[0] >= ((mpi->w+7)&(~7))); - - // do the postprocessing! (or copy if no DR) - pp_postprocess((const uint8_t **)mpi->planes, mpi->stride, - dmpi->planes,dmpi->stride, - (mpi->w+7)&(~7),mpi->h, - mpi->qscale, mpi->qstride, - vf->priv->ppMode[ vf->priv->pp ], vf->priv->context, - mpi->pict_type | (mpi->qscale_type ? PP_PICT_TYPE_QP2 : 0)); - - if (dmpi != mpi) - talloc_free(mpi); - return dmpi; -} - -static int vf_open(vf_instance_t *vf){ - int i; - - vf->query_format=query_format; - vf->config=config; - vf->filter=filter; - vf->uninit=uninit; - - for(i=0; i<=PP_QUALITY_MAX; i++){ - vf->priv->ppMode[i]= pp_get_mode_by_name_and_quality(vf->priv->arg, i); - if(vf->priv->ppMode[i]==NULL) return -1; - } - - vf->priv->pp=PP_QUALITY_MAX; - return 1; -} - -static void print_help(struct mp_log *log) -{ - mp_info(log, "%s", pp_help); - mp_info(log, - "Don't forget to quote the filter list, e.g.: '--vf=pp=[tn:64:128:256]'\n\n"); -} - -#define OPT_BASE_STRUCT struct vf_priv_s -const vf_info_t vf_info_pp = { - .description = "postprocessing", - .name = "pp", - .open = vf_open, - .print_help = print_help, - .priv_size = sizeof(struct vf_priv_s), - .priv_defaults = &(const struct vf_priv_s){ - .arg = "de", - }, - .options = (const struct m_option[]){ - OPT_STRING("filters", arg, 0), - {0} - }, -}; - -//===========================================================================// diff --git a/wscript b/wscript index 08ce901f51..d789f5cbc9 100644 --- a/wscript +++ b/wscript @@ -424,10 +424,6 @@ Libav libraries ({0}). Aborting.".format(" ".join(libav_pkg_config_checks)) 'name': '--libavdevice', 'desc': 'libavdevice', 'func': check_pkg_config('libavdevice', '>= 54.0.0'), - }, { - 'name': '--libpostproc', - 'desc': 'libpostproc', - 'func': check_pkg_config('libpostproc', '>= 52.2.100'), }, { 'name': 'avcodec-metadata-update-side-data', 'desc': 'libavcodec AV_PKT_DATA_METADATA_UPDATE side data type', diff --git a/wscript_build.py b/wscript_build.py index 428c626f2b..4d775c5079 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -312,7 +312,6 @@ def build(ctx): ( "video/filter/vf_noformat.c" ), ( "video/filter/vf_noise.c" ), ( "video/filter/vf_phase.c" ), - ( "video/filter/vf_pp.c", "libpostproc" ), ( "video/filter/vf_pullup.c" ), ( "video/filter/vf_rotate.c" ), ( "video/filter/vf_scale.c" ), -- cgit v1.2.3