summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-02 17:38:15 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-02 17:38:15 +0000
commitd85f89e0dfd2a5f717b3cb00bd421d9fe04c30c4 (patch)
tree356d61ae7f570907d7089e0b8aed121dd28c5d5f /libmpcodecs
parent0d031d29e907843f390f958c44e62f933e078ec2 (diff)
downloadmpv-d85f89e0dfd2a5f717b3cb00bd421d9fe04c30c4.tar.bz2
mpv-d85f89e0dfd2a5f717b3cb00bd421d9fe04c30c4.tar.xz
- DR support
- removed config(), the default impl. does the same (ie does nothing :)) - pass postprocess info too git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8051 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vf_swapuv.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/libmpcodecs/vf_swapuv.c b/libmpcodecs/vf_swapuv.c
index af3fedf943..5e1df3a845 100644
--- a/libmpcodecs/vf_swapuv.c
+++ b/libmpcodecs/vf_swapuv.c
@@ -37,34 +37,44 @@
//===========================================================================//
-
-struct vf_priv_s {
-};
-
-
-/***************************************************************************/
-
-
-static int config(struct vf_instance_s* vf,
- int width, int height, int d_width, int d_height,
- unsigned int flags, unsigned int outfmt){
-
- return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
+static void get_image(struct vf_instance_s* 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_s* vf, mp_image_t *mpi){
- mp_image_t *dmpi= vf_get_image(vf->next, mpi->imgfmt, MP_IMGTYPE_EXPORT, 0, mpi->w, mpi->h);
-
+ 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;
+ }
- return vf_next_put_image(vf,dmpi);
+ dmpi->qscale=mpi->qscale;
+ dmpi->qstride=mpi->qstride;
+ dmpi->pict_type=mpi->pict_type;
+
+ return vf_next_put_image(vf,dmpi);
}
//===========================================================================//
@@ -85,13 +95,9 @@ static int query_format(struct vf_instance_s* vf, unsigned int fmt){
}
static int open(vf_instance_t *vf, char* args){
- vf->config=config;
vf->put_image=put_image;
-// vf->get_image=get_image;
+ vf->get_image=get_image;
vf->query_format=query_format;
- vf->priv=malloc(sizeof(struct vf_priv_s));
- memset(vf->priv, 0, sizeof(struct vf_priv_s));
-
return 1;
}