Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2691613
  • 博文数量: 505
  • 博客积分: 1552
  • 博客等级: 上尉
  • 技术积分: 2514
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-23 18:24
文章分类

全部博文(505)

文章存档

2019年(12)

2018年(15)

2017年(1)

2016年(17)

2015年(14)

2014年(93)

2013年(233)

2012年(108)

2011年(1)

2009年(11)

分类: LINUX

2014-10-12 17:13:40


一般的非微软的网络摄像头,本地打开摄像头进行拍照,我查看了一下摄像头使用的是still image capture method 2方式进行拍照,请问这种拍照方式的原理是什么?

------解决思路----------------------
摄像头支持的still image capture有三种方式:
still image capture method 1:
当拍照事件触发以后,摄像头直接从当前预览的video pipe中抓一帧图像作为still image,因此hardware不会中断和改变 video stream。采用此方式进行静态拍照的话拍出来的图像的resolution和format总是和当前video stream是一致的。

still image capture method 2:
当拍照事件触发以后,驱动程序会停掉当前的video stream,然后重新根据application所选择的静态图片的图像的resolution 和format和hardware沟通并重新分配usb带宽,发送VS_STILL_IMAGE_TRIGGER_CONTROL 的命令给 hardware,然后准备着接收still image data。Device hardware这边接到命令后将still image data 通过通过video pipe送出,并在这一帧的payload header中标记为still。当host driver接收到 still image后就会恢复到拍照之前video的alternate setting,重新打开video stream。这种情况下在拍照时候 有video 有一个明显停顿的动作。

still image capture method 3:
前两种方式都是只通过从video pipe传输still image data。这种方式的话still image data是通过专用的usb的bulk传输方式的still image pipe传输;因此video stream就不会被中断。
------解决思路----------------------
Host driver 向camera device发送VS_STILL_IMAGE_TRIGGER_CONTROL命令这是USB传输中的控制传输,成功了device会 回复握手包,NAK握手包(USB设备忙)、STALL握手包(USB设备有错误)和ACK(成功处理)。

关于alternate setting的区别很难说,alternate setting 是host driver根据与device在Video Probe and Commit Controls时沟通的frame 的MaxPayloadSize来确定的。
在我看来应该没什么意义去比较alternate setting的区别。
阅读(5220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~