📄 capture.h
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <linux/videodev.h>#include <sys/ioctl.h>extern "C"{#include <jpeglib.h> //在编译这个库的时候不能用C++编译,所以指定为extern "C",让编译器知道调用的是c的库!}#include <dlfcn.h>#include <fcntl.h>#include <sys/mman.h>#include <sys/types.h>#include <sys/stat.h>#include <setjmp.h>#include <string.h>#include <signal.h>#include <errno.h>#include <linux/fb.h>typedef struct _fb_v4l{ // FrameBuffer int fbfd ; // FrameBuffer�� struct fb_var_screeninfo vinfo; // FrameBuffer�Ļɱ��Ϣ struct fb_fix_screeninfo finfo; // FrameBuffer̶��Ϣ char *fbp; //FrameBuffer // video device int fd; struct video_capability capability; struct video_buffer buffer; struct video_window window; struct video_channel channel[8]; struct video_picture picture; struct video_tuner tuner; struct video_audio audio[8]; struct video_mmap mmap; struct video_mbuf mbuf; unsigned char *map; int frame_current; int frame_using[VIDEO_MAX_FRAME];}fb_v41;#define DEFAULT_PALETTE VIDEO_PALETTE_RGB565#define FB_FILE "/dev/fb0"#define V4L_FILE "/dev/video0"#define ERR_FRAME_BUFFER 1#define ERR_VIDEO_OPEN 2#define ERR_VIDEO_GCAP 3#define ERR_VIDEO_GPIC 4#define ERR_VIDEO_SPIC 5#define ERR_SYNC 6#define ERR_FRAME_USING 7#define ERR_GET_FRAME 8 #define OUTPUT_BUF_SIZE 4096typedef struct { struct jpeg_destination_mgr pub; unsigned char *outBuff; JOCTET * buffer; } my_destination_mgr;typedef my_destination_mgr *my_dest_ptr; void rgb_to_framebuffer( fb_v41 *,int,int, int,int,unsigned short * );int get_grab_frame(fb_v41 *, int);int get_first_frame(fb_v41 *);char *get_frame_address(fb_v41 *);int get_next_frame(fb_v41 *);int open_framebuffer(char *,fb_v41 *);int open_video( char *,fb_v41 *,int,int,int,int);void compress_to_jpeg_file( FILE *,char *,int,int, int);void jpeg_buff_dest(j_compress_ptr );void compress_Jpeg( unsigned char *, int, int, int,int, int);unsigned char *jpegImg();int jpegSize();void exchange_r_b( char *,long);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -