当前位置: 技术问答>linux和unix
v4l2的input/output 错误问题
来源: 互联网 发布时间:2016-10-10
本文导语: 我将ZC301PLH摄像头用在S3C2440上,内核版本为2.6.33,以前使用ZC301PL的摄像头,工作正常,但是换上ZC301PLH摄像头后,在调用ioctl (fd, VIDIOC_DQBUF, &buf)读取帧缓冲的时候出现了 input/output 错误,不知道什么原因,其他配...
我将ZC301PLH摄像头用在S3C2440上,内核版本为2.6.33,以前使用ZC301PL的摄像头,工作正常,但是换上ZC301PLH摄像头后,在调用ioctl (fd, VIDIOC_DQBUF, &buf)读取帧缓冲的时候出现了 input/output 错误,不知道什么原因,其他配置没有报错,并读出来对比过,和写入配置相同。代码如下:
这段代码是网上一位朋友提供的,我的程序就是用这段代码改的,代码太多,贴出来很不方便,就先贴这位朋友的代码给大家做参考,里面有一些小错误,请忽略,大致流程是一样的。
#define VIDEO_DEVICE "/dev/video0"
#define pictureNumber 4
#define SIZE 32768
typedef struct VideoBuffer
{
void *start;
int offset;
size_t length;
}VideoBuffer;
extern char testbuf[SIZE];//SIZE大小有下面的设置决定,此处为32768,所有图像相同大小
extern VideoBuffer *buffers;//描述帧缓冲的映射地址
extern int SocketFd;//基于udp协议
extern int videofd;//摄像头文件描述符(本实验中为open /dev/video1的返回值)
void cap_pic(char *start, unsigned int length,char *filename)
{
FILE * file_fd;
if((file_fd = fopen(filename,"wb"))start == MAP_FAILED){
perror("buffers errorn");
return -1;
}
ret=ioctl(fd, VIDIOC_QBUF, &buf);//将帧缓冲入队
if(ret
这段代码是网上一位朋友提供的,我的程序就是用这段代码改的,代码太多,贴出来很不方便,就先贴这位朋友的代码给大家做参考,里面有一些小错误,请忽略,大致流程是一样的。
#define VIDEO_DEVICE "/dev/video0"
#define pictureNumber 4
#define SIZE 32768
typedef struct VideoBuffer
{
void *start;
int offset;
size_t length;
}VideoBuffer;
extern char testbuf[SIZE];//SIZE大小有下面的设置决定,此处为32768,所有图像相同大小
extern VideoBuffer *buffers;//描述帧缓冲的映射地址
extern int SocketFd;//基于udp协议
extern int videofd;//摄像头文件描述符(本实验中为open /dev/video1的返回值)
void cap_pic(char *start, unsigned int length,char *filename)
{
FILE * file_fd;
if((file_fd = fopen(filename,"wb"))start == MAP_FAILED){
perror("buffers errorn");
return -1;
}
ret=ioctl(fd, VIDIOC_QBUF, &buf);//将帧缓冲入队
if(ret
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。