Cypress技术论坛
直播中

vinww特烦恼

8年用户 1139经验值
擅长:存储技术
私信 关注

使用AN75779进行UVC传输的时候,在上位机端实时传输会有图像帧丢失的原因?

我在使用AN75779进行UVC传输的时候,发现在上位机端(virtualDub软件和ampcap以及我们自己编写的DirectShow程序)实时传输的时候偶尔会有图像帧丢失。丢失的频率在不同的电脑上会有不用的结果,有的电脑很久都不会丢一帧,有的电脑会很快丢失。丢帧的瞬间,从BusHound上观察会丢失一定量的数据包,FX3的print输出会显示如下信息:
UVC: Completed 527 frames and 17 buffers
UVC: Completed 556 frames and 74 buffers
UVC: Completed 585 frames and 130 buffers
DMA Reset Event: Commit buffer failure
Application Stopped
Application Started
UVC: Completed 0 frames and 0 buffers
DMA Reset Event: Commit buffer failure
Application Stopped
Application Started
UVC: Completed 0 frames and 0 buffers
UVC: Completed 28 frames and 119 buffers

     为了进行丢帧测试,我在FPGA端使用模拟的FV,LV,PCLK以及8bit的数据bus进行UVC的图像数据输入,目的是为了保证前端数据的可靠性。图像大小为1280*1024,帧率为30FPS,PCLK为90M。DMA缓存区大小设置为16384.
     我已经阅读过论坛上的相关解决方案Invalid Sequence Error in Multi-Channel Commit Buffer - KBA218830 (ZH) ,并按照上面进行修改缓存区(修改为32K),但只是稍许降低了丢帧的概率,并没有解决这个问题。我们的系统对实时性要求较高,不允许有较多的丢帧,目前大概平均4000帧左右就要丢帧一次,这大大超出了我们的承受范围。
     1、请问对于这个丢帧的现象是由于什么原因引起的?有没有较好的解决方案?
     2、丢帧问题是不可避免的吗?若是的话,能采用何种方式弥补图像的丢失?
                     

回帖(1)

李铭鑫

2024-2-29 10:10:25
你这种丢帧频率在UVC应用中属于很正常的现象。如果对帧率和图像大小都有要求,可以考虑采取一些压缩格式,减小使用的带宽。从bulk传输模式的原理来说,这本身就是一种数据传输优先的方式。Bulk传输模式支持的data brust是不要求发送的每个包都返回ACK的。如果你们是USB3.0的设备,可以尝试改成isochronous 传输模式。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分