Camera的整个应用系统中存在2个buffer queue: idle buffer queue和ready buffer queue. idle buffer queue由client维护,而ready buffer queue由camera driver维护。
在应用的最初,所有的capture buffer都在idle buffer queue中,此时驱动程序对这些capture是无法控制的。那么为了让驱动程序可以控制这些buffer, client就需要将buffer从idle buffer queue传送到ready buffer queue.这个动作是由IOCTL_CS_PROPERTY的CS_ENQUEUE来完成的。
当驱动程序的到这样的IOCTL call,它就可以控制这个buffer.当驱动程序将这个buffer填充完毕,驱动还需将这个buffer传回,这个动作则是通过WriteMsgQueue发送消息完成的。而这个WriteMsgQueue的动力,往往就是我们camera interface的中断。

因此从整体看camera应用中,buffer实在client和driver之间来回旋转的。
本文介绍Camera应用中的Buffer管理机制,包括idlebufferqueue和readybufferqueue的运作方式。客户端通过IOCTL_CS_PROPERTY的CS_ENQUEUE操作将buffer从idle状态转换为ready状态,使驱动程序能够控制并填充buffer。
8824





