TI中文支持网
TI专业的中文技术问题搜集分享网站

ARM嵌入式linux中V4L2编程

程序中,下面的这段代码好像没有起作用,我设置的像素是720*576,但是程序第一次运行时采集的图片是720*576的,第二次运行就变成720*480了,可是也没有报错,我认为根本就没有进行像素的操作,好像芯片内部就决定了一样,求解释。

struct v4l2_format fmt; 
CLEAR (fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width= 720;
fmt.fmt.pix.height= 576;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
fmt.fmt.pix.field= V4L2_FIELD_INTERLACED;
if (-1 == xioctl (fd, VIDIOC_S_FMT, &fmt)) errno_exit ("VIDIOC_S_FMT");

Yaoming Qin:

请问您用的是哪个片子?

yu he:

回复 Yaoming Qin:

你好,我用的是DM3730,这个板子好像比较新,资料少

Yaoming Qin:

回复 yu he:

这个片子是两三年前的片子了,比较老了,关于v4l2capture,请参考 http://processors.wiki.ti.com/index.php/UserGuideOmap35xCaptureDriver_PSP_04.02.00.07

http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_UserGuide

yu he:

回复 Yaoming Qin:

我也看过很多这方面的资料,但就是分辨率这方面会出问题

yu he:

回复 Yaoming Qin:

我在仔细看看这些说明,看能不能解决,谢谢你了啊

yu he:

回复 Yaoming Qin:

你好!
下面是你给我推荐的资料里的一段代码,我有个疑问,capability.capabilities 里面存的不是应该是个确定的东西么?那它怎么能和两个量都 & 并且相等呢?我有点不明白,以前我看TI关于STD,就是检查当前设备的制式时也有这个问题,一直不太懂。
 struct v4l2_capability capability;
ret = ioctl(fd, VIDIOC_QUERYCAP, &capability);
if (ret < 0) {printf("Cannot do QUERYCAP\n");return -1;
}
if (capability.capabilities & V4L2_CAP_VIDEO_CAPTURE) {printf("Capture capability is supported\n");
}
if (capability.capabilities & V4L2_CAP_STREAMING) {printf("Streaming is supported\n");
}

Yaoming Qin:

回复 yu he:

这两个可以共存吧,不矛盾。

yu he:

回复 Yaoming Qin:

您好!sha

我在设置FMT的时候S_FMT和G_FMT的不一样,这是怎么回事啊,就是感觉我设置不了像素,还有我想把采集到的图片显示在LCD上,用的是FB的方式,但是却显示不出来,请问您懂这块的内容么?我可你给你我的代码,您给帮着看看有什么问题。

Yaoming Qin:

回复 yu he:

是不是有些S_FMT 不支持,所以GET的时候,不一致?

yu he:

回复 Yaoming Qin:

是这样的,同一个程序,我是在ubuntu操作系统上运行的,我采集的是YUYV格式的,上电第一次运行采集回来的图片是720*576的,第二次运行同一个程序就变成720*480的了,就算我设置成720*480,上电第一次运行,采集出来的还是720*576的,不明白为啥呢。

赞(0)
未经允许不得转载:TI中文支持网 » ARM嵌入式linux中V4L2编程
分享到: 更多 (0)