android camera(hal)

来源:互联网 发布:出试卷软件 编辑:程序博客网 时间:2024/05/01 23:46

android camera有两个版本。

相对于版本一, 版本二在service层增加了streamprocessor/captureqeue. 而版本一的service直接调用hal层的camera接口。这样, 不少工作在hal层处理。

 

ti pandaboard的camera的hal层目前支持版本一。可支持OMX和V4L2 camera driver. OMX的camera支持较丰富的功能。V4L2的功能就比较简单。也就preview了。

 

V4L2的数据流:

ANativeWindow由client的surface提供, 封装成preview_stream_ops_t。CameraHal startPreview的时候, 会调用ANativeWindow的dequeuebuffer得到bufferhandler. 并且调用adapter的usebuffers将V4L2的buffer跟ANativeWindw的buffer用map对照起来。然后hal的preview. 这时queue v4l2的buffers, stream on v4l2. 并启动PreviewThread线程。 这个线程dequeue buffer从v4l2, 并拷贝捕捉的图像到对应map的ANativeWindow的buffer, 调用sendFrameToSubscribers的callback(就是ANativeWindowDisplayAdapter::frameCallbackRelay, 可查看frameprovider知道callback如何注册的)。这个callback会调用ANativeWindow的queuebuffer将buffer递交给surfaceflinger, 并且put一个msg触发ANativeWindowDisplayAdapter::displayThread线程调用handleFrameReturn去dequeue ANativeWindow buffer, 同时调用V4LCameraAdapter::fillThisBuffer将ANativeWindow buffer对应的v4l2的buffer queue给v4l2驱动。这样这个V4L2的camera的preview就转动起来了。

 

 

OMX的, 还有版本二的还要继续调查。

 

 

 

 

原创粉丝点击