本讲是android camera专题系列的第23讲,我们介绍android camera2 api专题的capturerequest详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
capturerequest介绍
capturerequest可以理解为告诉camera底层如何处理某一帧数据,包括两部分内容
- settings
- 硬件相关的参数:sensor, lens, flash等
-
isp processing pipeline相关参数
-
3a相关参数
-
output surfaces
- capturerequest中带的surfaces必须在创建session时使用的surface list的子集
通过capturerequest.builder来创建capturerequest
通过不同的方式送给camera底层
- capture
-
captureburst
-
setrepeatingrequest
-
setrepeatingburst
capturerequest类型(通过capturerequest#isreprocess()可以判断)
- regular:cameradevice#createcapturerequest
-
reprocess:cameradevice#createreprocesscapturerequest
capturerequest.builder介绍
builder模式:用于设置capturerequest参数和创建capturerequest对象
api | description |
---|---|
set(key |
设置指定key对应的value值 |
setphysicalcamerakey(key |
设置指定physical camera中key对应的value值 |
addtarget(surface outputtarget) | 增加一路输出流 |
settag(object tag) | 给capturerequest设置一个tag,用于标识该capturerequest,底层在oncapturecompleted回调时,可以通过capturerequest#gettag()获取到 |
build() | 创建capturerequest对象 |
get(key |
获取指定key对应的value |
getphysicalcamerakey(key |
获取指定physical camera中key对应的value值 |
removetarget(surface outputtarget) | 删除一路输出流 |
capturerequest template type介绍
创建capturerequest.builder
api | description |
---|---|
createcapturerequest(int templatetype) | 根据template type创建capturerequest.builder,注意:这里返回的是带一包默认值的,不同的cameradevice,这包默认值会不一样,因此不能混用。 |
createcapturerequest(int templatetype, set |
根据template type和physical cameraid set创建capturerequest.builder,通过builder#setphysicalcamerakey可以设置指定physical camera的参数。 physical camera的参数只适用于有physical camera outputconfiguration的情况(outputconfiguration#setphysicalcameraid)。 physicalcameraidset来自cameracharacteristics#getphysicalcameraids() |
createreprocesscapturerequest (totalcaptureresult inputresult) | 根据totalcaptureresult创建用于reprocess的capturerequest.builder |
如何设置physical camera的capturerequest
-
判断能否单独控制logical multicamera中的physical camera
(cameracharacteristics#getphysicalcameraids) -
或者可以设置的physical camera keys
(cameracharacteristics#getavailablephysicalcamerarequestkeys) -
创建physical camera outputconfiguration
(outputconfiguration#setphysicalcameraid) -
创建capturerequest.builder
-
setphysicalcamerakey
-
addtarget
-
获取physical totalcaptureresult
(totalcaptureresult#getphysicalcameratotalresults )