10 #include "img_format.h"
14 #include "libvo/fastmemcpy.h"
15 #include "postproc/rgb2rgb.h"
18 //===========================================================================//
20 static int config(struct vf_instance_s
* vf
,
21 int width
, int height
, int d_width
, int d_height
,
22 unsigned int flags
, unsigned int outfmt
){
24 sws_rgb2rgb_init(get_sws_cpuflags());
26 if(vf_next_query_format(vf
,IMGFMT_YUY2
)<=0){
27 mp_msg(MSGT_VFILTER
, MSGL_WARN
, MSGTR_MPCODECS_WarnNextFilterDoesntSupport
, "YUY2");
31 return vf_next_config(vf
,width
,height
,d_width
,d_height
,flags
,IMGFMT_YUY2
);
34 static int put_image(struct vf_instance_s
* vf
, mp_image_t
*mpi
, double pts
){
37 // hope we'll get DR buffer:
38 dmpi
=vf_get_image(vf
->next
,IMGFMT_YUY2
,
39 MP_IMGTYPE_TEMP
, MP_IMGFLAG_ACCEPT_STRIDE
,
42 if(mpi
->imgfmt
==IMGFMT_422P
)
43 yuv422ptoyuy2(mpi
->planes
[0],mpi
->planes
[1],mpi
->planes
[2], dmpi
->planes
[0],
44 mpi
->w
,mpi
->h
, mpi
->stride
[0],mpi
->stride
[1],dmpi
->stride
[0]);
46 yv12toyuy2(mpi
->planes
[0],mpi
->planes
[1],mpi
->planes
[2], dmpi
->planes
[0],
47 mpi
->w
,mpi
->h
, mpi
->stride
[0],mpi
->stride
[1],dmpi
->stride
[0]);
49 vf_clone_mpi_attributes(dmpi
, mpi
);
51 return vf_next_put_image(vf
,dmpi
, pts
);
54 //===========================================================================//
56 static int query_format(struct vf_instance_s
* vf
, unsigned int fmt
){
62 return vf_next_query_format(vf
,IMGFMT_YUY2
) & (~VFCAP_CSP_SUPPORTED_BY_HW
);
67 static int open(vf_instance_t
*vf
, char* args
){
69 vf
->put_image
=put_image
;
70 vf
->query_format
=query_format
;
74 vf_info_t vf_info_yuy2
= {
75 "fast YV12/Y422p -> YUY2 conversion",
83 //===========================================================================//