本申请涉及芯片,更具体地,涉及一种用于多硬件域soc的调用摄像头数据的方法及多硬件域soc。
背景技术:
1、在包含一个或多个摄像头(camera)的应用场景中,多个应用可能需要在彼此重合的时间段调用同一camera的数据,仅作为示例,在车载智能座舱场景中,倒车影像、dvr(digital video recorder,即行车记录仪)、avm(around view monitor,全景式监控影像系统)、 ar 实景导航等应用都有可能同时请求同一个camera的数据。
2、在现有的技术方案中,通常一个camera节点在同一时刻只能允许一个应用进行访问,也就是说,当一个camera节点被特定应用占用时,其他应用无法同时访问该camera节点的数据,只能等camera节点资源被释放时才能访问。在另一些系统实现中,当多个应用需要访问同一个camera的数据时,由cpu将camera节点的数据拷贝或推送到对应的应用,然而这种方式会占用cpu资源,应用数较多时可能会导致cpu性能下降。特别是在需要调用同一摄像头数据的应用属于不同的硬件域的情况下,一个硬件域中的应用往往无法直接调用在另一个硬件域中驱动的摄像头的数据,而域间数据交换的时间和带宽开销也成为阻碍硬件域之间摄像头数据实时共享的重要因素。
3、因此,目前尚未发现能够不过度占用cpu等系统资源而能够使得多个不同硬件域中的应用不冲突地共享同一个摄像头的数据的技术方案。
技术实现思路
1、提供了本申请以解决现有技术中存在的上述问题。
2、需要一种用于多硬件域soc的调用摄像头数据的方法及多硬件域soc,其使得多个不同硬件域中运行安卓操作系统的硬件域上的多个应用能够彼此不冲突地共享同一个摄像头的摄像头数据。
3、根据本申请的第一方案,提供一种用于多硬件域soc的调用摄像头数据的方法,需要调用同一摄像头节点的摄像头数据的应用至少包括运行在第一硬件域的操作系统上的第一应用和运行在第二硬件域的操作系统上的第二应用,其中,所述第二硬件域与所述第一硬件域不同,所述第二硬件域的操作系统为安卓操作系统,所述方法包括根据所述第二应用的数量n,在安卓操作系统的android camerahal中新增对应于所述摄像头节点的n个虚拟摄像头节点,将各个虚拟摄像头节点一一对应地分配到各个第二应用。所述方法还包括在所述第二应用访问对应的虚拟摄像头节点时,由设置于第二硬件域的第一图像处理模块读取位于共享内存的所述摄像头节点的缓存区的摄像头数据,在所述摄像头数据的数据格式与所述第二应用所需的数据格式不同的情况下进行格式转换,并将格式转换后的摄像头数据存入对应于该虚拟摄像头节点的缓存区,使得所述第二应用通过读取该虚拟摄像头节点的缓存区来调用该摄像头节点的摄像头数据。
4、根据本申请的第二方案,提供一种多硬件域soc ,所述多硬件域soc至少包括第一硬件域和第二硬件域,运行在第一硬件域的操作系统上的第一应用和运行在第二硬件域的操作系统上的第二应用需要调用同一摄像头节点的摄像头数据,并且其中,第二硬件域的处理器核被配置为在所述第二硬件域运行安卓操作系统,根据所述第二应用的数量n,在安卓操作系统的android camerahal中新增对应于所述摄像头节点的n个虚拟摄像头节点,将各个虚拟摄像头节点一一对应地分配到各个第二应用。所述多硬件域soc还包括第一图像处理模块,其设置在第二硬件域,并配置为在所述第二应用访问对应的虚拟摄像头节点时,由所述第一图像处理模块读取位于共享内存的所述摄像头节点的缓存区的摄像头数据,在所述摄像头数据的数据格式与所述第二应用所需的数据格式不同的情况下进行格式转换,并将格式转换后的摄像头数据存入对应于该虚拟摄像头节点的缓存区,使得所述第二应用通过读取该虚拟摄像头节点的缓存区来调用该摄像头节点的摄像头数据。所述多硬件域soc还包括共享内存,其配置为存储所述摄像头节点的缓存区的摄像头数据,且所述共享内存能够被所述第一硬件域和所述第二硬件域访问。
5、利用根据本申请各个实施例的用于多硬件域soc的调用摄像头数据的方法及多硬件域soc,其一方面通过在多硬件域soc上设置可以被多硬件域共同访问的共享内存,并将摄像头节点缓存区的摄像头数据存储于该共享内存中,以使得第一硬件域中的第一应用和第二硬件域中的第二应用均能够访问该摄像头的数据;另一方面,在运行安卓操作系统的第二硬件域上为需要调用同一个摄像头节点的各个第二应用分别创建一个能够像真实摄像头节点一样访问的虚拟摄像头节点,并通过设置在第二硬件域的第一图像处理模块从共享内存中读取摄像头数据并进行必要的格式转换后,提供给各个第二应用使用,从而使得第二硬件域中的第二应用与第一硬件域中的第一应用,以及第二硬件域中各个第二应用彼此之间均可以不冲突地同时调用同一个摄像头的数据,并且,无需额外的硬件域之间的域间通信,也不会带来各个硬件域处理器资源的过度占用。
6、上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
1.一种用于多硬件域soc的调用摄像头数据的方法,其特征在于,需要调用同一摄像头节点的摄像头数据的应用至少包括运行在第一硬件域的操作系统上的第一应用和运行在第二硬件域的操作系统上的第二应用,其中,所述第二硬件域与所述第一硬件域不同,所述第二硬件域的操作系统为安卓操作系统,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括,
3.根据权利要求2所述的方法,其特征在于,所述第一图像处理模块和所述第二图像处理模块基于硬件实现。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述第二应用通过读取该虚拟摄像头节点的缓存区来调用该摄像头节点的摄像头数据进一步包括:
6.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法进一步包括:
7.根据权利要求1-3中任一项所述的方法,其特征在于,所述共享内存为所述多硬件域soc中各个硬件域共用的ddr存储器。
8.根据权利要求1-3中任一项所述的方法,其特征在于,所述n个虚拟摄像头节点具有各自不同的cameraid。
9.一种多硬件域soc,其特征在于,所述多硬件域soc至少包括第一硬件域和第二硬件域,运行在第一硬件域的操作系统上的第一应用和运行在第二硬件域的操作系统上的第二应用需要调用同一摄像头节点的摄像头数据,并且其中,
10.根据权利要求9所述的多硬件域soc,其特征在于,