Mercurial > mplayer.hg
view libmpcodecs/vf_yuy2.c @ 6929:a3aac765967d
allow early exit from esds parsing, so decoder info (type & bitrate) are
available even if no codec-specific data or other extras found
author | arpi |
---|---|
date | Mon, 05 Aug 2002 18:22:51 +0000 |
parents | 1972c3475d93 |
children | 21d6837f5d95 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <inttypes.h> #include "../config.h" #include "../mp_msg.h" #include "img_format.h" #include "mp_image.h" #include "vf.h" #include "../libvo/fastmemcpy.h" #include "../postproc/rgb2rgb.h" //===========================================================================// static int config(struct vf_instance_s* vf, int width, int height, int d_width, int d_height, unsigned int flags, unsigned int outfmt){ if(vf_next_query_format(vf,IMGFMT_YUY2)<=0){ printf("yuy2 not supported by next filter/vo :(\n"); return 0; } return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_YUY2); } static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){ mp_image_t *dmpi; // hope we'll get DR buffer: dmpi=vf_get_image(vf->next,IMGFMT_YUY2, MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE, mpi->w, mpi->h); yv12toyuy2(mpi->planes[0],mpi->planes[1],mpi->planes[2], dmpi->planes[0], mpi->w,mpi->h, mpi->stride[0],mpi->stride[1],dmpi->stride[0]); dmpi->qscale=mpi->qscale; dmpi->qstride=mpi->qstride; vf_next_put_image(vf,dmpi); } //===========================================================================// static int query_format(struct vf_instance_s* vf, unsigned int fmt){ switch(fmt){ case IMGFMT_YV12: case IMGFMT_I420: case IMGFMT_IYUV: return vf_next_query_format(vf,IMGFMT_YUY2) & (~VFCAP_CSP_SUPPORTED_BY_HW); } return 0; } static int open(vf_instance_t *vf, char* args){ vf->config=config; vf->put_image=put_image; vf->query_format=query_format; return 1; } vf_info_t vf_info_yuy2 = { "fast YV12->YUY2 conversion", "yuy2", "A'rpi", "", open }; //===========================================================================//