CN115185711B - 基于虚拟摄像头的数据交互方法、装置、电子设备及介质 - Google Patents
基于虚拟摄像头的数据交互方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN115185711B CN115185711B CN202211083072.8A CN202211083072A CN115185711B CN 115185711 B CN115185711 B CN 115185711B CN 202211083072 A CN202211083072 A CN 202211083072A CN 115185711 B CN115185711 B CN 115185711B
- Authority
- CN
- China
- Prior art keywords
- virtual camera
- data
- module
- driver
- receiving
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Studio Devices (AREA)
Abstract
本发明公开了一种基于虚拟摄像头的数据交互方法、装置、电子设备及介质,该方法包括:打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;将所述缓冲区队列放入已加载的虚拟摄像头驱动;开启摄像头传输,以触发接收发送端所传输的数据;在所述虚拟摄像头驱动每次接收到DMA设备发出的中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。本发明提供无需用户自定义的跨域共享机制,提高通用性和可扩展性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于虚拟摄像头的数据交互方法、装置、电子设备及介质。
背景技术
当代汽车设计中,智能座舱成为提升用户用车体验的重要环节,而在智能座舱系统中,功能域(例如仪表域、娱乐域)的内容越来越丰富,对算力的要求不断提高,因此,使用多个SoC,多系统来实现成为一种趋势。为了更好的在车辆行进中为用户提供更好的服务,需要多个SoC中共享内容,保证驾驶员安全地使用多个SoC,多个系统提供的数据和服务。
在现有的方案中,不同功能域之间进行数据交互时,需要调用底层驱动才能获取数据,如果传输的不同类型的数据,底层驱动需要定制处理,应用层软件接口不通用。
发明内容
本发明实施例的目的是提供一种基于虚拟摄像头的数据交互方法、装置、电子设备及介质,提高在复杂的SOC中提高资源和内存访问的灵活性和安全性。
在第一方面,为实现上述目的,本发明实施例提供了一种基于虚拟摄像头的数据交互方法,包括步骤:
打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
在第二方面,为了解决相同的技术问题,本发明实施例提供了一种基于虚拟摄像头的数据交互装置,包括:
申请模块,用于打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
处理模块,用于将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
接收模块,用于在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
在第三方面,为了解决相同的技术问题,本发明实施例提供了一种集成基于虚拟摄像头的数据交互装置的电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时,实现上述任一项所述的基于虚拟摄像头的数据交互方法中的步骤。
在第四方面,为了解决相同的技术问题,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在的设备执行上述任一项所述的基于虚拟摄像头的数据交互方法中的步骤。
本发明实施例提供了一种基于虚拟摄像头的数据交互方法、装置、电子设备及介质,本发明在多个SoC之间传输数据,作为接收端的一方通过DMA设备提供的DMA传输功能和中断功能,创建出虚拟摄像头设备节点,使得接收端SoC传输过来的数据类似于采集摄像头输出的数据的过程,软件接口可以兼容物理摄像头设备,对用户层来说,接口通用,且可扩展性强。
附图说明
图1为本发明实施例提供的基于虚拟摄像头的数据交互方法的一种流程示意图;
图2为本发明实施例异构多核的基于虚拟摄像头的数据交互装置的结构示意图;
图3为本发明实施例提供的基于虚拟摄像头的数据交互方法的的另一种流程示意图;
图4为本发明实施例提供的基于虚拟摄像头系统的数据交互软件架构的结构示意图;
图5为本发明实施例提供的虚拟摄像头系统的结构示意图;
图6为本发明实施例提供的基于虚拟摄像头的数据交互方法的的另一种流程示意图;
图7为本发明实施例提供的在每个SoC中独立显示图像数据的场景示意图;
图8为本发明实施例提供的2个不同SoC之间的共享显示图像数据的场景示意图;
图9为本发明实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解的是,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
请参见图1和图2,图1为本发明实施例提供的基于虚拟摄像头的数据交互方法的一种流程示意图,图2为本发明实施例提供的基于虚拟摄像头的数据交互装置的结构示意图,基于虚拟摄像头的数据交互方法应用于接收端200,其中方法包括:
步骤S101、打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
具体的,在智能异构多核框架中,整个智能座舱系统中由多个不同的功能域组成,不同功能域所支持的操作系统可以一致也可以不同。本发明不同功能域所支持的操作系统包括但是不限于Linux操作系统、Android操作系统和Qnx操作系统、嵌入式开源实时操作系统(例如FreeRTOS)、其他实时操作系统(RTOS)。
示例性的,娱乐域的主核A76支持Android操作系统,仪表域的从核A55支持Linux操作系统,信息安全域的从核M4支持嵌入式操作系统。
步骤S102、将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端100所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
具体的,所述预设操作系统包括:Linux操作系统、Android操作系统和Qnx操作系统、嵌入式开源实时操作系统、其他实时操作系统中的任意一种。
步骤S103、在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端100创建的传输通道后停止传输数据。
具体的,本发明提出的在双芯片的接收端200创建一个或者多个虚拟摄像头设备节点,以接收控制数据和流数据,虚拟摄像头驱动包含以下两个部分:
消息接收单元:基于DMA设备,创建消息传送模块,在发送端100和接收端200实现消息传递,传输控制信息,用户层通过摄像头参数配置接口,配置和获取待传输数据信息和传输状态信息;
数据接收单元:基于DMA设备,创建虚拟摄像头设备节点,用户层通过摄像头数据采集的接口接收发送端100发送过来的流数据。
如图2中,底层物理设备为DMA设备;驱动层基于V4L2模块,DMA设备模块和Rpmsg模块创建虚拟摄像头驱动,完成虚拟摄像头数据采集的功能,其中,DMA设备模块(相当于上述的数据接收单元)实现数据接收单元中流数据的传输,Rpmsg模块(相当于上述的消息接收单元)实现消息传送单元中控制数据的传输,V4L2为中间接口层提供控制数据和流数据传输的接口;中间接口层调用摄像头API接口(Linux/Android中使用V4L2(Video For Linux)API接口)接收发送端100传输过来的数据;应用层使用摄像头API接口采集过来的数据实现目标应用。
本发明设计了一种基于虚拟摄像头的数据交互方法和系统,使得一个SoC作为接收端200,以便像获取摄像头输出数据一样,接收另一个作为发送端100的SoC共享发送过来的数据。接收端200打开虚拟摄像头设备节点并申请缓冲区队列以用于接收发送端100所发送的数据,然后接收端200将缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端100所传输的数据,在虚拟摄像头驱动每次接收到接收端200中的DMA设备发出的中断信号时,根据中断信号从缓冲区队列中取出对应的已接收数据,直至关闭发送端100创建的传输通道后停止传输数据。由于车载系统中,通常需要在多个SOC,或者同一个SOC的不同系统之间进行图像数据的传输,本发明通过在接收端200创建虚拟摄像头设备和系统,来接收发送端100发送过来的图像数据,简化了系统设计,对用户层无需自定义软件接口,且可与系统中的物理摄像头设备及接口兼容。而且,本发明支持两个及以上SoC之间,独立地接收一路或者多路数据,通用性和可扩展性强。此外,在同一个SoC上的不同系统之间接收数据,也同样适用。
请参见图3,图3为本发明实施例提供的基于虚拟摄像头的数据交互方法的另一种流程示意图,其中所述打开预先创建的虚拟摄像头设备节点之前包括步骤:
步骤S301、创建并加载所述虚拟摄像头驱动,然后创建对应的虚拟摄像头设备节点;
步骤S302、注册并初始化预设消息传输组件,即如图6所示的Rpmsg;
步骤S303、注册并初始化预设内存设备组件,即如图6所示的DMA设备,并设置所述预设内存设备组件对应的中断程序;
步骤S304、通过所述虚拟摄像头驱动进行环境搭建,并在满足触发条件后等待接收所述发送端100所传输的数据。
具体的,前期初始化完成后,只是解决了一帧视频数据的格式和大小问题,而连续视频帧数据的采集需要用帧缓冲区队列的方式来解决,即要通过驱动程序在内存中申请几个帧缓冲区来存放视频数据。应用程序通过API接口提供的方法(VIDIOC_REQBUFS)申请若干个视频数据的帧缓冲区,申请帧缓冲区数量一般不低于3个,每个帧缓冲区存放一帧视频数据,这些帧缓冲区在内核空间。应用程序通过API接口提供的查询方法(VIDIOC_QUERYBUF)查询到帧缓冲区在内核空间的长度和偏移量地址。应用程序再通过内存映射方法(mmap),将申请到的内核空间帧缓冲区的地址映射到用户空间地址,这样就可以直接处理帧缓冲区的数据。
在一些实施例中,所述创建并加载所述虚拟摄像头驱动包括步骤:
按照预设操作系统的摄像头驱动框架,创建所述虚拟摄像头驱动并进行加载;所述虚拟摄像头驱动与所述摄像头驱动框架通信。
如图4为接收端200为Linux系统,DMA设备为PCIE Link的虚拟摄像头系统软件架构图。接收端200的Linux application即Linnx应用通过调用V4L2 接口接收发送端100发送过来的数据,并将接收到的数据即已接收数据经由图形接口(例如weston窗口管理系统)提交到物理显示驱动,从而在物理显示屏上可以看到发送端100发送过来的图像数据。虚拟摄像头驱动创建了一个或多个虚拟摄像头采集设备,通过接收端200中的DMA设备传输数据,依赖接收端200中的DMA设备提供的中断,实现一个控制数据包或一个流数据包传输完成机制,并将接收到的数据经由虚拟摄像头驱动提交到物理显示驱动,从而在物理显示屏上可以看到发送端100发送过来的图像数据。
在一些实施例中,所述通过所述虚拟摄像头驱动进行环境搭建包括步骤:
通过应用层调用摄像头驱动框架的应用接口,监听应用层是否接收到所述发送端100发送的数据发送请求;所述数据发送请求包括所述发送端100待发送数据的数据类型和数据包大小;
若接收到所述数据发送请求,通过所述应用层调用所述摄像头驱动框架的应用接口,按照所述数据类型和数据包大小申请若干个缓冲区内存完成环境搭建。
具体的,基于V4L2框架的虚拟摄像头系统的软件框架如图5所示:
1.消息接收:打开虚拟摄像头设备节点,调用V4L2 API,通过虚拟摄像头驱动中的Rpmsg模块与发送端100同步传输的数据类型,数据包大小,实时数据传输状态等信息;
2.数据接收:通过V4L2 API获取将要传输的数据类型,数据包大小,申请若干个缓冲区组成缓冲区队列,并将对应的缓冲区地址作为DMA设备的目的地址。当DMA设备将一帧数据传送完毕,接收端200摄像头驱动将接收到相应的DMA中断,从而通知应用层从上面的缓冲区队列中dequeue出对应的缓冲区buffer,该buffer即为发送端100通过DMA设备传输过来的数据。
其中,图4中的HVAC是Heating Ventilation Air-conditioning and Cooling的英文缩写,HVAC是包含温度、湿度、空气清净度以及空气循环的空气调节系统。
在一些实施例中,所述在满足触发条件后等待接收所述发送端100所传输的数据包括步骤:
监听应用层是否接收到所述发送端100发送的传输数据请求;
若接收到所述传输数据请求确定满足所述触发条件,然后开启所述虚拟摄像头的数据流传输流程以等待接收所述发送端100所传输的数据。
在一些实施例中,所述在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端100创建的传输通道后停止传输数据包括步骤:
监听DMA设备是否生成所述中断信号;所述中断信号表征所述DMA设备完成一帧数据的传输进程;
若获取到所述中断信号,通过回调函数通知所述应用层通过所述应用接口队列取出对应的已接收数据;
将取出的已接收数据进行处理,将处理后缓冲区放入所述缓冲区队列以等待显示;
在确定数据接收完毕后,调用所述虚拟摄像头驱动生成确认请求中断信息并发送所述请求中断信息至所述发送端100;
若接收到所述发送端100发送的对应于所述请求中断信息的响应消息后,生成并发送传输关闭请求至所述发送端100以触发关闭所述传输通道。
具体的,应用程序通过V4L2 API接口采集数据可以大概分为五个步骤:首先,打开虚拟摄像头设备节点,进行数据采集的参数初始化,通过V4L2 ioctl接口设置数据(例如视频图像)的采集窗口、采集的点阵大小和格式。其次,申请若干数据采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理数据。然后,将申请到的帧缓冲区在缓冲区队列排队,并启动数据采集,虚拟摄像头驱动开始数据的采集,应用程序从数据采集输出队列取出帧缓冲区,处理完后(比如将取出的内容放到了显示区域),将处理后缓冲区重新放入缓冲区队列,循环往复采集连续的数据,在需要时(例如无需显示时)停止数据采集即可。
示例性的,接收端200流程如图6所示:
1.虚拟摄像头系统驱动流程:
a)系统加载虚拟摄像头驱动;
b)创建虚拟摄像头设备节点/dev/vicamX;
c)注册并初始化Rpmsg;
d)注册并初始化DMA设备中断;
e)等待 应用层调用V4L2 API获取发送端100发送的数据类型和数据包大小;
f)等待 应用层调用V4L2 API向驱动申请若干个缓冲区;
g)接收到发送端100发出的传输数据请求,准备接收数据;
h)等待接收DMA设备数据传输完成中断;
i)通过vb2_frame_done回调函数通知上层应用通过V4L2 API接口按照先进先出的方式从队列取出数据;
j)等待应用层将数据处理完毕,向发送端100发送接收确认中断;
重复虚拟摄像头系统驱动流程中的h)至j)。
k)接收到关闭数据传输通道请求,取消注册Rpmsg和DMA设备中断;
2.虚拟摄像头系统应用层调用流程:
a)打开虚拟摄像头设备节点;
b)通过V4L2 API获取发送端100待发送数据的类型和数据包大小;
c)通过V4L2 API申请内存缓冲区队列;
d)将缓冲区队列放入虚拟摄像头驱动;
e)开启摄像头数据流传输,通过阻塞机制等待接收一帧数据;
f)当驱动中接收到DMA传输完成中断,将从缓冲区队列中按照先进先出的方式从队列取出对应的处理后缓冲区Buffer queue;
g)对接收的数据进行处理;
h)待数据处理完毕,将该处理后缓冲区Buffer queue放入缓冲区队列,并调用驱动向发送端100发送确认中断;
重复虚拟摄像头系统应用层调用流程中的f)至h),直到接收到关闭数据传输通道请求,调用驱动取消注册Rpmsg和DMA设备中断。
初始化设备节点和初始化状态同步,以完成服务进程的初始化与配置。具体为首先创建一个Service进程,在创建这个Service进程的同时,会相应的去配置和初始化虚拟摄像头驱动、虚拟摄像头设备节点、Rpmsg和DMA设备等模块,待所有模块都正确创建和初始化后,Service进程进入休眠等待。
类似的,从核首先初始化DMA设备,然后构造请求消息向处理器注册相关服务,并获取虚拟块参数(即虚拟块的相关参数,包括支持的块大小,容量等),然后根据虚拟块参数创建虚拟摄像头驱动和虚拟摄像头设备节点,同时根据获取到的系统配置参数(包括内存基地址,大小,最大支持传输大小,存储大小等存储块信息、工作模式、并发数等)初始化状态机的数据结构和状态。也就是说,虚拟摄像头系统向处理器请求服务获取配置信息完成初始化和配置。此时虚拟摄像头系统根据虚拟块参数就可以创建一个虚拟摄像头驱动,然后对外(上层应用)暴露出来相关的文件API作为虚拟摄像头设备节点。其中,虚拟块参数和系统配置参数都由处理器根据需求通过DTS,Linux驱动文件接口等方式从获取预先设置好的外部配置信息中提取,然后按需传递给虚拟摄像头系统进行相关配置。
示例性的,本发明方案所示以两个SoC之间共享显示画面为例来说明:
如图8所示,SoC1为发送端100,主要负责娱乐域功能,基于Android/Linux,启动了多个应用,例如地图,倒车,前视等;SoC2为接收端200,主要负责仪表域功能,基于Linux/RTOS。如图7所示,SoC1系统上的3个显示画面通过PCIE Link (两个SoC之间的DMA设备)传输到SoC2系统上,SoC2系统上通过PCIE Link提供的DMA传输和中断功能,设计虚拟摄像头系统,创建3个虚拟摄像头设备节点。SoC2的上层应用通过调用摄像头数据采集接口,接收SoC1传输过来的3个显示画面的数据,将其显示在SoC2仪表屏的对应区域。
本发明中的智能座舱系统中的一个SoC为发送端100,另一个SoC为接收端200的情况下,能够在接收端200的SoC上虚拟一个或者多个摄像头设备,模拟一个或者多个独立的数据传输通道,接收发送端100的SoC传输过来控制数据和流数据。由于该虚拟摄像头设备节点与系统中的物理摄像头设备驱动和接口兼容,简化系统设计。通过本发明在任意一个SoC作为接收端200的情况下都适用。
本发明实施例提供的基于虚拟摄像头的数据交互装置,包括:
申请模块,用于打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
处理模块,用于将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
接收模块,用于在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
具体实施时,以上各个模块和/或单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块和/或单元的具体实施可参见前面的方法实施例,具体可以达到的有益效果也请参看前面的方法实施例中的有益效果,在此不再赘述。
请参见图9,图9为本发明实施例提供的电子设备的一种结构示意图,如图9所示,图9示出了本发明实施例提供的电子设备的具体结构框图,该电子设备可以用于实施上述实施例中提供的基于虚拟摄像头的数据交互方法。该电子设备900可以为移动终端如智能手机或笔记本电脑等设备。
RF电路910用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。RF电路910可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。RF电路910可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(Global System for Mobile Communication, GSM)、增强型移动通信技术(EnhancedData GSM Environment, EDGE),宽带码分多址技术(Wideband Code Division MultipleAccess, WCDMA),码分多址技术(Code Division Access, CDMA)、时分多址技术(TimeDivision Multiple Access, TDMA),无线保真技术(Wireless Fidelity, Wi-Fi)(如美国电气和电子工程师协会标准 IEEE 802.11a, IEEE 802.11b, IEEE802.11g 和/或 IEEE802.11n)、网络电话(Voice over Internet Protocol, VoIP)、全球微波互联接入(Worldwide Interoperability for Microwave Access, Wi-Max)、其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议,甚至可包括那些当前仍未被开发出来的协议。
存储器920可用于存储软件程序以及模块,如上述实施例中基于虚拟摄像头的数据交互方法对应的程序指令/模块,处理器980通过运行存储在存储器920内的软件程序以及模块,从而执行各种功能应用以及资源访问,即实现如下功能:
打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
存储器920可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器920可进一步包括相对于处理器980远程设置的存储器,这些远程存储器可以通过网络连接至电子设备900。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入单元930可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元930可包括触敏表面931以及其他输入设备932。触敏表面931,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面931上或在触敏表面931附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面931可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面931。除了触敏表面931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及电子设备900的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元940可包括显示面板941,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板941。进一步的,触敏表面931可覆盖显示面板941,当触敏表面931检测到在其上或附近的触摸操作后,传送给处理器980以确定触摸事件的类型,随后处理器980根据触摸事件的类型在显示面板941上提供相应的视觉输出。虽然在图中,触敏表面931与显示面板941是作为两个独立的部件来实现输入和输出功能,但是在某些实施例中,可以将触敏表面931与显示面板941集成而实现输入和输出功能。
电子设备900还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在翻盖合上或者关闭时产生中断。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路960、扬声器961,传声器962可提供用户与电子设备900之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给比如另一终端,或者将音频数据输出至存储器920以便进一步处理。音频电路960还可能包括耳塞插孔,以提供外设耳机与电子设备900的通信。
电子设备900通过传输模块970(例如Wi-Fi模块)可以帮助用户接收请求、发送信息等,它为用户提供了无线的宽带互联网访问。虽然图中示出了传输模块970,但是可以理解的是,其并不属于电子设备900的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器980是电子设备900的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行电子设备900的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器980可包括一个或多个处理核芯;在一些实施例中,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解地,上述调制解调处理器也可以不集成到处理器980中。
电子设备900还包括给各个部件供电的电源990(比如电池),在一些实施例中,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备900还包括摄像头(如前置摄像头、后置摄像头)、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备的显示单元是触摸屏显示器,移动终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行一个或者一个以上程序包含用于进行以下操作的指令:
打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;
将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;
在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的基于虚拟摄像头的数据交互方法中任一实施例的步骤。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的基于虚拟摄像头的数据交互方法任一实施例中的步骤,因此,可以实现本发明实施例所提供的任一种基于虚拟摄像头的数据交互方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种基于虚拟摄像头的数据交互方法、装置、电子设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。并且,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种基于虚拟摄像头的数据交互方法,其特征在于,应用于智能座舱系统,所述智能座舱系统包括发送端SOC和接收端SOC,所述基于虚拟摄像头的数据交互方法应用于所述接收端SOC,所述接收端SOC包括位于物理层的DMA设备,位于驱动层的V4L2模块,DMA设备模块和Rpmsg模块,位于中间接口层的V4L2 API接口,以及位于应用层的应用程序,所述方法包括步骤:
打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;所述虚拟摄像头设备节点由所述DMA设备创建;
将所述缓冲区队列放入已加载的虚拟摄像头驱动,开启摄像头传输,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;所述虚拟摄像头驱动由所述驱动层基于所述V4L2模块、所述DMA设备模块和所述Rpmsg模块创建;
在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
2.根据权利要求1所述的基于虚拟摄像头的数据交互方法,其特征在于,所述打开预先创建的虚拟摄像头设备节点之前包括步骤:
创建并加载所述虚拟摄像头驱动,然后创建对应的虚拟摄像头设备节点;
注册并初始化预设消息传输组件;
注册并初始化预设内存设备组件,并设置所述预设内存设备组件对应的中断程序;
通过所述虚拟摄像头驱动进行环境搭建,并在满足触发条件后等待接收所述发送端所传输的数据。
3.根据权利要求2所述的基于虚拟摄像头的数据交互方法,其特征在于,所述创建并加载所述虚拟摄像头驱动包括步骤:
按照预设操作系统的摄像头驱动框架,创建所述虚拟摄像头驱动并进行加载;所述虚拟摄像头驱动与所述摄像头驱动框架通信。
4.根据权利要求3所述的基于虚拟摄像头的数据交互方法,其特征在于,所述通过所述虚拟摄像头驱动进行环境搭建包括步骤:
通过应用层调用摄像头驱动框架的应用接口,监听应用层是否接收到所述发送端发送的数据发送请求;所述数据发送请求包括所述发送端待发送数据的数据类型和数据包大小;
若接收到所述数据发送请求,通过所述应用层调用所述摄像头驱动框架的应用接口,按照所述数据类型和数据包大小申请若干个缓冲区内存完成环境搭建。
5.根据权利要求3所述的基于虚拟摄像头的数据交互方法,其特征在于,所述在满足触发条件后等待接收所述发送端所传输的数据包括步骤:
监听应用层是否接收到所述发送端发送的传输数据请求;
若接收到所述传输数据请求确定满足所述触发条件,然后开启所述虚拟摄像头的数据流传输流程以等待接收所述发送端所传输的数据。
6.根据权利要求5所述的基于虚拟摄像头的数据交互方法,其特征在于,所述在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据包括步骤:
监听DMA设备是否生成所述中断信号;所述中断信号表征所述DMA设备完成一帧数据的传输进程;
若获取到所述中断信号,通过回调函数通知所述应用层通过应用接口从所述缓冲区队列取出对应的已接收数据;
将取出的已接收数据进行处理,将处理后数据放入所述缓冲区队列以等待显示;
在确定数据接收完毕后,调用所述虚拟摄像头驱动生成确认请求中断信息并发送所述请求中断信息至所述发送端;
若接收到所述发送端发送的对应于所述请求中断信息的响应消息后,生成并发送传输关闭请求至所述发送端以触发关闭所述传输通道。
7.根据权利要求1-6任一项所述的基于虚拟摄像头的数据交互方法,其特征在于,所述预设操作系统包括:Linux操作系统、Android操作系统和Qnx操作系统、嵌入式开源实时操作系统、其他实时操作系统中的任意一种。
8.一种基于虚拟摄像头的数据交互装置,其特征在于,应用于智能座舱系统,所述智能座舱系统包括发送端SOC和接收端SOC,所述基于虚拟摄像头的数据交互装置应用于所述接收端SOC,所述接收端SOC包括位于物理层的DMA设备,位于驱动层的V4L2模块,DMA设备模块和Rpmsg模块,位于中间接口层的V4L2 API接口,以及位于应用层的应用程序,所述装置包括:
申请模块,用于打开预先创建的虚拟摄像头设备节点,并申请缓冲区队列以用于接收数据;所述虚拟摄像头设备节点由所述DMA设备创建;
处理模块,用于将所述缓冲区队列放入已加载的虚拟摄像头驱动,以触发接收发送端所传输的数据;所述虚拟摄像头驱动用于实现支持预设操作系统的应用程序操作虚拟摄像头;所述虚拟摄像头驱动由所述驱动层基于所述V4L2模块、所述DMA设备模块和所述Rpmsg模块创建;
接收模块,用于在所述虚拟摄像头驱动每次接收到中断信号时,根据所述中断信号从所述缓冲区队列中取出对应的已接收数据,直至关闭所述发送端创建的传输通道后停止传输数据。
9.一种集成基于虚拟摄像头的数据交互装置的电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时,实现如权利要求1至7任一项所述的基于虚拟摄像头的数据交互方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在的设备执行如权利要求1至7任一项所述的基于虚拟摄像头的数据交互方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083072.8A CN115185711B (zh) | 2022-09-06 | 2022-09-06 | 基于虚拟摄像头的数据交互方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083072.8A CN115185711B (zh) | 2022-09-06 | 2022-09-06 | 基于虚拟摄像头的数据交互方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185711A CN115185711A (zh) | 2022-10-14 |
CN115185711B true CN115185711B (zh) | 2023-10-10 |
Family
ID=83524050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211083072.8A Active CN115185711B (zh) | 2022-09-06 | 2022-09-06 | 基于虚拟摄像头的数据交互方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185711B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117459669B (zh) * | 2023-11-14 | 2024-06-14 | 镁佳(武汉)科技有限公司 | 一种基于虚拟摄像头的视觉应用开发方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391985A (zh) * | 2015-12-07 | 2016-03-09 | 哈尔滨工业大学深圳研究生院 | 一种基于嵌入式Linux的视频监控系统与方法 |
CN106851077A (zh) * | 2017-04-01 | 2017-06-13 | 广州趣通信息科技有限公司 | 基于H3在Linux下驱动OV5640摄像头的方法 |
CN106961580A (zh) * | 2017-03-22 | 2017-07-18 | 金陵科技学院 | 基于arm9和v4l2接口的嵌入式视频采集系统 |
WO2017219692A1 (zh) * | 2016-06-24 | 2017-12-28 | 北京奇虎科技有限公司 | 一种车载摄像设备的智能采集方法、装置及行车记录仪 |
CN107527317A (zh) * | 2017-07-18 | 2017-12-29 | 西安电子科技大学 | 基于图像处理的数据传输系统 |
CN107622541A (zh) * | 2017-08-08 | 2018-01-23 | 建荣半导体(深圳)有限公司 | 一种存储装置、usb摄像头及其行车记录方法、系统 |
WO2020125572A1 (zh) * | 2018-12-17 | 2020-06-25 | 中兴通讯股份有限公司 | 摄像头共享方法及装置 |
CN112804459A (zh) * | 2021-01-12 | 2021-05-14 | 杭州星犀科技有限公司 | 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备 |
CN113407477A (zh) * | 2021-06-24 | 2021-09-17 | 合肥埃科光电科技有限公司 | 基于PCIe总线的CameraLink数据传输方法、装置及存储介质 |
WO2022048474A1 (zh) * | 2020-09-02 | 2022-03-10 | 华为技术有限公司 | 一种多应用共享摄像头的方法与电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10635452B2 (en) * | 2016-03-08 | 2020-04-28 | GM Global Technology Operations LLC | Hardware-sharing between a vehicle system and add-on device using customized middleware |
EP3516509A1 (en) * | 2016-09-27 | 2019-07-31 | Google LLC | Selective simulation of virtualized hardware inputs |
-
2022
- 2022-09-06 CN CN202211083072.8A patent/CN115185711B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391985A (zh) * | 2015-12-07 | 2016-03-09 | 哈尔滨工业大学深圳研究生院 | 一种基于嵌入式Linux的视频监控系统与方法 |
WO2017219692A1 (zh) * | 2016-06-24 | 2017-12-28 | 北京奇虎科技有限公司 | 一种车载摄像设备的智能采集方法、装置及行车记录仪 |
CN106961580A (zh) * | 2017-03-22 | 2017-07-18 | 金陵科技学院 | 基于arm9和v4l2接口的嵌入式视频采集系统 |
CN106851077A (zh) * | 2017-04-01 | 2017-06-13 | 广州趣通信息科技有限公司 | 基于H3在Linux下驱动OV5640摄像头的方法 |
CN107527317A (zh) * | 2017-07-18 | 2017-12-29 | 西安电子科技大学 | 基于图像处理的数据传输系统 |
CN107622541A (zh) * | 2017-08-08 | 2018-01-23 | 建荣半导体(深圳)有限公司 | 一种存储装置、usb摄像头及其行车记录方法、系统 |
WO2020125572A1 (zh) * | 2018-12-17 | 2020-06-25 | 中兴通讯股份有限公司 | 摄像头共享方法及装置 |
WO2022048474A1 (zh) * | 2020-09-02 | 2022-03-10 | 华为技术有限公司 | 一种多应用共享摄像头的方法与电子设备 |
CN112804459A (zh) * | 2021-01-12 | 2021-05-14 | 杭州星犀科技有限公司 | 基于虚拟摄像头的图像展示方法、装置、存储介质及电子设备 |
CN113407477A (zh) * | 2021-06-24 | 2021-09-17 | 合肥埃科光电科技有限公司 | 基于PCIe总线的CameraLink数据传输方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于线激光的3D相机嵌入式软件设计与研究;张雷;《中国优秀硕士学位论文全文数据库信息科技辑》;20220315;第I138-394页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115185711A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11729680B2 (en) | Cell management method, trigger condition configuration method, terminal device, and network-side device | |
CN107590057B (zh) | 冻屏监测与解决方法、移动终端及计算机可读存储介质 | |
JP2023521213A (ja) | Gap構成方法、ユーザ機器UE、ネットワーク機器及びコンピュータ可読記憶媒体 | |
WO2019052554A1 (zh) | 减少ue能力信令结构体内容的方法、存储介质及手机 | |
WO2017129053A1 (zh) | 数据传输方法及装置 | |
CN109040441B (zh) | 应用分身显示方法、移动终端及计算机可读存储介质 | |
CN110162418B (zh) | 应用冷启动方法、移动终端及计算机可读存储介质 | |
CN107704363B (zh) | 冻屏监测方法、移动终端及计算机可读存储介质 | |
CN112799577A (zh) | 一种小窗投屏的方法、终端及存储介质 | |
CN113163460A (zh) | 业务处理方法、终端及网络设备 | |
WO2019237930A1 (zh) | 小区管理方法、终端及网络侧设备 | |
US11864173B2 (en) | Resource scheduling method and apparatus | |
EP3767993A1 (en) | Cell configuration method, terminal, and network node | |
CN111247835A (zh) | 一种切换的方法以及设备 | |
CN110958710B (zh) | 信道接入方法、配置方法、终端及网络侧设备 | |
CN115185711B (zh) | 基于虚拟摄像头的数据交互方法、装置、电子设备及介质 | |
WO2019057119A1 (zh) | 基于移动终端的wifi热点连接方法及移动终端、存储介质 | |
CN110662277A (zh) | 省电管理方法、图形用户界面以及终端 | |
WO2015081880A1 (zh) | 集群业务属性处理的方法、装置和系统 | |
CN111182563A (zh) | 一种无线能力标识传输方法、终端设备和网络节点 | |
CN108874554B (zh) | 信息通信方法及装置 | |
CN111093289A (zh) | 一种业务传输方法及电子设备 | |
CN110621071B (zh) | 一种测量间隔的处理方法、终端及网络节点 | |
CN110324839B (zh) | 一种重配置方法、网络设备及终端 | |
CN115185594B (zh) | 基于虚拟显示的数据交互方法、装置、电子设备及介质 |
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 |