diff options
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/vf_framestep.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libmpcodecs/vf_framestep.c b/libmpcodecs/vf_framestep.c index b48c5108a4..633e2aaf49 100644 --- a/libmpcodecs/vf_framestep.c +++ b/libmpcodecs/vf_framestep.c @@ -73,6 +73,7 @@ struct vf_priv_s { int frame_step; /* Only I-Frame (2), print on I-Frame (1) */ int dump_iframe; + int last_skip; }; /* Filter handler */ @@ -108,6 +109,8 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts) /* Increment current frame */ ++priv->frame_cur; + priv->last_skip= skip; + if (skip == 0) { /* Get image, export type (we don't modify tghe image) */ dmpi=vf_get_image(vf->next, mpi->imgfmt, @@ -133,6 +136,13 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts) return 0; } +static int control(struct vf_instance_s* vf, int request, void* data){ + if(request == VFCTRL_FLIP_PAGE && vf->priv->last_skip){ + return CONTROL_TRUE; + } + return vf_next_control(vf,request,data); +} + static void uninit(struct vf_instance_s* vf) { /* Free private data */ @@ -145,6 +155,7 @@ static int open(vf_instance_t *vf, char* args) struct vf_priv_s *p; vf->put_image = put_image; + vf->control= control; vf->uninit = uninit; vf->default_reqs = VFCAP_ACCEPT_STRIDE; vf->priv = p = calloc(1, sizeof(struct vf_priv_s)); |