CN106775556B - 主机cpu辅助的音频处理方法及执行该方法的计算系统 - Google Patents
主机cpu辅助的音频处理方法及执行该方法的计算系统 Download PDFInfo
- Publication number
- CN106775556B CN106775556B CN201611059413.2A CN201611059413A CN106775556B CN 106775556 B CN106775556 B CN 106775556B CN 201611059413 A CN201611059413 A CN 201611059413A CN 106775556 B CN106775556 B CN 106775556B
- Authority
- CN
- China
- Prior art keywords
- audio processing
- processing engine
- audio
- host cpu
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 339
- 238000003672 processing method Methods 0.000 title claims abstract description 44
- 238000012545 processing Methods 0.000 claims abstract description 472
- 239000000872 buffer Substances 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 21
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000012805 post-processing Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 31
- 101100364827 Prochlorococcus marinus (strain SARG / CCMP1375 / SS120) ahcY gene Proteins 0.000 description 11
- 101150081953 SAM1 gene Proteins 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 101150021948 SAM2 gene Proteins 0.000 description 9
- 238000005070 sampling Methods 0.000 description 8
- 101150093826 par1 gene Proteins 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 101100406879 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) par-2 gene Proteins 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000011017 operating method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 241001342895 Chorus Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- HAORKNGNJCEJBX-UHFFFAOYSA-N cyprodinil Chemical compound N=1C(C)=CC(C2CC2)=NC=1NC1=CC=CC=C1 HAORKNGNJCEJBX-UHFFFAOYSA-N 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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/16—Sound input; Sound output
- G06F3/165—Management of the audio stream, e.g. setting of volume, audio stream path
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
-
- 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/16—Sound input; Sound output
- G06F3/162—Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/167—Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
-
- 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/10009—Improvement or modification of read or write signals
- G11B20/10018—Improvement or modification of read or write signals analog processing for digital recording or reproduction
- G11B20/10027—Improvement or modification of read or write signals analog processing for digital recording or reproduction adjusting the signal strength during recording or reproduction, e.g. variable gain amplifiers
-
- 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
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/26—Pre-filtering or post-filtering
-
- 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/10592—Audio or video recording specifically adapted for recording or reproducing multichannel signals
-
- 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/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10805—Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer overflow
-
- 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/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/10814—Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer underrun
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Computational Linguistics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
Abstract
本发明提供一种主机CPU辅助的音频处理方法及执行该方法的计算系统。提供一种音频处理方法以及执行该音频处理方法的计算系统。所述计算系统包括音频处理引擎和主机中央处理器(CPU)。音频处理引擎基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否可执行针对第一音频数据的第一处理,并且基于确定的结果,执行第一处理或者请求主机CPU执行第一处理。
Description
本申请要求2015年11月24日提交到韩国知识产权局的第10-2015-0164835号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部合并于此。
技术领域
与示例实施例一致的设备、方法和系统涉及音频处理方法,更具体地讲,涉及一种主机中央处理器辅助的(主机CPU辅助的)音频处理方法以及执行该音频处理方法的计算系统。
背景技术
音频处理可包括例如用于通过处理音频数据来生成声音的音频回放以及用于通过处理所接收的声音来生成音频数据的声音记录二者。音频数据可以是基于音频编解码器压缩的数据,音频回放可包括基于音频编解码器将压缩的源音频数据解码的操作,声音记录可包括基于音频编解码器对声音进行编码的操作。此外,音频回放可包括用于对源音频数据被解码时所生成的音频流执行各种处理的后处理,声音记录可包括用于对从声音生成的音频流或者通过对音频流进行编码而获得的音频数据执行各种处理的预处理。
音频处理可由处理器或者专用逻辑块来执行。当执行音频回放或声音记录时,音频数据的量或者数据的压缩率可增加以提供高声音质量。此外,音频处理的复杂度可增加以提供各种声音效果。因此,可能需要高性能硬件以在有限时间内从音频数据输出声音或者在有限时间内从声音生成音频数据。然而,这种高性能硬件可增加功耗以及增加音频硬件和使用该音频硬件的装置二者的成本,因此用于回放音频数据或者用于记录声音数据的电子装置中可能出现针对成本和电力的问题,特别是在移动电子装置中。
发明内容
一个或更多个示例性实施例提供一种有效地利用计算系统的资源的音频处理方法。
一个或更多个示例性实施例还提供一种执行所述音频处理方法的计算系统。
根据示例性实施例的一方面,提供一种由包括主机中央处理器(CPU)和音频处理引擎的计算系统执行的音频处理方法,所述音频处理方法包括:由音频处理引擎基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否可执行针对第一音频数据的第一处理;基于确定的结果,由音频处理引擎执行第一处理,或者请求主机CPU执行第一处理;由主机CPU通过响应于音频处理引擎的请求执行第一处理来生成第二音频数据。
根据另一示例性实施例的一方面,提供一种由包括主机中央处理器(CPU)和音频处理引擎的计算系统执行的音频处理方法,所述音频处理方法包括:由主机CPU将关于针对音频数据的多个处理的信息发送至音频处理引擎;由音频处理引擎基于所述多个处理的运行时间来确定音频处理引擎是否可执行所述多个处理;基于确定的结果,由音频处理引擎执行所述多个处理中的至少一个处理,或者请求主机CPU执行所述多个处理中的所述至少一个处理。
根据另一示例性实施例的一方面,提供存储有程序的指令的一个或更多个非暂时性计算机可读存储装置,所述程序通过使用计算系统实现音频处理方法,其中,所述计算系统包括主机中央处理器(CPU)和音频处理引擎,其中,所述音频处理方法包括:由音频处理引擎基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否可执行针对第一音频数据的第一处理;基于确定的结果,由音频处理引擎执行第一处理,或者请求主机CPU执行第一处理。
根据另一示例性实施例的一方面,提供一种用于执行音频处理的计算系统,所述计算系统包括:主机中央处理器(CPU);音频处理引擎,与主机CPU分离地设置,音频处理引擎被配置为基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否可执行针对第一音频数据的第一处理,并且基于确定的结果,由音频处理引擎执行第一处理或者请求主机CPU执行第一处理。
根据另一示例性实施例的一方面,提供一种用于执行音频处理的计算系统,所述计算系统包括:主机中央处理器(CPU);音频处理引擎,与主机CPU分离地设置并且不能按照充分输出处理的音频数据的速度执行将要对音频数据执行的多个处理中的至少一个处理,音频处理引擎被配置为确定音频处理引擎是否可执行所述多个处理中的第一处理,并且基于确定的结果,由音频处理引擎执行第一处理或者请求主机CPU执行第一处理。
附图说明
以上和/或其它方面将从下面结合附图进行的详细描述更清楚地理解,其中:
图1是根据示例性实施例的计算系统的框图;
图2A和图2B是示出执行音频处理的多个处理的操作的示例的示图;
图3是根据示例性实施例的图1的计算系统的音频处理引擎的操作方法的流程图;
图4是示出根据示例性实施例的图1的计算系统的音频子系统的示例的框图;
图5A和图5B是示出当对源音频数据执行具有高复杂度的处理时图4的音频子系统的流缓冲器的操作的示图;
图6是示出根据示例性实施例的图3的操作方法的操作S10的示例的流程图;
图7A和图7B是示出当执行具有高复杂度的处理以生成目标音频数据时图4的音频子系统的流缓冲器的操作的示图;
图8是示出根据示例性实施例的图3的操作方法的操作S10的示例的流程图;
图9是示出根据示例性实施例的在图3的操作方法的操作S30和S40中在主机中央处理器(CPU)和音频处理引擎之间的数据移动的示图;
图10A和图10B是示出根据示例性实施例的主机CPU和音频处理引擎的操作的示图;
图11是示出根据示例性实施例的主机CPU和音频处理引擎的操作的示图;
图12是根据示例性实施例的音频子系统的框图;
图13是示出根据示例性实施例的用于图12的音频子系统的查找表的示例的示图;
图14是示出根据示例性实施例的主机CPU与音频处理引擎之间的操作的示图;
图15是示出根据示例性实施例的主机CPU与音频处理引擎之间的操作的示图;
图16是示出根据示例性实施例的主机CPU与音频处理引擎之间的操作的示图;
图17是根据示例性实施例的作为卸载音频处理系统操作的计算系统的框图;
图18是示出根据示例性实施例的计算机可读存储装置的示图。
具体实施方式
图1是根据示例性实施例的计算系统1000的框图。参照图1,计算系统1000可包括连接至系统总线500以彼此通信的主机中央处理器(CPU)100、音频子系统200、外围设备300和存储器子系统400,并且还可包括脉冲编码调制(PCM)混合器600、扬声器700和麦克风800。
作为非限制性示例,计算系统1000可被实现为个人计算机(PC)、平板PC、移动电话、智能电话、电子阅读器、个人数字助理(PDA)、企业数字助理(EDA)、数字静止相机、数字视频相机、便携式多媒体播放器(PMP)、个人(或便携式)导航装置(PND)或者手持游戏机。
计算系统1000可从音频数据(或源音频数据)输出声音,或者可通过接收从计算系统1000的外部生成的声音并且记录所接收的声音来生成音频数据(或目标音频数据)。音频数据可以是可被存储在计算机可读存储装置(例如,半导体存储器装置)中的数字数据,或者可以是通过音频编解码器压缩的数据。作为非限制性示例,音频数据可以是具有诸如wma、mp3、mpga、rbs、mpeg3、wav、ra、rm、ram、m4a、m4b、mp4、m4r、mp4a、flac、aac、au、mp2、aif、aiff、aifc、amr、awb、ogg、oga、voc、wv、asf、mpc、ac3、mod、s3m、xm、it、669、amf、ams、dbm、dmf、dsm、far、mdl、med、mtm、okt、ptm、stm、ult、umx、mt2、psm、spx、3gp、3gpp、3ga、3g2、ape、shn、vqf、tta、qcp、qcelp、dts、caf、gsm、mus、w64、act、opus、alaw、oma或adx的文件扩展名的文件。如下所述,音频子系统200可包括音频处理引擎220,音频处理引擎220可包括用于处理音频数据的音频编解码器。
主机CPU 100是用于控制计算系统1000的元件,它可执行存储在存储器子系统400中所包括的存储器装置中的程序或者处理存储在存储器装置中的数据。例如,主机CPU 100可执行操作系统(OS),或者可在OS上执行应用程序。主机CPU 100可利用包括两个或更多个独立和实际的处理器(可被称作核)的多核处理器来实现。程序可包括多个指令,各个核可通过独立地执行指令来执行程序。
音频子系统200可通过处理源音频数据来生成RX PCM数据RX_PCM,或者可通过处理从PCM混合器600接收的TX PCM数据TX_PCM来生成音频数据。PCM数据(即,RX PCM数据RX_PCM和/或TX PCM数据TX_PCM)是以数字方式指示采样的模拟信号的数据,音频子系统200可向PCM混合器600发送或者从PCM混合器600接收PCM数据RX_PCM和/或TX_PCM。如图1所示,音频子系统200可包括音频处理引擎220。音频处理引擎(APE)220是用于处理源音频数据或者从源音频数据生成的音频数据,或者用于处理从TX PCM数据TX_PCM生成的音频数据的硬件块。例如,APE 220可以是通用处理器、数字信号处理器(DSP)或者专用逻辑块。
计算系统1000可包括诸如音频子系统200的专用硬件块,以处理特定数据。由于主机CPU 100可将音频数据卸载到音频子系统200以便于处理,当音频数据被卸载到音频子系统200时,计算系统的效率可增加。例如,可在回放音频的同时按照恒定速率消耗RX PCM数据RX_PCM,为此,从源音频数据生成RX PCM数据RX_PCM的操作可使用特定级别以上的吞吐量。如果主机CPU 100直接处理音频数据,则主机CPU 100可执行周期性地处理音频数据的处理,因此,执行另一处理的操作的中断和重新开始可被重复,结果,计算系统1000的效率可下降。由于主机CPU 100可将音频处理卸载到音频子系统200,使得音频子系统负责音频处理,主机CPU 100可执行另一处理,因此,计算系统1000的效率可增加。以这样的方式使用与主机CPU 100分离的独立硬件块的音频处理可被称作卸载音频处理。在主机CPU 100中执行的OS可提供能够与音频子系统200(或音频处理引擎220)接口以支持卸载音频处理的各种功能。
随着音频处理的复杂度增加,需要高性能音频处理引擎220。然而,诸如主机CPU100和音频处理引擎220的数字数据处理块可由于其数据处理能力的增加而消耗大量的成本和电力。因此,音频处理引擎220需要具有适合于音频处理的性能能力。换言之,在音频处理引擎220具有过高性能的情况下,音频处理引擎220可增加计算系统1000的成本和功耗。另一方面,在音频处理引擎220具有显著低的性能能力的情况下,因为音频处理引擎200无法在有限的时间内执行具有高复杂度的处理,所以音频处理引擎220可能无法正常地回放或记录声音。
根据示例性实施例,音频处理引擎220可基于形成音频处理的处理的复杂度来确定是否可执行音频处理的处理,并且当确定音频处理引擎220无法在有限的时间内执行该处理时可请求主机CPU 100执行该处理或者该处理的一部分。主机CPU 100可响应于来自音频处理引擎220的请求执行该处理或者该处理的一部分。然后,当主机CPU 100执行该处理或者该处理的一部分时,音频处理引擎220可将从源音频数据生成的RX PCM数据RX_PCM提供给PCM混合器600,或者将从TX PCM数据TX_PCM生成的目标音频数据提供给计算系统1000的另一元件(例如,存储器子系统400)。由于性能高于音频处理引擎220的主机CPU 100处理具有高复杂度的处理,所以可避免声音中断的情况,因此可正常地输出或记录声音。
外围设备300可包括执行各种相应功能的多个逻辑块。例如,外围设备300可包括处理用户的输入的逻辑块,并且可包括支持用于与在计算系统1000之外的装置通信的通信标准的逻辑块等。
存储器子系统400可包括一个或更多个存储器装置以及存储器控制器。在示例性实施例中,存储器子系统400可包括易失性存储器装置,易失性存储器装置可用作主机CPU100的高速缓冲存储器或者数据缓冲器。例如,存储器子系统400可包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、移动DRAM、双倍数据速率同步DRAM(DDR SDRAM)、低功耗DDR(LPDDR)SDRAM、图形DDR(GDDR)SDRAM或者Rambus DRAM(RDRAM)作为易失性存储器装置。
在示例性实施例中,存储器子系统400可包括非易失性存储器装置,非易失性存储器装置可存储形成在主机CPU 100和/或音频处理引擎220中执行的程序的多个指令,或者存储诸如源音频数据的数据。存储器子系统400可包括电可擦除可编程只读存储器(EEPROM)、闪速存储器、相变随机存取存储器(PRAM)、电阻随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁随机存取存储器(MRAM)或者铁电随机存取存储器(FRAM)作为非易失性存储器装置。
PCM混合器600可从RX PCM数据RX_PCM生成模拟信号,所生成的模拟信号可作为声音通过扬声器700输出。此外,PCM混合器600可从接收自麦克风800的模拟信号生成TX PCM数据TX_PCM,所生成的TX PCM数据TX_PCM可被提供给计算系统1000的另一元件。如上所述,PCM混合器600可按照恒定的速率消耗RX PCM数据RX_PCM以回放(或输出)声音。如果没有充足地供应(没有按照足以回放的速率供应)RX PCM数据RX_PCM,则声音可能中断,或者可能输出不同于源音频数据的声音。类似地,PCM混合器600可按照恒定的速率生成TX PCM数据TX_PCM以记录声音。如果按照恒定的速率生成的TX PCM数据TX_PCM未被音频子系统200充分处理(即,未按照足够的速率处理),则所生成的目标音频数据可能对应于与记录时的声音不同的声音。
在图1中,尽管PCM混合器600向音频子系统200发送或者从音频子系统200接收PCM数据RX_PCM或TX_PCM,但是PCM混合器600可向计算系统1000的另一元件发送或者从计算系统1000的另一元件接收PCM数据RX_PCM或TX_PCM。在示例性实施例中,PCM混合器600可支持诸如集成芯片间声音(I2S)接口的串行总线接口标准,并且可向包括在外围设备300中的支持该串行总线接口标准的块发送或者从该块接收PCM数据RX_PCM或TX_PCM。
图2A和图2B是示出执行形成音频处理的多个处理的操作的示例的示图。具体地讲,图2A示出从源音频数据D_SRC生成RX PCM数据RX_PCM的操作,图2B示出从TX PCM数据TX_PCM生成目标音频数据D_TGT的操作。图2A和图2B所示的处理仅是用于音频处理的处理的示例,还可执行图2A和图2B中未示出的各种处理。
参照图2A,可对源音频数据D_SRC执行解码处理11。解码处理11可通过使用与源音频数据D_SRC的格式对应的音频编解码器将源音频数据D_SRC解码。通过将源音频数据D_SRC解码而生成的第一音频数据D_M1a可以是包括根据时间的流逝列出的样本的流数据。
可对第一音频数据D_M1a执行变速回放(VSP)处理12,并且可生成第二音频数据D_M2a。例如,计算系统1000的用户可改变声音回放速度,VSP处理12可通过执行插值或抽取来调节音频回放速度。
可对第二音频数据D_M2执行采样率转换(SRC)处理13,并且可生成第三音频数据D_M3a。例如,源音频数据D_SRC可具有不同于计算系统1000(或PCM混合器600)所支持的采样率的采样率。因此,SRC处理13可通过执行插值、抽取、下采样或上采样来校正与计算系统1000的采样率不同的源音频数据D_SRC的采样率。
可对第三音频数据D_M3a执行声音效果处理14,并且可生成RX PCM数据RX_PCM。通过执行声音效果处理14,计算系统1000可通过扬声器700输出应用了由用户设置的或者默认设置的声音效果的声音。例如,声音效果可包括回声、合声、均衡、机器人语音效果和三维(3D)音频效果,并且声音效果处理14的复杂度可根据所应用的声音效果来确定。
参照图2B,可对TX PCM数据TX_PCM执行滤波处理21。滤波处理21可以是将特定类型的滤波器应用于声音的处理,可通过将具有有限数量的样本的数字滤波器应用于TX PCM数据TX_PCM来生成第一音频数据D_M1b。
可对第一音频数据D_M1b执行采样率转换(SRC)处理22,并且可生成第二音频数据D_M2b。例如,目标音频数据D_TGT可具有与计算系统1000(或PCM混合器600)所支持的采样率不同的采样率。因此,类似于图2A的SRC处理13,SRC处理22可校正与计算系统1000的采样率不同的TX PCM数据TX_PCM的采样率。
可对第二音频数据D_M2b执行语音增强处理23,并且可生成第三音频数据D_M3b。例如,计算系统1000的用户可使用计算系统1000的声音记录来记录语音,因此,可执行从TXPCM数据TX_PCM提取语音并且处理所提取的语音的操作。
可对第三音频数据D_M3b执行编码处理24。编码处理24可通过使用与目标音频数据D_TGT的格式对应的音频编解码器来对第三音频数据D_M3b进行编码。
为了满足特定级别以上的吞吐量,必须在有限的时间内完成针对源音频数据D_SRC的一系列处理(即,处理11至14)和/或针对TX PCM数据TX_PCM的一系列处理(即,处理21至24)。因此,在现有技术的卸载音频处理系统中,可考虑在其上安装具有高性能的音频处理引擎来执行具有高复杂度的处理(例如,声音效果处理14或语音增强处理23)。然而,如上所述,现有技术的具有高性能的音频处理引擎可导致高成本和高功耗,并且当具有高复杂度的处理没有频繁地执行时还可能降低卸载音频处理系统的效率。此外,即使在设计卸载音频处理系统的时候具有适合于处理级别的性能的音频处理引擎被安装在卸载音频处理系统上,当新的处理(例如,与新的声音效果对应的处理)具有高于现有处理的复杂度时,该音频处理引擎也可能无法执行新的处理。
相比之下,在根据示例性实施例的音频处理方法中,主机CPU 100可执行具有高复杂度的处理或者处理的一部分,因此,可考虑成本、功耗和性能最佳地提供音频处理引擎220,并且由于将新处理或者新处理的一部分卸载以由主机CPU 100执行的能力,计算系统1000能够执行具有高于现有处理的复杂度的新处理。
图3是示出根据示例性实施例的图1的计算系统1000的音频处理引擎220的操作方法的流程图。具体地讲,图3示出从第一处理的开始到第一处理的结束音频处理引擎220的操作方法。将理解,该操作方法可被应用于构成音频处理引擎220所执行的操作的任何处理(例如,图2A和图2B所示的任何处理)。当音频处理引擎220利用处理器实现时图3所示的音频处理引擎220的操作方法可通过执行软件程序的多个指令来执行,或者当音频处理引擎220利用专用逻辑块实现时图3所示的音频处理引擎220的操作方法可通过状态机来执行。如图3所示,音频处理引擎220的操作方法可包括操作S10至S40。
在操作S10中,音频处理引擎220可基于第一处理的运行时间来确定是否可执行第一处理。第一处理可以是针对音频数据或PCM数据的多个处理中的一个。第一处理的运行时间可表示当第一处理在音频处理引擎220中执行时的执行时间,并且当第一处理具有高复杂度时可较长。如下所述,音频处理引擎220可通过使用各种方法来获取关于第一处理的运行时间的信息,并且可基于第一处理的运行时间确定是否可执行第一处理。例如,音频处理引擎220可基于第一处理的运行时间,确定当音频处理引擎220执行第一处理时音频处理引擎220是否可按照等于或大于PCM混合器600消耗RX PCM数据RX_PCM的速率的速率来生成RXPCM数据RX_PCM。此外,音频处理引擎220可基于第一处理的运行时间,确定当音频处理引擎220执行第一处理时音频处理引擎220是否可按照等于或大于PCM混合器600生成TXPCM数据TX_PCM的速率的速率来处理TX PCM数据TX_PCM。
如果在操作S15中确定可执行第一处理(S15,是),则音频处理引擎220可在操作S20中执行第一处理。如果在操作S15中确定无法执行第一处理(S15,否),则音频处理引擎220可在操作S30中请求主机CPU 100执行第一处理。在一些情况下,音频处理引擎220可请求主机CPU 100执行第一处理的一部分。主机CPU 100可响应于音频处理引擎220的请求执行第一处理或者第一处理的一部分。在操作S40中,音频处理引擎220可从主机CPU 100接收关于执行第一处理的结果的信息。在一些情况下,音频处理引擎220可从主机CPU 100接收关于执行第一处理的一部分的结果的信息。在一些示例性实施例中,该操作方法被应用于操作方法的各个处理。即,针对操作方法的各个处理,音频处理引擎220确定是执行该处理还是请求主机CPU 100执行该处理或者该处理的一部分。以下,将参照附图更详细地描述图3的操作S10至S40。
图4是根据示例性实施例的音频子系统200a(图1的计算机系统1000的音频子系统200的示例)的框图。如参照图1所述,音频子系统200a可从源音频数据生成RX PCM数据RX_PCM,或者从TX PCM数据TX_PCM生成目标音频数据。
参照图4,音频子系统200a可包括音频处理引擎220a和流缓冲器240a。音频处理引擎220a和流缓冲器240a可经由系统总线500与计算系统1000的其它元件通信。流缓冲器240a可存储当针对源音频数据的处理被执行时所生成的数据,或者当针对TX PCM数据TX_PCM的处理被执行所生成的数据。例如,流缓冲器240a可存储图2A的第一音频数据D_M1a至第三音频数据D_M3a和/或图2B的第一音频数据D_M1b至第三音频数据D_M3b或者其某一部分,并且还可存储PCM数据RX_PCM或TX_PCM或者其某一部分。PCM混合器600可接收存储在流缓冲器240a中的RX PCM数据RX_PCM并且生成模拟信号,并且还可生成TX PCM数据TX_PCM并且将所生成的TX PCM数据TX_PCM存储在流缓冲器240a中。
图5A和图5B是示出当对源音频数据执行具有高复杂度的处理时图4的音频子系统200a的流缓冲器240a的操作的示图。具体地讲,图5A示出当具有高复杂度的处理由图4的音频处理引擎220a执行时流缓冲器240a的操作,图5B示出当具有高复杂度的处理由主机CPU100a执行时流缓冲器240a的操作。
在图5A和图5B中,假设流缓冲器240a可存储RX PCM数据RX_PCM,并且具有高复杂度的处理是多个处理的最终处理并且是生成发送至PCM混合器600的RX PCM数据RX_PCM的处理。如图5A和图5B所示,PCM混合器600可按照恒定的速率消耗RX PCM数据RX_PCM以生成模拟信号并且将所生成的模拟信号发送至扬声器700。
为了使PCM混合器600稳定地生成模拟信号,可供应RX PCM数据RX_PCM以使得流缓冲器240a可存储等于或大于参考量RX_REF(可以是与将要在特定时间段期间回放的声音对应的RX PCM数据RX_PCM的量)的RX PCM数据RX_PCM。例如,参考量RX_REF可以是与将要在约40ms期间回放的声音对应的RX PCM数据RX_PCM的量。在回放声音的同时流缓冲器240a存储小于参考量RX_REF的RX PCM数据RX_PCM的现象可被称作欠运行(underrun)。RX PCM数据RX_PCM被供应给流缓冲器240a以使得在流缓冲器240中不会发生欠运行。另一方面,可供应RX PCM数据RX_PCM以使得存储在流缓冲器240a中的RX PCM数据RX_PCM的量超过参考量RX_REF。例如,当在声音的回放期间在流缓冲器240a存储大于参考量RX_REF的量的RX PCM数据RX_PCM的状态下根据用户的输入增加、改变或者取消声音效果时,反应了用户的输入的声音可能被延迟并且可输出延迟的声音。
参照图5A,当执行具有高复杂度的处理时,具有低于主机CPU 100a的性能的性能的音频处理引擎220a可能按照比PCM混合器600消耗RX PCM数据RX_PCM的速率低的速率生成RX PCM数据RX_PCM。因此,存储在流缓冲器240a中的RX PCM数据RX_PCM的量可逐渐减少,并且如图5A所示,可发生存储在流缓冲器240a中的RX PCM数据RX_PCM的量小于参考量RX_REF的现象(即,欠运行)。
参照图5B,当执行具有高复杂度的处理时,具有高于音频处理引擎220a的性能的性能的主机CPU 100a可按照等于或大于PCM混合器600消耗RX PCM数据RX_PCM的速率的速率生成RX PCM数据RX_PCM。因此,如图5B所示,存储在流缓冲器240a中的RX PCM数据RX_PCM的量可大于参考量RX_REF,因此,PCM混合器600可稳定地生成模拟信号。
图6是示出根据示例性实施例的图3的操作S10的示例的流程图。如上面参照图3所述,音频处理引擎220可在操作S10中基于第一处理的运行时间确定是否可执行第一处理。在图6的示例中,第一处理可以是针对源音频数据的后处理中的一个。
参照图6,音频处理引擎220可计算当执行第一处理时RX PCM数据RX_PCM的生成速率(操作S11)。例如,音频处理引擎220可基于第一处理的运行时间来计算当音频处理引擎220执行第一处理时RX PCM数据RX_PCM的生成速率。
在操作S12中,音频处理引擎220可将RX PCM数据RX_PCM的生成速率与RX PCM数据RX_PCM的消耗速率进行比较。换言之,音频处理引擎220可将在操作S11中计算的RX PCM数据RX_PCM的生成速率与PCM混合器600消耗RX PCM数据RX_PCM的速率进行比较。
当RX PCM数据RX_PCM的生成速率等于或大于RX PCM数据RX_PCM的消耗速率时(S12,是),音频处理引擎220可确定可在音频处理引擎220中执行第一处理(操作S13)。另一方面,当RX PCM数据RX_PCM的生成速率小于RX PCM数据RX_PCM的消耗速率时(S12,否),如图5A所示可发生欠运行,因此,音频处理引擎220可确定无法在音频处理引擎220中执行第一处理(操作S14)。
图7A和图7B是示出当具有高复杂度的处理被执行以生成目标音频数据时图4的流缓冲器240a的操作的示图。具体地讲,图7A示出当具有高复杂度的处理由图4的音频处理引擎220a执行时流缓冲器240a的操作,图7B示出当具有高复杂度的处理由主机CPU 100a执行时流缓冲器240a的操作。
在图7A和图7B中,假设流缓冲器240a可存储TX PCM数据TX_PCM,并且具有高复杂度的处理是多个处理中的第一处理并且是处理从PCM混合器600接收的TX PCM数据TX_PCM的处理。如图7A和图7B所示,PCM混合器600可从麦克风800接收模拟信号,因此按照恒定的速率生成TX PCM数据TX_PCM。
为了不遗漏PCM混合器600所接收的模拟信号,即,为了没有遗漏的记录声音,TXPCM数据TX_PCM可被处理或消耗以使得等于或小于参考量TX_REF的TX PCM数据TX_PCM可被存储在流缓冲器240a中。例如,参考量TX_REF可以是与在特定时间段(例如,约40ms)期间接收的声音对应的TX PCM数据TX_PCM的量。在记录声音的同时流缓冲器240a存储超过参考量TX_REF的TX PCM数据TX_PCM的现象可被称作溢出(overflow)。在流缓冲器240a中处理或消耗TX PCM数据TX_PCM以使得在流缓冲器240中不发生溢出。
参照图7A,当执行具有高复杂度的处理时,具有低于主机CPU 100a的性能的性能的音频处理引擎220a可按照比PCM混合器600供应TX PCM数据TX_PCM的速率低的速率处理TX PCM数据TX_PCM。因此,存储在流缓冲器240a中的TX PCM数据TX_PCM的量可逐渐增加,并且如图7A所示,可发生存储在流缓冲器240a中的TX PCM数据TX_PCM的量大于参考量TX_REF的现象(即,溢出)。
参照图7B,当执行具有高复杂度的处理时,具有高于音频处理引擎220a的性能的性能的主机CPU 100a可按照等于或大于PCM混合器600供应TX PCM数据TX_PCM的速率的速率处理TX PCM数据TX_PCM。因此,如图7B所示,存储在流缓冲器240a中的TX PCM数据TX_PCM的量可小于参考量TX_REF,因此,从PCM混合器600供应的TX PCM数据TX_PCM可被没有遗漏地处理。
图8是示出根据示例性实施例的图3的操作S10的示例的流程图。如上面参照图3所述,音频处理引擎220可在操作S10中基于第一处理的运行时间确定是否可执行第一处理。在图8的示例中,第一处理可以是用于从声音生成目标音频数据的预处理中的一个。
参照图8,音频处理引擎220可计算当执行第一处理时TX PCM数据TX_PCM的处理速率(操作S16)。例如,音频处理引擎220可基于第一处理的运行时间来计算当音频处理引擎220执行第一处理时TX PCM数据TX_PCM的处理速率。
在操作S17中,音频处理引擎220可将TX PCM数据TX_PCM的处理速率与TX PCM数据TX_PCM的生成速率进行比较。换言之,音频处理引擎220可将在操作S16中计算的TX PCM数据TX_PCM的处理速率与PCM混合器600生成(或供应)TX PCM数据TX_PCM的速率进行比较。
当TX PCM数据TX_PCM的处理速率等于或大于TX PCM数据TX_PCM的生成速率时(S17,是),音频处理引擎220可确定可在音频处理引擎220中执行第一处理(操作S18)。另一方面,当TX PCM数据TX_PCM的处理速率小于TX PCM数据TX_PCM的生成速率时(S17,否),可如图7A所示发生溢出,因此,音频处理引擎220可确定不可在音频处理引擎220中执行第一处理(操作S19)。
图9是示出根据示例性实施例的在图3的操作S30和S40中在主机CPU 100b与音频处理引擎220b之间的数据移动的示图。如上面参照图3所述,音频处理引擎220b可请求主机CPU 100b执行第一处理(操作S30),并且可从主机CPU 100b接收关于执行第一处理的结果的信息(操作S40)。
当音频处理引擎220b请求主机CPU 100b执行第一处理时,关于第一处理的执行的信息可被发送至主机CPU 100b。主机CPU 100b可基于从音频处理引擎220b接收的信息来执行第一处理。例如,如图9所示,第一处理的标识符ID_P1、输入数据的访问信息ACC_IN、输出数据的访问信息ACC_OUT以及多个参数PAR_1、PAR_2等可从音频处理引擎220b被发送至主机CPU 100b作为关于第一处理的信息。
第一处理的标识符ID_P1可使得主机CPU 100b知道音频处理引擎220b请求主机CPU 100b执行的处理是第一处理,并且主机CPU 100B可由于第一处理的标识符ID_P1而识别第一处理,然后执行第一处理。
输入数据的访问信息ACC_IN可包括关于与第一处理的目标对应的数据的访问信息。例如,与第一处理的目标对应的数据可被存储在图1的存储器子系统400中所包括的存储器装置(例如,DRAM)中。输入数据的访问信息ACC_IN可包括存储在DRAM中的数据的起始地址,主机CPU 100b可基于该起始地址来访问DRAM并且从DRAM接收第一处理的输入数据。
输出数据的访问信息ACC_OUT可包括关于执行第一处理时所生成的数据的访问信息。例如,当主机CPU 100b执行第一处理时所生成的数据可被存储在图1的存储器子系统400中所包括的存储器装置(例如,DRAM)中。音频处理引擎200b可指定执行第一处理时所生成的数据将要被存储的地址,输出数据的访问信息ACC_OUT可包括所生成的数据将要被存储的地址。主机CPU 100b可基于所生成的数据将要被存储的地址来访问DRAM,并且将第一处理的输出数据存储在DRAM中。
多个参数PAR_1、PAR_2等可将第一处理的性质定义为第一处理的参数。例如,当第一处理对应于使用回声效果作为声音效果的操作时,所述多个参数PAR_1、PAR_2等中的一个可具有指示回声效果的程度的值。当第一处理对应于使用均衡的操作时,所述多个参数PAR_1、PAR_2等中的至少一个可具有指示滤波器的类型或者定义滤波器的特性的值。主机CPU 100b可基于所述多个参数PAR_1、PAR_2等来执行第一处理。
主机CPU 100b可执行第一处理并且将关于执行第一处理的结果的信息发送至音频处理引擎220。音频处理引擎220b可基于关于执行第一处理的结果的信息来检查第一处理是否被完整地执行,并且可在执行随后的处理时参考关于执行第一处理的结果的信息。例如,如图9所示,错误信息ERR、日志信息LOG等可从主机CPU 100b被发送至音频处理引擎220b作为关于执行第一处理的结果的信息。
错误信息ERR可包括关于主机CPU 100b执行第一处理时所发生的错误的信息。例如,当没有检测到与从音频处理引擎220b接收的第一处理的标识符ID_P1对应的第一处理或者根据输入数据的访问信息ACC_IN输入数据不可访问时,无法正常地执行第一处理,主机CPU 100b可向音频处理引擎220b发送错误信息ERR,错误信息ERR包括无法正常地执行第一处理的原因。此外,即使在主机CPU 100b完成第一处理的执行的情况下,主机CPU 100b也可向音频处理引擎220b发送错误信息ERR,错误信息ERR包括关于执行第一处理时发生的错误的信息。例如,当参数PAR_1(第一参数)超过允许的最大值时,主机CPU 100b可通过使用允许的最大值来完成第一处理的执行,并且可向音频处理引擎220b发送包括第一参数PAR_1超过允许的最大值的内容的错误信息ERR。
日志信息LOG可包括关于主机CPU 100执行第一处理时所发生的事件的信息。例如,日志信息LOG可包括用于执行第一处理的时间、输出数据的大小以及主机CPU 100中的第一处理的共享。音频处理引擎220可基于所接收的日志信息LOG来执行随后的处理,并且可在请求主机CPU 100执行第一处理时参考日志信息LOG。
图10A和图10B是示出根据示例性实施例的主机CPU和音频处理引擎的操作的示图。具体地讲,图10A示出在音频回放期间主机CPU 100c和音频处理引擎220c的操作,图10B示出在声音记录期间主机CPU 100d和音频处理引擎220d的操作。在图10A的示例中,可对源音频数据D_SRC执行图2A所示的处理,并且声音效果处理14(具有高复杂度的处理)可由主机CPU 100c执行。在图10B的示例中,可对TX PCM数据TX_PCM执行图2B所示的处理,并且语音增强处理23(具有高复杂度的处理)可由主机CPU 100d执行。在图10A和图10B中,包括在主机CPU 100c和100d或者音频处理引擎220c和220d中的各个块可以是包括多个指令的软件模块。
根据示例性实施例,主机CPU 100c可执行操作系统。如图10A和图10B所示,操作系统可提供在内核空间中执行的内核40以及在用户空间中执行的框架30。内核40可翻译来自用户空间的输入和输出请求并且将该请求提供给硬件。框架30可向应用程序提供功能,应用程序可基于框架30来有效地设计。
参照图10A,音频处理引擎220c可接收源音频数据D_SRC。例如,在主机CPU 100c中执行的音频播放器是应用程序,并且可响应于从图1的外围设备300接收的用户输入提取关于源音频数据D_SRC存储在存储器子系统400中的位置的信息。音频处理引擎220c可从主机CPU 100c接收关于源音频数据D_SRC的位置的信息,因此可读取源音频数据D_SRC并且接收读取的源音频数据D_SRC。
类似于图2A的示例,当对源音频数据D_DRC执行解码处理11时可生成第一音频数据D_M1a,当对第一音频数据D_M1a执行VSP处理12时可生成第二音频数据_M2a,当对第二音频数据D_M2a执行SRC处理13时可生成第三音频数据D_M3a。接下来,当对第三音频数据D_M3a执行图2A的声音效果处理14时可生成RX PCM数据RX_PCM。根据示例性实施例,音频处理引擎220c可基于图2A的声音效果处理14的运行时间执行请求主机CPU 100c执行声音效果处理14的操作19。然而,如上面所讨论的,这仅是示例,音频处理引擎220c可执行请求主机CPU 100c执行操作方法的一个或更多个处理(例如,解码、VSP、SRC等处理)的操作。
执行声音效果处理14的请求19可通过使用各种方法从音频处理引擎220c被发送至主机CPU 100c。例如,如图10A所示,音频处理引擎220c可针对主机CPU 100c生成中断。可选地,在主机CPU 100c指示音频处理引擎220c从源音频数据D_SRC回放声音之后,主机CPU1000c可通过轮询检查是否从音频处理引擎220c发生执行处理的请求19。
参照图10A,内核40的音频处理引擎(APE)驱动器41可响应于由音频处理引擎220c生成的中断将从音频处理引擎220c接收的请求发送至用户空间。例如,如图10A所示,音频处理引擎驱动器41可通过使用用于将针对硬件装置生成的事件发送至用户空间的“uevent”来将从音频处理引擎220c接收的请求19发送至用户空间。
被音频处理引擎驱动器41发送至用户空间的音频处理引擎220c的请求可由音频硬件抽象层(HAL)31处理。可提供音频HAL 31以使得应用程序(例如,声音效果程序32)不直接处理对内核40的硬件(即,音频处理引擎220c)的调用和响应,以使得应用程序(例如,在此示例中,声音效果程序)可独立于硬件来设计并且被有效地设计。
声音效果程序32(应用程序)可实现音频处理引擎220c请求主机CPU 100c执行的处理。换言之,声音效果程序32可通过针对第三音频数据D_M3a实现声音效果处理14来生成RX PCM数据RX_PCM。这样,由于针对音频数据的处理由应用程序执行,因此计算系统1000可通过增加和/或改变应用程序来支持新的音频处理。因此,计算系统1000针对音频处理的灵活性可增加。
当由声音效果程序32完成声音效果处理14时,声音效果程序32可通过音频HAL 31将关于通过执行声音效果处理14而获得的结果的信息发送至内核40的音频处理引擎(APE)驱动器41。例如,如图10A所示,音频HAL 31可通过使用允许用户空间的应用程序与硬件装置或者内核40的元件通信的“ioctl”将关于执行声音效果处理14的结果的信息发送至音频处理引擎驱动器41。
响应于音频HAL 31的调用,音频处理引擎(APE)驱动器41可将关于执行声音效果处理14的结果的信息发送至音频处理引擎220c。例如,如图10A所示,音频处理引擎(APE)驱动器41可通过使用通过队列消息和中断驱动的信号来控制硬件装置之间的通信的“邮箱”将关于执行声音效果处理14的结果的信息发送至音频处理引擎220c。
参照图10B,音频处理引擎220d可接收TX PCM数据TX_PCM。例如,音频处理引擎220d可基于关于由图1的PCM混合器600生成的TX PCM数据TX_PCM被存储的位置的信息来读取TX PCM数据TX_PCM,并且可接收所读取的TX PCM数据TX_PCM。类似于图2B的示例,滤波处理21、SRC处理22、语音增强处理23和编码处理24可被顺序地执行,因此,可生成第一音频数据D_M1b、第二音频数据D_M2b和第三音频数据D_M3b以及目标音频数据D_TGT。根据示例性实施例,音频处理引擎220d可基于图2B的语音增强处理23的运行时间来执行请求主机CPU100d执行语音增强处理23的操作。然而,如上面所讨论的,这仅是示例,音频处理引擎220d可执行请求主机CPU 100d执行操作方法的一个或更多个处理(例如,滤波、SRC、编码等处理)的操作。
类似于图10A,音频处理引擎200d的请求29可经由音频处理引擎(APE)驱动器42和音频HAL 33被发送至语音增强程序34。语音增强程序34(应用程序)可通过实现音频处理引擎220d所请求的语音增强处理23来生成第三音频数据D_M3b。
图11是示出根据示例性实施例的主机CPU 100e和音频处理引擎220e的操作的示图。具体地讲,图11是示出RX PCM数据RX_PCM和TX PCM数据TX_PCM在主机CPU 100e和音频处理引擎220e中被并行地处理的操作的示图。在图11中,RX PCM数据RX_PCM处理被示出为没有阴影,TX PCM数据TX_PCM处理被示出为有阴影。例如,当包括图11的主机CPU 100e和音频处理引擎220e的图1的计算系统1000是移动电话时,处理由PCM混合器600从用户的语音生成的TX PCM数据TX_PCM的操作以及从接收自另一方的终端(例如,移动电话)的音频数据生成RX PCM数据RX_PCM的操作可由主机CPU 100e和音频处理引擎220e并行地执行。因此,计算系统1000可提供高吞吐量。
RX PCM数据RX_PCM可包括按照规则的时间间隔对齐的多个样本RX_SAM1和RX_SAM2,TX PCM数据TX_PCM可包括按照规则的时间间隔对齐的多个样本TX_SAM1和TX_SAM2。例如,如图11所示,两个相邻样本(例如,RX_SAM1和RX_SAM2)之间的时间间隔可为约20毫秒(ms)。当如移动电话中一样PCM数据(即,TX PCM数据TX_PCM和RX PCM数据RX_PCM)对应于语音时,样本之间的时间间隔可被称作语音帧。在语音帧内处理或生成RX PCM数据RX_PCM的样本RX_SAM1和RX_SAM2以及TX PCM数据TX_PCM的样本TX_SAM1和TX_SAM2,以使得可正常地输出或记录声音。根据示例性实施例,由于复杂的处理由主机CPU 100e执行,所以可在语音帧内处理或生成RX PCM数据RX_PCM的样本RX_SAM1和RX_SAM2以及TX PCM数据TX_PCM的样本TX_SAM1和TX_SAM2。
参照图11,音频处理引擎220e可通过轮询检查是否生成TX PCM数据TX_PCM的样本。因此,如图11所示,音频处理引擎220e可在时间T1执行第一语音增强处理VE1作为针对TX PCM数据TX_PCM的样本TX_SAM1的处理。
在第一语音增强处理VE1结束的时间T2,音频处理引擎220e可确定是否执行将要在第一语音增强处理VE1之后执行的第二语音增强处理VE2。换言之,当基于第二语音增强处理VE2的运行时间,音频处理引擎220e直接执行第二语音增强处理VE2时,音频处理引擎220e可确定第二语音增强处理VE2和编码处理是否可在TX PCM数据TX_PCM的样本TX_SAM2被生成之前完成。此外,由于如上所述在20ms内处理或生成TX PCM数据TX_PCM的样本TX_SAM1和RX PCM数据RX_PCM的样本RX_SAM1以便正常地输出或记录声音,所以音频处理引擎220e可考虑针对RX PCM数据RX_PCM的处理以及针对TX PCM数据TX_PCM的处理的运行时间。
如图11所示,音频处理引擎220e可请求主机CPU 100e执行第二语音增强处理VE2,主机CPU 100e可响应于音频处理引擎220e的请求执行第二语音增强处理VE2。当完成第二语音增强处理VE2时,主机CPU 100e可向音频处理引擎220e告知第二语音增强处理VE2的完成。
在音频处理引擎220e请求主机CPU 100e执行第二语音增强处理VE2之后,音频处理引擎220e可使用中断,因此识别出从另一方终端接收到将要作为声音通过扬声器700输出的音频数据。因此,如图11所示,音频处理引擎220e可在时间T3执行将所接收的音频数据解码的处理。
在时间T4,音频处理引擎220e可完成将所接收的音频数据解码的处理,并且确定是否执行第三语音增强处理VE3。在时间T5,基于第三语音增强处理VE3的运行时间,音频处理引擎220e可执行第三语音增强处理VE3。
在时间T6,音频处理引擎220e可完成第三语音增强处理VE3并且确定是否执行第四语音增强处理VE4。基于第四语音增强处理VE4的运行时间,音频处理引擎220e可请求主机CPU 100e执行第四语音增强处理VE4,主机CPU可响应于音频处理引擎220e的请求执行第四语音增强处理VE4。
在音频处理引擎220e请求主机CPU 100e执行第四语音增强处理VE4之后,音频处理引擎220e可等待直至主机CPU 100e完成针对TX PCM数据TX_PCM的样本TX_SAM1的第二语音增强处理VE2为止。如图11所示,由于主机CPU 100e在时间T4之前完成第二语音增强处理VE2,所以音频处理引擎220e可在时间T7对通过执行第二语音增强处理VE2而获得的结果数据执行编码处理。编码处理可在时间T8完成,所编码的音频数据可被发送至另一方终端装置。在时间T9,音频处理引擎220e可将作为由主机CPU 100e执行的第四语音增强处理VE4的结果的RX PCM数据RX_PCM的样本RX_SAM2发送至PCM混合器600。
图12是根据示例性实施例的音频子系统200f的框图。如上面参照图1所述,音频子系统200f可通过处理源音频数据来生成RX PCM数据RX_PCM,和/或可通过处理TX PCM数据TX_PCM来生成目标音频数据。
如图12所示,音频子系统200f可包括音频处理引擎220f、流缓冲器240f和查找表260f。图12的音频处理引擎220f和流缓冲器240f可分别类似于图4的音频处理引擎220a和流缓冲器240a。
查找表260f可存储关于针对音频数据的处理的运行时间的信息。例如,查找表260f可将对预定数量的样本执行第一处理所花费的时间存储为关于第一处理的运行时间的信息。为了如上面参照图3所描述的基于第一处理的运行时间确定是否可执行第一处理,音频处理引擎220f可访问查找表260f并且获取关于第一处理的运行时间的信息。查找表260f的细节将在下面参照图13来描述。
图13是示出根据示例性实施例的与图12的查找表260f的示例对应的查找表260f'的示图。如上面参照图12所述,查找表260f'可存储关于针对音频数据的处理的运行时间的信息。参照图13,查找表260f'可包括关于四个处理(即,第一处理P1至第四处理P4)的运行时间的信息。
图1的计算系统1000可支持多个操作模式。例如,计算系统1000可支持正常模式、省电模式(例如,睡眠模式)、深度睡眠模式等,计算系统1000的元件可根据设定的模式来操作。例如,图12的音频处理引擎220f在省电模式或深度睡眠模式期间可降低操作速度。因此,查找表260f'可存储与多个模式对应的关于处理的运行时间的信息。
参照图13,音频处理引擎220f可支持第一模式至第三模式,并且可存储与第一模式至第三模式对应的关于第一处理P1至第四处理P4的运行时间的信息。例如,第一处理P1在第一模式至第三模式下可分别具有40ms、50ms和60ms的运行时间,第二处理P2在第一模式至第三模式下可分别具有55ms、65ms和75ms的运行时间,等等。
根据示例性实施例,查找表260f'可被更新。例如,图1的主机CPU 100可从外围设备300或者存储器子系统400获取关于新处理的运行时间的信息。音频子系统200f可接收关于新处理的运行时间的信息,并且可根据所接收的信息来更新查找表260f'。
图14是示出根据示例性实施例的主机CPU 100与音频处理引擎220之间的操作的示图。具体地讲,图14顺序地示出在音频回放期间主机CPU 100与音频处理引擎220之间的操作。
在操作S101中,主机CPU 100可请求音频处理引擎220回放音频。例如,主机CPU100可响应于用户输入将用于访问源音频数据的信息以及关于将要对源音频数据执行的处理的信息发送至音频处理引擎220。
在操作S102中,音频处理引擎220可对源音频数据进行解码。例如,源音频数据可以是通过使用音频编解码器压缩的数据,音频处理引擎220可通过将源音频数据解码来生成流数据。
在操作S103中,音频处理引擎220可确定是否可执行第一处理。在图14中,第一处理可以是例如对音频数据执行的多个后处理中的一个。例如,当主机CPU 100请求音频回放时发送至音频处理引擎220的关于处理的信息可包括关于第一处理的信息,音频处理引擎220可基于第一处理的运行时间来确定是否在音频处理引擎220中执行第一处理。
如果在操作S103-1中确定可执行第一处理(S103-1,是),则音频处理引擎220可在操作S104中执行第一处理。如果在操作S103-1中确定不可执行第一处理(S103-1,否),则音频处理引擎220可在操作S105中请求主机CPU 100执行第一处理。例如,音频处理引擎220可针对主机CPU 100生成中断,并且可将用于执行第一处理的信息发送至主机CPU 100。
在操作S106中,主机CPU 100可执行第一处理。例如,主机CPU 100可执行内核以及在内核上执行的应用程序,主机CPU 100可通过使用所述应用程序来执行第一处理。
在操作S107中,主机CPU 100可将关于执行第一处理的结果的信息发送至音频处理引擎220。例如,主机CPU 100可将与第一处理的执行有关的错误信息和日志信息以及指示第一处理的执行完成的信号发送至音频处理引擎220。
图15是顺序地示出根据示例性实施例的主机CPU 100与音频处理引擎220之间的操作的示图。具体地讲,图15顺序地示出在声音记录期间主机CPU 100与音频处理引擎220之间的操作。
在操作S201中,主机CPU 100可请求音频处理引擎220记录声音。例如,主机CPU100可将关于将要对TX PCM数据TX_PCM执行的处理的信息以及关于目标音频数据将要被存储的地址的信息发送至音频处理引擎220,以在呼叫功能被激活时记录用户的语音。
在操作S202中,音频处理引擎220可确定是否可执行第一处理。在图15中,第一处理可以是对TX PCM数据TX_PCM执行的多个预处理中的一个。例如,当主机CPU 100请求声音记录时发送至音频处理引擎220的关于处理的信息可包括关于第一处理的信息,音频处理引擎220可基于第一处理的运行时间来确定是否在音频处理引擎220中执行第一处理。
如果在操作S202-1中确定可执行第一处理(S202-1,是),则音频处理引擎220可在操作S203中执行第一处理。如果在操作S202-1中确定不可执行第一处理(S202-1,否),则音频处理引擎220可在操作S204中请求主机CPU 100执行第一处理。例如,音频处理引擎220可针对主机CPU 100生成中断,并且可将用于执行第一处理的信息发送至主机CPU 100。
在操作S205中,主机CPU 100可执行第一处理。在操作S206中,主机CPU 100可将关于执行第一处理的结果的信息发送至音频处理引擎220。音频处理引擎220可直接对通过执行第一处理而获得的数据执行附加的预处理,或者请求主机CPU 100执行附加的预处理。
在操作S207中,音频处理引擎220可生成目标音频数据。换言之,在操作S201中主机CPU 100请求声音记录时发送至音频处理引擎220的预处理被执行完成之后,音频处理引擎220可通过对数据进行编码来生成目标音频数据。所生成的目标音频数据可被存储在计算系统1000中或者被发送至计算系统1000的外部。
图16是顺序地示出根据示例性实施例的主机CPU 100与音频处理引擎220之间的操作的示图。具体地讲,图16顺序地示出当在回放音频的同时用户提供关于音频回放的输入时主机CPU 100与音频处理引擎220之间的操作。
在操作S301中,主机CPU 100可请求音频处理引擎220回放音频。在操作S302中,音频处理引擎220可对源音频数据进行解码。音频处理引擎220还可对通过将源音频数据解码而生成的流数据执行至少一个处理。
在音频回放期间,主机CPU 100可在操作S303中接收指示执行第一处理的用户输入。例如,用户可激活声音效果功能,在这种情况下,主机CPU 100可将用户的输入解释为指示声音效果处理。
在操作S304中,主机CPU 100可请求音频处理引擎220执行第一处理。例如,主机CPU 100可利用图10A的“邮箱”来请求音频处理引擎220执行第一处理。在示例性实施例中,除了请求音频处理引擎220执行第一处理以外,主机CPU 100可将关于第一处理的运行时间的信息发送至音频处理引擎220。换言之,音频处理引擎220可参考从主机CPU 100接收的关于第一处理的运行时间的信息以及如上面参照图13所描述的查找表260f。在示例性实施例中,当第一处理在主机CPU 100中的运行时间短于第一处理在音频处理引擎220中的运行时间时,音频处理引擎220可确定音频处理引擎220不能执行第一处理。
在操作S305中,音频处理引擎220可基于第一处理的运行时间确定是否可执行第一处理。如果在操作S305-1中确定可执行第一处理(S305-1,是),则音频处理引擎220可在操作S306中执行第一处理。如果在操作S305-1中确定不可执行第一处理(S305-1,否),则音频处理引擎220可在操作S307中请求主机CPU 100执行第一处理。在操作S308中,主机CPU100可响应于音频处理引擎220的请求执行第一处理。在操作S309中,主机CPU 100可将关于执行第一处理的结果的信息发送至音频处理引擎220。
图17是根据示例性实施例的作为卸载音频处理系统的计算系统2000的框图。类似于图1的计算系统1000,计算系统2000可以是可回放声音和/或记录声音的系统。作为非限制性示例,计算系统2000可被实现为PC、平板PC、移动电话、智能电话、电子阅读器、PDA、EDA、数字静止相机、数字视频相机、PMP、PND或者手持游戏机。
如图17所示,计算系统2000可包括应用处理器(AP)2100、PCM混合器2200、扬声器2300、麦克风2400、调制解调器2500、外部存储器2600和存储卡2700。
作为用于激活用于计算系统2000的操作系统和应用的片上系统(SoC)的应用处理器2100可控制计算系统2000的其它元件。如图17所示,应用处理器2100可包括主机CPU2110、多媒体加速块2120、外围设备2130、内部存储器2140和存储器接口2150。应用处理器2100的元件可连接至系统总线2160以彼此通信,系统总线2160可以是多层总线。
如图17所示,主机CPU 2110可包括多个核2111至2114,所述多个核2111至2114中的每一个可独立地执行指令。主机CPU 2110可包括层次高速缓冲存储器。图17所示的核的数量仅是示例,主机CPU 2110可包括少于四个核或者多于四个核。根据示例性实施例,主机CPU 2110可响应于音频处理引擎(例如,包括在音频处理模块2121中的处理器)的请求执行音频处理。
多媒体加速块2120可包括处理多媒体数据的多个逻辑块。多媒体加速块2120的所述多个逻辑块中的每一个可用于处理多媒体数据,因此增加应用处理器2100和计算系统2000的效率。例如,如图17所示,多媒体加速块2120可包括音频处理模块(Audio)2121、视频处理模块(Video)2122、显示驱动模块(Display)2123和图像处理模块(Image)2124。音频处理模块(Audio)2121可处理源音频数据并且生成用于回放声音的数据,即,RX PCM数据RX_PCM。此外,音频处理模块(Audio)2121可处理从声音生成的TX PCM数据TX_PCM并且生成目标音频数据。视频处理模块(Video)2122可对通过视频编解码器压缩的源视频数据进行解码。显示驱动模块(Display)2123可生成与提供给计算系统2000的显示装置的信号对应的数据。图像处理模块(Image)2124可对通过图像编解码器压缩的源图像数据进行解码。
根据示例性实施例,音频处理模块(Audio)2121可用作根据上述示例性实施例的音频处理引擎中的任一个,并且可确定是否可执行针对音频数据的处理。因此,即使音频处理模块(Audio)2121不具有过高性能,也可由主机CPU 2110代替音频处理模块2121执行具有高复杂度的处理。
外围设备2130可包括各自执行各种功能的多个逻辑块。例如,如图17所示,外围设备2130可包括直接存储器存取(DMA)控制器2131、连接性模块(Connectivity)2132和模数转换器(ADC)2133。
DMA控制器2131可控制通过系统总线2160执行的DMA操作。例如,DMA控制器2131可控制主机CPU 2110未参与的操作,音频处理模块2121通过存储器接口2150来访问存储在内部存储器2140中的数据或者存储在外部存储器2600中的数据。
连接性模块2131可包括多个逻辑块,多个逻辑块支持用于与应用处理器2100、计算系统2000的其它元件或者计算系统200的外部装置通信的通信标准。例如,如图17所示,连接性模块2132可包括诸如I2S接口的支持串行总线接口标准的逻辑块,并且可通过该I2S接口将通过音频处理模块2121生成的PCM数据发送至PCM混合器2200,PCM混合器2200从PCM数据生成模拟信号。
参照图17,连接性模块2132可包括支持与调制解调器2500的通信的逻辑块。调制解调器2500可提供接口,计算系统2000通过该接口来与计算系统2000外部的另一计算系统通信。例如,调制解调器2500可提供用于无线移动通信的接口,并且可通过天线从另一计算系统接收源音频数据并且将目标音频数据发送至另一计算系统。
此外,连接性模块2132可包括支持卡接口的逻辑块,诸如紧凑闪存卡(CFC)的接口、微硬盘的接口、智能媒体卡(SMC)的接口、多媒体卡(MMC)的接口、安全数字卡(SDC)的接口或者记忆棒的接口。连接性模块2132可从存储卡2700读取源音频数据,并且可将读取的源音频数据发送至音频处理模块2121、内部存储器或外部存储器2600。ADC 2133可接收模拟信号并输出数字数据。例如,ADC 2133可用于将通过包括在计算系统2000中的触摸屏接收的用户输入转换为数字数据。主机CPU 2110可参考外围设备2130的ADC 2133的输出数据来分析用户输入。
作为包括在应用处理器2100中的存储器子系统的内部存储器2140可连接至系统总线2160以与另一元件通信。如图17所示,内部存储器2140可包括SRAM 2141和只读存储器(ROM)2142,应用处理器2100的元件可经由系统总线2160访问SRAM 2141和ROM 2142。
存储器接口2150可在应用处理器2100与外部存储器2600之间提供接口。例如,外部存储器2600可包括DRAM 2610和闪速存储器(Flash)2620,存储器接口2150可包括DRAM控制器和闪存控制器。在音频处理模块2121执行音频处理的同时生成的音频数据和/或在主机CPU 2110根据音频处理模块2121的音频处理引擎的请求执行处理的同时生成的音频数据可被存储在外部存储器2600的DRAM 2610或者内部存储器2140的SRAM 2141中。
图18是示出根据示例性实施例的计算机可读存储装置3000的示图。计算机可读存储装置3000可包括在用于向计算机提供指令和/或数据的同时可由计算机读取的存储装置。例如,计算机可读存储装置3000可包括磁介质或光学介质(诸如盘、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R或者DVD-RW)、易失性或非易失性存储器(诸如RAM、ROM或闪速存储器)、可通过USB接口访问的非易失性存储器和/或微机电系统(MEMS)。计算机可读存储装置3000可被插入计算机中,集成在计算机中,或者通过通信介质(诸如网络和/或无线链路)与计算机组合。参照图18,计算机可读存储装置3000可包括可由主机CPU 100访问的区域3100以及可由音频处理引擎220访问的区域3200。
可由主机CPU 100访问的区域3100可包括程序,该程序包括由主机CPU 100执行以执行根据示例性实施例的音频处理方法的多个指令,主机CPU 100可访问区域3100并且执行所述多个指令。例如,可由主机CPU 100访问的区域3100可包括与从图10A所示的音频处理引擎驱动器41、音频HAL 31和声音效果程序32选择的至少一个对应的指令。
可由音频处理引擎220访问的区域3200可包括程序,该程序包括由音频处理引擎220执行以执行根据示例性实施例的音频处理方法的多个指令,音频处理引擎220可访问区域3200并且执行所述多个指令。例如,可由音频处理引擎220访问的区域3200可包括与从图10A所示的解码处理11、VSP处理12和SRC处理13选择的至少一个对应的指令,并且可包括与请求主机CPU 100执行处理的操作(图10A的请求处理19)对应的指令。此外,可由音频处理引擎220访问的区域3200可包括与从图10B所示的滤波处理21、SRC处理22和编码处理24选择的至少一个对应的指令,并且可包括与请求主机CPU 100执行处理的操作(图10B的请求处理29)对应的指令。
尽管在图18中单个计算机可读存储装置3000包括可由主机CPU 100访问的区域3100和可由音频处理引擎220访问的区域3200二者,但是本发明构思不限于此。例如,可由主机CPU 100访问的区域3100和可由音频处理引擎220访问的区域3200可被包括在两个或更多个不同的存储装置中。
尽管具体地示出并描述了示例性实施例,但是将理解,在不脱离权利要求的精神和范围的情况下可对示例性实施例进行各种形式和细节上的改变。
Claims (23)
1.一种由包括主机中央处理器CPU和音频处理引擎的计算系统执行的音频处理方法,所述音频处理方法包括:
由音频处理引擎基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否能够执行针对第一音频数据的第一处理;
当确定音频处理引擎能够执行第一处理时,由音频处理引擎执行第一处理;
当确定音频处理引擎不能够执行第一处理时,由音频处理引擎请求主机CPU执行第一处理,
其中,第一处理是多个处理中的一种处理,对源音频数据或脉冲编码调制数据顺序地执行所述多个处理中的每个处理,
其中,主机CPU具有比音频处理引擎更高的性能。
2.根据权利要求1所述的音频处理方法,其中,音频处理引擎请求主机CPU执行第一处理,
其中,所述音频处理方法还包括:由主机CPU通过响应于音频处理引擎的请求执行第一处理来生成第二音频数据。
3.根据权利要求1所述的音频处理方法,其中,所述计算系统还包括流缓冲器,
其中,确定的步骤包括:
确定第一处理的执行是否导致流缓冲器中发生欠运行或溢出;
响应于确定发生欠运行或溢出,确定音频处理引擎不能执行第一处理,响应于确定不发生欠运行或溢出,确定音频处理引擎能够执行第一处理。
4.根据权利要求1所述的音频处理方法,其中,第一处理在主机CPU中的运行时间短于第一处理在音频处理引擎中的运行时间。
5.根据权利要求1所述的音频处理方法,其中,音频处理引擎包括查找表,所述查找表存储关于第一处理的运行时间的信息,
其中,确定的步骤包括通过参考查找表来获取关于第一处理的运行时间的信息。
6.根据权利要求1所述的音频处理方法,还包括:由主机CPU响应于从计算系统的外部接收的输入来请求音频处理引擎执行第一处理,
其中,确定的步骤由音频处理引擎响应于来自主机CPU的请求来执行。
7.根据权利要求6所述的音频处理方法,其中,由主机CPU请求的步骤包括将关于第一处理在音频处理引擎中的运行时间的信息发送至音频处理引擎。
8.根据权利要求2所述的音频处理方法,其中,由音频处理引擎请求的步骤包括:
向主机CPU发送中断;
将用于执行第一处理的信息发送至主机CPU。
9.根据权利要求8所述的音频处理方法,其中,所述信息包括针对第一音频数据和第二音频数据的访问信息以及第一处理的参数。
10.根据权利要求1所述的音频处理方法,其中,第一处理是后处理的多个处理中的一个处理,所述后处理是对通过将源音频数据解码而生成的流数据执行的。
11.根据权利要求1所述的音频处理方法,其中,第一处理是预处理的多个处理中的一个处理,所述预处理是在流数据被编码为目标音频数据之前对流数据执行的。
12.根据权利要求2所述的音频处理方法,还包括:
由主机CPU将关于完成第一处理的信息发送至音频处理引擎;
由音频处理引擎通过执行针对第二音频数据的第二处理来生成第三音频数据。
13.根据权利要求2所述的音频处理方法,其中,来自音频处理引擎的请求由在主机CPU中执行的内核处理,第一处理由在主机CPU中执行的应用程序执行。
14.一种由包括主机中央处理器CPU和音频处理引擎的计算系统执行的音频处理方法,所述音频处理方法包括:
由主机CPU将关于针对音频数据的多个处理的信息发送至音频处理引擎;
由音频处理引擎基于所述多个处理的运行时间来确定音频处理引擎是否能够执行所述多个处理;
当确定音频处理引擎能够执行所述多个处理中的至少一个处理时,由音频处理引擎执行所述多个处理中的所述至少一个处理;
当确定音频处理引擎不能够执行所述多个处理中的至少一个处理时,由音频处理引擎请求主机CPU执行所述多个处理中的所述至少一个处理,
其中,对源音频数据或脉冲编码调制数据顺序地执行所述多个处理中的每个处理,
其中,主机CPU具有比音频处理引擎更高的性能。
15.根据权利要求14所述的音频处理方法,其中,音频处理引擎请求主机CPU执行所述多个处理中的所述至少一个处理,
其中,所述音频处理方法还包括:由主机CPU响应于来自音频处理引擎的请求执行所述多个处理中的所述至少一个处理。
16.根据权利要求14所述的音频处理方法,其中,所述计算系统还包括流缓冲器,
其中,确定的步骤包括:
确定所述多个处理中的所述至少一个处理的执行是否导致流缓冲器中发生欠运行或溢出;
响应于确定发生欠运行或溢出,确定不能执行所述多个处理中的所述至少一个处理,响应于确定不发生欠运行或溢出,确定可执行所述多个处理中的所述至少一个处理。
17.根据权利要求14所述的音频处理方法,其中,所述多个处理中的所述至少一个处理在主机CPU中的运行时间短于所述多个处理中的所述至少一个处理在音频处理引擎中的运行时间。
18.根据权利要求14所述的音频处理方法,其中,音频处理引擎包括查找表,所述查找表存储关于所述多个处理的运行时间的信息,
其中,确定的步骤包括通过参考查找表来获取关于运行时间的信息。
19.根据权利要求15所述的音频处理方法,其中,由音频处理引擎请求的步骤包括:
向主机CPU发送中断;
将用于执行所述多个处理中的所述至少一个处理的信息发送至主机CPU。
20.根据权利要求19所述的音频处理方法,其中,所述信息包括针对所述多个处理中的所述至少一个处理的输入数据和输出数据的访问信息以及所述多个处理中的所述至少一个处理的参数。
21.根据权利要求15所述的音频处理方法,其中,音频处理引擎的请求由在主机CPU中执行的内核处理,所述多个处理中的所述至少一个处理由在主机CPU中执行的应用程序执行。
22.一种用于执行音频处理的计算系统,所述计算系统包括:
主机中央处理器CPU;
音频处理引擎,与主机CPU分离地设置,音频处理引擎被配置为基于针对第一音频数据的第一处理的运行时间来确定音频处理引擎是否能够执行针对第一音频数据的第一处理,当确定音频处理引擎能够执行第一处理时,由音频处理引擎执行第一处理,当确定音频处理引擎不能够执行第一处理时,请求主机CPU执行第一处理,
其中,第一处理是多个处理中的一种处理,对源音频数据或脉冲编码调制数据顺序地执行所述多个处理中的每个处理,
其中,主机CPU具有比音频处理引擎更高的性能。
23.根据权利要求22所述的计算系统,其中,音频处理引擎请求主机CPU执行第一处理,
其中,主机CPU通过响应于来自音频处理引擎的请求执行第一处理来生成第二音频数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150164835A KR102356702B1 (ko) | 2015-11-24 | 2015-11-24 | 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템 |
KR10-2015-0164835 | 2015-11-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775556A CN106775556A (zh) | 2017-05-31 |
CN106775556B true CN106775556B (zh) | 2021-08-10 |
Family
ID=58719604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611059413.2A Active CN106775556B (zh) | 2015-11-24 | 2016-11-24 | 主机cpu辅助的音频处理方法及执行该方法的计算系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10133541B2 (zh) |
KR (1) | KR102356702B1 (zh) |
CN (1) | CN106775556B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10388273B2 (en) * | 2016-08-10 | 2019-08-20 | Roku, Inc. | Distributed voice processing system |
CN107959906B (zh) * | 2017-11-20 | 2020-05-05 | 英业达科技有限公司 | 音效增强方法及音效增强系统 |
CN108182930B (zh) * | 2017-12-18 | 2021-12-10 | 福建星网视易信息系统有限公司 | 音效处理方法、设备及音视频点播系统 |
US10861462B2 (en) * | 2018-03-12 | 2020-12-08 | Cypress Semiconductor Corporation | Dual pipeline architecture for wakeup phrase detection with speech onset detection |
US11792307B2 (en) | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
US10846224B2 (en) * | 2018-08-24 | 2020-11-24 | Apple Inc. | Methods and apparatus for control of a jointly shared memory-mapped region |
CN110087170A (zh) * | 2019-04-24 | 2019-08-02 | 维沃移动通信有限公司 | 一种音频处理方法和移动终端 |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11477123B2 (en) | 2019-09-26 | 2022-10-18 | Apple Inc. | Methods and apparatus for low latency operation in user space networking |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
KR20230004007A (ko) * | 2021-06-30 | 2023-01-06 | 삼성전자주식회사 | 오디오 데이터에 오디오 효과의 중복 적용을 방지하는 방법 및 이를 지원하는 전자 장치 |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
KR20230023306A (ko) * | 2021-08-10 | 2023-02-17 | 삼성전자주식회사 | 컨텐츠 데이터를 기록하는 전자 장치 및 그 방법 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301603B1 (en) * | 1998-02-17 | 2001-10-09 | Euphonics Incorporated | Scalable audio processing on a heterogeneous processor array |
US7107110B2 (en) | 2001-03-05 | 2006-09-12 | Microsoft Corporation | Audio buffers with audio effects |
US7305273B2 (en) | 2001-03-07 | 2007-12-04 | Microsoft Corporation | Audio generation system manager |
ES2325859T3 (es) | 2003-10-08 | 2009-09-22 | Nokia Corporation | Sistema de procesamiento de audio. |
US7461275B2 (en) | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
US7778822B2 (en) | 2006-05-19 | 2010-08-17 | Sony Ericsson Mobile Communications Ab | Allocating audio processing among a plurality of processing units with a global synchronization pulse |
US7893343B2 (en) | 2007-03-22 | 2011-02-22 | Qualcomm Incorporated | Musical instrument digital interface parameter storage |
CN101925952B (zh) * | 2008-01-21 | 2012-06-06 | 松下电器产业株式会社 | 音响再现装置 |
US8200479B2 (en) | 2008-02-08 | 2012-06-12 | Texas Instruments Incorporated | Method and system for asymmetric independent audio rendering |
WO2009152305A1 (en) * | 2008-06-11 | 2009-12-17 | Qualcomm Incorporated | Method and system for measuring task load |
US8041848B2 (en) * | 2008-08-04 | 2011-10-18 | Apple Inc. | Media processing method and device |
US9264835B2 (en) * | 2011-03-21 | 2016-02-16 | Microsoft Technology Licensing, Llc | Exposing off-host audio processing capabilities |
US8873771B2 (en) | 2011-05-10 | 2014-10-28 | International Business Machines Corporation | Automatic volume adjustment |
US20140032755A1 (en) | 2012-07-26 | 2014-01-30 | Tsung-Yu Huang | Method for providing cloud computing service and a cloud computing service management system |
-
2015
- 2015-11-24 KR KR1020150164835A patent/KR102356702B1/ko active IP Right Grant
-
2016
- 2016-10-31 US US15/338,581 patent/US10133541B2/en active Active
- 2016-11-24 CN CN201611059413.2A patent/CN106775556B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR20170060409A (ko) | 2017-06-01 |
KR102356702B1 (ko) | 2022-01-27 |
US20170147282A1 (en) | 2017-05-25 |
CN106775556A (zh) | 2017-05-31 |
US10133541B2 (en) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775556B (zh) | 主机cpu辅助的音频处理方法及执行该方法的计算系统 | |
TWI669710B (zh) | 音箱的控制方法、控制裝置、存儲介質及電子設備 | |
KR101770932B1 (ko) | 모바일 디바이스용 상시 연결형 오디오 제어 | |
US8332866B2 (en) | Methods, systems, and apparatus for object invocation across protection domain boundaries | |
JP5911892B2 (ja) | ハイバネイトからの多段レジューム | |
WO2017005010A1 (zh) | 音频处理方法及设备、计算机存储介质 | |
US9678767B2 (en) | Unified extensible firmware interface (UEFI) driver and protocol | |
WO2022199111A1 (zh) | 应用程序中功能的实现方法、装置、电子设备和存储介质 | |
US20140189693A1 (en) | Adaptive handling of priority inversions using transactions | |
KR101503623B1 (ko) | 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생 | |
US9092281B2 (en) | Fast remote procedure call | |
US20210200582A1 (en) | Data transmission method and device | |
CN105378646A (zh) | 多种同时音频模式 | |
US20140029764A1 (en) | Virtual machine-based sound control for computerized devices in a networked computing environment | |
US10115409B2 (en) | Adaptive processing of sound data | |
US9674540B2 (en) | Processing parameters for operations on blocks while decoding images | |
CN109710578B (zh) | 一种日志记录方法及系统 | |
CN107957687A (zh) | 互联设备功能的控制方法及装置 | |
GB2471484A (en) | A software framework for creating new software components in compliance with an existing multimedia application programming interface | |
US8533354B1 (en) | Initiating media presentation prior to receiving seek index data | |
US9019134B2 (en) | System and method for efficiently translating media files between formats using a universal representation | |
CN110874343A (zh) | 基于深度学习芯片进行语音处理的方法和深度学习芯片 | |
US20110197202A1 (en) | Handling Messages in a Computing Device | |
US20140181563A1 (en) | System and method for determination of latency tolerance | |
WO2016040189A1 (en) | System and method for sharing a solid-state non-volatile memory resource |
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 |