Android Camera HAL3 分析

Android Camera HAL3 分析

ID:47863411

大小:387.00 KB

页数:26页

时间:2019-07-03

Android Camera HAL3 分析_第1页
Android Camera HAL3 分析_第2页
Android Camera HAL3 分析_第3页
Android Camera HAL3 分析_第4页
Android Camera HAL3 分析_第5页
资源描述:

《Android Camera HAL3 分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AndroidCameraHAL3分析本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636email:gzzaigcn2009@163.comSoftware:系统源码Android5.1 Camera3研读前沿:当初在研读Camera1.0相关的内容时,主要围绕着CameraClient、CameraHardwareInterface等方面进行工作的开展,无论是数据流还是控制流看起来都很简单、明了,一系列的流程化操作使得整个框架学起来特别的容易。因为没有Camera2.0相关的基础,所以这次直接看3.

2、0相关的源码时,显得十分的吃紧,再加上底层高通HAL3.0实现的过程也是相当的复杂,都给整个研读过程带来了很多的困难。可以说,自身目前对Camera3.0框架的熟悉度也大概只有70%左右,希望通过总结来进一步梳理他的工作原理与整个框架,并进一步熟悉与加深理解。 1.Camera3下的整体架构图。整个CameraService建立起一个可用操作底层Cameradevice大致需要经过Camera2Client、Camera3Device以及HAL层的camera3_device_t三个部分。26从上图中可以发现Camera3架构看上去明显比cam

3、era1来的复杂,但他更加的模块化。对比起Android4.2.2Camer系统架构图(HAL和回调处理)一文中描述的单顺序执行流程,Camera3将更多的工作集中在了Framework去完成,将更多的控制权掌握在自己的手里,从而与HAL的交互的数据信息更少,也进一步减轻了一些在旧版本中HAL层所需要做的事情。 2.Camera2Client的建立与初始化过程在建立好Camera2Client后会进行initialize操作,完成各个处理模块的创建: ?123   ....mStreamingProcessor=newStreamingProc

4、essor(this);//preview和recorder    threadName=String8::format(C2-%d-StreamProc,            mCameraId);2645678910111213141516171819202122232425    mStreamingProcessor->run(threadName.string());//预览与录像     mFrameProcessor=newFrameProcessor(mDevice,this);//3A    threadName=Strin

5、g8::format(C2-%d-FrameProc,            mCameraId);    mFrameProcessor->run(threadName.string());//3A     mCaptureSequencer=newCaptureSequencer(this);    threadName=String8::format(C2-%d-CaptureSeq,            mCameraId);    mCaptureSequencer->run(threadName.string());//录像,拍照

6、     mJpegProcessor=newJpegProcessor(this,mCaptureSequencer);    threadName=String8::format(C2-%d-JpegProc,            mCameraId);    mJpegProcessor->run(threadName.string());.... mCallbackProcessor=newCallbackProcessor(this);//回调处理    threadName=String8::format(C2-%d-Callbk

7、Proc,            mCameraId);    mCallbackProcessor->run(threadName.string());依次分别创建了: StreamingProcessor并启动一个他所属的thread,该模块主要负责处理previews与record两种视频流的处理,用于从hal层获取原始的视频数据FrameProcessor并启动一个thread,该模块专门用于处理回调回来的每一帧的3A等信息,即每一帧视频除去原始视频数据外,还应该有其他附加的数据信息,如3A值。CaptureSequencer并启动一个

8、thread,该模块需要和其他模块配合使用,主要用于向APP层告知capture到的picture。JpegProcessor并启动一个thread,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。