//Copy paste this function in libmpcodecs/vo_scale.c after put_image() mp_image_t * mplayerMex_get_mpi(struct vf_instance_s* vf, mp_image_t *mpi){ mp_image_t *dmpi=mpi->priv; // printf("vf_scale::put_image(): processing whole frame! dmpi=%p flag=%d\n", // dmpi, (mpi->flags&MP_IMGFLAG_DRAW_CALLBACK)); if(!(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK && dmpi)){ // hope we'll get DR buffer: dmpi=vf_get_image(vf->next,vf->priv->fmt, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE, vf->priv->w, vf->priv->h); scale(vf->priv->ctx, vf->priv->ctx, mpi->planes,mpi->stride,0,mpi->h,dmpi->planes,dmpi->stride, vf->priv->interlaced); } if(vf->priv->w==mpi->w && vf->priv->h==mpi->h){ // just conversion, no scaling -> keep postprocessing data // this way we can apply pp filter to non-yv12 source using scaler vf_clone_mpi_attributes(dmpi, mpi); } if(vf->priv->palette) dmpi->planes[1]=vf->priv->palette; // export palette! return dmpi; }