8 #include "img_format.h"
16 static int put_image(struct vf_instance_s
* vf
, mp_image_t
*mpi
, double pts
)
20 if (vf
->priv
->skipflag
)
21 return vf
->priv
->skipflag
= 0;
23 dmpi
= vf_get_image(vf
->next
, mpi
->imgfmt
,
24 MP_IMGTYPE_EXPORT
, 0, mpi
->width
, mpi
->height
);
25 vf_clone_mpi_attributes(dmpi
, mpi
);
27 dmpi
->planes
[0] = mpi
->planes
[0];
28 dmpi
->stride
[0] = mpi
->stride
[0];
29 if (dmpi
->flags
&MP_IMGFLAG_PLANAR
) {
30 dmpi
->planes
[1] = mpi
->planes
[1];
31 dmpi
->stride
[1] = mpi
->stride
[1];
32 dmpi
->planes
[2] = mpi
->planes
[2];
33 dmpi
->stride
[2] = mpi
->stride
[2];
36 return vf_next_put_image(vf
, dmpi
, pts
);
39 static int control(struct vf_instance_s
* vf
, int request
, void* data
)
42 case VFCTRL_SKIP_NEXT_FRAME
:
43 vf
->priv
->skipflag
= 1;
46 return vf_next_control(vf
, request
, data
);
50 static int query_format(struct vf_instance_s
* vf
, unsigned int fmt
)
52 /* FIXME - figure out which other formats work */
57 return vf_next_query_format(vf
, fmt
);
63 static void uninit(struct vf_instance_s
* vf
)
68 static int open(vf_instance_t
*vf
, char* args
)
70 vf
->put_image
= put_image
;
71 vf
->control
= control
;
73 vf
->priv
= calloc(1, sizeof(struct vf_priv_s
));
77 const vf_info_t vf_info_softskip
= {
78 "soft (post-filter) frame skipping for encoding",