STM32实现USB Video Class开始干活了

2019-12-19 18:08发布

终于出来图像,虽然图像混乱,问题还很多,但它干活了!发贴自我庆贺!

(原文件名:Capture.jpg)

真实意义的USB摄像头,OV7670拍摄图像,STM32 JPEG编码。用USB虚拟串口传到PC端显示早就OK,移植到USB Video Class就是不工作!
描述符和流控制耗了N多天,找不到什么问题,UVCView分析通过,Bushound也看到完整的JPEG数据,甚至用自己写的DirectX接口Video Capture程序调试,都能发现有逐帧的数据上来,可是显示就是黑屏一个。
无计加无聊之下去翻看JPEG的编码,对照JPEG文件。JPEG Encoder是自己写的,为了节省Bytes,有些可选段没加上。乱调整一下,把省略了的APP0段加上,突然发现有图像出来了!他NN的熊。
回头一想也好理解,JPEG标准中APP0段是可选的,没有它单独的图像也能显示;视频流模式,USB Video Class设备把数据流丢给DirectX Render,后者要从每帧图像中找APP0段中的JFIF标记,或者,在数据流出错后,新的帧到来,找到JFIF标记就丢给JPEG解码器。没有JFIF标记,初始化(用上次的标记?)错,或者中间数据流出错,DirectX Render就直接罢工!显示黑屏。这个APP0段说是可选,实际是必选才行!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
97条回答
chunxx
2019-12-25 18:09
整理了一下project的源码,上传
exp_uvc_r1.rar (1.72 MB, 下载次数: 247) 2012-6-8 15:49 上传 点击文件名下载附件

缺一个文件mt9m111.c,还待整理。对ov7670运行没有问题。
另外,抽时间做一些文字性总结,放在21的blog上:
http://blog.21ic.com/user1/3095/archives/2012/92603.html

文字总结是针对整体思路的,不过找不到合适的地方边写边放,暂时还放在21ic。
有些东西希望放在那里能保留长一点,不会被灌水淹没,起码对自己和小圈子如此,不过21ic Blog也不是好地方,N多年没进步了。大家有发现合适的地方请告诉我。

一周热门 更多>