summaryrefslogtreecommitdiffstats
path: root/video/filter/vf_stereo3d.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-11-29 18:10:59 +0100
committerwm4 <wm4@nowhere>2017-11-29 18:15:19 +0100
commit12cac1d1119a0dab3469dc52c851b8eb528d63b7 (patch)
tree32cf11b283dbe0d60e092e297710dc635c5b6269 /video/filter/vf_stereo3d.c
parentd752f743fffa2440361f7b7ebb0930c173286644 (diff)
downloadmpv-12cac1d1119a0dab3469dc52c851b8eb528d63b7.tar.bz2
mpv-12cac1d1119a0dab3469dc52c851b8eb528d63b7.tar.xz
vf: remove most GPL video filters
Almost all of them had their guts removed and replaced by libavfilter long ago, but remove them anyway. They're pointless and have been scheduled for deprecation. Still leave vf_format (because we need it in some form) and vf_sub (not sure). This will break some builtin functionality: lavfi yadif defaults are different, auto rotation and stereo3d downconversion are broken. These might be fixed later.
Diffstat (limited to 'video/filter/vf_stereo3d.c')
-rw-r--r--video/filter/vf_stereo3d.c225
1 files changed, 0 insertions, 225 deletions
diff --git a/video/filter/vf_stereo3d.c b/video/filter/vf_stereo3d.c
deleted file mode 100644
index 3d29dcd8e8..0000000000
--- a/video/filter/vf_stereo3d.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2010 Gordon Schmidt <gordon.schmidt <at> s2000.tu-chemnitz.de>
- *
- * 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/>.
- */
-
-//==includes==//
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-
-#include <libavutil/common.h>
-
-#include "config.h"
-#include "common/msg.h"
-#include "options/options.h"
-
-#include "video/img_format.h"
-#include "video/mp_image.h"
-#include "vf.h"
-#include "options/m_option.h"
-
-#include "vf_lavfi.h"
-
-#include "config.h"
-#if !HAVE_GPL
-#error GPL only
-#endif
-
-//==types==//
-typedef enum stereo_code {
- ANAGLYPH_RC_GRAY, //anaglyph red/cyan gray
- ANAGLYPH_RC_HALF, //anaglyph red/cyan half colored
- ANAGLYPH_RC_COLOR, //anaglyph red/cyan colored
- ANAGLYPH_RC_DUBOIS, //anaglyph red/cyan dubois
- ANAGLYPH_GM_GRAY, //anaglyph green/magenta gray
- ANAGLYPH_GM_HALF, //anaglyph green/magenta half colored
- ANAGLYPH_GM_COLOR, //anaglyph green/magenta colored
- ANAGLYPH_GM_DUBOIS, //anaglyph green/magenta dubois
- ANAGLYPH_YB_GRAY, //anaglyph yellow/blue gray
- ANAGLYPH_YB_HALF, //anaglyph yellow/blue half colored
- ANAGLYPH_YB_COLOR, //anaglyph yellow/blue colored
- ANAGLYPH_YB_DUBOIS, //anaglyph yellow/blue dubois
- MONO_L, //mono output for debugging (left eye only)
- MONO_R, //mono output for debugging (right eye only)
- SIDE_BY_SIDE_LR, //side by side parallel (left eye left, right eye right)
- SIDE_BY_SIDE_RL, //side by side crosseye (right eye left, left eye right)
- SIDE_BY_SIDE_2_LR, //side by side parallel with half width resolution
- SIDE_BY_SIDE_2_RL, //side by side crosseye with half width resolution
- ABOVE_BELOW_LR, //above-below (left eye above, right eye below)
- ABOVE_BELOW_RL, //above-below (right eye above, left eye below)
- ABOVE_BELOW_2_LR, //above-below with half height resolution
- ABOVE_BELOW_2_RL, //above-below with half height resolution
- INTERLEAVE_ROWS_LR, //row-interleave (left eye has top row)
- INTERLEAVE_ROWS_RL, //row-interleave (right eye has top row)
- STEREO_AUTO, //use video metadata info (for input)
- ALTERNATING_LR, //alternating frames (left first)
- ALTERNATING_RL, //alternating frames (right first)
- STEREO_CODE_COUNT //no value set - TODO: needs autodetection
-} stereo_code;
-
-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[] = {
- {"arcg", ANAGLYPH_RC_GRAY},
- {"anaglyph_red_cyan_gray", ANAGLYPH_RC_GRAY},
- {"arch", ANAGLYPH_RC_HALF},
- {"anaglyph_red_cyan_half_color", ANAGLYPH_RC_HALF},
- {"arcc", ANAGLYPH_RC_COLOR},
- {"anaglyph_red_cyan_color", ANAGLYPH_RC_COLOR},
- {"arcd", ANAGLYPH_RC_DUBOIS},
- {"anaglyph_red_cyan_dubios", ANAGLYPH_RC_DUBOIS},
- {"agmg", ANAGLYPH_GM_GRAY},
- {"anaglyph_green_magenta_gray", ANAGLYPH_GM_GRAY},
- {"agmh", ANAGLYPH_GM_HALF},
- {"anaglyph_green_magenta_half_color",ANAGLYPH_GM_HALF},
- {"agmc", ANAGLYPH_GM_COLOR},
- {"anaglyph_green_magenta_color", ANAGLYPH_GM_COLOR},
- {"agmd", ANAGLYPH_GM_DUBOIS},
- {"anaglyph_green_magenta_dubois", ANAGLYPH_GM_DUBOIS},
- {"aybg", ANAGLYPH_YB_GRAY},
- {"anaglyph_yellow_blue_gray", ANAGLYPH_YB_GRAY},
- {"aybh", ANAGLYPH_YB_HALF},
- {"anaglyph_yellow_blue_half_color", ANAGLYPH_YB_HALF},
- {"aybc", ANAGLYPH_YB_COLOR},
- {"anaglyph_yellow_blue_color", ANAGLYPH_YB_COLOR},
- {"aybd", ANAGLYPH_YB_DUBOIS},
- {"anaglyph_yellow_blue_dubois", ANAGLYPH_YB_DUBOIS},
- {"ml", MONO_L},
- {"mono_left", MONO_L},
- {"mr", MONO_R},
- {"mono_right", MONO_R},
- {"sbsl", SIDE_BY_SIDE_LR},
- {"side_by_side_left_first", SIDE_BY_SIDE_LR},
- {"sbsr", SIDE_BY_SIDE_RL},
- {"side_by_side_right_first", SIDE_BY_SIDE_RL},
- {"sbs2l", SIDE_BY_SIDE_2_LR},
- {"side_by_side_half_width_left_first", SIDE_BY_SIDE_2_LR},
- {"sbs2r", SIDE_BY_SIDE_2_RL},
- {"side_by_side_half_width_right_first",SIDE_BY_SIDE_2_RL},
- {"abl", ABOVE_BELOW_LR},
- {"above_below_left_first", ABOVE_BELOW_LR},
- {"abr", ABOVE_BELOW_RL},
- {"above_below_right_first", ABOVE_BELOW_RL},
- {"ab2l", ABOVE_BELOW_2_LR},
- {"above_below_half_height_left_first", ABOVE_BELOW_2_LR},
- {"ab2r", ABOVE_BELOW_2_RL},
- {"above_below_half_height_right_first",ABOVE_BELOW_2_RL},
- {"irl", INTERLEAVE_ROWS_LR},
- {"interleave_rows_left_first", INTERLEAVE_ROWS_LR},
- {"irr", INTERLEAVE_ROWS_RL},
- {"interleave_rows_right_first", INTERLEAVE_ROWS_RL},
- {"al", ALTERNATING_LR},
- {"ar", ALTERNATING_RL},
- // convenience alias for MP_STEREO3D_MONO
- {"mono", MONO_L},
- // for filter auto-insertion
- {"auto", STEREO_AUTO},
- { NULL, 0}
-};
-
-// Extremely stupid; can be dropped when the internal filter is dropped,
-// and OPT_CHOICE_C() can be used instead.
-static int opt_to_stereo3dmode(int val)
-{
- // Find x for name == MP_STEREO3D_NAME(x)
- const char *name = m_opt_choice_str(stereo_code_names, val);
- for (int n = 0; n < MP_STEREO3D_COUNT; n++) {
- const char *o = MP_STEREO3D_NAME(val);
- if (name && o && strcmp(o, name) == 0)
- return n;
- }
- return MP_STEREO3D_INVALID;
-}
-
-static int lavfi_reconfig(struct vf_instance *vf,
- struct mp_image_params *in,
- struct mp_image_params *out)
-{
- struct vf_priv_s *p = vf_lw_old_priv(vf);
- if (p->auto_in) {
- const char *inf = MP_STEREO3D_NAME(in->stereo_in);
- if (!inf) {
- MP_ERR(vf, "Unknown/unsupported 3D mode.\n");
- return -1;
- }
- vf_lw_update_graph(vf, "stereo3d", "%s:%s",
- inf, m_opt_choice_str(stereo_code_names, p->out_fmt));
- out->stereo_in = out->stereo_out = opt_to_stereo3dmode(p->out_fmt);
- }
- return 0;
-}
-
-static void lavfi_init(vf_instance_t *vf)
-{
- if (vf->priv->in_fmt == STEREO_AUTO &&
- vf_lw_set_graph(vf, vf->priv->lw_opts, "stereo3d", "null") >= 0)
- {
- vf_lw_set_reconfig_cb(vf, lavfi_reconfig);
- return;
- }
-
- if (vf_lw_set_graph(vf, vf->priv->lw_opts, "stereo3d", "%s:%s",
- m_opt_choice_str(stereo_code_names, vf->priv->in_fmt),
- m_opt_choice_str(stereo_code_names, vf->priv->out_fmt)) >= 0)
- return;
-}
-
-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;
- }
- if (vf->priv->in_fmt == STEREO_AUTO)
- vf->priv->auto_in = 1;
-
- lavfi_init(vf);
- return 1;
-}
-
-#define OPT_BASE_STRUCT struct vf_priv_s
-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}
-};
-
-const vf_info_t vf_info_stereo3d = {
- .description = "stereoscopic 3d view",
- .name = "stereo3d",
- .open = vf_open,
- .priv_size = sizeof(struct vf_priv_s),
- .priv_defaults = &vf_priv_default,
- .options = vf_opts_fields,
-};