分类: LINUX
2013-07-06 17:10:33
Av_server分析总结
1、 HDVICP MJCP 模块是实现编解码功能,像H.264、Mjepg等都是在这里实现,当然是encode线程控制HDVICP MJCP其寄存器实现。
2、 整个硬件架构可以分为三部分:arm主控部分、编码部分、图像处理部分。
3、 VPSS提供一个输入接口Video Processing Front End or VPFE和一个输出接口Video Processing Back End or VPBE。VPFE用于外部图像设备,如图像传感器、视频编码器等。VPBE用于显示设备,如模拟SDTV显示器、数字LCD显示屏、HDTV视频编码器等等。
4、 从cmos出来的数据时raw格式的数据(raw数据时16位的,但是cmos采集到的图像精度却是12位的),该数据经过IPIPEIF中的两个选择开关来和ISIF、IPIPE进行交互,其流程是16位的raw数据经过INPSRC1开关(该开关状态的具体含义参考代码,一般为0)到达ISIF,ISIF接收到数据并进行处理(具体处理的作用是将数据转化为IPIPE和H3A可以使用的数据)后分两路传输,其中一路经过INPSRC2开关将数据传输到了IPIPE,另外一路传给了H3A做统计只用。
5、 IPIPE一个主要的功能就是RESIZE功能,从上图可以看出IPIPE有两路RZA、RZB,因此可以有两路不同分辨率的帧输出,如果想要更多不同分辨率的帧,那么就要调用程序中的resize功能,不过我们程序中没有使用resize功能。
6、 Capture线程是从buffer logic中获取数据的,该数据是从IPIPE而来。
7、 图像的白平衡等图像调整是通过设置IPIPE中的相应寄存器实现的,其中H3A的输出作为2A线程的输入,2A线程通过控制H3A中的寄存器进而控制IPIPE中的相应寄存器,从而达到改变2A的功能。
8、 在DVSDK中实现了cmem驱动,可以查看cmem驱动源码,cmem的目的是实现大块数据的读写,其中各个线程分配的buffer都是在cmem上面分配的。
9、 硬件中有OSD功能,但是我们没有使用,OSD功能是我们在代码中自己实现的。