技术新讯 > 计算推算,计数设备的制造及其应用技术 > 基于多实例虚拟摄像头的多应用共享摄像头的方法、系统、智能终端设备与流程  >  正文

基于多实例虚拟摄像头的多应用共享摄像头的方法、系统、智能终端设备与流程

  • 国知局
  • 2024-07-31 22:50:36

本发明属于图像数据处理,具体涉及基于多实例虚拟摄像头的多应用共享摄像头的方法、系统、智能终端设备。

背景技术:

1、在android平台智能终端设备上,受限于产品形态,一般只有一个摄像头硬件,且只能有一个应用进行数据请求访问该摄像头,而多个应用无法同时访问同一摄像头。

2、android5.0之后的系统中,应用对摄像头的访问方法是,android系统提供camera2api,应用通过cameramanager对象从cameraservice获取视频流,cameraservice通过cameraprovider(camera hal)创建camera sensor,对摄像头硬件做抽象映射,打开相应的视频驱动节点/dev/video* 与摄像头硬件进行交互。

3、android系统中摄像数据获取过程中一个请求对应一组数据,应用需要申请使用摄像头时,先初始化摄像头资源,并发送一组数据请求,使用完毕后,释放资源。一路摄像头资源被一个应用进程打开后就会被占用,当其它应用进程想要使用该路摄像头资源时,会出现资源抢占和冲突。通常系统会根据应用进程状态和优先级分配摄像头资源给单个应用进程,其它应用进程无法访问使用。

4、目前的解决方案是在android系统中新增一个hidl服务,申请管理一块共享内存,实际打开摄像头的hal模块在上报数据时同步将数据写入共享内存;再创建一路虚拟hal模块,虚拟hal模块从共享内存中获取数据上报。摄像头初次打开时走原生逻辑通路,重复打开时走新增的虚拟通路。但是,这种方案会占用更多的系统资源,对硬件资源的要求高,摄像头延时较长。

技术实现思路

1、有鉴于此,一方面,一些实施例公开了基于多实例虚拟摄像头的多应用共享摄像头的方法,包括:

2、相应于两个应用,创建两路虚拟camera sensor分别与两个所述应用关联;

3、两路虚拟camera sensor配置为对上层提供两路摄像头资源;

4、两路虚拟camera sensor并发访问android系统的真实camera sensor实例,实现两个应用共享一个android系统平台摄像头;

5、其中,camera双流的启动流程具体包括:

6、应用进程打开摄像头时,根据开关配置判断是否走双流虚拟摄像头逻辑;

7、若需要启动双流虚拟摄像头逻辑,则hal层创建multivirtualsensor实例,并根据当前引用计数来创建单例multivirtualvideoinfo和对应轮询线程,避免重复创建线程;

8、轮询线程从摄像头的驱动节点获取数据,传输给omxdecoder解码后拷贝到缓冲buffer中;

9、应用进程请求摄像头数据,并发访问multivirtualvideoinfo::capturenv21();capturenv21()使用ge2d对缓存buffer中的数据进行图形转换,然后拷贝到应用进程供应用使用。。

10、一些实施例公开的基于多实例虚拟摄像头的多应用共享摄像头的方法,一路虚拟camera sensor访问android系统的真实camera sensor实例的方法包括:

11、真实camera sensor实例循环从摄像头的驱动节点抓取数据,存入缓存buffer;

12、应用申请访问虚拟camera sensor时,从缓存buffer中读取数据,上传到应用。

13、一些实施例公开的基于多实例虚拟摄像头的多应用共享摄像头的方法,android系统的驱动层识别摄像头,生成摄像头硬件的设备节点,真实camera sensor实例通过设备节点操作摄像头硬件。

14、一些实施例公开的基于多实例虚拟摄像头的多应用共享摄像头的方法,还包括camera双流的停止流程,具体包括:

15、应用进程关闭两路虚拟camera sensor时,销毁对应的multivirtualsensor实例;其中,当一路虚拟camera sensor关闭时,multivirtualvideoinfo实例和轮询线程multivirtualvideoinfothread减少引用计数,另一路camera可正常使用;当两路虚拟camerasensor都关闭后,销毁线程multivirtualvideoinfothread和multivirtualvideoinfo实例。

16、另一方面,一些实施例公开了基于多实例虚拟摄像头的多应用共享摄像头的系统,系统运行时,实现基于多实例虚拟摄像头的多应用共享摄像头的方法;该系统包括:

17、(一)应用层,配置有使用摄像头的两个应用;

18、(二) framework层,配置有cameramanager,用于管理摄像头硬件;

19、(三) hal层,包括camera hal层,配置为创建两路虚拟camera sensor; (四)内核层,配置有驱动程序;摄像头硬件在采集到数据后,通过usb/mipi协议传输到主控,驱动结合v4l2框架,产生设备节点;

20、(五)硬件层,配置有摄像头硬件。

21、再一方面,一些实施例公开智能终端设备,该智能终端设备包括一个或多个处理器,一个或多个存储器,一个或多个存储器存储有计算机程序指令,当计算机程序指令被执行时,智能终端设备执行基于多实例虚拟摄像头的多应用共享摄像头的方法。

22、又一方面,一些实施例公开了计算机可读介质,计算机可读介质存储有计算机程序指令,当计算机程序指令被执行时,执行基于多实例虚拟摄像头的多应用共享摄像头的方法。

23、本发明实施例公开的基于多实例虚拟摄像头的多应用共享摄像头的方法,应用于在android平台智能终端设备上,能够实现多个应用同时获取同一摄像头视频流,解决摄像头资源抢占和冲突问题,降低硬件对业务功能的限制,在android平台智能终端设备有良好应用前景。

技术特征:

1.基于多实例虚拟摄像头的多应用共享摄像头的方法,其特征在于,包括:

2.根据权利要求1所述的基于多实例虚拟摄像头的多应用共享摄像头的方法,其特征在于,一路虚拟camera sensor访问android系统的真实camera sensor实例的方法包括:

3.根据权利要求1所述的基于多实例虚拟摄像头的多应用共享摄像头的方法,其特征在于,android系统的驱动层识别摄像头,生成摄像头硬件的设备节点,真实camera sensor实例通过设备节点操作摄像头硬件。

4.根据权利要求1所述的基于多实例虚拟摄像头的多应用共享摄像头的方法,其特征在于,还包括camera双流的停止流程,具体包括:

5.基于多实例虚拟摄像头的多应用共享摄像头的系统,其特征在于,所述系统运行时,实现权利要求1~4任一项所述的方法,所述系统包括:

6.智能终端设备,其特征在于,所述智能终端设备包括一个或多个处理器,一个或多个存储器,一个或多个所述存储器存储有计算机程序指令,当所述计算机程序指令被执行时,智能终端设备执行权利要求1~4任一项所述的基于多实例虚拟摄像头的多应用共享摄像头的方法。

7.计算机可读介质,其特征在于,所述计算机可读介质存储有计算机程序指令,当计算机程序指令被执行时,执行权利要求1~4任一项所述的基于多实例虚拟摄像头的多应用共享摄像头的方法。

技术总结本发明实施例公开了基于多实例虚拟摄像头的多应用共享摄像头的方法、系统、智能终端设备;方法包括:相应于两个应用,创建两路虚拟Camera Sensor分别与两个所述应用关联;两路虚拟Camera Sensor配置为对上层提供两路摄像头资源;两路虚拟Camera Sensor并发访问Android系统的真实Camera Sensor实例,实现两个应用共享一个Android系统平台摄像头。基于多实例虚拟摄像头的多应用共享摄像头的方法,应用于在Android平台智能终端设备上,能够实现多个应用同时获取同一摄像头视频流,解决摄像头资源抢占和冲突问题,降低硬件对业务功能的限制,在Android平台智能终端设备有良好应用前景。技术研发人员:李文英受保护的技术使用者:广东朝歌智慧互联科技有限公司技术研发日:技术公布日:2024/7/29

本文地址:https://www.jishuxx.com/zhuanli/20240730/194946.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。