Camera Framework Service流程总结

本文深入探讨了Android Camera Service的相关问题,包括Buffer的分配、轮转机制,Metadata的下发方式,camera3_capture_request_t数据结构的作用,以及registerStream中的stream set概念。通过对关键代码位置和关系类图的分析,揭示了Camera Service内部的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、代码位置

二、关系类图

 三、问题讨论

 1.Buffer是在哪分配的,它是怎么轮转的

        1.Buffer的数量

        2.Buffer轮转

         3.Buffer分配

 2.Metadata是怎么下发的

3.camera3_capture_request_t这个数据结构体还有用吗



前言

        本文主要记录些Camera Servie的一些问题的理解,对几个问题进行讨论,一些参考Camera Service

一、代码位置

        向上暴露的接口

        具体实现

        服务的进程:/system/bin/cameraserver,进程创建

二、关系类图

         几个关键接口:

setStreamingRequestList

 三、问题讨论

 1.Buffer是在哪分配的,它是怎么轮转的

        1.Buffer的数量

status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t 
    *sessionParams,
    camera3_stream_configuration *config, const std::vector<uint32_t>& bufferSizes) 

        通过HAL获取返回值

dst->max_buffers = src.v3_2.maxBuffers;

        2.Buffer轮转

参考文章

        通过threadloop完成轮转 

bool Camera3Device::RequestThread::threadLoop()

         请求之间等待的地方应该是buffer轮转过程中是在getbuffer那里等待

prepareHalRequests()

        mRepeatingRequests如果不为空,就将mRepeatingRequests里的request插入到mRequestQueue下发队列里

         3.Buffer分配

outputStream->getBuffer(&outputBuffers->editItemAt(j), captureRequest->mOutputSurfaces
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值