CN114302040A - 多应用共享单一摄像头的方法及相关产品 - Google Patents
多应用共享单一摄像头的方法及相关产品 Download PDFInfo
- Publication number
- CN114302040A CN114302040A CN202111599294.0A CN202111599294A CN114302040A CN 114302040 A CN114302040 A CN 114302040A CN 202111599294 A CN202111599294 A CN 202111599294A CN 114302040 A CN114302040 A CN 114302040A
- Authority
- CN
- China
- Prior art keywords
- camera
- data
- address space
- virtual address
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012545 processing Methods 0.000 claims abstract description 92
- 230000006870 function Effects 0.000 claims description 55
- 238000004590 computer program Methods 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 5
- 101150053844 APP1 gene Proteins 0.000 description 4
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 4
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 4
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 3
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种多应用共享单一摄像头的方法及相关产品。该方法包括:由第一应用打开摄像头时,获取摄像头的源数据;获取第二应用对摄像头的源数据的处理需求;根据处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据;将处理后的摄像头数据存储到虚拟地址空间;从虚拟地址空间读取处理后的摄像头数据传输至第二应用。还公开了相应的装置、芯片、芯片模组和存储介质。采用本申请的方案,可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种多应用共享单一摄像头的方法及相关产品。
背景技术
在安卓(Android)系统自身策略中不允许多个应用(application,APP)同时使用同一摄像头(camera)资源,而在车机系统等一些场景中,需要多个应用同时共享同一摄像头资源。例如,在行车记录仪应用打开摄像头_id 0获取到摄像头_id 0数据,同时需要将摄像头_id 0的数据作为子码流源数据经过编码上传至云端保存,或者需要将摄像头_id 0的数据作为源数据输出给增强现实(augmented reality,AR)导航应用作为预览显示。这些应用对摄像头资源的使用需求也不同。目前还没有相应的方案可以满足多个应用同时以不同的处理需求使用同一摄像头的数据。
发明内容
本申请提供一种多应用共享单一摄像头的方法及装置、介质、程序产品,以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
第一方面,提供了一种多应用共享单一摄像头的方法,所述方法包括:
由第一应用打开摄像头时,获取所述摄像头的源数据;
获取第二应用对所述摄像头的源数据的处理需求;
根据所述处理需求,对所述摄像头的源数据进行处理,得到处理后的摄像头数据;
将所述处理后的摄像头数据存储到虚拟地址空间;
从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用。
在一种可能的实现中,所述方法还包括:
创建与所述处理需求对应的应用程序编程接口API函数,所述API函数的接口参数为所述处理需求;
所述获取第二应用对所述摄像头的源数据的处理需求,包括:
解析所述API函数,获取所述API函数包含的所述第二应用对所述摄像头的源数据的处理需求。
在又一种可能的实现中,所述方法还包括:
为框架层分配第一物理内存;
为硬件抽象层分配第二物理内存;
将所述第一物理内存和所述第二物理内存映射到所述虚拟地址空间。
在又一种可能的实现中,所述将所述处理后的摄像头数据存储到虚拟地址空间,包括:
获取所述虚拟地址空间的起始地址;
根据所述虚拟地址空间的起始地址,将所述处理后的摄像头数据存储到与所述虚拟地址空间对应的所述第二物理内存。
在又一种可能的实现中,所述从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用,包括:
获取所述虚拟地址空间的起始地址;
根据所述虚拟地址空间的起始地址,从所述虚拟地址空间对应的所述第二物理内存读取所述处理后的摄像头数据;
复制所述处理后的摄像头数据并存储至与所述虚拟地址空间对应的所述第一物理内存,以供所述第二应用读取。
第二方面,提供了一种多应用共享单一摄像头的装置,可以实现上述第一方面中的多应用共享单一摄像头的方法。例如所述多应用共享单一摄像头的装置可以是芯片、芯片模组或者终端。可以通过软件、硬件、或者通过硬件执行相应的软件实现上述方法。
在一种可能的实现方式中,所述装置包括:
第一获取单元,用于由第一应用打开摄像头时,获取所述摄像头的源数据;
第二获取单元,用于获取第二应用对所述摄像头的源数据的处理需求;
处理单元,用于根据所述处理需求,对所述摄像头的源数据进行处理,得到处理后的摄像头数据;
第一存储单元,用于将所述处理后的摄像头数据存储到虚拟地址空间;
第一读取单元,用于从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用。
可选地,所述装置还包括:
创建单元,用于创建与所述处理需求对应的应用程序编程接口API函数,所述API函数的接口参数为所述处理需求;
所述第二获取单元,用于解析所述API函数,获取所述API函数包含的所述第二应用对所述摄像头的源数据的处理需求。
可选地,所述装置还包括:
第一分配单元,用于为框架层分配第一物理内存;
第二分配单元,用于为硬件抽象层分配第二物理内存;
映射单元,用于将所述第一物理内存和所述第二物理内存映射到所述虚拟地址空间。
可选地,所述第一存储单元包括:
第三获取单元,用于获取所述虚拟地址空间的起始地址;
第二存储单元,用于根据所述虚拟地址空间的起始地址,将所述处理后的摄像头数据存储到与所述虚拟地址空间对应的所述第二物理内存。
可选地,所述第一读取单元包括:
第四获取单元,用于获取所述虚拟地址空间的起始地址;
第二读取单元,用于根据所述虚拟地址空间的起始地址,从所述虚拟地址空间对应的所述第二物理内存读取所述处理后的摄像头数据;
复制单元,用于复制所述处理后的摄像头数据;
第三存储单元,用于存储所述复制的摄像头数据至与所述虚拟地址空间对应的所述第一物理内存,以供所述第二应用读取。
在又一种可能的实现方式中,上述第二方面中的多应用共享单一摄像头的装置包括与存储器耦合的处理器;所述处理器被配置为支持所述装置执行上述多应用共享单一摄像头的方法中相应的功能。存储器用于与处理器耦合,其保存所述装置必要的程序(指令)和/或数据。可选的,所述多应用共享单一摄像头的装置还可以包括通信接口用于支持所述装置与其他装置之间的通信。可选的,该存储器可以位于该多应用共享单一摄像头的装置内部,也可以位于该多应用共享单一摄像头的装置外部。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被执行时,实现上述第一方面或第一方面的任一种实现所述的方法。
第四方面,提供了一种包含指令的计算机程序产品,当该指令在多应用共享单一摄像头的装置上运行时,使得多应用共享单一摄像头的装置执行上述第一方面或第一方面的任一种实现所述的方法。
采用本申请提供的一种多应用共享单一摄像头的方案,具有如下有益效果:
由第一应用打开摄像头时,获取摄像头的源数据;获取第二应用对摄像头的源数据的处理需求;根据处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据;将处理后的摄像头数据存储到虚拟地址空间;从虚拟地址空间读取处理后的摄像头数据传输至第二应用。可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
附图说明
图1为本申请实施例提供的一种多应用共享单一摄像头的方法的流程示意图;
图2为本申请实施例提供的又一种多应用共享单一摄像头的方法的流程示意图;
图3为本申请实施例示例的多应用共享单一摄像头的方法的软件架构示意图;
图4为本申请实施例示例的多应用共享单一摄像头的方法的流程示意图;
图5为本申请实施例提供的一种多应用共享单一摄像头的装置的结构示意图;
图6为本申请实施例提供的又一种多应用共享单一摄像头的装置的结构示意图。
具体实施方式
针对背景技术提出的目前还没有相应的方案可以满足多个应用同时以不同的处理需求使用同一摄像头的数据的问题,本申请提供了一种多应用共享单一摄像头的方案,由第一应用打开摄像头时,获取摄像头的源数据;获取第二应用对摄像头的源数据的处理需求;根据处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据;将处理后的摄像头数据存储到虚拟地址空间;从虚拟地址空间读取处理后的摄像头数据传输至第二应用。可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
请参阅图1,为本申请实施例提供的一种多应用共享单一摄像头的方法的流程示意图,该方法可以包括以下步骤:
S101、由第一应用打开摄像头时,获取摄像头的源数据。
本实施例可以应用于任何安装有摄像头的终端或电子系统。该终端可以是手机、平板等。该电子系统可以是车机系统等。下面以车机系统为例进行描述。
在安卓系统自身策略中不允许多个应用同时使用同一个摄像头的数据。而在车机系统的一些场景中,需要多应用同时共享同一摄像头的数据。例如,在行车记录仪应用打开camera_id0(例如,前置摄像头数据用camera_id 0进行标识,后置摄像头数据用于camera_id 1进行标识)获取到camera_id 0数据,同时需要将camera_id 0的数据作为子码流源数据经过编码上传至云端保存,或者需要将camera_id 0的数据作为源数据送到AR导航应用作为预览显示。
而如果仅在应用层采用安卓接口定义语言(Android interface definitionlanguage,AIDL)方式完成APP进程间通信去传输摄像头的数据,在应用层将耗费大量资源,并且binder(一种传输协议)有最大传输数据限制,因而不能实现上述多应用同时共享同一摄像头的数据。
本实施例中,由第一应用打开摄像头时,获取摄像头的源数据。该第一应用可以是终端或电子系统安装的多个应用中的任一应用。该第一应用打开摄像头,当前正在使用摄像头的源数据,则获取该摄像头的源数据。例如,该第一应用可以是行车记录仪应用,在行车记录仪应用打开camera_id 0。camera_id 0所标识的数据为摄像头的源数据。
S102、获取第二应用对摄像头的源数据的处理需求。
终端或电子系统安装的多个应用中的其它应用(这里称为第二应用)也需要使用摄像头的数据,并且该第二应用对摄像头的源数据的处理需求可能与第一应用相同或不同。该第二应用可以是一个或多个应用。例如,第二应用是云应用,以及第二应用的处理需求是将camera_id 0的数据作为子码流源数据经过编码上传至云端保存。又例如,第二应用是AR导航应用,第二应用的处理需求是将camera_id 0的数据作为源数据送到AR导航应用作为预览显示。
S103、根据处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据。
获取到第二应用对摄像头的源数据的处理需求后,根据该处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据。
例如,第二应用的处理需求是将camera_id 0的数据作为子码流源数据经过编码上传至云端保存,则将camera_id 0的数据作为子码流源数据进行编码。又例如,第二应用的处理需求是将camera_id 0的数据作为源数据送到AR导航应用作为预览显示,此时无需对摄像头的源数据进行处理。
S104、将处理后的摄像头数据存储到虚拟地址空间。
对于由第一应用打开摄像头获取到的源数据,将处理后的摄像头数据存储到虚拟地址空间,实际为存储到与该虚拟地址空间对应的第二物理内存。
S105、从虚拟地址空间读取处理后的摄像头数据传输至第二应用。
第二应用需要获取根据其处理需求处理后的摄像头数据,可以从虚拟地址空间读取处理后的摄像头数据。具体地,从该虚拟地址空间对应的第一物理内存读取处理后的摄像头数据。该第一物理内存和第二物理内存均映射到同一虚拟地址空间。
采用本实施例的方案,能够支持多个应用同时调用同一摄像头的数据,并且可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。例如,可以将同一摄像头的数据同时提供给AR导航应用、子码流录制、行车记录仪应用等使用场景,实现摄像头数据的共享。
根据本申请实施例提供的一种多应用共享单一摄像头的方法,在第一应用打开摄像头时,可以获取第二应用对摄像头的源数据的处理需求,根据该处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据,将处理后的摄像头数据存储到虚拟地址空间,以供第二应用从虚拟地址空间读取处理后的摄像头数据,从而可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
请参阅图2,为本申请实施例提供的又一种多应用共享单一摄像头的方法的流程示意图,该方法可以包括以下步骤:
S201、为框架层分配第一物理内存。
如图3所示,为本申请实施例示例的多应用共享单一摄像头的方法的软件架构示意图,该软件架构包括应用层、框架(framework)层和硬件抽象层(hardware abstractlayer,HAL)。在图3的示例中,该应用层包括两个应用(APP1和APP2)。本实施例中,在框架层新增摄像头存储文件(CameraMemoryFile)模块,以及在HAL层新增共享缓存(Sharebuffer)模块。框架层与HAL之间通过硬件抽象层接口定义语言(HAL interface definitionlanguage,HIDL)通信。该CameraMemoryFile模块作为应用层与Sharebuffer模块之间连接的通道,即CameraMemoryFile模块作为框架层的Java本地接口(Java native interface,JNI),主要作用是下发指令,以及作为数据通道。该Sharebuffer模块作为摄像头的源数据的处理以及分发的中转站。用户在第二应用输入所需要的摄像头数据,通过参数配置到Sharebuffer模块后对摄像头的源数据作相应处理后拷贝到用户申请的第一物理内存中,将第一物理内存映射到与CameraMemoryFile模块申请的第二物理内存对应的同一虚拟地址空间中,最后用户读取该第一物理内存即可。下面详细进行描述。
首先,为框架层分配第一物理内存。具体地,CameraMemoryFile模块在完成初始化时,CameraMemoryFile模块申请物理内存,系统为CameraMemoryFile模块分配第一物理内存(hid1_memory&mem1)。其中,内存分配一般使用分配器(Allocator)服务。Allocator分配一块第一物理内存后,通过Lambda(一种匿名函数)闭包获取分配的hid1_memory&mem1对象。
S202、为硬件抽象层分配第二物理内存。
具体地,Sharebuffer模块申请物理内存,系统为Sharebuffer模块分配第二物理内存(hid1_memory&mem2)。
S203、将第一物理内存和第二物理内存映射到虚拟地址空间。
CameraMemoryFile模块通过mapMemory()函数将第一物理内存映射到虚拟地址空间。
Sharebuffer模块同样通过mapMemory()函数将第二物理内存映射到该虚拟地址空间。
从而将第一物理内存和第二物理内存映射到同一虚拟地址空间。
S204、由第一应用打开摄像头时,获取摄像头的源数据。
第一应用打开摄像头时,将摄像头的源数据(CameraStream)存储到Sharebuffer模块的第二物理内存。如图3所示,Sharebuffer模块包括一个或多个摄像头缓存(CameraBuffer)模块(图3中示例性地包括CameraBuffer1~CameraBuffer3)。该CameraBuffer模块对处理之前的摄像头的源数据进行缓存。
S205、创建与处理需求对应的应用程序编程接口(application programminginterface,API)函数,API函数的接口参数为处理需求。
本实施例中,第二应用可以与第一应用对摄像头的源数据有相同或不同的处理需求。用户可在第二应用上根据不同需求设置所需要的摄像头数据。例如,用户需要获取到camera_id为0或1等正在运行的摄像头数据,或者需要获取到缩放一定比例的数据、有水印的数据、或者编码后的子码流数据等差异化数据时,均可通过配置将需求设置到Sharebuffer模块。
具体地,在CameraMemoryfile模块中,会使用原生(native)方式创建用户需要使用到的API函数,API函数的接口参数是用户自定义的如上述的处理需求。不同应用可以根据自身需要,在CameraMemoryfile模块中创建不同的API函数。这些参数和数据会保存在第一物理内存中。
S206、解析API函数,获取API函数包含的第二应用对摄像头的源数据的处理需求。
CameraMemoryfile模块通过API函数访问Sharebuffer模块。Sharebuffer模块解析该API函数,获取API函数包含的第二应用对摄像头的源数据的处理需求。
S207、根据处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据。
Sharebuffer模块获取到API函数包含的处理需求后,可以根据处理需求,在Sharebuffer模块中创建不同函数实现对摄像头的源数据的处理。例如,写入摄像头的源数据函数会不断将摄像头的数据写入到Sharebuffer模块中;如果子码编码开关打开就会送到编码模块编码处理;缩放功能就会进入缩放函数处理;如仅需要摄像头的源数据进行预览AR导航应用则可直接上传摄像头的源数到应用端。
S208、获取虚拟地址空间的起始地址。
Sharebuffer模块可以通过getPointer()获取虚拟地址空间的起始地址,进而进行读写操作。
S209、根据虚拟地址空间的起始地址,将处理后的摄像头数据存储到与虚拟地址空间对应的第二物理内存。
Sharebuffer模块获取到虚拟地址空间的起始地址后,将根据API函数包含的处理需求处理后的摄像头数据存储到与虚拟地址空间对应的第二物理内存。
S210、获取虚拟地址空间的起始地址。
CameraMemoryfile模块也可以通过getPointer()获取虚拟地址空间的起始地址,进而进行读写操作。
S211、根据虚拟地址空间的起始地址,从虚拟地址空间对应的第二物理内存读取处理后的摄像头数据。
由于Sharebuffer模块已经将根据API函数包含的处理需求处理后的摄像头数据存储到与虚拟地址空间对应的第二物理内存,因此,CameraMemoryfile模块可以根据虚拟地址空间的起始地址,从虚拟地址空间对应的第二物理内存读取处理后的摄像头数据。
S212、复制处理后的摄像头数据并存储至与虚拟地址空间对应的第一物理内存,以供第二应用读取。
CameraMemoryfile模块复制处理后的摄像头数据并存储至与虚拟地址空间对应的第一物理内存,以供第二应用读取。
上述初始化CameraMemoryfile模块、申请第一物理内存以及复制处理后的摄像头数据都可以是由上述API函数完成的。该API函数使用JNINativeMethod结构体类型的数组建立映射连接,采用RegisterNatives注册所建立好的映射,完成JNI的连接功能。
示例性地,上述所有申请的物理内存以及服务获取均会在用户结束进程时释放掉所占资源。
根据本申请实施例提供的一种多应用共享单一摄像头的方法,在第一应用打开摄像头时,可以获取第二应用对摄像头的源数据的处理需求,根据该处理需求,对摄像头的源数据进行处理,得到处理后的摄像头数据,将处理后的摄像头数据存储到虚拟地址空间,以供第二应用从虚拟地址空间读取处理后的摄像头数据,从而可以满足多个应用同时以各自的处理需求使用同一摄像头的数据。
下面通过一个具体的示例描述多应用共享单一摄像头的方法:
如图4所示,为本申请实施例示例的多应用共享单一摄像头的方法的流程示意图。该方法包括以下步骤:
S401由APP1负责打开摄像头。
S402、摄像头的源数据写入到Sharebuffer模块中。
S403'、APP1初始化CameraMemoryfile模块。
S403”、APP2初始化CameraMemoryfile模块。
S404'、APP1初始化CameraMemoryfile模块成功后,紧接着可调用相应API函数接口设置需要哪种处理的方式的摄像头数据。
S404”、APP2初始化CameraMemoryfile模块成功后,紧接着可调用相应API函数接口设置需要哪种处理的方式的摄像头数据。
例如,该处理需求包括需要缩放到一定比例的摄像头数据,或者需要编码后的子码流数据,或者需要预览摄像头的源数据。
S405、判断是否要进行子码编码,如果处理需求为需要编码后的子码流数据,则通过子码编码模块编码摄像头的源数据存储到第二物理内存。
S406、Sharebuffer模块获取到API函数的参数设置之后,会根据用户的处理需求处理摄像头的源数据,并将处理完成的数据拷贝到对应虚拟地址空间的第二物理内存中。该虚拟地址空间也与CameraMemoryfile模块的第一物理内存对应。
S407、CameraMemoryfile模块可以通过一次拷贝将数据拷贝到第一物理内存中,用户便可以直接通过API函数读取第一物理内存中的处理后的数据。
通过以上步骤完成从Sharebuffer中获取所需种类的数据。其中的媒介就是由Sharebuffer模块与CameraMemoryfile模块映射到的同一虚拟地址空间,Sharebuffer拷贝处理后的数据存储到第二物理内存后,由于映射关系可直接在CameraMemoryfile模块中获取到该处理后的数据,并复制到第一物理内存,然后传输至APP2输出。该过程涉及到两次mmcpy以及两次mmap,用来数据的传输通路流转。
可以理解的是,为了实现上述实施例中的功能,多应用共享单一摄像头的装置包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
图5和图6为本申请实施例提供的可能的多应用共享单一摄像头的装置的结构示意图。这些多应用共享单一摄像头的装置可以用于实现上述方法实施例中多应用共享单一摄像头的装置的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该多应用共享单一摄像头的装置可以是终端,还可以是应用于终端的模块(如芯片、芯片模组)。
请参见图5,该装置5000包括:第一获取单元501、第二获取单元502、处理单元503、第一存储单元504和第一读取单元505,还可以包括第一分配单元506、第二分配单元507、映射单元508和创建单元509(图中以虚线表示)。其中:
第一获取单元501,用于由第一应用打开摄像头时,获取所述摄像头的源数据;
第二获取单元502,用于获取第二应用对所述摄像头的源数据的处理需求;
处理单元503,用于根据所述处理需求,对所述摄像头的源数据进行处理,得到处理后的摄像头数据;
第一存储单元504,用于将所述处理后的摄像头数据存储到虚拟地址空间;
第一读取单元505,用于从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用。
可选地,所述装置还包括:
创建单元509,用于创建与所述处理需求对应的应用程序编程接口API函数,所述API函数的接口参数为所述处理需求;
所述第二获取单元502,用于解析所述API函数,获取所述API函数包含的所述第二应用对所述摄像头的源数据的处理需求。
可选地,所述装置还包括:
第一分配单元506,用于为框架层分配第一物理内存;
第二分配单元507,用于为硬件抽象层分配第二物理内存;
映射单元508,用于将所述第一物理内存和所述第二物理内存映射到所述虚拟地址空间。
可选地,所述第一存储单元504包括:
第三获取单元5041,用于获取所述虚拟地址空间的起始地址;
第二存储单元5042,用于根据所述虚拟地址空间的起始地址,将所述处理后的摄像头数据存储到与所述虚拟地址空间对应的所述第二物理内存。
可选地,所述第一读取单元505包括:
第四获取单元5051,用于获取所述虚拟地址空间的起始地址;
第二读取单元5052,用于根据所述虚拟地址空间的起始地址,从所述虚拟地址空间对应的所述第二物理内存读取所述处理后的摄像头数据;
复制单元5053,用于复制所述处理后的摄像头数据;
第三存储单元5054,用于存储所述复制的摄像头数据至与所述虚拟地址空间对应的所述第一物理内存,以供所述第二应用读取。
有关上述各单元的具体实现可参考前述图1或图2所示的实施例的描述,在此不再赘述。
请参见图6,该装置6000至少包括处理器601、输入设备602、输出设备603以及计算机存储介质604。其中,装置内的处理器601、输入设备602、输出设备603以及计算机存储介质604可通过总线或其他方式连接。
计算机存储介质604可以存储在装置的存储器中,所述计算机存储介质604用于存储计算机程序,所述计算机程序包括程序指令,所述处理器601用于执行所述计算机存储介质604存储的程序指令。处理器601是装置的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例所述的处理器601可以用于加载并执行如图1或图2所示实施例中的方法步骤。
需要说明的是,以上单元或单元的一个或多个可以软件、硬件或二者结合来实现。当以上任一单元或单元以软件实现的时候,所述软件以计算机程序指令的方式存在,并被存储在存储器中,处理器可以用于执行所述程序指令并实现以上方法流程。该处理器可以内置于片上系统(system on chip,SoC)或专用集成电路(application specificintegrated circuit,ASIC),也可是一个独立的半导体芯片。该处理器内处理用于执行软件指令以进行运算或处理的核外,还可进一步包括必要的硬件加速器,如现场可编程门阵列(field programmable gate array,FPGA)、可编程逻辑器件(programmable logicdevice,PLD)、或者实现专用逻辑运算的逻辑电路。
当以上单元或单元以硬件实现的时候,该硬件可以是CPU、微处理器、数字信号处理(digital signal processing,DSP)芯片、微控制单元(microcontroller unit,MCU)、人工智能处理器、ASIC、SoC、FPGA、PLD、专用数字电路、硬件加速器或非集成的分立器件中的任一个或任一组合,其可以运行必要的软件或不依赖于软件以执行以上方法流程。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元;或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于接入网设备或终端中。当然,处理器和存储介质也可以作为分立组件存在于接入网设备或终端中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、接入网设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系;在本申请的公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
Claims (14)
1.一种多应用共享单一摄像头的方法,其特征在于,所述方法包括:
由第一应用打开摄像头时,获取所述摄像头的源数据;
获取第二应用对所述摄像头的源数据的处理需求;
根据所述处理需求,对所述摄像头的源数据进行处理,得到处理后的摄像头数据;
将所述处理后的摄像头数据存储到虚拟地址空间;
从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
创建与所述处理需求对应的应用程序编程接口API函数,所述API函数的接口参数为所述处理需求;
所述获取第二应用对所述摄像头的源数据的处理需求,包括:
解析所述API函数,获取所述API函数包含的所述第二应用对所述摄像头的源数据的处理需求。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为框架层分配第一物理内存;
为硬件抽象层分配第二物理内存;
将所述第一物理内存和所述第二物理内存映射到所述虚拟地址空间。
4.根据权利要求3所述的方法,其特征在于,所述将所述处理后的摄像头数据存储到虚拟地址空间,包括:
获取所述虚拟地址空间的起始地址;
根据所述虚拟地址空间的起始地址,将所述处理后的摄像头数据存储到与所述虚拟地址空间对应的所述第二物理内存。
5.根据权利要求3或4所述的方法,其特征在于,所述从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用,包括:
获取所述虚拟地址空间的起始地址;
根据所述虚拟地址空间的起始地址,从所述虚拟地址空间对应的所述第二物理内存读取所述处理后的摄像头数据;
复制所述处理后的摄像头数据并存储至与所述虚拟地址空间对应的所述第一物理内存,以供所述第二应用读取。
6.一种多应用共享单一摄像头的装置,其特征在于,所述装置包括:
第一获取单元,用于由第一应用打开摄像头时,获取所述摄像头的源数据;
第二获取单元,用于获取第二应用对所述摄像头的源数据的处理需求;
处理单元,用于根据所述处理需求,对所述摄像头的源数据进行处理,得到处理后的摄像头数据;
第一存储单元,用于将所述处理后的摄像头数据存储到虚拟地址空间;
第一读取单元,用于从所述虚拟地址空间读取所述处理后的摄像头数据传输至所述第二应用。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
创建单元,用于创建与所述处理需求对应的应用程序编程接口API函数,所述API函数的接口参数为所述处理需求;
所述第二获取单元,用于解析所述API函数,获取所述API函数包含的所述第二应用对所述摄像头的源数据的处理需求。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一分配单元,用于为框架层分配第一物理内存;
第二分配单元,用于为硬件抽象层分配第二物理内存;
映射单元,用于将所述第一物理内存和所述第二物理内存映射到所述虚拟地址空间。
9.根据权利要求8所述的装置,其特征在于,所述第一存储单元包括:
第三获取单元,用于获取所述虚拟地址空间的起始地址;
第二存储单元,用于根据所述虚拟地址空间的起始地址,将所述处理后的摄像头数据存储到与所述虚拟地址空间对应的所述第二物理内存。
10.根据权利要求8或9所述的装置,其特征在于,所述第一读取单元包括:
第四获取单元,用于获取所述虚拟地址空间的起始地址;
第二读取单元,用于根据所述虚拟地址空间的起始地址,从所述虚拟地址空间对应的所述第二物理内存读取所述处理后的摄像头数据;
复制单元,用于复制所述处理后的摄像头数据;
第三存储单元,用于存储所述复制的摄像头数据至与所述虚拟地址空间对应的所述第一物理内存,以供所述第二应用读取。
11.一种多应用共享单一摄像头的装置,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5中任一项所述的方法。
12.一种芯片,应用于终端,其特征在于,所述芯片,用于执行如权利要求1-5中任一项所述的方法。
13.一种芯片模组,应用于终端,其特征在于,包括收发组件和芯片,所述芯片,用于执行如权利要求1-5中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序或指令,当所述计算机程序或指令被调度时延确定装置执行时,实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111599294.0A CN114302040B (zh) | 2021-12-24 | 2021-12-24 | 多应用共享单一摄像头的方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111599294.0A CN114302040B (zh) | 2021-12-24 | 2021-12-24 | 多应用共享单一摄像头的方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114302040A true CN114302040A (zh) | 2022-04-08 |
CN114302040B CN114302040B (zh) | 2024-03-19 |
Family
ID=80969690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111599294.0A Active CN114302040B (zh) | 2021-12-24 | 2021-12-24 | 多应用共享单一摄像头的方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114302040B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242970A (zh) * | 2022-06-23 | 2022-10-25 | 重庆长安汽车股份有限公司 | 车机摄像头数据共享系统、方法、电子设备及存储介质 |
CN115914822A (zh) * | 2023-01-06 | 2023-04-04 | 北京麟卓信息科技有限公司 | 一种摄像头共享方法 |
CN117112083A (zh) * | 2023-10-23 | 2023-11-24 | 南京芯驰半导体科技有限公司 | 用于多硬件域SoC的调用摄像头数据的方法及多硬件域SoC |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060050155A1 (en) * | 2004-09-02 | 2006-03-09 | Ing Stephen S | Video camera sharing |
CN101594510A (zh) * | 2009-06-23 | 2009-12-02 | 腾讯科技(深圳)有限公司 | 一种实现摄像头资源共享的方法及系统 |
CN104881330A (zh) * | 2015-05-22 | 2015-09-02 | 大唐移动通信设备有限公司 | 一种多进程共享数据的方法和装置 |
CN106162082A (zh) * | 2016-07-13 | 2016-11-23 | 深圳市爱培科技术股份有限公司 | 基于Android智能后视镜摄像头共享的系统及方法 |
US20170168953A1 (en) * | 2014-09-01 | 2017-06-15 | Huawei Technologies Co., Ltd. | File access method and apparatus, and storage system |
WO2017152650A1 (zh) * | 2016-03-08 | 2017-09-14 | 珠海全志科技股份有限公司 | 一种摄像机资源共享的方法和装置 |
US9858199B1 (en) * | 2016-03-30 | 2018-01-02 | Amazon Technologies, Inc. | Memory management unit for shared memory allocation |
CN109462726A (zh) * | 2017-09-06 | 2019-03-12 | 比亚迪股份有限公司 | 摄像头的控制方法和装置 |
EP3736667A1 (en) * | 2019-05-09 | 2020-11-11 | XRSpace CO., LTD. | Virtual reality equipment capable of implementing a replacing function and a superimposition function and method for control thereof |
CN112579322A (zh) * | 2020-12-25 | 2021-03-30 | 莜腾(上海)自动化设备科技有限公司 | 多应用共享摄像头的方法、装置及计算机可读存储介质 |
CN112883003A (zh) * | 2021-04-27 | 2021-06-01 | 智道网联科技(北京)有限公司 | 车载终端共享数据方法及装置 |
CN112969024A (zh) * | 2020-06-30 | 2021-06-15 | 华为技术有限公司 | 一种摄像头的调用方法、电子设备和摄像头 |
CN113127213A (zh) * | 2019-12-30 | 2021-07-16 | 斑马智行网络(香港)有限公司 | 支持多应用共享数据的方法、装置、设备及存储介质 |
CN113556479A (zh) * | 2020-09-02 | 2021-10-26 | 华为技术有限公司 | 一种多应用共享摄像头的方法与电子设备 |
-
2021
- 2021-12-24 CN CN202111599294.0A patent/CN114302040B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090009998A (ko) * | 2004-09-02 | 2009-01-23 | 인텔 코오퍼레이션 | 영상 캡처 장치 출력 공유 방법, 영상 캡처 장치 출력 공유시스템 및 컴퓨터 판독가능 기록 매체 |
US20060050155A1 (en) * | 2004-09-02 | 2006-03-09 | Ing Stephen S | Video camera sharing |
CN101594510A (zh) * | 2009-06-23 | 2009-12-02 | 腾讯科技(深圳)有限公司 | 一种实现摄像头资源共享的方法及系统 |
US20170168953A1 (en) * | 2014-09-01 | 2017-06-15 | Huawei Technologies Co., Ltd. | File access method and apparatus, and storage system |
CN104881330A (zh) * | 2015-05-22 | 2015-09-02 | 大唐移动通信设备有限公司 | 一种多进程共享数据的方法和装置 |
WO2017152650A1 (zh) * | 2016-03-08 | 2017-09-14 | 珠海全志科技股份有限公司 | 一种摄像机资源共享的方法和装置 |
US9858199B1 (en) * | 2016-03-30 | 2018-01-02 | Amazon Technologies, Inc. | Memory management unit for shared memory allocation |
CN106162082A (zh) * | 2016-07-13 | 2016-11-23 | 深圳市爱培科技术股份有限公司 | 基于Android智能后视镜摄像头共享的系统及方法 |
CN109462726A (zh) * | 2017-09-06 | 2019-03-12 | 比亚迪股份有限公司 | 摄像头的控制方法和装置 |
EP3736667A1 (en) * | 2019-05-09 | 2020-11-11 | XRSpace CO., LTD. | Virtual reality equipment capable of implementing a replacing function and a superimposition function and method for control thereof |
CN113127213A (zh) * | 2019-12-30 | 2021-07-16 | 斑马智行网络(香港)有限公司 | 支持多应用共享数据的方法、装置、设备及存储介质 |
CN112969024A (zh) * | 2020-06-30 | 2021-06-15 | 华为技术有限公司 | 一种摄像头的调用方法、电子设备和摄像头 |
CN113556479A (zh) * | 2020-09-02 | 2021-10-26 | 华为技术有限公司 | 一种多应用共享摄像头的方法与电子设备 |
CN112579322A (zh) * | 2020-12-25 | 2021-03-30 | 莜腾(上海)自动化设备科技有限公司 | 多应用共享摄像头的方法、装置及计算机可读存储介质 |
CN112883003A (zh) * | 2021-04-27 | 2021-06-01 | 智道网联科技(北京)有限公司 | 车载终端共享数据方法及装置 |
Non-Patent Citations (1)
Title |
---|
李秋玲: "Android硬件抽象层关键技术研究及其在USB摄像头中的实现", 《万方数据》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242970A (zh) * | 2022-06-23 | 2022-10-25 | 重庆长安汽车股份有限公司 | 车机摄像头数据共享系统、方法、电子设备及存储介质 |
CN115914822A (zh) * | 2023-01-06 | 2023-04-04 | 北京麟卓信息科技有限公司 | 一种摄像头共享方法 |
CN115914822B (zh) * | 2023-01-06 | 2023-04-25 | 北京麟卓信息科技有限公司 | 一种摄像头共享方法 |
CN117112083A (zh) * | 2023-10-23 | 2023-11-24 | 南京芯驰半导体科技有限公司 | 用于多硬件域SoC的调用摄像头数据的方法及多硬件域SoC |
CN117112083B (zh) * | 2023-10-23 | 2024-02-23 | 南京芯驰半导体科技有限公司 | 用于多硬件域SoC的调用摄像头数据的方法及多硬件域SoC |
Also Published As
Publication number | Publication date |
---|---|
CN114302040B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114302040B (zh) | 多应用共享单一摄像头的方法及相关产品 | |
CN107690622B (zh) | 实现硬件加速处理的方法、设备和系统 | |
US8332866B2 (en) | Methods, systems, and apparatus for object invocation across protection domain boundaries | |
CN108701058B (zh) | 虚拟化传感器 | |
CN109298901B (zh) | 无人车中对象处理方法、装置、设备、存储介质和车辆 | |
CN112416359A (zh) | 动态分区定制方法、装置、设备和计算机可读存储介质 | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
US20110225387A1 (en) | Unified Virtual Contiguous Memory Manager | |
CN112256460A (zh) | 进程间通信方法、装置、电子设备及计算机可读存储介质 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN114820272A (zh) | 数据交互的方法、装置、存储介质及电子设备 | |
US8402229B1 (en) | System and method for enabling interoperability between application programming interfaces | |
CN113127213A (zh) | 支持多应用共享数据的方法、装置、设备及存储介质 | |
CN109408226A (zh) | 数据处理方法、装置及终端设备 | |
CN116643892B (zh) | 内存管理方法、装置、芯片及交通设备 | |
US20080195838A1 (en) | Cyclic Buffer Management | |
US8539516B1 (en) | System and method for enabling interoperability between application programming interfaces | |
CN108228496B (zh) | 一种直接内存访问内存管理方法、装置和主控设备 | |
CN114610660A (zh) | 控制接口数据的方法、装置及系统 | |
CN110096355B (zh) | 一种共享资源分配方法、装置和设备 | |
CN109634877B (zh) | 流操作的实现方法、装置、设备及存储介质 | |
CN112801856A (zh) | 数据处理方法和装置 | |
CN112749022B (zh) | 相机资源访问方法、操作系统、终端和虚拟相机 | |
CN116775510B (zh) | 数据访问方法、装置、服务器和计算机可读存储介质 | |
US10860397B1 (en) | Communication of data between software applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |