diff options
Diffstat (limited to 'video/filter/vf_swapuv.c')
-rw-r--r-- | video/filter/vf_swapuv.c | 52 |
1 files changed, 9 insertions, 43 deletions
diff --git a/video/filter/vf_swapuv.c b/video/filter/vf_swapuv.c index 1aa0b1061f..5e879ff557 100644 --- a/video/filter/vf_swapuv.c +++ b/video/filter/vf_swapuv.c @@ -29,49 +29,16 @@ #include "video/mp_image.h" #include "vf.h" - -//===========================================================================// - -static void get_image(struct vf_instance *vf, mp_image_t *mpi){ - mp_image_t *dmpi= vf_get_image(vf->next, mpi->imgfmt, - mpi->type, mpi->flags, mpi->w, mpi->h); - - mpi->planes[0]=dmpi->planes[0]; - mpi->planes[1]=dmpi->planes[2]; - mpi->planes[2]=dmpi->planes[1]; - mpi->stride[0]=dmpi->stride[0]; - mpi->stride[1]=dmpi->stride[2]; - mpi->stride[2]=dmpi->stride[1]; - mpi->width=dmpi->width; - - mpi->flags|=MP_IMGFLAG_DIRECT; - mpi->priv=(void*)dmpi; -} - -static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){ - mp_image_t *dmpi; - - if(mpi->flags&MP_IMGFLAG_DIRECT){ - dmpi=(mp_image_t*)mpi->priv; - } else { - dmpi=vf_get_image(vf->next, mpi->imgfmt, MP_IMGTYPE_EXPORT, 0, mpi->w, mpi->h); - assert(mpi->flags&MP_IMGFLAG_PLANAR); - dmpi->planes[0]=mpi->planes[0]; - dmpi->planes[1]=mpi->planes[2]; - dmpi->planes[2]=mpi->planes[1]; - dmpi->stride[0]=mpi->stride[0]; - dmpi->stride[1]=mpi->stride[2]; - dmpi->stride[2]=mpi->stride[1]; - dmpi->width=mpi->width; - } - - vf_clone_mpi_attributes(dmpi, mpi); - - return vf_next_put_image(vf,dmpi, pts); +static struct mp_image *filter(struct vf_instance *vf, struct mp_image *mpi) +{ + struct mp_image old = *mpi; + mpi->planes[1] = old.planes[2]; + mpi->stride[1] = old.stride[2]; + mpi->planes[2] = old.planes[1]; + mpi->stride[2] = old.stride[1]; + return mpi; } -//===========================================================================// - static int query_format(struct vf_instance *vf, unsigned int fmt){ switch(fmt) { @@ -88,8 +55,7 @@ static int query_format(struct vf_instance *vf, unsigned int fmt){ } static int vf_open(vf_instance_t *vf, char *args){ - vf->put_image=put_image; - vf->get_image=get_image; + vf->filter=filter; vf->query_format=query_format; return 1; } |