📄 dh-ioctl.h
字号:
/** 调用V4L的接口,参考了xawtv 3.88.** PengJieJun,2003.7.9* Copyright大恒图像.*/#ifndef __DH_USER_VID_FUCTION__#define __DH_USER_VID_FUCTION__#include <linux/types.h> /* XXX glibc */#include "videodev.h"//#include "grab-ng.h"#if defined(__cplusplus) || defined(c_plusplus)extern "C"{#endif #define VIDEO_SOURCE_COMPOSITE0 0#define VIDEO_SOURCE_COMPOSITE1 1#define VIDEO_SOURCE_COMPOSITE2 2#define VIDEO_SOURCE_SVIDEO 3// h_dhVid: dh_OpenVideo的返回值//return: -1,函数调用错// >=0,卡的数目int dh_GetVideoNum(void);//得到当前的错误信息char* dh_GetErrInfo(void);//打开设备//nCardNo: 设备编号,从0开始(与Windows不一样!)//返回值: 不成功,返回-1// 成功,返回设备句柄:>0int dh_OpenVideo(int no);// 关闭设备// h_dhVid: dh_OpenVideo的返回值// 返回值: 不成功,返回-1// 0,成功返回int dh_CloseVideo (int h_dhVid);//return: -1,函数调用错// 1,有视频// 0,没有视频//h_dhVid: dh_OpenVideo的返回值int dh_IsVideoOn(int h_dhVid);// 调用该函数采集一帧或一场图像,采集完成后才返回。// 函数成功返回数据指针,否则返回NULL// h_dhVid: dh_OpenVideo的返回值// 调用完毕,数据处理后,记得调用一次dh_MRelease_buf (int h_dhVid)unsigned char *dh_MCaptureOne (int h_dhVid);//调用该函数快速采集一帧或一场图像,采集完成后才返回。//函数成功返回数据指针,否则返回NULL//h_dhVid: dh_OpenVideo的返回值unsigned char* dh_MFastCaptureOne(int h_dhVid);//调用该函数开始快速采集一帧或一场图像,采集状态由dh_MGetSnapOneStatus()检测。//函数成功返回0,否则返回-1//h_dhVid: dh_OpenVideo的返回值int dh_MSnapOne(int h_dhVid);//调用该函数来等待采集完一幀或一场.(与Windows不一样!)//函数成功返回数据指针,否则返回NULL//h_dhVid: dh_OpenVideo的返回值unsigned char* dh_MGetSnapOneStatus(int h_dhVid);//调用函数dh_MGetNextFrame或者dh_MCaptureOne并处理完采集的图像后,//必须调用该函数释放内存.//dh_MFastCaptureOne和dh_MSnapOne不需要调用该函数释放内存.//函数成功返回0,否则返回-1int dh_MReleaseBuf (int h_dhVid);// 发开始采集命令// h_dhVid: dh_OpenVideo的返回值// buffers: 1 ~ 4,使用多少个buf进行采集// 函数成功返回0,否则返回-1int dh_MStartCapture (int h_dhVid, unsigned int buffers);// 发出采集下帧的命令,返回采集完成当前帧的指针// h_dhVid: dh_OpenVideo的返回值// return: 函数成功返回数据指针,否则返回NULL// 调用完毕,数据处理后,记得调用一次dh_MRelease_buf (int h_dhVid)unsigned char *dh_MGetNextFrame (int h_dhVid); // 发停止采集命令// h_dhVid: dh_OpenVideo的返回值int dh_MStopCapture (int h_dhVid);// 设置采集卡采集到内存的图像大小,颜色模式:(不改变向屏幕采集的图像的颜色属性),坐标是相对于屏幕左上角原点.// h_dhVid: dh_OpenVideo的返回值// int width,int height,图像的宽高,应该满足:// X方向的起点和宽度是4的倍数;// Y方向的起点和宽度是2的倍数。// pallete: valid value are:// VIDEO_NONE 0// VIDEO_RGB08 1 /* bt848 dithered */// VIDEO_GRAY 2// VIDEO_RGB15_LE 3 /* 15 bpp little endian */// VIDEO_RGB16_LE 4 /* 16 bpp little endian */// VIDEO_RGB15_BE 5 /* 15 bpp big endian */// VIDEO_RGB16_BE 6 /* 16 bpp big endian */// VIDEO_BGR24 7 /* bgrbgrbgrbgr (LE) */// VIDEO_BGR32 8 /* bgr-bgr-bgr- (LE) */// VIDEO_RGB24 9 /* rgbrgbrgbrgb (BE) */// VIDEO_RGB32 10 /* -rgb-rgb-rgb (BE) */// VIDEO_LUT2 11 /* lookup-table 2 byte depth */// VIDEO_LUT4 12 /* lookup-table 4 byte depth */// VIDEO_YUYV 13 /* 4:2:2 */// VIDEO_YUV422P 14 /* YUV 4:2:2 (planar) */// VIDEO_YUV420P 15 /* YUV 4:2:0 (planar) */// VIDEO_MJPEG 16 /* MJPEG (AVI) */// VIDEO_JPEG 17 /* JPEG (JFIF) */// VIDEO_UYVY 18 /* 4:2:2 */// VIDEO_FMT_COUNT 19int dh_MSetCaptureNorm (int h_dhVid, int width, int height, int pallete);//设置亮度//h_dhVid: dh_OpenVideo的返回值//brightness: 0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetBrightness(int h_dhVid, int brightness);int dh_GetBrightness(int h_dhVid, int *brightness);//设置对比度//h_dhVid: dh_OpenVideo的返回值//contrast: 0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetContrast(int h_dhVid, int contrast);int dh_GetContrast(int h_dhVid, int *contrast);//设置饱和度//h_dhVid: dh_OpenVideo的返回值//saturation: 0 ~ 65535,初始值为32767//函数成功返回0,否则返回-1int dh_SetSaturation(int h_dhVid, int saturation);int dh_GetSaturation(int h_dhVid, int *saturation);//设置色调//h_dhVid: dh_OpenVideo的返回值//hue: 0 ~ 65535,初始值为32767 //函数成功返回0,否则返回-1int dh_SetHue(int h_dhVid, int hue);int dh_GetHue(int h_dhVid, int *hue);//设置视频制式//h_dhVid: dh_OpenVideo的返回值//norm: int//#define VIDEO_MODE_PAL 0//#define VIDEO_MODE_NTSC 1//#define VIDEO_MODE_SECAM 2//#define VIDEO_MODE_AUTO 3//函数成功返回0,否则返回-1int dh_SetVideoStandard(int h_dhVid, int norm);//得到视频制式,//h_dhVid: dh_OpenVideo的返回值//norm: 返回的制式号//函数成功返回0,否则返回-1int dh_GetVideoStandard (int h_dhVid, int *norm);//设置输入源路//h_dhVid: dh_OpenVideo的返回值//channel 源路//valid value are:// #define VIDEO_SOURCE_COMPOSITE0 0// #define VIDEO_SOURCE_COMPOSITE1 1// #define VIDEO_SOURCE_COMPOSITE2 2// #define VIDEO_SOURCE_SVIDEO 3 //函数成功返回0,否则返回-1int dh_SetVideoSource(int h_dhVid, int channel);//得到输入源路//h_dhVid: dh_OpenVideo的返回值//channel: 返回的源路号//函数成功返回0,否则返回-1int dh_GetVideoSource (int h_dhVid, int *channel);// h_dhVid: dh_OpenVideo的返回值// 开始向屏幕采集// 函数成功返回0,否则返回-1int dh_OStartCapture (int h_dhVid, int width, int height, int top, int left);// 停止向屏幕采集//函数成功返回0,否则返回-1int dh_OStopCapture (int h_dhVid);//additional funtion//视频格式转换函数,p为图像宽高之积(p=width*height)//函数来自color_packed.c和color_yuv2rgb.c,用户可以仿照此从这两个文件中提取别的函数void yuv422_to_rgb24(unsigned char* dest, unsigned char* src,int p);void redblue_swap(unsigned char *dest, unsigned char *src, int p);//new add functions,2003.8.8//让硬件处于快速采集方式状态.只需调用一次即可.//使用限制://限制1,调用该函数前,必须停止其它的采集方式,(向屏幕采集,向内存采集),即该函数只是在// 调用函数dh_MFastCaptureOneField()时才使用.调用该函数后约150毫秒,// 才能调用函数dh_MFastCaptureOneField()采集到稳定的图像.//限制2,使用其它采集方式前(向屏幕采集,向内存采集),必须先调用dh_StartFastCap()关闭快速采集模式.//限制3,在改变采图大小,颜色位数等参数的时候,必须先调用dh_StopFastCap()关闭快速采集,// 等参数设置完成后再调用dh_StartFastCap()//函数返回0,调用成功,//返回-1,调用失败,int dh_StartFastCap(int h_dhVid);//停止硬件快速采集.//函数返回0,调用成功,//返回-1,调用失败,int dh_StopFastCap(int h_dhVid);//外部调用的函数,在快速采集一场图像时调用的函数.//与函数dh_MCaptureOne()的区别://区别1: 函数dh_MCaptureOne()可用于幀和场采集;而函数dh_MFastCaptureOneField()只用于场采集.//区别2: 调用函数前dh_MFastCaptureOneField()前,必须调用过一次函数dh_StartFastCap(),(只需调用一次)// 调用dh_MCaptureOne()则无此限制.//区别3:调用函数dh_MFastCaptureOneField()可以在20~40毫秒内采集到一场图像;// 函数dh_MCaptureOne()可以在40~60毫秒内采集到一场图像;在60~80毫秒内采集到一幀图像;//函数返回0,调用成功,//返回-1,调用失败,unsigned char* dh_MFastCaptureOneField(int h_dhVid);#if defined(__cplusplus) || defined(c_plusplus)}#endif#endif //end of #define __DH_USER_VID_FUCTION__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -