V4L2编程 VIDIOC_ENUM_FMT 获取摄像头格式问题,求高手帮助!

Xiao_ZJ 2014-03-03 12:09:22
大家好,我在做一个摄像头的毕业设计,但是用到VIDIOC_ENUM_FMT的时候,那个摄像头就显示还有YUV格式,但是我在PC上面用luvcview -L 查看下支持格式,他竟然显示了很多格式,连RGB都有,搞了1个多月都不知道什么问题!是内核问题?驱动?还是我程序有问题啊,求助!!


static int GetVideo_Support_fmt(pVd vd)
{
struct v4l2_fmtdesc fmt_desc;
int ret = -1;

memset(&fmt_desc, 0, sizeof(struct v4l2_fmtdesc));
fmt_desc.index=0;
fmt_desc.type= vd->type; //V4L2_BUF_TYPE_VIDEO_CAPTURE;

printf("Support format:\n");
while(ioctl(vd->fd, VIDIOC_ENUM_FMT, &fmt_desc) != -1)
{
fmt_desc.index++;
printf("\t%d.%s\n",fmt_desc.index,fmt_desc.description);
printf("{ pixelformat = ''%c%c%c%c'', description = ''%s'' }\n", \
fmt_desc.pixelformat & 0xFF, \
(fmt_desc.pixelformat >> 8) & 0xFF, \
(fmt_desc.pixelformat >> 16) & 0xFF, \
(fmt_desc.pixelformat >> 24) & 0xFF,\
fmt_desc.description);
ret = enum_frame_sizes(vd->fd , fmt_desc.pixelformat);
if (ret != 0)
printf("Unable to enumerate frame sizes\n");
}
//printf("\n");
if(errno != EINVAL) {
printf("error num:%d",errno);
perror("ERROR enumerating frame formats:");
// return (-1);
}
return 0;
}
...全文
1243 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhenyang007z 2015-06-30
  • 打赏
  • 举报
回复
fmt_desc.index++放到while循环里

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧