1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00

lavfi: remove vf_slicify

The following commit will make it useless.

The crop_scale_vflip FATE test changes because of off-by-one differences
in output when vflipped slices are passed to sws.
This commit is contained in:
Anton Khirnov 2012-11-27 10:41:22 +01:00
parent af7d13ee4a
commit bb6c67bb36
6 changed files with 4 additions and 164 deletions

View File

@ -1946,21 +1946,6 @@ Adler-32 checksum of each plane of the input frame, expressed in the form
"[@var{c0} @var{c1} @var{c2} @var{c3}]"
@end table
@section slicify
Pass the images of input video on to next video filter as multiple
slices.
@example
./avconv -i in.avi -vf "slicify=32" out.avi
@end example
The filter accepts the slice height as parameter. If the parameter is
not specified it will use the default value of 16.
Adding this in the beginning of filter chains should make filtering
faster due to better use of the memory cache.
@section split
Split input video into several identical outputs.

View File

@ -74,7 +74,6 @@ OBJS-$(CONFIG_SETPTS_FILTER) += vf_setpts.o
OBJS-$(CONFIG_SETSAR_FILTER) += vf_aspect.o
OBJS-$(CONFIG_SETTB_FILTER) += vf_settb.o
OBJS-$(CONFIG_SHOWINFO_FILTER) += vf_showinfo.o
OBJS-$(CONFIG_SLICIFY_FILTER) += vf_slicify.o
OBJS-$(CONFIG_SPLIT_FILTER) += split.o
OBJS-$(CONFIG_TRANSPOSE_FILTER) += vf_transpose.o
OBJS-$(CONFIG_UNSHARP_FILTER) += vf_unsharp.o

View File

@ -85,7 +85,6 @@ void avfilter_register_all(void)
REGISTER_FILTER (SETSAR, setsar, vf);
REGISTER_FILTER (SETTB, settb, vf);
REGISTER_FILTER (SHOWINFO, showinfo, vf);
REGISTER_FILTER (SLICIFY, slicify, vf);
REGISTER_FILTER (SPLIT, split, vf);
REGISTER_FILTER (TRANSPOSE, transpose, vf);
REGISTER_FILTER (UNSHARP, unsharp, vf);

View File

@ -1,141 +0,0 @@
/*
* Copyright (c) 2007 Bobby Bingham
*
* This file is part of Libav.
*
* Libav 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.
*
* Libav 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 Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* @file
* video slicing filter
*/
#include "avfilter.h"
#include "internal.h"
#include "video.h"
#include "libavutil/common.h"
#include "libavutil/pixdesc.h"
typedef struct {
int h; ///< output slice height
int vshift; ///< vertical chroma subsampling shift
uint32_t lcg_state; ///< LCG state used to compute random slice height
int use_random_h; ///< enable the use of random slice height values
} SliceContext;
static av_cold int init(AVFilterContext *ctx, const char *args)
{
SliceContext *slice = ctx->priv;
slice->h = 16;
if (args) {
if (!strcmp(args, "random")) {
slice->use_random_h = 1;
} else {
sscanf(args, "%d", &slice->h);
}
}
return 0;
}
static int config_props(AVFilterLink *link)
{
SliceContext *slice = link->dst->priv;
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(link->format);
slice->vshift = desc->log2_chroma_h;
return 0;
}
static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
{
SliceContext *slice = link->dst->priv;
if (slice->use_random_h) {
slice->lcg_state = slice->lcg_state * 1664525 + 1013904223;
slice->h = 8 + (uint64_t)slice->lcg_state * 25 / UINT32_MAX;
}
/* ensure that slices play nice with chroma subsampling, and enforce
* a reasonable minimum size for the slices */
slice->h = FFMAX(8, slice->h & (-1 << slice->vshift));
av_log(link->dst, AV_LOG_DEBUG, "h:%d\n", slice->h);
link->cur_buf = NULL;
return ff_start_frame(link->dst->outputs[0], picref);
}
static int draw_slice(AVFilterLink *link, int y, int h, int slice_dir)
{
SliceContext *slice = link->dst->priv;
int y2, ret = 0;
if (slice_dir == 1) {
for (y2 = y; y2 + slice->h <= y + h; y2 += slice->h) {
ret = ff_draw_slice(link->dst->outputs[0], y2, slice->h, slice_dir);
if (ret < 0)
return ret;
}
if (y2 < y + h)
return ff_draw_slice(link->dst->outputs[0], y2, y + h - y2, slice_dir);
} else if (slice_dir == -1) {
for (y2 = y + h; y2 - slice->h >= y; y2 -= slice->h) {
ret = ff_draw_slice(link->dst->outputs[0], y2 - slice->h, slice->h, slice_dir);
if (ret < 0)
return ret;
}
if (y2 > y)
return ff_draw_slice(link->dst->outputs[0], y, y2 - y, slice_dir);
}
return 0;
}
static const AVFilterPad avfilter_vf_slicify_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.get_video_buffer = ff_null_get_video_buffer,
.start_frame = start_frame,
.draw_slice = draw_slice,
.config_props = config_props,
.end_frame = ff_null_end_frame,
},
{ NULL }
};
static const AVFilterPad avfilter_vf_slicify_outputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
},
{ NULL }
};
AVFilter avfilter_vf_slicify = {
.name = "slicify",
.description = NULL_IF_CONFIG_SMALL("Pass the images of input video on to next video filter as multiple slices."),
.init = init,
.priv_size = sizeof(SliceContext),
.inputs = avfilter_vf_slicify_inputs,
.outputs = avfilter_vf_slicify_outputs,
};

View File

@ -21,10 +21,8 @@ do_video_filter() {
}
do_lavfi() {
vfilters="slicify=random,$2"
if [ $test = $1 ] ; then
do_video_filter $test "$vfilters"
do_video_filter $test "$2"
fi
}
@ -54,7 +52,7 @@ do_lavfi_pixfmts(){
pix_fmts=$($showfiltfmts $filter | awk -F '[ \r]' '/^INPUT/{ print $3 }' | sort | comm -12 - $out_fmts)
for pix_fmt in $pix_fmts; do
do_video_filter $pix_fmt "slicify=random,format=$pix_fmt,$filter=$filter_args" -pix_fmt $pix_fmt
do_video_filter $pix_fmt "format=$pix_fmt,$filter=$filter_args" -pix_fmt $pix_fmt
done
rm $exclude_fmts $out_fmts
@ -72,7 +70,7 @@ do_lavfi_pixfmts "vflip" ""
if [ -n "$do_pixdesc" ]; then
pix_fmts="$($avconv -pix_fmts list 2>/dev/null | awk 'NR > 8 && /^IO/ { print $2 }' | sort)"
for pix_fmt in $pix_fmts; do
do_video_filter $pix_fmt "slicify=random,format=$pix_fmt,pixdesctest" -pix_fmt $pix_fmt
do_video_filter $pix_fmt "format=$pix_fmt,pixdesctest" -pix_fmt $pix_fmt
done
fi

View File

@ -1 +1 @@
crop_scale_vflip e88a4dfb960d0bb28ee875567bedde5d
crop_scale_vflip 3e2c7694d37733ca52e1723d5262af36