diff --git a/doc/vfilters.texi b/doc/vfilters.texi index 9f20d464e4464d6f1e3714a54774018d2a1a0761..45766cce092406f9c408f07e30944b09d84af57a 100644 --- a/doc/vfilters.texi +++ b/doc/vfilters.texi @@ -78,4 +78,8 @@ build. Below is a description of the currently available video filters. +@section null + +Pass the source unchanged to the output. + @bye diff --git a/libavfilter/Makefile b/libavfilter/Makefile index ccf7909c0b32da91d1959c70e7f829e88555558e..e79eb47da429c6a0d51706f61e0bde04faf994e0 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -11,6 +11,6 @@ OBJS = allfilters.o \ defaults.o \ formats.o \ -#OBJS-$(CONFIG_XXX_FILTER) += vf_xxx.o +OBJS-$(CONFIG_NULL_FILTER) += vf_null.o include $(SUBDIR)../subdir.mak diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index dff61142f4eb2a3c4ac86dc70f0d97609e6bcbe0..f8188852bb9213dc5997a0f0251b564c8338a98f 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -34,6 +34,5 @@ void avfilter_register_all(void) return; initialized = 1; -// REGISTER_FILTER (CROP,crop,vf); - + REGISTER_FILTER (NULL,null,vf); } diff --git a/libavfilter/vf_null.c b/libavfilter/vf_null.c new file mode 100644 index 0000000000000000000000000000000000000000..ad4095fb6d03e8fa48ed1e668ccc6e41ca7fcd51 --- /dev/null +++ b/libavfilter/vf_null.c @@ -0,0 +1,56 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file libavfilter/vf_null.c + * null filter + */ + +#include "avfilter.h" + +static AVFilterPicRef *get_video_buffer(AVFilterLink *link, int perms, int w, int h) +{ + return avfilter_get_video_buffer(link->dst->outputs[0], perms, w, h); +} + +static void start_frame(AVFilterLink *link, AVFilterPicRef *picref) +{ + avfilter_start_frame(link->dst->outputs[0], picref); +} + +static void end_frame(AVFilterLink *link) +{ + avfilter_end_frame(link->dst->outputs[0]); +} + +AVFilter avfilter_vf_null = { + .name = "null", + + .priv_size = 0, + + .inputs = (AVFilterPad[]) {{ .name = "default", + .type = CODEC_TYPE_VIDEO, + .get_video_buffer = get_video_buffer, + .start_frame = start_frame, + .end_frame = end_frame }, + { .name = NULL}}, + + .outputs = (AVFilterPad[]) {{ .name = "default", + .type = CODEC_TYPE_VIDEO, }, + { .name = NULL}}, +};