本讲是android camera native framework专题的第21讲,我们介绍icameradeviceuser.aidl详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
什么是icameradeviceuser
camera app执行open camera后, camera java fw调用icameraservice的connectdevice方法获取到一个icameradeviceuser对象
icameradeviceuser代表的就是一颗cameradevice,后续的camera操作流程就是基于icameradeviceuser对象。
icameradeviceuser类图
java端:
c 端:
icameradeviceuser.aidl接口详解
icameradeviceuser api | camera2 java api | description |
---|---|---|
void waituntilidle(); | cameradevice的createcapturesession | createcapturesession时会先调stoprepeating,然后用该api等待上一次session为idle |
void beginconfigure() | cameradevice#createcapturesession | 开始创建session |
int createstream(in outputconfiguration outputconfiguration); | cameradevice的createcapturesession | 根据outputconfiguration 创建output stream |
void deletestream(int streamid); | cameradevice的createcapturesession | 根据streamid删除未配置的stream |
int createinputstream(int width, int height, int format, boolean ismultiresolution); | cameradevice的createcapturesession | 在reprocess流程中,根据宽/高/format等信息创建input stream |
int[] endconfigure(int operatingmode, in camerametadatanative sessionparams, long starttimems); | cameradevice的createcapturesession | 结束创建session |
boolean issessionconfigurationsupported(in sessionconfiguration sessionconfiguration); | cameradevice的issessionconfigurationsupported | 判断指定的sessionconfiguration是否支持 |
void prepare(int streamid); | cameracapturesession的prepare | 预申请某路stream的buffers, 这样能提升第一帧到来的性能 |
void prepare2(int maxcount, int streamid); | cameracapturesession的prepare | 预申请某路stream的buffers,可以指定最大张数 |
void teardown(int streamid); | cameracapturesession的teardown(hide api) | 释放暂时未被填充image的buffers,目的是为了释放memory峰值压力,会以latency和性能作为代价 |
void updateoutputconfiguration(int streamid, in outputconfiguration outputconfiguration); | cameracapturesession 的 updateoutputconfiguration | 更新outputconfiguration |
void finalizeoutputconfigurations(int streamid, in outputconfiguration outputconfiguration); | cameracapturesession 的 finalizeoutputconfigurations | 最终决定outputconfiguration |
camerametadatanative createdefaultrequest(int templateid); | cameradevice的createcapturerequest | 根据templateid创建默认的capturerequest |
submitinfo submitrequest(in capturerequest request, boolean streaming) | na | 废弃了,不使用 |
submitinfo submitrequestlist(in capturerequest[] requestlist, boolean streaming) | cameracapturesession的 capture / captureburst setrepeatingrequest / setrepeatingburst | 向framework送capturerequests |
long cancelrequest(int requestid) | cameracapturesession的stoprepeating | 取消正在repeating的capturerequest |
long flush(); | cameracapturesession的abortcaptures | 放弃正在处理队列中,未被处理的requests |
icameraofflinesession switchtooffline(in icameradevicecallbacks callbacks, in int[] offlineoutputids); | cameracapturesession 的 switchtooffline | 将当前的cameracapturesession切换到后台继续运行 |
surface getinputsurface(); | cameracapturesession的getinputsurface | 在reprocess流程中,创建接受input buffer的surface |
void setcameraaudiorestriction(int mode); | cameradevice 的 setcameraaudiorestriction | 设置当前camera device的audio限制策略 |
int getglobalaudiorestriction(); | cameradevice的 getcameraaudiorestriction | 获取当前camera device的audio限制策略 |
void disconnect() | cameradevice#close | 关闭camera device |
camerametadatanative getcamerainfo(); | na | 废弃了,不使用 |