summaryrefslogtreecommitdiffstats
path: root/video/filter/vf_swapuv.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/filter/vf_swapuv.c')
-rw-r--r--video/filter/vf_swapuv.c52
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;
}