CN110502312A - 一种数据读取方法、数据存储方法及装置 - Google Patents
一种数据读取方法、数据存储方法及装置 Download PDFInfo
- Publication number
- CN110502312A CN110502312A CN201910754951.0A CN201910754951A CN110502312A CN 110502312 A CN110502312 A CN 110502312A CN 201910754951 A CN201910754951 A CN 201910754951A CN 110502312 A CN110502312 A CN 110502312A
- Authority
- CN
- China
- Prior art keywords
- data
- client computer
- shared drive
- host
- value
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/10537—Audio or video recording
- G11B2020/10546—Audio or video recording specifically adapted for audio data
Abstract
本申请实施例公开了一种数据读取方法,当客户机需要利用物理声卡播放音频数据时,客户机可以预先创建共享内存,该共享内存是主机和客户机均可以操作的内存。客户机可以将需要播放的第一数据写入到该共享内存中,由主机从该共享内存中读取第一数据并写入物理声卡,从而实现客户机利用物理声卡播放第一数据的目的。具体地,客户机可以预先创建共享内存,将共享内存的地址发送给主机,以及向主机发送播放指令。客户机获取第一数据,并将第一数据写入共享内存中,主机根据播放指令和共享内存的地址从共享内存中读取第一数据,并将读取的第一数据写入物理声卡,以对第一数据进行播放,以使得客户机实现利用物理声卡对第一数据进行播放。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据读取方法、数据存储方法及装置。
背景技术
随着科学技术的发展,虚拟机的应用越来越广泛。对于安装了虚拟机的设备而言,可以将该安装了虚拟机的设备称为主机,将安装在主机上的虚拟系统称为客户机。
主机上有一些外设设备例如物理声卡,一般而言,物理声卡只能由主机进行控制,即客户机不能控制物理声卡,从而导致客户机无法利用物理声卡播放音频数据,也不能对物理声卡播放的音频数据进行录制。但是,在实际应用中,客户机上安装的一些应用程序例如音乐播放、视频播放、录音等应用程序需要利用物理声卡播放音频数据或对物理声卡播放的音频数据进行录制。
因此,如何使得客户机可以利用物理声卡播放音频数据以及如何使得客户机可以对物理声卡播放的音频数据进行录制,是目前急需解决的问题。
发明内容
为了使得客户机可以利用物理声卡播放音频数据,以及使得客户机可以对物理声卡播放的音频数据进行录制,本申请实施例提供了一种数据读取方法、数据存储方法及装置。
第一方面,本申请实施例提供了一种数据读取方法,所述方法包括:
客户机预先创建共享内存,并将所述共享内存的地址发送给主机;
所述客户机获取第一数据,并将所述第一数据写入所述共享内存,并向所述主机发送播放指令;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
可选的,在所述客户机将所述第一数据写入所述共享内存之后,所述方法还包括:
所述客户机将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据包括:
当所述主机检测到所述标志位的值置为第一值时,根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据。
可选的,所述主机在从所述共享内存中读取所述第一数据之后,所述方法还包括:
所述主机将所述标志位的值置为第二值。
可选的,所述方法还包括:
当所述客户机检测到所述标志位的值置为所述第二值时,获取第二数据,将所述第二数据写入所述共享内存中,并将所述标志位的值置为所述第一值。
可选的,所述播放指令中携带有第一数据的标识;
所述方法还包括:
所述客户机获取所述第一数据的标识,并将所述第一数据的标识写入所述共享内存中;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据包括:
所述主机根据所述第一数据的标识以及所述共享内存的地址从所述共享内存中读取所述第一数据。
可选的,所述客户机的数目为多个;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据包括:
所述主机获取所述多个客户机中每个客户机的优先权,根据所述多个客户机中每个客户机的优先权确定读取对应的第一数据的先后顺序,并根据所述先后顺序以及所述共享内存的地址读取所述对应的第一数据。
第二方面,本申请实施例提供了一种数据存储方法,所述方法包括:
客户机预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令;
所述主机根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存;
所述客户机从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
可选的,所述主机根据所述共享内存的地址将所述第一数据写入所述共享内存之后,所述方法还包括:
所述主机将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述客户机从所述共享内存中读取所述第一数据并进行存储包括:
当所述客户机检测到所述标志位的值为第一值时,从所述共享内存中读取所述第一数据并进行存储。
可选的,所述当所述客户机从所述共享内存中读取所述第一数据之后,所述方法还包括:
所述客户机将所述标志位的值置为第二值。
可选的,在所述客户机将所述标志位的值置为第二值之后,所述方法还包括:
当所述主机检测到所述标志位的值为所述第二值时,从所述物理声卡中读取第二数据,将所述第二数据存储在所述共享内存中,并将所述标志位的值置为所述第一值。
可选的,所述播放指令中携带有第一数据的标识;
所述客户机,还用于获取所述第一数据的标识,并将所述第一数据的标识写入所述共享内存中;
所述主机,具体用于根据所述第一数据的标识以及所述共享内存的地址从所述共享内存中读取所述第一数据。
可选的,所述客户机的数目为多个;
所述主机,具体用于获取所述多个客户机中每个客户机的优先权,根据所述多个客户机中每个客户机的优先权确定读取对应的第一数据的先后顺序,并根据所述先后顺序以及所述共享内存的地址读取所述对应的第一数据。
第三方面,本申请实施例提供了一种数据读取装置,所述装置包括客户机和主机;
所述客户机,用于预先创建共享内存,并将所述共享内存的地址发送给主机;
所述客户机,还用于获取第一数据,并将所述第一数据写入所述共享内存,并向所述主机发送播放指令;
所述主机,用于根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
可选的,
所述客户机,还用于在所述客户机将所述第一数据写入所述共享内存之后,将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述主机具体用于:
当所述主机检测到所述标志位的值置为第一值时,根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
可选的,所述主机,还用于在从所述共享内存中读取所述第一数据之后,将所述标志位的值置为第二值。
可选的,所述客户机还用于:
当所述客户机检测到所述标志位的值置为所述第二值时,获取第二数据,将所述第二数据写入所述共享内存中,并将所述标志位的值置为所述第一值。
第四方面,本申请实施例提供了一种数据存储装置,所述装置包括客户机和主机;
所述客户机,用于预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令;
所述主机,用于根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存;
所述客户机,还用于从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
可选的,
所述主机,还用于在所述主机根据所述共享内存的地址将所述第一数据写入所述共享内存之后,将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述客户机具体用于:
当所述客户机检测到所述标志位的值为第一值时,从所述共享内存中读取所述第一数据并进行存储。
可选的,
所述客户机,还用于当所述客户机从所述共享内存中读取所述第一数据之后,将所述标志位的值置为第二值。
可选的,
所述主机,还用于在所述客户机将所述标志位的值置为第二值之后,当所述主机检测到所述标志位的值为所述第二值时,从所述物理声卡中读取第二数据,将所述第二数据存储在所述共享内存中,并将所述标志位的值置为所述第一值。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行以上第一方面任一项所述的数据读取方法,使得所述终端设备执行以上第二方面任一项所述的数据存储方法。
第六方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行以上第一方面任一项所述的数据读取方法,或者,使得所述终端设备执行以上第二方面任一项所述的数据存储方法。
通过以上第一方面可知在本申请实施例中,当客户机需要利用物理声卡播放音频数据时,客户机可以预先创建共享内存,该共享内存是客户机和主机均可以操作的内存。客户机可以将需要播放的第一数据写入到该共享内存中,由主机从该共享内存中读取第一数据并写入物理声卡,从而实现客户机利用物理声卡播放第一数据的目的。具体地,客户机可以预先创建共享内存,将所述共享内存的地址发送给主机,以及向所述主机发送播放指令。客户机获取第一数据,并将所述第一数据写入所述共享内存中,主机根据所述播放指令和所述共享内存的地址从所述共享内存中读取所述第一数据,并将读取的第一数据写入物理声卡,以对所述第一数据进行播放。由此可见,利用本申请实施例的方案,客户机即可实现利用物理声卡对第一数据进行播放。
通过以上第二方面可知,在本申请实施例中,当客户机需要录制物理声卡播放的音频数据时,客户机可以预先创建共享内存,该共享内存是客户机和主机均可以操作的内存。主机可以将物理声卡播放的第一数据写入到该共享内存中,客户机从该共享内存中读取第一数据并进行存储,从而实现客户机对物理声卡播放第一数据进行录制的目的。具体地,客户机可以预先创建共享内存,将所述共享内存的地址发送给主机、以及向所述主机发送录制指令。主机从物理声卡中读取第一数据,并根据所述录制指令和所述共享内存的地址将所述第一数据写入到共享内存中。客户机从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。由此可见,利用本申请实施例的方案,客户机即可对物理声卡播放的第一数据进行录制。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种数据读取方法的流程示意图;
图2为本申请实施例提供的一种数据存储方法的流程示意图;
图3为本申请实施例提供的一种数据读取装置的结构示意图;
图4为本申请实施例提供的一种数据存储装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
示例性方法
参见图1,该图为本申请实施例提供的一种数据读取方法的流程示意图。
本实施例提供的数据读取方法,可以通过如下S101-S103实现。
S101:客户机预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送播放指令。
在本申请实施例中,所述共享内存是客户机和主机均可以操作的内存。客户机创建共享内存之后,即可以将该共享内存的地址发送给主机,以使得主机根据共享内存的地址操作该共享内存。
在本申请实施例中,客户机创建共享内存之后,可以通过向主机发送命令的方式,将所述共享内存的地址。具体地,客户机可以通过虚拟机监控器(英文:Hypervisor)向主机发送该共享内存的地址。
在本申请实施例中,客户机还可以向主机发送播放指令,所述播放指令用于指示主机从共享内存中读取第一数据,并将第一数据写入物理声卡。
S102:所述客户机获取第一数据,并将所述第一数据写入所述共享内存。
S103:所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
关于S102和S103需要说明的是,在本申请实施例中,客户机可以从存储器中获取该第一数据,例如,客户机可以从硬盘、U盘等存储器中获取该第一数据。本申请实施例不具体限定所述第一数据,所述第一数据可以为音频数据。
客户机获取第一数据之后,将该第一数据写入所述共享内存中。主机接收到前述播放指令之后,即可根据该播放指令和共享内存的地址从共享内存中读取所述第一数据。主机读取第一数据之后,由于主机可以直接控制物理声卡,因此主机可以将该第一数据写入到物理声卡中,由物理声卡播放该第一数据,从而实现了对第一数据的播放。
通过以上描述可知,利用本申请实施例提供的方案,可以使得客户机利用物理声卡播放第一数据。
可以理解的是,在实际应用中,主机和客户机协同完成一项业务时,需要进行同步交互。所谓同步交互,是指主机和客户机协同完成一项业务的过程中,客户机完成某一步骤之后,需要告知主机,以使得主机执行下一步骤;相应的,主机完成某一步骤之后,需要告知客户机,以使得客户机执行下一步骤。在本申请实施例中,客户机将第一数据写入共享内存之后,需要告知主机第一数据已经写入到共享内存中,使得主机知晓第一数据已经写入到共享内存中,从而使得主机触发从共享内存中读取第一数据的操作。即,客户机将第一数据写入共享内存之后,需要与主机进行同步交互。
传统的主机和客户机之间在进行同步交互时,主要通过中断机制来实现。举例说明,客户机完成数据获取并写入共享内存之后,会通过驱动程序给主机发送一个中断请求告知主机,以使得主机从共享内存中读取该数据。相应的,主机从共享内存中读取该数据之后,会通过驱动程序给主机发送一个中断请求告知客户机,以使客户机继续获取数据。
但是在主机通过驱动程序给客户机发送中断请求,以及客户机通过驱动程序给主机发送中断请求时,需要Hypervisor参与。而一般而言,主机和客户机协同完成一项业务的过程中,主机和客户机之间的同步交互比较频繁,从而导致Hypervisor需要频繁的参与到主机和客户机之间的同步交互中。
当主机和客户机之间的同步交互比较频繁时,会导致Hypervisor频繁参与到主机和客户机之间的同步交互中。一旦Hypervisor频繁参与到主机和客户机之间的同步交互中,则会影响主机和客户机的性能。因为Hypervisor参与到主机和客户机之间的同步交互中,中央处理器(Central Processing Unit,CPU)就会工作在根模式下,而主机的操作系统和客户机的操作系统只有在CPU处于非根模式时才能正常运行和调度。故而当前述CPU工作在根模式下时,主机的操作系统和客户机的操作系统则无法正常运行和调度,故而会影响主机和客户机的性能。
举例说明,客户机中安装有音乐播放应用程序,而播放音乐的物理声卡配置在主机上。因此,若用户通过该音乐播放应用程序触发了音乐播放事件。则客户机要获取音频数据,而后将该音频数据写入内存中,并通知主机读取内存中的音频数据,并将该音频数据写入物理声卡,从而实现音乐的播放。
在实际应用中,客户机获取音频数据时,不是一次获取完整的音频数据,而是一次获取一个音频播放单元对应的音频数据,客户机每次获取完音频数据,则需要告知主机去内存中读取该音频数据;相应的,主机读取音频数据之后,则需要告知客户机该音频数据已经被读取,以使得客户机继续获取下一部分音频数据,如此循环,直至完整的音频数据播放完成。这就导致若要实现完整音频数据的播放,主机和客户机之间需要频繁进行同步交互,从而导致Hypervisor需要频繁参与到主机和客户机之间的同步交互中。
鉴于此,在本申请实施例的一种实现方式中,当客户机将所述第一数据写入所述共享内存中,需要进一步与主机进行同步交互以告知主机第一数据已经写入共享内存中时,不再采用中断的方式进行同步交互,从而使得Hypervisor无需参与到主机和客户机之间的同步交互中。具体地,客户机可以在所述共享内存中预先生成标志位,而后通过该标志位的值来指示客户机已经将第一数据写入到共享内存中。当客户机获取第一数据,并将所述第一数据写入第一内存中之后,将该标志位的值置为第一值,以表示客户机已经完成第一数据的获取、并已经将第一数据写入到第一内存中。相应的,当主机检测到所述标志位的值为第一值时,则可以确定客户机已经将第一数据写入到该共享内存中,从而基于该共享内存的地址在所述共享内存中读取该第一数据。
本申请实施例不具体限定该第一值的具体取值,作为一种示例,该第一值例如可以为0X55。
在本申请实施例中,主机可以按照预设周期检测该标志位的值,从而根据该标志位的值确定客户机是否已经完成第一数据的获取、并已经将第一数据写入到共享内存。具体地,若主机检测到该标志位的值为第一值,则可以确定客户机已经完成第一数据的获取、并已经将第一数据写入到共享内存中,故而主机可以从共享内存中读取所述第一数据。
在本申请实施例中,不具体限定所述客户机生成该标志位的时机,作为一种示例,所述客户机可以在用户触发相应的事件时,生成该标志位。例如,用户在客户机上触发了音乐播放事件,当客户机接收到对应于该音乐播放事件的音乐播放请求时,即可生成该标志位。
在本申请实施例中,该标志位的值位于所述共享内存中。如前文,所述共享内存是客户机预先创建的。客户机创建共享内存之后,可以利用该共享内存中的预设大小的内存空间表示该标志位。例如根据该共享内存中的4千字节空间表示该标志位。
以下对“客户机创建共享内存”的具体实现方式进行介绍。
在本申请实施例中,客户机可以调用相应的前端驱动程序创建该共享内存,得到该共享内存对应的客户机物理地址(Guest Physical Address,GPA)。在实际应用中,客户机可以操作的内存为用户空间对应的内存,因此,客户机得到该共享内存对应的GPA之后,将该GPA转换成客户机可以操作的客户机虚拟地址(Guest Virtual Address,GVA),前述提及的客户机将所述标志位的值置为第一值,即为客户机根据该GVA将所述标志位的值置为第一值。
客户机得到共享内存对应的GPA之后,将该GPA发送给Hypervisor,具体地,可以采用命令的方式将所述Hypervisor可以根据GPA和Hypervisor物理地址(HypervisorPhysical Address,HPA)之间的映射关系,得到与共享内存对应的GPA对应的HPA。而后,Hypervisor将该HPA转换成主机对应的GPA,并将该主机对应的GPA发送给主机。在实际应用中,主机可以操作的内存为用户空间对应的内存,因此,主机得到该GPA之后,可以调用主机的驱动程序将该GPA转换成主机可以操作的GVA。前述提及的主机检测所述标志位的值,即为主机根据主机可以操作的GVA检测所述标志位的值。
通过以上描述可知,在本申请实施例中,客户机完成第一数据的获取和写入操作之后,Hypervisor无需参与到主机和客户机之间的同步交互中,通过将该标志位的值置为第一值即可告知主机客户机已经完成第一数据的获取和写入操作,从而解决了传统技术中存在的主机和客户机的性能被影响的问题。
通过以上对于客户机创建共享内存的描述可知,在客户机创建该共享内存的过程中,Hypervisor需要参与到主机和客户机之间的同步交互中一次。创建共享内存之后,主机和客户机之间进行同步交互时,Hypervisor无需参与到主机和客户机之间的同步交互中,因此,利用本申请实施例的方案,即使主机和客户机之间的同步交互比较频繁,Hypervisor无需参与到主机和客户机之间的同步交互中,故而客户机和主机的性能不会受到太大的影响。
可以理解的是,在实际应用中,主机从所述共享内存中读取第一数据之后,可能需要客户机进一步执行下一步数据处理操作。换言之,主机从所述共享内存中读取第一数据之后,可以通知客户机第一数据已经读取完成,以使得客户机执行下一步数据处理操作。在本申请实施例的一种实现方式中,主机可以通过前述标志位告知客户机第一数据已经读取完成。具体地,所述主机在从所述共享内存中读取所述第一数据之后,所述主机还可以将所述标志位的值置为第二值。可以理解的是,该第二值可以指示主机已经从共享内存中读取了所述第一数据。本申请实施例不具体限定所述第二值,所述第二值为与第一值不同的一个值,例如,该第二值可以为0XAA。
相应的,由于主机从所述共享内存中读取第一数据之后,可能需要客户机进一步执行下一步数据处理操作。故而客户机将该标志位的值置为第一值之后,可以按照预设周期检测该标志位的值,并根据该标志位的值确定主机是否已经从共享内存中读取该第一数据,从而确定自身是否需要开始执行下一步数据处理操作。当所述客户机检测到所述标志位的值置为所述第二值时,则表示主机已经从共享内存中读取该第一数据,进一步地,表示客户机可以执行下一步数据处理操作了。故而在申请实施例的一种实现方式中,客户机检测到所述标志位的值为所述第二值时,可以获取第二数据,将所述第二数据写入所述共享内存中,以及将所述标志位的值置为所述第一值。可以理解的是,此处客户机将该标志位的值置为所述第一值,用于指示客户机已经完成第二数据的获取、并已经将第二数据写入到共享内存中。进一步地,主机检测到该标志位的值为第一值时,可以从共享内存中读取该第二数据。
需要说明的是,与第一数据类似,本申请实施例不具体限定所述第二数据,所述第二数据例如可以为音频数据。在本申请实施例的一种实现方式中,当所述第一数据和所述第二数据均为音频数据时,第一数据和第二数据可以均为某一完整音频数据中的其中一部分数据。
在本申请实施例中,考虑到主机和客户机均具备对该标志位的置位权限,具体地,客户机可以将该标志位的值置为第一值,主机可以将该标志位的值置为第二值。在本申请实施例中,考虑到在实际应用中,可能存在主机或者客户机在对该标志位的值进行置位的过程中,出现操作异常导致置位失败,从而影响整个数据处理的进程的问题。例如,客户机读取第二数据之后,将该标志位的值置为第一值失败,从而导致该标志位的值一直为第二值,从而导致客户机检测到该标志位的值一直为第二值,故而客户机会从不断从存储器中读取数据并写入到共享内存中,而主机却不再执行从共享内存中读取数据的步骤。又如,主机读取第一数据之后,将该标志位的值置为第二值失败,从而导致该标志位的值一直为第一值,从而导致主机检测到该标志位的值一直为第一值,故而主机会从共享内存中重复读取第一数据。
为了避免上述问题,在本申请实施例的一种实现方式中,在客户机检测到所述标志位的值为所述第二值之后,除了执行获取第二数据,并将第二数据写入共享内存中的步骤之外,还可以删除该标志位的值。而后,在客户机将第二数据写入共享内存中之后,再将该标志位的值置为所述第一值。从而避免前述提及的“客户机读取第二数据之后,将该标志位的值置为第一值失败,从而导致该标志位的值一直为第二值,从而导致客户机检测到该标志位的值一直为第二值,故而客户机会从不断从存储器中读取数据并写入到共享内存中,而主机却不再执行从共享内存中读取数据的步骤”的问题。
相应的,当主机检测到所述标志位的值为所述第一值之后,除了执行从共享内存中读取第一数据的步骤之外,还可以删除该标志位的值。而后,在主机读取第一数据完成之后,再将该标志位的值置为所述第二值。从而避免前述提及的“主机读取第一数据之后,将该标志位的值置为第二值失败,从而导致该标志位的值一直为第一值,从而导致主机检测到该标志位的值一直为第一值,故而主机会从共享内存中重复读取第一数据”的问题。
可以理解的是,在实际应用中,物理声卡在播放音频数据之前,需要配置相应的播放参数。在本申请实施例中,可以由客户机来触发对物理声卡的播放参数的配置。换言之,在本年申请实施例中,在主机将第一数据写入到物理声卡之前,还可以包括对物理声卡的播放参数进行初始化的步骤。具体地,客户机可以向主机发送准备命令,该准备命令用于指示对物理声卡的播放参数进行初始化。主机接收到该准备命令之后,即可根据该准备命令对所述物理声卡的播放参数进行初始化。从而使得物理声卡可以基于初始化的播放参数播放前述第一数据。
需要说明的是,本申请实施例不具体限定所述客户机向所述主机发送准备命令的具体实现方式。作为一种示例,所述客户机可以通过Hypervisor向主机发送准备命令。作为又一种示例,为了避免Hypervisor参与到主机和客户机的交互中,所述客户机也可以利用前述标志位来向主机发送准备命令。例如,客户机可以将所述标志位的值置为第三值,当主机检测到所述标志位的值为第三值时,则确定客户机向主机发送了准备命令,从而根据所述准备命令对所述物理声卡的播放参数进行初始化。
本申请实施例不具体限定所述物理声卡的播放参数,物理声卡的播放参数,例如可以包括物理声卡通道参数、物理声卡所播放的数据的格式以及数据采样率等等,此处不一一列举说明。
本申请实施例也不具体限定第三值的具体取值,第三值为不同于第一值和第二值即可。
在本申请实施例的一种实现方式中,当用户在客户机上触发了结束播放操作,或者客户机确定播放完成时,还可以向主机发送结束命令,该结束命令用于指示主机停止控制物理声卡,即用于指示主机不再向物理声卡中写入音频数据。
需要说明的是,本申请实施例不具体限定所述客户机向所述主机发送结束命令的具体实现方式。与客户机向主机发送准备命令的实现类似,在一种实现方式中,所述客户机可以通过Hypervisor向主机发送结束命令。在又一种实现方式中,为了避免Hypervisor参与到主机和客户机的交互中,所述客户机也可以利用前述标志位来向主机发送准备命令。例如,客户机可以将所述标志位的值置为第四值,当主机检测到所述标志位的值为第四值时,则确定客户机向主机发送了结束命令,从而根据所述结束命令不再向物理声卡中写入音频数据。
本申请实施例也不具体限定第四值的具体取值,第四值为不同于第一值、第二值和第三值即可。
在本申请实施例的一种实现方式中,考虑到在实际应用中,用户可能会使用客户机多次播放某一音频。为了避免客户机每次播放该音频时,客户机均需要获取第一数据,并将第一数据写入共享内存中。在本申请实施例中,客户机在获取第一数据并将第一数据写入所述共享内存中之后,该第一数据可以在所述共享内存中包括预设时间段,并且,客户机在将第一数据写入共享内存中时,还可以获取第一数据的标识,并将所述第一数据的标识写入所述共享内存中。这样一来,当客户机需要再次播放第一数据时,向主机发送的播放指令中可以携带所述第一数据的标识。主机接收到该播放指令之后,可以基于播放指令中第一数据的标识和共享内存的地址从所述共享内存中读取第一数据。
本申请实施例不具体限定所述预设时间段,所述预设时间段可以根据实际情况确定,本申请实施例不做具体限定。
本申请实施例不具体限定所述第一数据的标识,所述第一数据的标识可以用于标识所述第一数据。所述第一数据的标识例如可以为所述第一数据所属的音频文件的名称、所述第一数据的标识又如可以为所述第一数据所述的音频文件的播放序号等等。
在本申请实施例中,考虑到在实际应用中,一个终端设备上可以安装有多个虚拟机,即一个主机可以对应多个客户机。而该多个客户机均可能需要利用该终端设备的物理声卡进行播放。
对于这种情况,主机接收到多个客户机发送的播放指令之后,可以获取多个客户机中每个客户机的优先权,并根据所述多个客户机中每个客户机的优先权确定读取所述每个客户机对应的第一数据的先后顺序,并根据所述先后顺序以及所述共享内存的地址读取所述对应的第一数据。
在本申请实施例的一种实现方式中,优先权高的客户机可以享有优先使用物理声卡进行播放的权限。在本申请实施例中,所述多个客户机的优先权可以是用户自主设置的,也可以是通过其它方式确定的,本申请实施例不做具体限定。
为了使得客户机可以对物理声卡播放的音频数据进行录制,本申请实施例还提供了一种数据存储方法,以下结合附图介绍该数据存储方法。
参见图2,该图为本申请实施例提供的一种数据存储方法的流程示意图。本申请实施例提供的数据存储方法,例如可以通过如下步骤S201-S203实现。
S201:客户机预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令。
关于S201中的“客户机预先创建共享内存,并将所述共享内存的地址发送给主机”,由于与S101中的“客户机预先创建共享内存,并将所述共享内存的地址发送给主机”相同,故而关于S201中“客户机预先创建共享内存,并将所述共享内存的地址发送给主机”的具体实现,可以参考上文对于S101的描述部分,此处不再详述。
在本申请实施例中,所述录制指令,用于指示主机从物理声卡中读取第一数据,并将第一数据写入共享内存中。
S202:所述主机根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存。
S203:所述客户机从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
关于S202和S203,需要说明的是,由于主机可以对物理声卡进行控制,因此,主机接收到录制指令之后,可以从物理声卡中读取第一数据。本申请实施例中提及的第一数据,指的是物理声卡播放的音频数据。
主机从物理声卡中读取第一数据之后,可以根据共享内存的地址将该第一数据写入到共享内存中。由于该共享内存是主机和客户机均可以操作的内存,故而客户机可以从该共享内存中读取第一数据并进行存储,从而实现对第一数据的录制。
在本申请实施例中,客户机可以将该第一数据存储至存储器中。本申请实施例不具体限定所述存储器,所述存储器例如可以为硬盘、U盘等等。
通过以上描述可知,采用本申请实施例提供的方案,可以实现客户机对物理声卡播放的第一数据的录制。
可以理解的是,在实际应用中,当主机将第一数据写入到共享内存中之后,需要告知客户机主机已经完成将第一数据写入到共享内存中的操作,以使得客户机从共享内存中读取该第一数据。换言之,当主机将第一数据写入到共享内存中之后,需要与客户机进行同步交互。关于同步交互的描述,可以参考以上实施例中对于同步交互的描述,此处不再详述。
在本申请实施例的一种实现方式中,当主机将所述第一数据写入所述共享内存中,需要进一步与客户机进行同步交互以告知客户机第一数据已经写入共享内存中时,不再采用中断的方式进行同步交互,从而使得Hypervisor无需参与到主机和客户机之间的同步交互中。具体地,客户机可以在所述共享内存中预先生成标志位,而后主机通过该标志位的值来指示主机已经将第一数据写入到共享内存中。当主机将所述第一数据写入共享内存中之后,主机将将该标志位的值置为第一值,以表示主机已经将第一数据写入到第一内存中。相应的,当客户机检测到所述标志位的值为第一值时,则可以确定主机已经将第一数据写入到该共享内存中,从而客户机可以从共享内存中读取该第一数据并进行存储。
在本申请实施例中,不具体限定所述客户机生成该标志位的时机,作为一种示例,所述客户机可以在用户触发相应的事件时,生成该标志位。例如,用户在客户机上触发了音频录制事件,当客户机接收到对应于该音频录制事件的音频录制请求时,即可生成该标志位。
在本申请实施例中,该标志位的值位于所述共享内存中。如前文,所述共享内存是客户机预先创建的。客户机创建共享内存之后,可以利用该共享内存中的预设大小的内存空间表示该标志位。例如根据该共享内存中的4千字节空间表示该标志位。
本申请实施例也不具体限定所述第一值的具体取值,所述第一值的具体取值可以根据实际情况确定。
通过以上描述可知,在本申请实施例中,主机完成第一数据的写入操作之后,Hypervisor无需参与到主机和客户机之间的同步交互中,通过将该标志位的值置为第一值即可告知客户机主机已经完成第一数据写入操作,从而解决了传统技术中存在的主机和客户机的性能被影响的问题。
可以理解的是,在实际应用中,客户机从所述共享内存中读取第一数据之后,可能需要主机进一步执行下一步数据处理操作。换言之,客户机从所述共享内存中读取第一数据之后,可以通知主机第一数据已经读取完成,以使得主机执行下一步数据处理操作。在本申请实施例的一种实现方式中,客户机可以通过前述标志位告知主机第一数据已经读取完成。具体地,所述客户机在从所述共享内存中读取所述第一数据之后,所述客户机还可以将所述标志位的值置为第二值。可以理解的是,该第二值可以指示客户机已经从共享内存中读取了所述第一数据。本申请实施例不具体限定所述第二值,所述第二值为与第一值不同的一个值。
相应的,由于客户机从所述共享内存中读取第一数据之后,可能需要主机进一步执行下一步数据处理操作。故而主机将该标志位的值置为第一值之后,可以按照预设周期检测该标志位的值,并根据该标志位的值确定客户机是否已经从共享内存中读取该第一数据,从而确定自身是否需要开始执行下一步数据处理操作。当所述主机检测到所述标志位的值置为所述第二值时,则表示客户机已经从共享内存中读取该第一数据,进一步地,表示主机可以执行下一步数据处理操作了。故而在申请实施例的一种实现方式中,主机检测到所述标志位的值为所述第二值时,可以获取第二数据,将所述第二数据写入所述共享内存中,以及将所述标志位的值置为所述第一值。可以理解的是,此处主机将该标志位的值置为所述第一值,用于指示主机已经完成第二数据的获取、并已经将第二数据写入到共享内存中。进一步地,客户机检测到该标志位的值为第一值时,可以从共享内存中读取该第二数据。
需要说明的是,与第一数据类似,本申请实施例不具体限定所述第二数据,所述第二数据可以为物理声卡播放的音频数据。在本申请实施例的一种实现方式中,第一数据和第二数据可以均为某一完整音频数据中的其中一部分数据。
在本申请实施例中,考虑到主机和客户机均具备对该标志位的置位权限,具体地,主机可以将该标志位的值置为第一值,客户机可以将该标志位的值置为第二值。在本申请实施例中,考虑到在实际应用中,可能存在主机或者客户机在对该标志位的值进行置位的过程中,出现操作异常导致置位失败,从而影响整个数据处理的进程的问题。例如,客户机读取第一数据之后,将该标志位的值置为第二值失败,从而导致该标志位的值一直为第一值,从而导致客户机检测到该标志位的值一直为第一值,故而客户机会重复从所述共享内存中读取第一数据并进行存储。又如,主机读取第二数据之后,将该标志位的值置为第一值失败,从而导致该标志位的值一直为第二值,从而导致客户机检测到该标志位的值一直为第二值,故而客户机会不再从所述共享内存中读取第二数据并进行存储。
为了避免上述问题,在本申请实施例的一种实现方式中,在主机检测到所述标志位的值为所述第二值之后,除了执行获取第二数据,并将第二数据写入共享内存中的步骤之外,还可以删除该标志位的值。而后,在主机将第二数据写入共享内存中之后,再将该标志位的值置为所述第一值。从而避免前述提及的“主机读取第二数据之后,将该标志位的值置为第一值失败,从而导致该标志位的值一直为第二值,从而导致客户机检测到该标志位的值一直为第二值,故而客户机会不再从所述共享内存中读取第二数据并进行存储”的问题。
相应的,当客户机检测到所述标志位的值为所述第一值之后,除了执行从共享内存中读取第一数据并进行存储的步骤之外,还可以删除该标志位的值。而后,在客户机读取第一数据完成之后,再将该标志位的值置为所述第二值。从而避免前述提及的“客户机读取第一数据之后,将该标志位的值置为第二值失败,从而导致该标志位的值一直为第一值,从而导致客户机检测到该标志位的值一直为第一值,故而客户机会从不断从存储器中读取第一数据并进行存储”的问题。
可以理解的是,在实际应用中,物理声卡在播放音频数据之前,需要配置相应的播放参数。在本申请实施例中,可以由客户机来触发对物理声卡的播放参数的配置。换言之,在本年申请实施例中,在主机从物理声卡中读取第一数据之前,还可以包括对物理声卡的播放参数进行初始化的步骤。具体地,客户机可以向主机发送准备命令,该准备命令用于指示对物理声卡的播放参数进行初始化。主机接收到该准备命令之后,即可根据该准备命令对所述物理声卡的播放参数进行初始化。从而使得物理声卡可以基于初始化的播放参数播放前述第一数据。
需要说明的是,本申请实施例不具体限定所述客户机向所述主机发送准备命令的具体实现方式。作为一种示例,所述客户机可以通过Hypervisor向主机发送准备命令。作为又一种示例,为了避免Hypervisor参与到主机和客户机的交互中,所述客户机也可以利用前述标志位来向主机发送准备命令。例如,客户机可以将所述标志位的值置为第三值,当主机检测到所述标志位的值为第三值时,则确定客户机向主机发送了准备命令,从而根据所述准备命令对所述物理声卡的播放参数进行初始化。
本申请实施例不具体限定所述物理声卡的播放参数,物理声卡的播放参数,例如可以包括物理声卡通道参数、物理声卡所播放的数据的格式以及数据采样率等等,此处不一一列举说明。
本申请实施例也不具体限定第三值的具体取值,第三值为不同于第一值和第二值即可。
在本申请实施例的一种实现方式中,当用户在客户机上触发了结束录制操作,或者客户机确定录制完成时,还可以向主机发送结束命令,该结束命令用于指示主机停止控制物理声卡,即用于指示主机不再从物理声卡中读取音频数据。
需要说明的是,本申请实施例不具体限定所述客户机向所述主机发送结束命令的具体实现方式。与客户机向主机发送准备命令的实现类似,在一种实现方式中,所述客户机可以通过Hypervisor向主机发送结束命令。在又一种实现方式中,为了避免Hypervisor参与到主机和客户机的交互中,所述客户机也可以利用前述标志位来向主机发送准备命令。例如,客户机可以将所述标志位的值置为第四值,当主机检测到所述标志位的值为第四值时,则确定客户机向主机发送了结束命令,从而根据所述结束命令不再向物理声卡中写入音频数据。
本申请实施例也不具体限定第四值的具体取值,第四值为不同于第一值、第二值和第三值即可。
示例性设备
基于以上实施例提供的一种数据读取方法,本申请实施例还提供了一种数据读取装置,下面结合附图来详细说明其工作原理。
参见图3,该图为本申请实施例提供的一种数据读取装置的结构示意图。
本申请实施例提供的数据读取装置300,例如可以包括客户机301和主机302。
所述客户机301,用于预先创建共享内存,并将所述共享内存的地址发送给主机;
所述客户机301,还用于获取第一数据,并将所述第一数据写入所述共享内存,并向所述主机发送播放指令;
所述主机302,用于根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
可选的,
所述客户机301,还用于在所述客户机将所述第一数据写入所述共享内存之后,将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述主机302具体用于:
当所述主机检测到所述标志位的值置为第一值时,根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
可选的,所述主机302,还用于在从所述共享内存中读取所述第一数据之后,将所述标志位的值置为第二值。
可选的,所述客户机301还用于:
当所述客户机检测到所述标志位的值置为所述第二值时,获取第二数据,将所述第二数据写入所述共享内存中,并将所述标志位的值置为所述第一值。
可选的,所述播放指令中携带有第一数据的标识;
所述客户机301,还用于获取所述第一数据的标识,并将所述第一数据的标识写入所述共享内存中;
所述主机302具体用于根据所述第一数据的标识以及所述共享内存的地址从所述共享内存中读取所述第一数据。
可选的,所述客户机301的数目为多个;
所述主机302,具体用于获取所述多个客户机中每个客户机的优先权,根据所述多个客户机中每个客户机的优先权确定读取对应的第一数据的先后顺序,并根据所述先后顺序以及所述共享内存的地址读取所述对应的第一数据。
由于所述装置300是与以上方法实施例提供的数据读取方法对应的装置,因此,所述客户机301和所述主机302所执行的步骤的具体实现,均与以上方法实施例提供的数据读取方法为同一构思,因此,关于所述客户机301和所述主机302所执行的步骤的具体实现,可以参考以上方法实施例提供的数据读取方法的描述部分,此处不再赘述。
基于以上实施例提供的一种数据存储方法,本申请实施例还提供了一种数据存储装置,下面结合附图来详细说明其工作原理。
参见图4,该图为本申请实施例提供的一种数据存储装置的结构示意图。
本申请实施例提供的数据存储装置400,包括客户机401和主机402。
所述客户机401,用于预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令;
所述主机402,用于根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存;
所述客户机401,还用于从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
可选的,
所述主机402,还用于在所述主机根据所述共享内存的地址将所述第一数据写入所述共享内存之后,将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述客户机401具体用于:
当所述客户机检测到所述标志位的值为第一值时,从所述共享内存中读取所述第一数据并进行存储。
可选的,
所述客户机,还用于当所述客户机从所述共享内存中读取所述第一数据之后,将所述标志位的值置为第二值。
可选的:
所述主机,还用于在所述客户机将所述标志位的值置为第二值之后,当所述主机检测到所述标志位的值为所述第二值时,从所述物理声卡中读取第二数据,将所述第二数据存储在所述共享内存中,并将所述标志位的值置为所述第一值。
由于所述装置400是与以上方法实施例提供的数据存储方法对应的装置,因此,所述客户机401和所述主机402所执行的步骤的具体实现,均与以上方法实施例提供的数据存储方法为同一构思,因此,关于所述客户机401和所述主机402所执行的步骤的具体实现,可以参考以上方法实施例提供的数据存储方法的描述部分,此处不再赘述。
另外,本申请实施例还提供了一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行以上实施例所述的数据读取方法。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行以上实施例所述的数据读取方法。
本申请实施例还提供了一种计算机可读存储介质,所述机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行以上实施例所述的数据存储方法。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行以上实施例所述的数据存储方法。
当介绍本申请的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据读取方法,其特征在于,所述方法包括:
客户机预先创建共享内存,并将所述共享内存的地址发送给主机;
所述客户机获取第一数据,并将所述第一数据写入所述共享内存,并向所述主机发送播放指令;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
2.根据权利要求1所述的方法,其特征在于,在所述客户机将所述第一数据写入所述共享内存之后,所述方法还包括:
所述客户机将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述主机根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据包括:
当所述主机检测到所述标志位的值置为第一值时,根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据。
3.根据权利要求2所述的方法,其特征在于,所述主机在从所述共享内存中读取所述第一数据之后,所述方法还包括:
所述主机将所述标志位的值置为第二值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述客户机检测到所述标志位的值置为所述第二值时,获取第二数据,将所述第二数据写入所述共享内存中,并将所述标志位的值置为所述第一值。
5.一种数据存储方法,其特征在于,所述方法包括:
客户机预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令;
所述主机根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存;
所述客户机从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
6.根据权利要求5所述的方法,其特征在于,所述主机根据所述共享内存的地址将所述第一数据写入所述共享内存之后,所述方法还包括:
所述主机将所述客户机在所述共享内存中预先生成的标志位的值置为第一值;
所述客户机从所述共享内存中读取所述第一数据并进行存储包括:
当所述客户机检测到所述标志位的值为第一值时,从所述共享内存中读取所述第一数据并进行存储。
7.根据权利要求6所述的方法,其特征在于,所述当所述客户机从所述共享内存中读取所述第一数据之后,所述方法还包括:
所述客户机将所述标志位的值置为第二值。
8.根据权利要求7所述的方法,其特征在于,在所述客户机将所述标志位的值置为第二值之后,所述方法还包括:
当所述主机检测到所述标志位的值为所述第二值时,从所述物理声卡中读取第二数据,将所述第二数据存储在所述共享内存中,并将所述标志位的值置为所述第一值。
9.一种数据读取装置,其特征在于,所述装置包括客户机和主机;
所述客户机,用于预先创建共享内存,并将所述共享内存的地址发送给主机;
所述客户机,还用于获取第一数据,并将所述第一数据写入所述共享内存,并向所述主机发送播放指令;
所述主机,用于根据所述播放指令以及所述共享内存的地址从所述共享内存中读取所述第一数据,并写入物理声卡,以对所述第一数据进行播放。
10.一种数据存储装置,其特征在于,所述装置包括客户机和主机;
所述客户机,用于预先创建共享内存,并将所述共享内存的地址发送给主机,并向所述主机发送录制指令;
所述主机,用于根据所述录制指令从物理声卡中读取第一数据,并根据所述共享内存的地址将所述第一数据写入所述共享内存;
所述客户机,还用于从所述共享内存中读取所述第一数据并进行存储,以对所述第一数据进行录制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910754951.0A CN110502312A (zh) | 2019-08-15 | 2019-08-15 | 一种数据读取方法、数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910754951.0A CN110502312A (zh) | 2019-08-15 | 2019-08-15 | 一种数据读取方法、数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110502312A true CN110502312A (zh) | 2019-11-26 |
Family
ID=68586497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910754951.0A Pending CN110502312A (zh) | 2019-08-15 | 2019-08-15 | 一种数据读取方法、数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502312A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099967A (zh) * | 2020-08-20 | 2020-12-18 | 深圳市元征科技股份有限公司 | 数据传输方法、终端、装置、设备及介质 |
CN112581650A (zh) * | 2020-11-12 | 2021-03-30 | 江苏北斗星通汽车电子有限公司 | 基于智能座舱的视频数据处理方法、装置以及电子终端 |
CN113990457A (zh) * | 2021-12-24 | 2022-01-28 | 极限人工智能有限公司 | 一种视频图像截取方法、装置、芯片、手术机器人与系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192203A (zh) * | 2006-11-30 | 2008-06-04 | 中兴通讯股份有限公司 | 手机音频播放方法 |
CN101364188A (zh) * | 2008-09-12 | 2009-02-11 | 青岛海信移动通信技术股份有限公司 | 一种移动终端及其多媒体播放控制方法 |
CN101600015A (zh) * | 2008-06-06 | 2009-12-09 | 深圳富泰宏精密工业有限公司 | 音频播放管理系统及方法 |
CN103777993A (zh) * | 2012-10-19 | 2014-05-07 | 泰发科技股份有限公司 | 一种多用户计算机系统 |
CN104023305A (zh) * | 2014-05-30 | 2014-09-03 | 爱培科科技开发(深圳)有限公司 | 一种Wince车载多媒体的混音控制方法及装置 |
CN104202649A (zh) * | 2014-08-27 | 2014-12-10 | 四川长虹电器股份有限公司 | 同时操控智能电视多应用的方法 |
CN104216862A (zh) * | 2013-05-29 | 2014-12-17 | 华为技术有限公司 | 一种用户进程与系统服务之间的通信方法、装置 |
US20150145876A1 (en) * | 2013-11-28 | 2015-05-28 | Huawei Technologies Co., Ltd. | Graphics Data Processing Method, Apparatus, and System |
CN107346260A (zh) * | 2017-06-29 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种数据传输方法、装置及系统 |
CN107436797A (zh) * | 2017-08-14 | 2017-12-05 | 深信服科技股份有限公司 | 一种基于虚拟化环境的指令数据处理方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN109313566A (zh) * | 2017-12-27 | 2019-02-05 | 深圳前海达闼云端智能科技有限公司 | 一种虚拟机的音频播放方法及其装置、移动终端 |
US20190155727A1 (en) * | 2017-11-22 | 2019-05-23 | Samsung Electronics Co., Ltd | System and method for frame buffer |
-
2019
- 2019-08-15 CN CN201910754951.0A patent/CN110502312A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192203A (zh) * | 2006-11-30 | 2008-06-04 | 中兴通讯股份有限公司 | 手机音频播放方法 |
CN101600015A (zh) * | 2008-06-06 | 2009-12-09 | 深圳富泰宏精密工业有限公司 | 音频播放管理系统及方法 |
CN101364188A (zh) * | 2008-09-12 | 2009-02-11 | 青岛海信移动通信技术股份有限公司 | 一种移动终端及其多媒体播放控制方法 |
CN103777993A (zh) * | 2012-10-19 | 2014-05-07 | 泰发科技股份有限公司 | 一种多用户计算机系统 |
CN104216862A (zh) * | 2013-05-29 | 2014-12-17 | 华为技术有限公司 | 一种用户进程与系统服务之间的通信方法、装置 |
US20150145876A1 (en) * | 2013-11-28 | 2015-05-28 | Huawei Technologies Co., Ltd. | Graphics Data Processing Method, Apparatus, and System |
CN104023305A (zh) * | 2014-05-30 | 2014-09-03 | 爱培科科技开发(深圳)有限公司 | 一种Wince车载多媒体的混音控制方法及装置 |
CN104202649A (zh) * | 2014-08-27 | 2014-12-10 | 四川长虹电器股份有限公司 | 同时操控智能电视多应用的方法 |
CN107346260A (zh) * | 2017-06-29 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种数据传输方法、装置及系统 |
CN107436797A (zh) * | 2017-08-14 | 2017-12-05 | 深信服科技股份有限公司 | 一种基于虚拟化环境的指令数据处理方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
US20190155727A1 (en) * | 2017-11-22 | 2019-05-23 | Samsung Electronics Co., Ltd | System and method for frame buffer |
CN109313566A (zh) * | 2017-12-27 | 2019-02-05 | 深圳前海达闼云端智能科技有限公司 | 一种虚拟机的音频播放方法及其装置、移动终端 |
Non-Patent Citations (2)
Title |
---|
刘哲峰: "嵌入式Linux音频设备的驱动设计与研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
卢绮闽等: "RTLinux下的一种实时应用通信机制", 《单片机与嵌入式系统应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099967A (zh) * | 2020-08-20 | 2020-12-18 | 深圳市元征科技股份有限公司 | 数据传输方法、终端、装置、设备及介质 |
CN112581650A (zh) * | 2020-11-12 | 2021-03-30 | 江苏北斗星通汽车电子有限公司 | 基于智能座舱的视频数据处理方法、装置以及电子终端 |
CN113990457A (zh) * | 2021-12-24 | 2022-01-28 | 极限人工智能有限公司 | 一种视频图像截取方法、装置、芯片、手术机器人与系统 |
CN113990457B (zh) * | 2021-12-24 | 2022-03-04 | 极限人工智能有限公司 | 一种视频图像截取方法、装置、芯片、手术机器人与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502312A (zh) | 一种数据读取方法、数据存储方法及装置 | |
US20180060189A1 (en) | File system for rolling back data on tape | |
US20050138090A1 (en) | Method and apparatus for performing a backup of data stored in multiple source medium | |
US9875030B2 (en) | Media write operation | |
US20170132247A1 (en) | Support for worm cartridges realized by linear tape file system (ltfs) | |
JP5092782B2 (ja) | ディスク、オーサリング方法、および再生制御方法、並びに情報処理装置 | |
CN105354109B (zh) | 视频监控索引数据的备份方法和装置 | |
US6735672B2 (en) | Data storage array device and data access method | |
US9442656B2 (en) | Efficient use of metadata accompanying file writing to media | |
US8380952B2 (en) | Storage system and data storage method using storage system which decides size of data to optimize the total of data size transfer efficiency | |
CN108475046A (zh) | 控制装置及编辑装置 | |
CN102968366B (zh) | 一种蓝光播放器日志本地存储方法及装置 | |
US8510525B2 (en) | Method of duplicating segmented data to multiple random accessible storage devices | |
CN105357462B (zh) | 一种pvr分区录制方法及系统 | |
CN104837064B (zh) | 开放式操作系统的媒体播放器的控制方法及媒体播放器 | |
US8392759B2 (en) | Test method, test program, test apparatus, and test system | |
US8509597B2 (en) | Recording apparatus, imaging and recording apparatus, recording method, and program | |
EP1136997A2 (en) | Apparatus and method for reproducing stream data and recording medium | |
US20100265348A1 (en) | Systems and Methods for Image Data Transfer | |
JP2002251192A (ja) | 通信カラオケシステム | |
US20020054542A1 (en) | Apparatus and method for reproducing stream data and recording medium therefor | |
JP2006285327A (ja) | デジタルデータ記録装置 | |
JP2015038668A (ja) | 電子装置 | |
JPH0963175A (ja) | 磁気ディスク制御装置 | |
CN102354290B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191126 |