📄 main.c.bk
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "ccvt.h"#include "v4l/v4l.h"#define DEFAULT_PALETTE VIDEO_PALETTE_YUV420P//#define DEFAULT_PALETTE VIDEO_PALETTE_RGB24v4l_device vd;int device_init(char *dev,int norm){ int i; if(dev == NULL) { dev = "/dev/v4l/video0"; //set to default device } if(v4l_open(dev,&vd)) return -1; if(v4l_get_channels(&vd)) return -1; printf("test open 2\n"); if(v4l_set_norm(&vd,norm)) return -1; if(v4l_mmap_init(&vd)) return -1; printf("%s: initialization Ok... %s\n %d channels \n %d audios \n" ,dev,vd.capability.name,vd.capability.channels ,vd.capability.audios); for(i=0;i<vd.capability.channels;i++) { printf("Channel %d: %s \n",i,vd.channel[i].name); } printf("v4l:mmap's address = %p\n",vd.map); printf("v4l:mmap's buffer size = 0x%x\n",vd.mbuf.size); printf("v4l:mmap's frames = %d(%d max)\n",vd.mbuf.frames,VIDEO_MAX_FRAME); for(i=0; i< vd.mbuf.frames;i++) { printf("v4l: frames %d's offset = 0x%x\n",i,vd.mbuf.offsets[i]); } //printf("v4l:chanel switch to %d (%s)\n",channel,vd.channel[channel].name); //start initialize grab if(v4l_get_picture(&vd)) return -1; if(v4l_set_palette(&vd,DEFAULT_PALETTE)) return -1; printf("test open 3\n"); if(v4l_grab_init(&vd,240,320)) return -1; if(v4l_grab_sync(&vd)) return -1; printf("test open 4\n"); return 0;}int device_grab_frame(){ vd.frame_current = 0; if(v4l_grab_frame(&vd,0) < 0) return -1; return 0;}int device_next_frame(){ vd.frame_current ^= 1; if(v4l_grab_frame(&vd,vd.frame_current) < 0) return -1; return 0;}int main(){ unsigned char *img; unsigned char *img_out = malloc(320*240*3); FILE *fp; memset(img_out,0,sizeof(img_out)); if(device_init("/dev/v4l/video0",3) == -1) { perror("device_init:failed...\n"); exit(1); } else { printf("OK!\n"); //device_next_frame(); //device_grab_frame(); img = device_get_address(&vd); printf("img address is: %p \n",img); printf("img_out address is: %p \n",img_out); for(int i=0;i<320;i++) printf("%d\n",*(img_out+i)); ccvt_420p_rgb24(240,320,img,img_out); printf("ccvt_420p_rgb24 OK!\n"); fp = fopen("test.ppm","w"); fprintf(fp,"P6\n240 320\n255\n"); fwrite(img_out,240*3,320,fp); fclose(fp); } exit(0); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -