- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android Camera HAL3中拍照Capture模式下多模块间的交互与帧Result与帧数据回调。
qq:1037701636 email:gzzaigcn2009@163.com
Software:系统源码Android5.1
前沿:
? ? Camera3 HAL3架构下完全不同于HAL1的preview预览处理过程,包括主要涉及到的控制流和视频流等。比较详细的阐述了Camera2Client下streamProcessor、CallbackProcessor、CaptureSequencer等模块在Camera3架构下的功能。分析得出每个模块下均会在Camera3Device下以一个Stream的形式存在,而每个stream又是由多个buffer来构成主体的。与HAL3进行数据的交互时,以Request和result来作为数据传输的载体。在这些基础上本文将描述具体拍照Capture模式下的数据流和控制流,主要会涉及到jpegprocessor、CaptureSequencer这几个模块的工作原理。鉴于Capture模式下的数据流更复杂,在这里重点会分析数据流result回传时,每个模块的响应以及处理过程,填补前一博文的空白。
1. HAL3Camera2Client下的take picture的入口函数
capture picture功能的入口,主要完成了以下两件事情:
updateProcessorStream(mJpegProcessor, l.mParameters);
mCaptureSequencer-startCapture(msgType)
? ? JpegProcessor模块而言,他的stream流第一次是在preview阶段进行了create与初始化,这里之所以再次调用JpegProcessor::updateStream目的是参考原先JpegProcessor?stream的width与height是否变化即是否照片要求的分辨率发生了变化,如果是的话就需要delete原先的stream,重新建立一个stream。
? ? JpegProcessor中重点关注CpuConsumer与Surface的生产者与消费者处理模式,官方称之为Create CPU buffer queue endpoint。
2.?CaptureSequencer块
? ? CaptureSequencertake picture下操作的重点,在Camera2Client中进行了创建,首先来看CaptureSequencer线程的threadLoop函数:
[cpp]?view plaincopy
bool?CaptureSequencer::threadLoop()?{??
??
????spCamera2Client?client?=?mCmote();??
????if?(client?==?0)?return?false;??
??
????CaptureState?currentState;??
????{??
????????Mutex::Autolock?l(mStateMutex);??
????????currentState?=?mCaptureState;??
????}??
??
????currentState?=?(this-*kStateManagers[currentState])(client);??
??
????Mutex::Autolock?l(mStateMutex);??
????if?(currentState?!=?mCaptureState)?{??
????????if?(mCaptureState?!=?IDLE)?{??
????????????ATRACE_ASYNC_END(kStateNames[mCaptureState],?mStateTransitionCount);??
????????}??
????????mCaptureState?=?currentState;//保留新的状态??
????????mStateTransitionCount++;??
????????if?(mCaptureState?!=?IDLE)?{??
????????????ATRACE_ASYNC_BEGIN(kStateNames[mCaptureState],?mStateTransitionCount);??
????????}??
????????ALOGV(Camera?%d:?New?capture?state?%s,??
????????????????client-getCameraId(),?kStateNames[mCaptureState]);
您可能关注的文档
最近下载
- 高中政治必修三政治与法治重点知识点归纳总结(复习必背).docx VIP
- Unit6+Understanding+Ideas高中英语外研版(2019)必修第三册.pptx VIP
- 高中物理人教版高三一轮复习牛顿第二定律之板块模型.pptx VIP
- 05-吹瓶生产工艺Krones吹瓶教程.ppt VIP
- 中外合作办学的可行性报告.pdf VIP
- 2025年[指南]胃息肉 .pdf VIP
- 函数专题二次函数在闭区间上的最值问题(5大题型).docx VIP
- 3.5.2 二次函数在闭区间上的最值问题-(必修第一册) (教师版).docx VIP
- 2025年招标资格证考试题库及答案(通用版).pdf VIP
- 办公设备维保服务办公设备维保方案.doc VIP
文档评论(0)