<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > S3C2440通過v4l2采集在lcd上顯示

          S3C2440通過v4l2采集在lcd上顯示

          作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
          S3C2440通過v4l2采集lcd上顯示
          #include #include #include #include #include #include #include #include #include #include #include //#include #include #include #include #include #define COLS 320#define ROWS 240#define V4L2_DEV_NODE "/dev/video13"#define FB_DEV_NODE "/dev/fb0"#define CLEAR(x) memset(&(x),0,sizeof(x))typedef struct v4l2_format   V_FORMAT;typedef struct fb_var_screeninfo F_VINFO;struct fb_var_screeninfo fb_var;struct fb_fix_screeninfo fb_fix;char * fb_base_addr = NULL;static void show_rgb565_img(void *scr, __u16 *data_buf){ __u16 x, y;__u16 *fb_buf = (__u16 *)scr;fb_buf += (320);for (y = 0; y < ROWS; y++) {for (x = 0; x < COLS; x++) { fb_buf[x] = *data_buf++ ;}fb_buf += 320;}}int main(void){int v4l2_fd = -1;int fb_fd = -1;int n=0;__u8 *fb_buf;__u8 *buf;__u32 screensize;//unsigned int width = 0;//unsigned int height = 0;//unsigned int bpp = 0;V_FORMAT fmt;enum v4l2_buf_type type;type = V4L2_BUF_TYPE_VIDEO_CAPTURE;printf("Start Main n");printf("Before openning video n");v4l2_fd = open(V4L2_DEV_NODE, O_RDWR | O_NONBLOCK, 0);if (v4l2_fd < 0) {printf(" open video ERRn");return 0;}printf("Before openning FB n");fb_fd = open(FB_DEV_NODE, O_RDWR);if (fb_fd < 0) {printf("error open fb_fdn");exit(1);}/* Get fixed screen information */if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &fb_fix)) {printf("Error reading fb fixed information.n");exit(1);}/* Get variable screen information 	*/if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &fb_var)) {printf("Error reading fb variable information.n");exit(1);}screensize = fb_var.xres * fb_var.yres * fb_var.bits_per_pixel / 8;//screensize = 480 * 272 * 16 / 8;fb_buf = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, 0);if ((int)fb_buf == -1) {printf("Error: failed to map framebuffer device to memory.n");close(fb_fd);return -1;}CLEAR (fmt);fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;fmt.fmt.pix.width = 320;fmt.fmt.pix.height = 240;//fmt.fmt.pix.depth = 16;fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565;//printf("VIDIOC_S_FMT is %xn",VIDIOC_S_FMT);if ((ioctl(v4l2_fd, VIDIOC_S_FMT, &fmt)) < 0) {printf("Error: failed to set video format.n");return 0;}buf = malloc(320 * 240 * 3); //printf("VIDIOC_STREAMON is %xn",VIDIOC_STREAMON);if ((ioctl(v4l2_fd, VIDIOC_STREAMON, &type)) < 0) {printf("error ioctl streamonn");return 0;}printf("start to get pic %dn",(int)fmt.fmt.pix.sizeimage);while(1) {n=read(v4l2_fd, buf, 320*240*2);printf("display %dn",n);show_rgb565_img(fb_buf,buf);}}


          關鍵詞: S3C2440v4l2采集lc

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();