2 Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
32 #include "img_format.h"
37 //===========================================================================//
39 static void get_image(struct vf_instance_s
* vf
, mp_image_t
*mpi
){
40 mp_image_t
*dmpi
= vf_get_image(vf
->next
, mpi
->imgfmt
,
41 mpi
->type
, mpi
->flags
, mpi
->w
, mpi
->h
);
43 mpi
->planes
[0]=dmpi
->planes
[0];
44 mpi
->planes
[1]=dmpi
->planes
[2];
45 mpi
->planes
[2]=dmpi
->planes
[1];
46 mpi
->stride
[0]=dmpi
->stride
[0];
47 mpi
->stride
[1]=dmpi
->stride
[2];
48 mpi
->stride
[2]=dmpi
->stride
[1];
49 mpi
->width
=dmpi
->width
;
51 mpi
->flags
|=MP_IMGFLAG_DIRECT
;
52 mpi
->priv
=(void*)dmpi
;
55 static int put_image(struct vf_instance_s
* vf
, mp_image_t
*mpi
, double pts
){
58 if(mpi
->flags
&MP_IMGFLAG_DIRECT
){
59 dmpi
=(mp_image_t
*)mpi
->priv
;
61 dmpi
=vf_get_image(vf
->next
, mpi
->imgfmt
, MP_IMGTYPE_EXPORT
, 0, mpi
->w
, mpi
->h
);
62 assert(mpi
->flags
&MP_IMGFLAG_PLANAR
);
63 dmpi
->planes
[0]=mpi
->planes
[0];
64 dmpi
->planes
[1]=mpi
->planes
[2];
65 dmpi
->planes
[2]=mpi
->planes
[1];
66 dmpi
->stride
[0]=mpi
->stride
[0];
67 dmpi
->stride
[1]=mpi
->stride
[2];
68 dmpi
->stride
[2]=mpi
->stride
[1];
69 dmpi
->width
=mpi
->width
;
72 vf_clone_mpi_attributes(dmpi
, mpi
);
74 return vf_next_put_image(vf
,dmpi
, pts
);
77 //===========================================================================//
79 static int query_format(struct vf_instance_s
* vf
, unsigned int fmt
){
89 return vf_next_query_format(vf
, fmt
);
94 static int open(vf_instance_t
*vf
, char* args
){
95 vf
->put_image
=put_image
;
96 vf
->get_image
=get_image
;
97 vf
->query_format
=query_format
;
101 const vf_info_t vf_info_swapuv
= {
104 "Michael Niedermayer",
110 //===========================================================================//