CN115794023A - 一种数据传输方法、装置、设备及存储介质 - Google Patents
一种数据传输方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115794023A CN115794023A CN202211541231.4A CN202211541231A CN115794023A CN 115794023 A CN115794023 A CN 115794023A CN 202211541231 A CN202211541231 A CN 202211541231A CN 115794023 A CN115794023 A CN 115794023A
- Authority
- CN
- China
- Prior art keywords
- component
- sound card
- audio
- instruction
- virtual sound
- 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.)
- Pending
Links
Images
Landscapes
- Reverberation, Karaoke And Other Acoustics (AREA)
Abstract
本申请实施例公开了一种数据传输方法、装置、设备及存储介质,其中,所述数据传输方法包括:采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
Description
技术领域
本申请实施例涉及嵌入式系统的硬件模拟领域,尤其涉及一种数据传输方法、装置、设备及存储介质。
背景技术
通常利用虚拟操作系统模拟器Qemu进行嵌入式硬件模拟,以支持嵌入式终端开发前期阶段的音频等基本功能的开发和调试;相关技术中,因虚拟声卡位于Qemu中,其与嵌入式终端的嵌入式操作系统之间的音频数据交互需要借助音频总线以及相关存储器等设备的传输,且嵌入式操作系统与Qemu之间的通信还多次模式切换以及中转;这样,导致音频数据的传输效率较低。
发明内容
本申请实施例提供一种数据传输技术方案。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据传输方法,所述方法包括:采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
本申请实施例提供一种数据传输装置,所述装置包括:音频组件、声卡驱动组件、虚拟声卡组件,其中:所述音频组件,用于获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;所述声卡驱动组件,用于响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;所述虚拟声卡组件,用于在配置完成后,响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
本申请实施例提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现上述任一所述的数据传输方法。
本申请实施例提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现上述任一所述的数据传输方法。
本申请实施例提供一种数据传输方法、装置、设备及存储介质,其中,首先,采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;其次,采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据;如此,能够基于配置后的虚拟声卡组件,以及存储基于环形缓冲区的地址构建的,与音频数据的传输进行关联的地址队列的内存共享区,实现以存储音频数据的内存地址共享的方式,对音频组件需要处理的音频数据进行传输;这样,能够使得虚拟声卡组件、音频组件、声卡驱动组件之间进行零拷贝音频数据交互,也就是说,能够使得虚拟声卡组件所处的虚拟操作系统、音频组件以及声卡驱动组件所处的操作系统之间进行零拷贝音频数据交互,即能够提高音频数据的数据传输效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本申请实施例提供的第一种数据传输方法的流程示意图;
图2为本申请实施例提供的第二种数据传输方法的流程示意图;
图3为本申请实施例提供的第三种数据传输方法的流程示意图;
图4为本申请实施例提供的第四种数据传输方法的流程示意图
图5为应用本申请实施例提供的数据传输方法的终端在音频传输过程中的原理框图;
图6为应用本申请实施例提供的数据传输方法中基于内存地址共享的方式实现数据传输的示意图;
图7为本申请实施例提供的一种数据传输装置的组成结构示意图;
图8为本申请实施例提供的一种计算机设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本申请实施例,但不用来限制本申请实施例的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请实施例。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)组件:是指对数据和方法的简单封装;该组件即为对象。其中,组件可以有自身的属性和方法;属性是组件数据的简单访问者,方法则是组件的一些简单而可见的功能。
2)线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
3)驱动:计算机软件术语,是指驱动计算机里软件的程序。驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包含有关硬件设备的信息。此信息能够使计算机与相应的设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。
4)音频数据:数字化的声音数据就是音频数据;数字化声音的过程实际上就是以一定的频率对来自麦克风(microphone)等设备的连续的模拟音频信号进行模数转换得到音频数据的过程;数字化声音的播放就是将音频数据进行数模转换变成模拟音频信号输出。
本申请实施例提供的数据传输方法可以应用于计算机设备,该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
本申请实施例提供一种数据传输方法,如图1所示,为本申请实施例提供的第一种数据传输方法的流程示意图;结合如图1中所示步骤S101至步骤S103进行说明:
步骤S101、采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件。
这里,音频组件可以是任一操作系统中的应用;这里,操作系统包括但不限于:音频组件、声卡驱动组件、控制器驱动组件等。
其中,音频组件可以是音频播放组件,也可以是音频录音组件。
这里,环形缓冲区所对应的空间大小可以是事先设定好的,同时,音频数据的具体数据格式、数据大小在本申请实施例中不作任何限定。
这里,在音频组件为音频播放组件的情况下,采用音频播放组件响应于一启动操作,可向音频播放组件所在的数据传输装置对应的操作系统申请一物理空间,即用于存储待播放音频数据的环形缓冲区,并发送音频播放指令至声卡驱动组件;同样,在音频组件为音频录音组件的情况下,采用音频录音组件响应于一启动操作,可向音频录音组件所在的数据传输装置对应的操作系统申请一物理空间,即用于暂时存储输入的录音数据的环形缓冲区,并发送音频录音指令至声卡驱动组件。
步骤S102、采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件。
其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列。
这里,在声卡驱动组件接收到音频组件发送的功能指令之后,会对虚拟声卡组件进行配置,从而得到配置后的虚拟声卡组件,并发送功能指令至配置后的虚拟声卡组件;此外,声卡驱动组件还需获取一内存共享区,其用来存储基于该环形缓冲区的地址构建的,与音频数据的传输进程关联的地址队列。
这里,虚拟声卡组件,可以是相关系统模拟器内的应用;可以是运行音频组件的数据传输装置中的虚拟操作系统内的应用。
其中,采用声卡驱动组件响应于功能指令,控制相关控制器驱动,对虚拟控制器组件的相关区写入对应的控制信息,以便该虚拟控制器组件基于该控制信息对虚拟声卡组件进行配置,从而得到配置后的虚拟声卡组件。
这里,虚拟控制器组件可以是基于两线式串行总线(Inter-Integrated Circuit,I2C)进行信息传输的设备控制器。
这里,采用声卡驱动组件响应于功能指令,同样可在对应的操作系统中申请一物理地址,即为内存共享区;这里,内存共享区,可以用于存储基于环形缓冲区的地址构建的,与音频数据的传输进程关联的地址队列,还可以用于存储该环形缓冲区的地址。
其中,在功能指令为音频播放指令的情况下,内存共享区存储基于环形缓冲区的地址构建的,与音频数据的传输进程关联的地址队列,可以包括:已传输地址队列以及待传输地址队列;其中,已传输地址队列中的地址,是环形缓冲区中已经完成播放、等待清除存放的音频数据的地址,同时,待传输地址队列中的地址,是环形缓冲区中待播放的内存块的地址。
在功能指令为音频录音指令的情况下,内存共享区存储基于环形缓冲区的地址构建的,与音频数据的传输进程关联的地址队列,可以包括:已存储地址队列以及待存储地址队列;其中,已存储地址队列中的地址,是环形缓冲区中已经存放有音频数据且已被加载至对应文件的音频数据的地址,同时,待存储地址队列中的地址,是环形缓冲区中内容为空,待加载音频数据的内存块的地址。
步骤S103、采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
这里,采用配置后的虚拟声卡组件响应于声卡驱动组件发送的功能指令,基于内存共享区,获取与音频数据的传输进程关联的地址队列,该地址为存储音频数据的环形缓冲区的部分地址,进而可以基于该地址读取对应的音频数据,以便对读取到的音频数据进行传输。
其中,采用配置后的虚拟声卡组件响应于功能指令,基于内存共享区,获取并传输该音频数据至相关音频输出组件,以实现音频数据的播放功能,也可以获取并传输从外界输入的音频数据至对应的文件,以实现对外界输入的音频数据的录音功能。
这里,在音频组件为音频播放组件的情况下,首先,可以采用音频播放组件,获取用于存储待播放音频数据的环形缓冲区,并发送一音频播放指令至声卡驱动组件;然后,采用声卡驱动组件响应于该音频播放指令,获取一内存共享区,用于存储基于该环形缓冲区的地址构建的,与待播放音频数据的播放进程关联的地址队列,并对虚拟声卡组件进行音频播放有关的配置,得到具有音频播放功能的虚拟声卡组件,这里,还会将该音频播放指令发送至该虚拟声卡组件;最后,采用具有音频播放功能的虚拟声卡组件,以内存地址共享的方式,从该内存共享区读取与待播放音频数据的播放进程关联的地址队列,进而获取地址队列中地址关联的音频数据,基于该音频播放指令,实现数据的播放;这样,能够使得虚拟声卡组件、音频组件、声卡驱动组件之间实现以内存地址共享的方式,进行零拷贝音频数据交互;这样,能够提高音频数据的传输效率。
本申请实施例提供的数据传输方法,首先,采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;其次,采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据;如此,能够基于配置后的虚拟声卡组件,以及存储基于环形缓冲区的地址构建的,与音频数据的传输进行关联的地址队列的内存共享区,实现以内存共享的方式,对音频组件需要处理的音频数据进行传输;这样,能够使得虚拟声卡组件、音频组件、声卡驱动组件之间进行零拷贝音频数据交互,也就是说,能够使得虚拟声卡组件所处的虚拟操作系统、音频组件以及声卡驱动组件所处的操作系统之间进行零拷贝音频数据交互,即能够提高音频数据的数据传输效率。
在一些实施例中,采用音频组件响应于启动操作,获取对应的环形缓冲区并同步生成数据加载线程;进而采样音频组件响应于该数据加载线程的生成,发送对应的功能指令至声卡驱动组件,以便实现启动声卡驱动组件,为音频数据后续正常传输提供基础,即上述实施例提供的步骤S101可以通过以下步骤S201和步骤S202的方式来实现;如图2所示,为本申请实施例提供的第二种数据传输方法的流程示意图,结合图1和图2所示的步骤进行以下说明:
步骤S201、采用所述音频组件响应于启动操作,获取所述环形缓冲区,并生成数据加载线程。
这里,采用音频组件响应于启动操作,即启动该音频组件,进而音频组件会在相应的嵌入式系统中申请一环形缓冲区,同时生成数据加载线程。
其中,在音频组件为音频播放组件的情况下,采用音频播放组件响应于启动操作,获取待播放音频数据和用于存储待播放音频数据的第一环形缓冲区,并启动用于加载待播放音频数据至第一环形缓冲区的第一数据加载线程。
其中,在音频组件为音频录音组件的情况下,采用音频录音组件响应于启动操作,即启动该音频录音组件,进而音频录音组件会在相应的嵌入式系统中申请一内容为空的第二环形缓冲区,同时生成用于从第二环形缓冲区加载数据的第二数据加载线程。
需要说明的是,第一环形缓冲区和第二环形缓冲区可以相同,也可不同。
步骤S202、采用所述音频组件响应于所述数据加载线程的生成,发送所述功能指令至所述声卡驱动组件。
这里,在数据加载线程生成之后,可采用音频组件发送对应的功能指令,如:音频播放指令或音频录音指令至声卡驱动组件。
对应地,在声卡驱动组件接收到音频组件发送的功能指令之后,还可获取用于存储基于环形缓冲区的地址构建的,与音频数据的传输进程关联的地址队列的内存共享区;这样为后续基于内存地址共享方式实现音频数据传输提供基础;此外,声卡驱动组件同步对虚拟声卡组件进行配置,得到对应的配置后的
虚拟声卡组件,并发送该功能指令至该配置后的虚拟声卡组件;这样,能够使5得配置后的虚拟声卡组件,基于该功能指令和内存共享区,以内存地址共享的方式对音频数据进行传输,即上述实施例提供的步骤S102可以通过以下步骤S203和步骤S204的方式来实现:
步骤S203、采用所述声卡驱动组件响应于所述功能指令,控制虚拟控制器组件对所述虚拟声卡组件进行配置,得到所述配置后的虚拟声卡组件。
0这里,采用声卡驱动组件响应于该音频播放指令,会控制对应的控制器驱动,对与该控制器驱动关联的虚拟控制器组件进行相关功能指令的写入,以便该虚拟控制器组件对虚拟声卡组件进行配置,从而得到配置后的虚拟声卡组件。
这里,虚拟控制器组件和虚拟声卡组件为在相关虚拟操作系统提供的虚拟应用或模块。
5在一些可能的实现方式中,通过与功能指令匹配的控制信息对虚拟声卡组件进行配置,得到具有与功能指令匹配的功能属性的配置后的虚拟声卡组件;如此,使得对虚拟声卡组件的配置更加精准,即上述步骤S203可以通过以下步骤S2031和步骤S2032的方式来实现(图中未示出):
步骤S2031、采用所述声卡驱动组件响应于所述功能指令,控制控制器驱动0组件获取与所述功能指令匹配的控制信息。
这里,采用声卡驱动组件响应于功能放指令,控制与其同处一个操作系统的控制器驱动组件,获取与功能指令匹配的控制信息;其中,控制信息可以包括但不限于:音频播放频率、音频播放速度、音频播放增益等控制参数。
步骤S2032、采用所述控制器驱动组件,在所述虚拟控制器组件关联的内存5映射区写入所述控制信息,以使所述虚拟控制器组件基于所述控制信息,对所述虚拟声卡组件进行配置,得到所述配置后的虚拟声卡组件。
这里,可以采用控制器驱动组件,在与其关联的虚拟控制器组件关联的内存映射区写入该控制信息,以使虚拟控制器组件基于该控制信息,对虚拟声卡组件进行配置,得到配置后的虚拟声卡组件。
步骤S204、采用所述声卡驱动组件发送所述功能指令至所述配置后的虚拟声卡组件,并获取用于存储基于所述环形缓冲区的地址构建的、与所述音频数据的传输进程关联的地址队列的内存共享区。
这里,在对虚拟声卡组件配置结束后,声卡驱动组件同步会将音频播放指令发送至该配置后的虚拟声卡组件。
其中,在功能指令为音频播放指令且音频组件为音频播放组件的情况下,采用声卡驱动组件响应于该音频播放指令,同步还会在其所处的操作系统中申请一物理地址,即内存共享区,该内存共享区用于存储一些地址信息,即用于存储上述的环形缓冲区的地址构建的、音频数据的播放进程关联的地址队列。
这里,内存共享区还可以存储环形缓冲区的所有地址信息,以及音频数据的播放进程关联的待播放地址队列以及已播放地址队列;其中,待播放地址队列中的地址上的数据为未播放,即等待播放或输出的音频数据,而已播放地址队列中的地址上的数据为已经输出的音频数据。
其中,在功能指令为音频录音指令且音频组件为音频录音组件的情况下,采用声卡驱动组件响应于该音频录音指令,同步还会在其所处的操作系统中申请一物理地址,即内存共享区,该内存共享区用于存储一些地址信息,即用于存储上述的环形缓冲区的地址构建的、与录音进程关联的地址队列。
这里,内存共享区还可以存储环形缓冲区的所有地址信息,以及录音进程关联的待存储地址队列,以及已存储地址队列;其中,待存储地址队列中的地址上的数据为未录取,即等待存储或加载的音频数据,而已存储地址队列中的地址上的数据为已经加载至对应的录音文件的音频数据。
在一些实施例中,在所述功能指令包括音频播放指令的情况下,基于音频数据所对应的内存地址存储在内存共享区,借助虚拟声卡服务组件,能够实现以内存地址共享的方式,将音频数据在音频播放环节中高效传输,即上述步骤S103可以通过以下步骤S301和步骤S3022的方式来实现,参考图3所示,为本申请实施例提供的第三种数据传输方法的流程示意图,结合图1至图3所示的步骤进行以下说明:
步骤S301、采用所述配置后的虚拟声卡组件响应于所述音频播放指令,基于所述内存共享区中的与所述音频数据的播放进程关联的待播放地址队列,获取并发送预播放音频数据至虚拟声卡服务组件关联的服务缓冲区。
其中,所述地址队列包括所述待播放地址队列。
这里,采用配置后的虚拟声卡组件响应于该音频播放指令,从内存共享区读取待播放地址队列,以获取待播放地址队列中的地址,进而获取该地址关联的预播放音频数据;其中,该预播放音频数据为待播放音频数据中的部分音频数据。
这里,环形缓冲区可以包括多个缓存区,可以将待播放音频数据拆分为多个音频数据,按照预设顺序存储至多个缓存区中。
需要说明的是,待播放地址队列中的地址的数量可以有一个,也可以有两个及以上,此处不作任何限定。
其中,虚拟声卡服务组件可以是运行在相关虚拟操作系统中的应用或模块,同时虚拟声卡服务组件关联的服务缓冲区为该虚拟操作系统中的一虚拟地址。
步骤S302、采用所述配置后的虚拟声卡组件关联的音频输出组件响应于所述服务缓冲区写入的所述预播放音频数据,输出所述预播放音频数据。
这里,音频输出组件可以是喇叭或扬声器;其中,该音频输出组件的使能,可以是在采用声卡驱动组件响应于音频播放指令,控制虚拟控制器组件对虚拟声卡组件进行配置,得到配置后的虚拟声卡组件的过程中实现的。
其中,采用配置后的虚拟声卡组件响应于音频播放指令,因相关待播放音频数据所对应的内存地址存储在内存共享区,从而可以实现以内存地址共享的方式,从内存共享区读取对应的音频数据,并控制音频输出组件输出音频数据。
需要说明的是,在虚拟声卡服务组件关联的服务缓冲区写入有数据的情况下,对应的,音频输出组件会对应的读取并输出该数据。
对应地,在内存共享区中的待播放地址队列中存在标示为末位的地址的情况下,即表征后续无新的音频数据需要播放,则释放环形缓冲区和内存共享区;如此,对相应的空间进行释放,能够为后续再次进行音频数据提供便利,即本申请实施例提供的数据传输方法还可以执行以下过程:
第一步,采用所述配置后的虚拟声卡组件响应于所述音频播放指令,从所述内存共享区读取到所述待播放地址队列中存在标识为末位的地址的情况下,生成并发送空间释放指令至所述声卡驱动组件。
这里,采用配置后的虚拟声卡组件响应于音频播放指令,从内存共享区读取到待播放地址队列中存在标识为末位的地址的情况下,即表征后续无新的音频数据需要播放,该配置后的虚拟声卡组件会生成一空间释放指令,并发送空间释放指令至声卡驱动组件。
第二步,采用所述声卡驱动组件响应于所述空间释放指令,释放所述内存共享区的空间,并发送所述空间释放指令至所述音频组件。
这里,采用声卡驱动组件响应于空间释放指令,释放内存共享区的空间,并同步发送空间释放指令至音频组件。
第三步,采用所述音频组件响应于所述空间释放指令,释放所述环形缓冲区的空间。
这里,声卡驱动组件还可以发送该空间释放指令至控制器驱动组件,以使控制器驱动组件基于该空间释放指令,对虚拟控制器组件关联的内存映射区进行空间释放,即将里面写入的控制信息删除。
需要说明的是,在内存共享区还包括与音频数据的播放进程关联的已播放地址队列的情况下,还可以采用声卡驱动组件,响应并发送该已播放地址队列至音频组件,以使音频组件对已播放地址队列中的地址所对应的空间进行内存清除,以便后续基于内存清除的地址进行循环使用。
在一些实施例中,在所述功能包括音频录音指令的情况下,基于音频数据所对应的内存地址存储在内存共享区,能够实现以内存地址共享的方式,将待录音的音频数据在音频录音环节中高效传输,即上述实施例提供的步骤S103可以通过以下步骤S401和步骤S402的方式来实现,参考图4所示,为本申请实施例提供的第四种数据传输的流程示意图,结合图1、图2以及图4所示的步骤进行以下说明:
步骤S401、采用所述所述配置后的虚拟声卡组件关联的音频输入组件,将接收到的所述音频数据发送至待加载区。
其中,所述地址队列包括所述待存储地址队列;所述待加载区为所述内存共享区存储的待存储地址队列中的地址所对应的区域。
这里,音频输入组件可以是麦克风;其中,该音频输入组件的使能,可以是在采用声卡驱动组件响应于音频录音指令,控制虚拟控制器组件对虚拟声卡组件进行配置,得到配置后的虚拟声卡组件的过程中实现的。
其中,采用配置后的虚拟声卡组件响应于音频录音指令,因相关录音数据所对应的内存地址存储在内存共享区,从而可以实现以内存地址共享的方式,从内存共享区读取对应的待存储,即待录音的音频数据。
这里,采用已经使能的音频输入组件,将接收到的音频数据写入待加载区,该待加载区的地址为内存共享区存储的待存储地址队列中的任一地址。其中,待加载区的数量可以有多个,且待加载区的内存大小可随实际需求而定。
在一些可行的实现方式中,基于相关虚拟组件,实现外界输入的音频数据写入至预设待环形缓冲区中的待加载区;这样,为后续基于内存地址共享方式,实现录音环节中的音频数据的高效传输提供基础,即上述步骤S401可以通过以下步骤S4011和步骤S4012的方式来实现(图中未示出):
步骤S4011、采用所述音频输入组件,将接收到所述音频数据发送至虚拟声卡服务组件关联的服务缓冲区。
步骤S4012、采用所述虚拟声卡服务组件响应于接收到的所述音频数据,发送写入指令至所述配置后的虚拟声卡组件,以使所述配置后的虚拟声卡组件将所述音频数据从所述服务缓冲区写入至所述待加载区。
步骤S402、采用所述配置后的虚拟声卡组件响应于所述音频录音指令,基于写入有所述音频数据的所述待加载区,对所述音频数据进行存储。
这里,对该音频数据进行存储,即实现对该音频数据的录音。
在一些可行的实现方式中,首先,采用配置后的虚拟声卡组件响应于音频录音指令和待加载区,发送启动指令至声卡驱动组件,以使声卡驱动组件发送启动指令至音频录音组件;然后,采用音频录音组件响应于启动指令,启动相关数据加载线程,将待加载区中的音频输入数据进行数据加载以存储至预设文件,即能够以内存地址共享方式,实现录音环节中的音频数据的高效传输,即上述步骤S402可通过以下步骤S4021和步骤S4022的方式来实现(图中未示出):
步骤S4021、采用所述配置后的虚拟声卡组件响应于所述音频录音指令和所述待加载区,生成并发送启动指令至所述声卡驱动组件,以使所述声卡驱动组件发送所述启动指令至所述音频组件。
步骤S4022、采用所述音频组件响应于所述启动指令,启动数据加载线程,将所述待加载区中的所述音频数据进行数据加载以存储至预设文件。
这里,采用音频组件响应于接收到的启动指令,会对应的启动用于从环形缓冲区加载数据的线程,以便将待加载区中的音频入数据加载至预设文件,以形成录音文件。
需要说明的是,在音频组件响应于一结束操作,会对应的生成一空间释放指令,以释放环形缓冲区的空间,并将该空间释放指令发送至声卡驱动组件,以使声卡驱动组件释放内存共享区的空间;此外,声卡驱动组件还可以发送该空间释放指令至控制器驱动组件,以使控制器驱动组件基于该空间释放指令,对虚拟控制器组件关联的内存映射区进行空间释放,即将里面写入的控制信息删除。
这里,在内存共享区还包括与音频数据的录音进程关联的已存储地址队列的情况下,还可以采用声卡驱动组件,响应并发送该已存储地址队列至音频组件,以使音频组件对已录音地址队列中的地址所对应的空间进行内存清除,以便后续基于内存清除的地址进行循环使用。
下面结合一个具体实施例对上述数据传输方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请实施例,并不构成对本申请实施例的不当限定。
随着计算机技术和行业应用的结合发展,嵌入式系统已经慢慢成为了信息产业的主角;其中,嵌入式终端的开发过程包括软件开发和硬件开发两部分,在终端的初期开发阶段,由于硬件还未准备好,音频作为基本功能存在无法进行开发和调试的问题,从而会影响终端开发的效率。
Qemu作为一套开源的软件模拟器,具有高速度、跨平台等特性,可应用于嵌入式硬件模拟,以支持嵌入式终端前期的音频功能的开发和调试过程。然而,在现有的基于Qemu的模拟器中,虚拟声卡位于Qemu,其与嵌入式操作系统之间的音频数据交互可能需要借助音频总线(Inter—IC Sound,I2S)、直接存储器访问(Direct Memory Access,DMA)等设备的传输,这样,增加了终端在开发环节的工作量。且嵌入式操作系统与Qemu之间的通信需要通过vm-exit操作、vm-entry操作、切换虚拟机模式,经由内核内建的虚拟机(Kernel-basedVirtual Machine,KVM)进行中转,每次音频数据的交互操作需要经过较长的路径、传输效率比较低。
基于现有方案中的声卡模拟方案实现较为复杂的问题,本申请提供一种数据传输方法,其中无需额外的虚拟模块,如:I2S、DMA以及其对应的驱动的开发工作,通过将管理待传输音频数据、已完成音频数据的队列以内存地址共享的方式,在Qemu和嵌入式操作系统之间进行零拷贝音频数据交互;这样,能够减少切换虚拟机模式的操作,进而能够提供音频数据的传输效率。
如图5所示,为应用本申请实施例提供的数据传输方法的终端在音频传输过程中的原理框图;其中,嵌入式终端对应的嵌入式操作系统包括播放应用501、录音应用502、声卡驱动503以及控制器驱动504;运行在该嵌入式终端的Qemu,即虚拟操作系统中包括虚拟声卡设备506、虚拟操作控制器505以及宿主机声卡服务507;此外,还有与宿主机声卡的服务507关联的宿主机的喇叭509以及麦克风508。基于图5所示,进行录音环节中音频数据传输流程为例进行以下说明:
首先,点击播放应用501,该播放应用501会在嵌入式操作系统中申请一物理地址对应的区域,该区域可以是一环形缓冲区,同时启动加载待播放的音频数据至该环形缓冲区的线程;这里,在线程启动的同时,播放应用501会同步向声卡驱动503发起音频播放请求。
其次,声卡驱动503利用控制器驱动504通过向虚拟控制器505内存映射的地址区进行读写操作,实现音频播放请求匹配的控制信息的传输,从而使得虚拟控制器505基于该控制信息,对虚拟声卡设备506进行配置;同时,声卡驱动503想嵌入式操作系统中申请共享内存区以保存环形缓冲区的地址、待传输队列和已传输队列,即内存共享对应的音频数据。
然后,如图6所示,为应用本申请实施例提供的数据传输方法中基于内存地址共享的方式实现数据传输的示意图;虚拟声卡设备506在获得音频播放指令时,从待传输队列602中获得待播放的环形缓冲区地址,并将该地址中的音频数据加载到宿主机声卡的服务507的虚拟缓冲区中,再由喇叭509进行播放。
这里,如图6所示,其中601为申请的环形缓冲区,其中该环形缓冲区包括多个地址,图5中的录音应用501将需要播放的待播放音频数据,即音频文件加载至该环形缓冲区;其中,可以将待传输的缓冲区地址添加至待传输队列602,并将完成传输的缓冲区地址添加至已传输队列即603中。其中,虚拟声卡设备506会对待传输队列602中的地址的标识进行识别,以实现音频文件加载完成的判断即604,若在待传输队列602中存在标识为末位的地址的情况下,则认为音频文件已加载完成,即停止加载,反之则继续将相关音频文件加载至环形缓冲区。
这里,若音频文件加载完毕,则对应的需要释放环形缓冲区和共享内存区域的空间。
需要说明的是,音频录音时,嵌入式操作系统中的录音应用502、声卡驱动503等之间的调用与播放类似,这里虚拟声卡设备506将会被设置为录音功能。录音时的音频数据调用流程与音频播放时的调用流程方向相反,这里不再赘述。
基于此,本申请实施例提供的数据传输方法,可以在嵌入式终端的开发初期,能够有效地规避由于硬件开发不同步,软件无法进行开发和调试的问题;且在不增加过多的软件开发工作的同时,支持嵌入式终端开发初期,对音频播放和录音功能的开发和调试;同时在录音环节和音频播放环节,基于以内存地址共享的方式,使得虚拟声卡组件所处的虚拟操作系统、音频组件以及声卡驱动组件所处的操作系统之间进行零拷贝音频数据交互,即通过零拷贝方式获得存放音频数据的缓存地址,实现音频数据在录音环节和播放环节中的高效传输。
本申请实施例提供一种数据传输装置,图7为本申请实施例提供的数据传输装置的结构组成示意图,如图7所示,该数据传输装置700包括:音频组件701、声卡驱动组件702以及虚拟声卡组件703;其中:
所述音频组件701,用于获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件702;
所述声卡驱动组件702,用于响应于所述功能指令,获取内存共享区,对虚拟声卡组件703进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;
所述虚拟声卡组件703,用于在配置完成后,响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
在一些实施例中,所述音频放组件701,还用于响应于启动操作,获取所述环形缓冲区,并生成数据加载线程,并响应于所述数据加载线程的生成,发送所述功能指令至所述声卡驱动组件702。
在一些实施例中,所述声卡驱动组件702,还用于响应于所述功能指令,控制虚拟控制器组件对所述虚拟声卡组件703进行配置,得到所述配置后的虚拟声卡组件;并发送所述功能指令至所述配置后的虚拟声卡组件,并获取用于存储基于所述环形缓冲区的地址构建的、与所述音频数据的传输进程关联的地址队列的内存共享区。
在一些实施例中,所述声卡驱动组件702,还用于响应于所述功能指令,控制控制器驱动组件获取与所述功能指令匹配的控制信息;所述控制器驱动组件,还用于在所述虚拟控制器组件关联的内存映射区写入所述控制信息,以使所述虚拟控制器组件基于所述控制信息,对所述虚拟声卡组件603进行配置,得到所述配置后的虚拟声卡组件。
在一些实施例中,所述功能指令包括音频播放指令,所述虚拟声卡组件703,还用于在配置完成后,响应于所述音频播放指令,基于所述内存共享区中的与所述音频数据的播放进程关联的待播放地址队列,获取并发送预播放音频数据至虚拟声卡服务组件关联的服务缓冲区;其中,所述地址队列包括所述待播放地址队列;与所述配置后的虚拟声卡组件关联的音频输出组件,还用于响应于所述服务缓冲区写入的所述预播放音频数据,输出所述预播放音频数据。
在一些实施例中,所述虚拟声卡组件703,还用于在配置完成后,响应于所述音频播放指令,从所述内存共享区读取到所述待播放地址队列中存在标识为末位的地址的情况下,生成并发送空间释放指令至所述声卡驱动组件702;所述声卡驱动组件602,还用于响应于所述空间释放指令,释放所述内存共享区的空间,并发送所述空间释放指令至所述音频组件701;所述音频组件701,还用于响应于所述空间释放指令,释放所述环形缓冲区的空间。
在一些实施例中,所述功能指令包括音频录音指令,所述与配置后的虚拟声卡组件关联音频输入组件,还用于将接收到的所述音频数据发送至待加载区;其中,所述待加载区为所述内存共享区存储的待存储地址队列中的地址所对应的区域;所述地址队列包括待存储地址队列;所述虚拟声卡组件703,还用于在配置完成后,响应于所述音频录音指令,基于写入有所述音频数据的所述待加载区,对所述音频数据进行存储。
需要说明的是,以上装置侧实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置侧实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据传输方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、运动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
基于同一技术构思,本申请实施例提供一种计算机设备,用于实施上述方法实施例记载的数据传输方法。图8为本申请实施例提供的一种计算机设备的组成结构示意图,如图8所示,所述计算机设备800包括:一个处理器801、至少一个通信总线804、通信接口802、至少一个外部通信接口和存储器803。其中,通信接口802配置为实现这些组件之间的连接通信。其中,通信接口802可以包括显示屏,外部通信接口可以包括标准的有线接口和无线接口。其中所述处理器801,配置为执行存储器中的程序,以实现上述实施例提供的数据传输方法。
对应地,本申请实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令被执行后,能够实现本申请实施例提供的数据传输方法。
相应的,本申请实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,所述该计算机可执行指令被处理器执行时实现上述实施例提供的数据传输方法。
以上数据传输装置和存储介质实施例的描述,与上述方法实施例的描述类似,具有同相应方法实施例相似的技术描述和有益效果,限于篇幅,可参照上述方法实施例的记载,故在此不再赘述。对于本申请提供的数据传输装置和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请实施例的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请实施例的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请实施例各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分。以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据传输方法,其特征在于,所述方法包括:
采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;
采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;
采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
2.根据权利要求1所述的方法,其特征在于,所述采用音频组件,获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件,包括:
采用所述音频组件响应于启动操作,获取所述环形缓冲区,并生成数据加载线程;
采用所述音频组件响应于所述数据加载线程的生成,发送所述功能指令至所述声卡驱动组件。
3.根据权利要求1所述的方法,其特征在于,所述采用所述声卡驱动组件响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件,包括:
采用所述声卡驱动组件响应于所述功能指令,控制虚拟控制器组件对所述虚拟声卡组件进行配置,得到所述配置后的虚拟声卡组件;
采用所述声卡驱动组件发送所述功能指令至所述配置后的虚拟声卡组件,并获取用于存储基于所述环形缓冲区的地址构建的、与所述音频数据的传输进程关联的地址队列的内存共享区。
4.根据权利要求3述的方法,其特征在于,所述采用所述声卡驱动组件响应于所述功能指令,控制虚拟控制器组件对所述虚拟声卡组件进行配置,得到所述配置后的虚拟声卡组件,包括:
采用所述声卡驱动组件响应于所述功能指令,控制控制器驱动组件获取与所述功能指令匹配的控制信息;
采用所述控制器驱动组件,在所述虚拟控制器组件关联的内存映射区写入所述控制信息,以使所述虚拟控制器组件基于所述控制信息,对所述虚拟声卡组件进行配置,得到所述配置后的虚拟声卡组件。
5.根据权利要求1所述的方法,其特征在于,所述功能指令包括音频播放指令,所述采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据,包括:
采用所述配置后的虚拟声卡组件响应于所述音频播放指令,基于所述内存共享区中的与所述音频数据的播放进程关联的待播放地址队列,获取并发送预播放音频数据至虚拟声卡服务组件关联的服务缓冲区;其中,所述地址队列包括所述待播放地址队列;
采用所述配置后的虚拟声卡组件关联的音频输出组件响应于所述服务缓冲区写入的所述预播放音频数据,输出所述预播放音频数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
采用所述配置后的虚拟声卡组件响应于所述音频播放指令,从所述内存共享区读取到所述待播放地址队列中存在标识为末位的地址的情况下,生成并发送空间释放指令至所述声卡驱动组件;
采用所述声卡驱动组件响应于所述空间释放指令,释放所述内存共享区的空间,并发送所述空间释放指令至所述音频组件;
采用所述音频组件响应于所述空间释放指令,释放所述环形缓冲区的空间。
7.根据权利要求1所述的方法,其特征在于,所述功能指令包括音频录音指令,所述采用所述配置后的虚拟声卡组件响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据,包括:
采用所述配置后的虚拟声卡组件关联的音频输入组件,将接收到的所述音频数据发送至待加载区;其中,所述待加载区为所述内存共享区存储的待存储地址队列中的地址所对应的区域;所述地址队列包括所述待存储地址队列;
采用所述配置后的虚拟声卡组件响应于所述音频录音指令,基于写入有所述音频数据的所述待加载区,对所述音频数据进行存储。
8.一种数据传输装置,其特征在于,所述装置包括:音频组件、声卡驱动组件以及虚拟声卡组件,其中:
所述音频组件,用于获取用于存储音频数据的环形缓冲区,并发送与所述音频组件匹配的功能指令至声卡驱动组件;
所述声卡驱动组件,用于响应于所述功能指令,获取内存共享区,对虚拟声卡组件进行配置得到配置后的虚拟声卡组件,并发送所述功能指令至所述配置后的虚拟声卡组件;其中,所述内存共享区,用于存储基于所述环形缓冲区的地址构建的,与所述音频数据的传输进程关联的地址队列;
所述虚拟声卡组件,用于在配置完成后,响应于所述功能指令,基于所述内存共享区,获取并传输所述音频数据。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时能够实现权利要求1至7任一项所述的数据传输方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令被执行后,能够实现权利要求1至7任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211541231.4A CN115794023A (zh) | 2022-12-02 | 2022-12-02 | 一种数据传输方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211541231.4A CN115794023A (zh) | 2022-12-02 | 2022-12-02 | 一种数据传输方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794023A true CN115794023A (zh) | 2023-03-14 |
Family
ID=85445208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211541231.4A Pending CN115794023A (zh) | 2022-12-02 | 2022-12-02 | 一种数据传输方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794023A (zh) |
-
2022
- 2022-12-02 CN CN202211541231.4A patent/CN115794023A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8863123B2 (en) | Apparatus and method for virtualizing input/output devices using shared memory in host-based mobile terminal virtualization environment | |
JP7346606B2 (ja) | 画面共有処理方法、装置、機器及び記憶媒体 | |
CN112764872B (zh) | 计算机设备、虚拟化加速设备、远程控制方法及存储介质 | |
WO2018119955A1 (zh) | 跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品 | |
WO2020177699A1 (zh) | 小程序运行方法、计算机设备及存储介质 | |
WO2008035453A1 (fr) | Dispositif de jeu | |
CN114417373A (zh) | 一种NVMe-oF用户态客户端的数据访问方法和装置 | |
CN101202875A (zh) | 生成并播放重放文件的方法以及应用该方法的装置 | |
US9086843B2 (en) | Audio controller | |
KR100316190B1 (ko) | 로컬 메모리에서 패킷화된 동작 정보의 기억을 통한 입출력 성능을 증가시키기 위한 시스템 | |
CN115794023A (zh) | 一种数据传输方法、装置、设备及存储介质 | |
JP3696515B2 (ja) | カーネル機能実現構造及びそれを備えたエンタテインメント装置、カーネルによる周辺ディバイスの制御方法 | |
CN101656089A (zh) | 数字音视频播放装置和方法 | |
JP2005293417A (ja) | コンピュータ機器、コンピュータネットワークシステム、プログラム転送方法およびプログラム転送用プログラム | |
JP7310706B2 (ja) | エージェント制御装置、エージェント制御方法、及びエージェント制御プログラム | |
US20130067176A1 (en) | Information processing device and program product | |
JP2004310058A (ja) | メディア処理装置 | |
JP5652242B2 (ja) | データ転送制御装置及びプログラム | |
JP2011008753A (ja) | 記憶装置の隠し記憶領域に記憶されたファイルの実行方法及び装置 | |
JP2000235542A (ja) | データ処理装置及び記録媒体 | |
JP2008097358A (ja) | 分散処理システム | |
JP2015185103A (ja) | 記憶装置、情報処理装置、データアクセス方法、およびプログラム | |
CN117435532B (zh) | 基于视频硬件加速接口的拷贝方法、装置及存储介质 | |
JP2012216108A (ja) | 情報処理装置およびプログラム転送方法 | |
CN108804068B (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 |