Q:請問MJPG格式下preview不流暢的原因?
A:1.MJPG不流暢的问题. 先区分是设备过来就慢还是driver端掉帧. 这个用catc抓包可以很好界定. 如果设备过来就慢, 首先注意probe&commit control是否有设置正确参数; 然后再检查start video前的一系列set cdsp(如亮度、对比度等)参数的操作是否有问题(可以先屏蔽掉, 然后观察对设备的影响,因为UVC没有这些操作). 如果是driver端掉帧, 先检查组帧(processUsbPacket)判断是否有误, 再检查错帧判断是否有误(丢掉了好帧).
2. 图像花屏一类可否截图或者直接录像来看一下, 这样比较直观. 另外图像分成3个斜的部分, 大凡这种较有规律的错位可能与分辨率设置有关. 检查一下probe&commit control设置下去的分辨率和driver里目前认定的frame resolution是否一致?
解决方案:在probe&commit control缺少了200fpsframe rate的case.在解决的时候就是添加
在class.h中
0x0000c350=50000=10000000/200
0x00028b0a=166666=10000000/60
Q: Something about snap
A:1. 拍照的方式解釋一下,
1. Driver在InterruptPipe中收到有按下button 的 訊息(CA500CAM_DeviceEventComplete)
2. Driver會把IsButtonPressed設為TRUE
3. Driver在ProcessUSBPacket中檢查IsButtonPressed Flag, 如果是TRUE就會將該張標示為Still Frame.
4. Driver會根據3是否為Still Frame去把該Frame Copy到Still Pipe內.
如果是AP部分拍照的話
1. Amcap將Preview與Still Pin同時拉出來,
2. 如果Amcap點選Snap One, Amcap會透過PIN_CATEGORY_STILL去SetVideoControlFlag_Trigger來觸發,
3. Driver接收到Trigger將isButtonPressed設為TRUE
4. Driver在ProcessUSBPacket中檢查IsButtonPressed Flag, 如果是TRUE就會將該張標示為Still Frame.
5. Driver會根據3是否為StillFrame去把該Frame Copy到Still Pipe內