diff options
Diffstat (limited to 'TOOLS/vf_dlopen/framestep.c')
-rw-r--r-- | TOOLS/vf_dlopen/framestep.c | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/TOOLS/vf_dlopen/framestep.c b/TOOLS/vf_dlopen/framestep.c deleted file mode 100644 index 11c5afe349..0000000000 --- a/TOOLS/vf_dlopen/framestep.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2012 Rudolf Polzer <divVerent@xonotic.org> - * - * This file is part of mpv's vf_dlopen examples. - * - * mpv's vf_dlopen examples are free software; you can redistribute them and/or - * modify them 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. - * - * mpv's vf_dlopen examples are distributed in the hope that they 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 mpv's vf_dlopen examples; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "vf_dlopen.h" -#include "filterutils.h" - -#define MIN(a,b) ((a)<(b)?(a):(b)) - -/* - * frame stepping filter - * - * usage: --vf=dlopen=/path/to/framestep.so:5 - * - * outputs every 5th frame - * - * usage: --vf=dlopen=/path/to/framestep.so:5:3 - * - * outputs every 5th frame, starting with frame index 3 (default: 0) - */ - -typedef struct { - int step, pos; -} framestep_data_t; - -static int framestep_put_image(struct vf_dlopen_context *ctx) -{ - framestep_data_t *framestep = ctx->priv; - - // stepping - if (framestep->pos < 0) - return 0; - --framestep->pos; - if (framestep->pos >= 0) - return 0; - framestep->pos += framestep->step; - - // copying - assert(ctx->inpic.planes == ctx->outpic[0].planes); - int np = ctx->inpic.planes; - int p; - for (p = 0; p < np; ++p) { - assert(ctx->inpic.planewidth[p] == ctx->outpic->planewidth[p]); - assert(ctx->inpic.planeheight[p] == ctx->outpic->planeheight[p]); - copy_plane( - ctx->outpic->plane[p], - ctx->outpic->planestride[p], - ctx->inpic.plane[p], - ctx->inpic.planestride[p], - MIN(ctx->inpic.planestride[p], ctx->outpic->planestride[p]), - ctx->inpic.planeheight[p] - ); - } - ctx->outpic->pts = ctx->inpic.pts; - - return 1; -} - -void framestep_uninit(struct vf_dlopen_context *ctx) -{ - free(ctx->priv); -} - -int vf_dlopen_getcontext(struct vf_dlopen_context *ctx, int argc, const char **argv) -{ - VF_DLOPEN_CHECK_VERSION(ctx); - - if (argc != 1 && argc != 2) - return -1; - - framestep_data_t *framestep = calloc(1,sizeof(framestep_data_t)); - - framestep->step = atoi(argv[0]); - framestep->pos = (argc >= 2) ? atoi(argv[1]) : 0; - - ctx->priv = framestep; - ctx->put_image = framestep_put_image; - ctx->uninit = framestep_uninit; - - return 1; -} |