Chinaunix首页 | 论坛 | 博客
  • 博客访问: 989231
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-07-29 17:41:01

Qtopia中的Camera的设计

    Qtopia中,自带了一个个application名字叫做camera,它使用了video for linux标准,支持v4l1和v4l2两个不同的标准版本。下面是video4linux的连接:


    在我们的项目中,使用了v4l2。
    其基本构造是这样的:
    application启动后,调用videodevicefactory来产生一个videodevice,这样使用这可以通过对videodevice来操作。而videodevicefactory其实就是打开了/dev/video0文件并初始化了一个videodevice实例,他可以根据需求创建不同的videodevice实例。
    在videodevice里面,将设备文件/dev/video0以mmap的方式将其device memory映射到了application memory space,然后,分配了一个fram结构,让这个frame结构里包含一个指针,就指向了这个被map得到的地址。
    当要照相时,就ioctl对fd发送命令,在发送完命令后,执行一个poll操作,他等待fd上POLLIN事件的发生,即fd上有数据可以读了,然后poll就会返回。此时,camera照的结果应该就放在了被映射的那段内存里,而我们的frame结构里的指针应该就已经指向该段内存了。所以,如果要操作的话,就可以直接对其操作就可以了。
    我们的相机得到的据说是yuv420结构的图形数据,所谓yuv420是指其图形数据中每个点都对应一个Y数据,即亮度数据,每4个点对应一个U数据,每四个点对应1个V数据,此外该文件中,先将所有的Y数据都安排完后,才会安排uv数据,而且具体的安排也会有很多方法,具体参考:
   



阅读(1127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~