From f4292ebf52fb2e58a1ddbefb06bccd47a38bdc99 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 16 Apr 2015 22:16:04 +0200 Subject: vf_screenshot: remove this filter It's entirely useless, especially now that vo.c handles screenshots in a generic way, and requires no special VO support. There are some potential weird use-cases, but actually I've never seen it being used. --- DOCS/man/mpv.rst | 7 ++--- DOCS/man/vf.rst | 6 ---- old-makefile | 1 - player/screenshot.c | 7 +---- video/filter/vf.c | 3 -- video/filter/vf.h | 1 - video/filter/vf_screenshot.c | 74 -------------------------------------------- wscript_build.py | 1 - 8 files changed, 3 insertions(+), 97 deletions(-) delete mode 100644 video/filter/vf_screenshot.c diff --git a/DOCS/man/mpv.rst b/DOCS/man/mpv.rst index a530725548..f8db13c336 100644 --- a/DOCS/man/mpv.rst +++ b/DOCS/man/mpv.rst @@ -475,11 +475,8 @@ A screenshot will usually contain the unscaled video contents at the end of the video filter chain and subtitles. By default, ``S`` takes screenshots without subtitles, while ``s`` includes subtitles. -The ``screenshot`` video filter is not required when using a recommended GUI -video output driver. It should normally not be added to the config file, as -taking screenshots is handled by the VOs, and adding the screenshot filter will -break hardware decoding. (The filter may still be useful for taking screenshots -at a certain point within the video chain when using multiple video filters.) +Unlike with MPlayer, the ``screenshot`` video filter is not required. This +filter was never required in mpv, and has been removed. TERMINAL STATUS LINE ==================== diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst index be7daee09e..3739716340 100644 --- a/DOCS/man/vf.rst +++ b/DOCS/man/vf.rst @@ -561,12 +561,6 @@ Available filters are: ``show`` Draw a rectangle showing the area defined by x/y/w/h. -``screenshot`` - Optional filter for screenshot support. This is only needed if the video - output does not provide working direct screenshot support. Note that it is - not always safe to insert this filter by default. See `TAKING SCREENSHOTS`_ - for details. - ``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/old-makefile b/old-makefile index 876c1fe0d7..7adc45d712 100644 --- a/old-makefile +++ b/old-makefile @@ -263,7 +263,6 @@ SOURCES = audio/audio.c \ video/filter/vf_mirror.c \ video/filter/vf_noformat.c \ video/filter/vf_scale.c \ - video/filter/vf_screenshot.c \ video/filter/vf_stereo3d.c \ video/filter/vf_sub.c \ video/out/bitmap_packer.c \ diff --git a/player/screenshot.c b/player/screenshot.c index 3a1a41a4ca..f722b9561f 100644 --- a/player/screenshot.c +++ b/player/screenshot.c @@ -32,7 +32,6 @@ #include "options/path.h" #include "video/mp_image.h" #include "video/decode/dec_video.h" -#include "video/filter/vf.h" #include "video/out/vo.h" #include "video/image_writer.h" #include "sub/osd.h" @@ -330,11 +329,7 @@ static struct mp_image *screenshot_get(struct MPContext *mpctx, int mode) if (mode == MODE_SUBTITLES && osd_get_render_subs_in_filter(mpctx->osd)) mode = 0; - // vf_screenshot - if (mpctx->d_video && mpctx->d_video->vfilter) - vf_control_any(mpctx->d_video->vfilter, VFCTRL_SCREENSHOT, &image); - - if (!image && mpctx->video_out && mpctx->video_out->config_ok) { + if (mpctx->video_out && mpctx->video_out->config_ok) { vo_wait_frame(mpctx->video_out); // important for each-frame mode if (mode != MODE_FULL_WINDOW) diff --git a/video/filter/vf.c b/video/filter/vf.c index 888e937fa5..9bbe126823 100644 --- a/video/filter/vf.c +++ b/video/filter/vf.c @@ -54,7 +54,6 @@ 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_screenshot; extern const vf_info_t vf_info_sub; extern const vf_info_t vf_info_yadif; extern const vf_info_t vf_info_stereo3d; @@ -88,8 +87,6 @@ static const vf_info_t *const filter_list[] = { &vf_info_yadif, #endif - &vf_info_screenshot, - &vf_info_eq, &vf_info_dsize, &vf_info_sub, diff --git a/video/filter/vf.h b/video/filter/vf.h index f7ee9d011b..76835528b5 100644 --- a/video/filter/vf.h +++ b/video/filter/vf.h @@ -144,7 +144,6 @@ enum vf_ctrl { VFCTRL_SEEK_RESET = 1, // reset on picture and PTS discontinuities VFCTRL_SET_EQUALIZER, // set color options (brightness,contrast etc) VFCTRL_GET_EQUALIZER, // get color options (brightness,contrast etc) - VFCTRL_SCREENSHOT, // Take screenshot, arg is mp_image** VFCTRL_INIT_OSD, // Filter OSD renderer present? VFCTRL_SET_DEINTERLACE, // Set deinterlacing status VFCTRL_GET_DEINTERLACE, // Get deinterlacing status diff --git a/video/filter/vf_screenshot.c b/video/filter/vf_screenshot.c deleted file mode 100644 index 57cd9fbb0b..0000000000 --- a/video/filter/vf_screenshot.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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 "config.h" - -#include -#include -#include -#include - -#include "talloc.h" - -#include "video/img_format.h" -#include "video/mp_image.h" -#include "video/sws_utils.h" -#include "video/out/vo.h" - -#include "vf.h" - -struct vf_priv_s { - struct mp_image *current; -}; - -static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi) -{ - mp_image_unrefp(&vf->priv->current); - vf->priv->current = talloc_steal(vf, mp_image_new_ref(mpi)); - return mpi; -} - -static int control (vf_instance_t *vf, int request, void *data) -{ - if (request == VFCTRL_SCREENSHOT && vf->priv->current) { - *(struct mp_image **)data = mp_image_new_ref(vf->priv->current); - return CONTROL_TRUE; - } - return CONTROL_UNKNOWN; -} - -static int query_format(struct vf_instance *vf, unsigned int fmt) -{ - if (mp_sws_supported_format(fmt)) - return vf_next_query_format(vf, fmt); - return 0; -} - -static int vf_open(vf_instance_t *vf) -{ - vf->control = control; - vf->filter = filter; - vf->query_format = query_format; - vf->priv = talloc_zero(vf, struct vf_priv_s); - return 1; -} - -const vf_info_t vf_info_screenshot = { - .description = "screenshot to file", - .name = "screenshot", - .open = vf_open, -}; diff --git a/wscript_build.py b/wscript_build.py index 7f65125ef5..280e6a62ae 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -311,7 +311,6 @@ def build(ctx): ( "video/filter/vf_pullup.c", "libavfilter"), ( "video/filter/vf_rotate.c", "libavfilter"), ( "video/filter/vf_scale.c" ), - ( "video/filter/vf_screenshot.c" ), ( "video/filter/vf_stereo3d.c" ), ( "video/filter/vf_sub.c" ), ( "video/filter/vf_unsharp.c", "libavfilter"), -- cgit v1.2.3