Index: libmpcodecs/vf_pp.c =================================================================== --- libmpcodecs/vf_pp.c (Revision 22709) +++ libmpcodecs/vf_pp.c (Arbeitskopie) @@ -33,6 +33,7 @@ pp_mode_t *ppMode[PP_QUALITY_MAX+1]; void *context; unsigned int outfmt; + int do_deinterlace; }; //===========================================================================// @@ -87,6 +88,12 @@ case VFCTRL_SET_PP_LEVEL: vf->priv->pp= *((unsigned int*)data); return CONTROL_TRUE; + 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); } @@ -113,6 +120,8 @@ } static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){ + if(!vf->priv->do_deinterlace) + return vf_next_put_image(vf, mpi, pts); if(!(mpi->flags&MP_IMGFLAG_DIRECT)){ // no DR, so get a new image! hope we'll get DR buffer: vf->dmpi=vf_get_image(vf->next,mpi->imgfmt, @@ -168,6 +177,7 @@ vf->default_caps=VFCAP_ACCEPT_STRIDE|VFCAP_POSTPROC; vf->priv=malloc(sizeof(struct vf_priv_s)); vf->priv->context=NULL; + vf->priv->do_deinterlace=1; // check csp: vf->priv->outfmt=vf_match_csp(&vf->next,fmt_list,IMGFMT_YV12);