本讲是android camera专题系列的第49讲,我们介绍android 13 camera2 new apis。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
automotive 相关
针对汽车场景,新增了两个静态属性来描述车载上的摄像头:lens facing和location。
cameracharacteristics | 解释 |
---|---|
automotive_lens_facing | 车载摄像头朝向,支持如下值: automotive_lens_facing_exterior_front automotive_lens_facing_exterior_left automotive_lens_facing_exterior_other automotive_lens_facing_exterior_rear automotive_lens_facing_exterior_right automotive_lens_facing_interior_other automotive_lens_facing_interior_seat_row_1_center automotive_lens_facing_interior_seat_row_1_left automotive_lens_facing_interior_seat_row_1_right automotive_lens_facing_interior_seat_row_2_center automotive_lens_facing_interior_seat_row_2_left automotive_lens_facing_interior_seat_row_2_right automotive_lens_facing_interior_seat_row_3_center automotive_lens_facing_interior_seat_row_3_left automotive_lens_facing_interior_seat_row_3_right |
automotive_location | 车载摄像头位置,支持如下值: automotive_location_exterior_front automotive_location_exterior_left automotive_location_exterior_other automotive_location_exterior_rear automotive_location_exterior_right automotive_location_extra_front automotive_location_extra_left automotive_location_extra_other automotive_location_extra_rear automotive_location_extra_right automotive_location_interior |
android定义的汽车坐标轴如下图所示:
- interior 车身框架(或客舱)的内部.
- exterior 车身框架的外部.
- extra 指车辆之外的地方,如拖车
在这个坐标系中,车身框架的每一侧定义如下
- front是y轴变大方向.
- rear 是y轴减少的方向.
- left 是x轴变大方向.
- right 是x轴减少的方向.
torch flash strength 相关
为什么要新增torch flash可调整strength功能?
判断是否支持
cameracharacteristics | description |
---|---|
flash_info_strength_maximum_level | 大于1表示支持控制strength 等于1表示不支持控制strength |
flash_info_strength_default_level | 推荐使用的torch flash strength level 大于这个值可能会引发thermal,对功耗有影响 |
控制方式
cameramanager | description |
---|---|
void turnontorchwithstrengthlevel(string, int) |
调整torch flash 的strength level |
int gettorchstrengthlevel(string) |
获取当前使用的strength level |
状态回调
cameramanager.torchcallback | description |
---|---|
void ontorchstrengthlevelchanged(string, int) |
torch flash的strength level发生改变后,会通过该方法回调给app |
outputconfiguration 相关
关于outputconfiguration的介绍请参阅:
mirror
为什么要新增mirror功能?
如何设置/获取mirror:
outputconfiguration | description |
---|---|
void setmirrormode(int) int getmirrormode() |
设置/获取该outputconfiguration的mirror mode 可设置的值如下: 1. mirror_mode_auto(默认值,对front camera做水平mirror,rear camera不做mirror) 2. mirror_mode_h 3. mirror_mode_none 4. mirror_mode_v 注:该值只影响buffer的transform matrix,送给consumer的buffer本身是没有做mirror的 |
timestamp base
outputconfiguration | description |
---|---|
void settimestampbase(int) int gettimestampbase() |
设置/获取该outputconfiguration的buffer timestamp 基准 可设置的值如下: 1. timestamp_base_choreographer_synced 2. timestamp_base_default(默认值) 3. timestamp_base_monotonic 4.timestamp_base_realtime 5.timestamp_base_sensor(由 cameracharacteristics.sensor_info_timestamp_source 决定) |
stream usecase
判断是否支持stream usecase:
cameracharacteristics | description |
---|---|
request_available_capabilities | 如果支持,则可以从capabilities里面获取到 request_available_capabilities _stream_use_case |
scaler_available_stream_use_cases | 获取当前camera支持的stream usecase列表 所有支持的列表如下: scaler_available _stream_use_cases_default scaler_available _stream_use_cases_preview scaler_available _stream_use_cases_preview_video_still scaler_available _stream_use_cases_still_capture scaler_available _stream_use_cases_video_call scaler_available _stream_use_cases_video_record |
scaler_mandatory_use_case_stream_combinations | 为多个outputconfiguration设置stream usecase时,通过该静态属性可以得知,一定支持什么样的组合 |
如何enable:
outputconfiguration | description |
---|---|
void setstreamusecase(long) long getstreamusecase() |
设置/获取某路outputconfiguration 的 stream usecase 不支持/未设置的话, 默认是 scaler_available_stream_usecasesdefault |
10bit hdr output stream
cameracharacteristics | description |
---|---|
request_available_capabilities | 如果支持,则可以从capabilities里面获取到request_available_capabilities _dynamic_range_ten_bit |
request_available_dynamic_range_profiles | 返回一个 dynamicrangeprofiles 实例。 通过dynamicrangeprofiles# getsupportedprofiles 可以拿到支持的dynamic range profiles 所有支持的profiles(dynamicrangeprofiles)如下: standard hlg10 hdr10 hdr10_plus dolby_vision_10b_hdr_ref dolby_vision_10b_hdr_ref_po dolby_vision_10b_hdr_oem dolby_vision_10b_hdr_oem_po dolby_vision_8b_hdr_ref dolby_vision_8b_hdr_ref_po dolby_vision_8b_hdr_oem dolby_vision_8b_hdr_oem_po |
request_recommended_ten_bit_dynamic_range_profile | 推荐使用的dynamic profile 能在性能/内存/功耗做到最佳(最平衡) |
scaler_mandatory_ten_bit_output_stream_combinations | 为多个outputconfiguration设置 dynamic range profile时通过该静态 属性可以得知一定支持什么样的组合 |
如何enable:
outputconfiguration | description |
---|---|
void setdynamicrangeprofile(long) long getdynamicrangeprofile() |
设置/获取某路outputconfiguration的 dynamic range profile对应output format只能是 imageformat#ycbcr_p010 或 imageformat#private |
video preview stabilization相关
静态属性:
cameracharacteristics | description |
---|---|
control_available_video_stabilization_modes | 如果支持video preview stabilization 该key会包含 control_video_stabilization _mode_preview_stabilization |
scaler_mandatory_preview_stabilization _output_stream_combinations |
使能video preview stabilization后 通过该静态属性可以得知一定支持什么样的组合 |
如何打开 video preview stabilization功能:
capturerequest | value |
---|---|
control_video_stabilization_mode | 设置为 camerametadata#control_video_stabilization _mode_preview_stabilization |
camera extension增强
静态属性增强:
cameraextensioncharacteristics | description |
---|---|
set |
获取可以在camera extension session中设置的capture request keys |
set |
获取可以在camera extension session中获取的capture results keys |
extension_face_retouch |
废弃extension_beauty,该成用extension_face_retouch |
session增强:
cameraextensionsession.extensioncapturecallback | description |
---|---|
void oncaptureresultavailable(cameraextensionsession, capturerequest, totalcaptureresult) |
当buffer和totalcaptureresult都送回给app后,该回调被调用。 类似camera2里面的oncapturecompleted。 |
关于totalcaptureresult请参阅: