summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-12-03 22:49:00 +0100
committerwm4 <wm4@nowhere>2014-12-03 23:01:19 +0100
commit809936fdb93a5375699a7ba4be1e08acdf5e5645 (patch)
treea58b0d60c0955255d0be68be7a7e4b93bb936b19 /video/filter
parent8fc3d7dc396c998075373321bbe256d2c490c956 (diff)
downloadmpv-809936fdb93a5375699a7ba4be1e08acdf5e5645.tar.bz2
mpv-809936fdb93a5375699a7ba4be1e08acdf5e5645.tar.xz
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.)
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf.c4
-rw-r--r--video/filter/vf_pp.c153
2 files changed, 0 insertions, 157 deletions
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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <inttypes.h>
-#include <errno.h>
-#include <assert.h>
-#include <libpostproc/postprocess.h>
-
-#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}
- },
-};
-
-//===========================================================================//