⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vf_rgb2bgr.c

📁 君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图片解码,浏览,电子书,录音,想学ucos,识货的人就下吧 russblock fmradio explore set
💻 C
字号:
#include <uclib.h>#include <uclib.h>#include <uclib.h>#include <inttypes.h>#include "config.h"#include "mp_msg.h"#include "img_format.h"#include "mp_image.h"#include "vf.h"#include "libswscale/rgb2rgb.h"//===========================================================================//struct vf_priv_s {    unsigned int fmt;    int forced;};static unsigned int getfmt(unsigned int outfmt,int forced){    if(forced) switch(outfmt){    case IMGFMT_RGB24:    case IMGFMT_RGB32:    case IMGFMT_BGR24:    case IMGFMT_BGR32:	return outfmt;    }    switch(outfmt){    case IMGFMT_RGB24: return IMGFMT_BGR24;    case IMGFMT_RGB32: return IMGFMT_BGR32;    case IMGFMT_BGR24: return IMGFMT_RGB24;    case IMGFMT_BGR32: return IMGFMT_RGB32;    }    return 0;    }static int config(struct vf_instance_s* vf,        int width, int height, int d_width, int d_height,	unsigned int flags, unsigned int outfmt){    vf->priv->fmt=getfmt(outfmt,vf->priv->forced);    return vf_next_config(vf,width,height,d_width,d_height,flags,vf->priv->fmt);}static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){    mp_image_t *dmpi;    // hope we'll get DR buffer:    dmpi=vf_get_image(vf->next,vf->priv->fmt,	MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,	mpi->w, mpi->h);    if(mpi->stride[0]!=dmpi->stride[0] || mpi->stride[0]!=mpi->w*(mpi->bpp/8)){	int y;	unsigned char* src=mpi->planes[0];	unsigned char* dst=dmpi->planes[0];	int srcsize=mpi->w*mpi->bpp/8;	for(y=0;y<mpi->h;y++){	    if(mpi->bpp==32)		rgb32tobgr32(src,dst,srcsize);	    else		rgb24tobgr24(src,dst,srcsize);	    src+=mpi->stride[0];	    dst+=dmpi->stride[0];	}    } else {	if(mpi->bpp==32)	    rgb32tobgr32(mpi->planes[0],dmpi->planes[0],mpi->w*mpi->h*4);	else	    rgb24tobgr24(mpi->planes[0],dmpi->planes[0],mpi->w*mpi->h*3);    }    return vf_next_put_image(vf,dmpi, pts);}//===========================================================================//static int query_format(struct vf_instance_s* vf, unsigned int outfmt){    unsigned int fmt=getfmt(outfmt,vf->priv->forced);    if(!fmt) return 0;    return vf_next_query_format(vf,fmt) & (~VFCAP_CSP_SUPPORTED_BY_HW);}static int open(vf_instance_t *vf, char* args){    vf->config=config;    vf->put_image=put_image;    vf->query_format=query_format;    vf->priv=malloc(sizeof(struct vf_priv_s));    vf->priv->forced=args && !strcasecmp(args,"swap");    return 1;}vf_info_t vf_info_rgb2bgr = {    "fast 24/32bpp RGB<->BGR conversion",    "rgb2bgr",    "A'rpi",    "",    open,    NULL};//===========================================================================//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -