Index: libmpcodecs/vf_kerndeint.c =================================================================== --- libmpcodecs/vf_kerndeint.c (Revision 22709) +++ libmpcodecs/vf_kerndeint.c (Arbeitskopie) @@ -43,6 +43,7 @@ int thresh; int sharp; int twoway; + int do_deinterlace; }; @@ -97,11 +98,15 @@ int map = vf->priv->map; int sharp = vf->priv->sharp; int twoway = vf->priv->twoway; + mp_image_t *dmpi, *pmpi; - mp_image_t *dmpi=vf_get_image(vf->next,mpi->imgfmt, + if(!vf->priv->do_deinterlace) + return vf_next_put_image(vf, mpi, pts); + + dmpi=vf_get_image(vf->next,mpi->imgfmt, MP_IMGTYPE_IP, MP_IMGFLAG_ACCEPT_STRIDE, mpi->w,mpi->h); - mp_image_t *pmpi=vf_get_image(vf->next,mpi->imgfmt, + pmpi=vf_get_image(vf->next,mpi->imgfmt, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE, mpi->w,mpi->h); if(!dmpi) return 0; @@ -287,8 +292,22 @@ return 0; } +static int control(struct vf_instance_s* vf, int request, void* data){ + switch (request) + { + case VFCTRL_GET_DEINTERLACE: + *(int*)data = vf->priv->do_deinterlace; + return CONTROL_OK; + case VFCTRL_SET_DEINTERLACE: + vf->priv->do_deinterlace = *(int*)data; + return CONTROL_OK; + } + return vf_next_control (vf, request, data); +} + static int open(vf_instance_t *vf, char* args){ + vf->control=control; vf->config=config; vf->put_image=put_image; vf->query_format=query_format; @@ -303,6 +322,7 @@ vf->priv->thresh = 10; vf->priv->sharp = 0; vf->priv->twoway = 0; + vf->priv->do_deinterlace=1; if (args) {