且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

WinCE6.0 Camera驱动源码分析(二)

更新时间:2022-09-27 23:13:36

本文分析从应用程序启动到开始预览整个过程中,驱动代码的执行流程。开发环境是WinCE6.0+Android6410开发板。
 
       一、驱动的加载,参考博文http://jazka.blog.51cto.com/809003/707027
 
       二、通过CAM_IOControl接口操作各种属性,下面的步骤中也会不断调用该接口,此处不细谈。
 
       三、开各个Pin接口并进行流实例化。
       调用PIN_Open打开对应的Pin接口,主要有PreviewStillCapture三种接口,每次打开之后调用PIN_IOControl中的IOCTL_STREAM_INSTANTIATE完成流实例化。具体执行的函数是CPinDevice :: StreamInstantiate
 
       四、设置各个Pin的视频流格式。
WinCE6.0 Camera驱动源码分析(二)
 
       五、初始化Sensor状态,包括Camera时钟、GPIO、复位等设置,之后设置Capture的状态为PAUSE
WinCE6.0 Camera驱动源码分析(二)
 
WinCE6.0 Camera驱动源码分析(二)
 
WinCE6.0 Camera驱动源码分析(二)
 
       六、管理PinBuffer,由用户层分配
WinCE6.0 Camera驱动源码分析(二)
 
       七、跟第五步执行流程类似,只是设置的PAUSE状态是StillPreview
 
       八、同样跟第五步类似,不同的是设置PreviewRUN的状态,从SetSensorState开始执行的内容就不一样了。
WinCE6.0 Camera驱动源码分析(二)
 
       九、添加Buffer到驱动的队列中
WinCE6.0 Camera驱动源码分析(二)
 
       十、响应中断,开始处理接收到的图像数据(以Preview为例)
WinCE6.0 Camera驱动源码分析(二)

本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/719130,如需转载请自行联系原作者