CN117135532A - 音频数据处理方法、设备和存储介质 - Google Patents

音频数据处理方法、设备和存储介质 Download PDF

Info

Publication number
CN117135532A
CN117135532A CN202310488006.7A CN202310488006A CN117135532A CN 117135532 A CN117135532 A CN 117135532A CN 202310488006 A CN202310488006 A CN 202310488006A CN 117135532 A CN117135532 A CN 117135532A
Authority
CN
China
Prior art keywords
audio
audio data
module
dts
channels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310488006.7A
Other languages
English (en)
Other versions
CN117135532B (zh
Inventor
罗干
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310488006.7A priority Critical patent/CN117135532B/zh
Publication of CN117135532A publication Critical patent/CN117135532A/zh
Application granted granted Critical
Publication of CN117135532B publication Critical patent/CN117135532B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R3/00Circuits for transducers, loudspeakers or microphones
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R2430/00Signal processing covered by H04R, not provided for in its groups

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • Telephone Function (AREA)

Abstract

本申请公开了一种音频数据处理方法、设备和存储介质,属于音频处理技术领域。该方法包括:DTS模块获取重采样模块在本次音频处理过程中输出的第一音频数据,对第一音频数据进行DTS音效处理,得到第三音频数据。判断是否满足目标条件,目标条件指示需进行音频数据叠加且直接叠加会出现错误。因而在满足目标条件时获取重采样模块输出的第二音频数据,并对第二音频数据的声道数进行转换,得到第四音频数据,将第三音频数据与第四音频数据进行叠加,得到第五音频数据。在本申请中,由于第四音频数据的声道数与第三音频数据的声道数相同,所以不会出现叠加错误,从而可以保证叠加得到的第五音频数据在后续播放时不会出现变调、杂音的问题。

Description

音频数据处理方法、设备和存储介质
技术领域
本申请涉及音频处理技术领域,特别涉及一种音频数据处理方法、设备和存储介质。
背景技术
随着终端技术的飞速发展,诸如手机、平板电脑等终端的功能日益强大,逐渐成为人们工作和生活中不可或缺的工具。目前,终端可播放多种音频,比如,终端可播放音乐、来电铃声、闹钟铃声、提示音等音频。通常,音乐、来电铃声、闹钟铃声等音频在播放前需要进行数字化影院系统(digital theater system,DTS)音效处理,而提示音等音频在播放前无需进行DTS音效处理。这种情况下,若需要进行DTS音效处理的音频与无需进行DTS音效处理的音频在同一条音频线程中进行处理,则很有可能会导致无需进行DTS音效处理的音频在混合输出后出现变调、杂音的问题。
发明内容
本申请提供了一种音频数据处理方法、设备和存储介质,可以避免音频播放时出现变调、杂音的问题。所述技术方案如下:
第一方面,提供了一种音频数据处理方法,应用于DTS模块。在该方法中,获取重采样模块在本次音频处理过程中输出的第一音频数据,然后对第一音频数据进行DTS音效处理,得到第三音频数据。之后,判断是否满足目标条件。若满足目标条件,则获取第二音频数据,并对第二音频数据的声道数进行转换,得到第四音频数据,将第三音频数据与第四音频数据进行叠加,得到第五音频数据。
在本申请中,目标条件用于指示需要进行音频数据叠加且直接进行音频数据叠加会出现错误。因而在满足目标条件时可以先对第二音频数据的声道数进行转换来得到第四音频数据。由于第四音频数据的声道数与第三音频数据的声道数相同,所以在将第四音频数据与第三音频数据进行叠加时不会出现叠加错误,从而可以保证叠加得到的第五音频数据在后续播放时不会出现变调、杂音的问题。
目标条件用于指示重采样模块在本次音频处理过程中会输出无需进行DTS音效处理的第二音频数据且第二音频数据的声道数与第三音频数据的声道数不同。若重采样模块在本次音频处理过程中会输出无需进行DTS音效处理的第二音频数据,则DTS模块在得到第三音频数据后需要将第三音频数据与第二音频数据进行叠加。若第二音频数据的声道数与第三音频数据的声道数不同,那么直接将第二音频数据与第三音频数据进行叠加的话会出现错误。
可选地,判断是否满足目标条件的操作可以为:根据第一数量、第二数量、DTS模块的输入声道数和DTS模块的输出声道数,判断是否满足目标条件。
第一数量为本次音频处理过程中需要处理的音频流的总路数,第二数量为本次音频处理过程中需要进行DTS音效处理的音频流的总路数,DTS模块的输入声道数为输入DTS模块的音频数据的声道数,DTS模块的输出声道数为DTS模块输出的音频数据的声道数。这种情况下,目标条件可以为:第一数量大于第二数量且DTS模块的输入声道数与DTS模块的输出声道数不同。
在本申请中,由于第一数量为本次音频处理过程中需要处理的音频流的总路数,第二数量为本次音频处理过程中需要进行DTS音效处理的音频流的总路数,所以如果第一数量大于第二数量,则说明本次音频处理过程中需要处理的音频流中有一部分音频流需要进行DTS音效处理且有另一部分音频流无需进行DTS音效处理,那么重采样模块在对本次音频处理过程中需要处理的每路音频流的音频数据进行处理后,不仅会得到需要输出至DTS模块的第一音频数据,还会得到无需输出至DTS模块的第二音频数据。另外,DTS模块的输入声道数即为重采样模块的输出声道数,DTS模块的输出声道数即为DTS模块输出的第三音频数据的声道数,因而DTS模块的输入声道数与输出声道数不同的话,就表明重采样模块的输出声道数与DTS模块的输出声道数不同,也即表明第二音频数据的声道数与第三音频数据的声道数不同。
在一些情况中,由于DTS模块的输出声道数通常为二,而音频流的声道数通常会大于或等于二,所以目标条件进一步可以为:第一数量大于第二数量且DTS模块的输入声道数大于DTS模块的输出声道数。
可选地,获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还可以接收音频信息,该音频信息包括本次音频处理过程中需要处理的每路音频流的音频类型,根据该音频信息确定第一数量和第二数量。
在本申请中,DTS模块在接收到该音频信息后,根据该音频信息,可以获知本次音频处理过程中总共需要处理多少路音频流,以及确定这些音频流中的哪些音频流需要进行DTS音效处理,哪些音频流无需进行DTS音效处理。如此,DTS模块可以根据该音频信息准确确定出第一数量和第二数量。
可选地,获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还可以接收本次音频处理过程中需要处理的任意一路音频流的声道数,然后将本次音频处理过程中接收到的声道数中的最大声道数确定为目标声道数,之后,向重采样模块发送携带有目标声道数的声道数设置请求,该声道数设置请求用于请求将重采样模块的输出声道数设置为目标声道数。
需说明的是,若DTS模块在本次音频处理过程中仅接收到这一路音频流的声道数,而尚未接收到其他路音频流的声道数,则DTS模块可以将这一路音频流的声道数确定为目标声道数。若DTS模块在本次音频处理过程中不仅接收到这一路音频流的声道数,还接收到了其他路音频流的声道数,则DTS模块可以将接收到的声道数中的最大声道数确定为目标声道数。
对于重采样模块来说,重采样模块在本次音频处理过程中会接收到DTS模块发送的至少一个声道数设置请求,重采样模块可以将接收到的这些声道数设置请求中携带的声道数中的最大声道数设置为自身的输出声道数。如此,在有多路音频流的情况下,重采样模块是以该多路音频流的声道数中的最大声道数作为自身的输出声道数。
可选地,本申请中存在第一缓冲区和第二缓冲区。第一缓冲区中的音频数据是重采样模块存储至第一缓冲区的,且第一缓冲区中的音频数据是需要输入DTS模块中的音频数据。第二缓冲区中的音频数据是重采样模块存储至第二缓冲区中的,且第二缓冲区中的音频数据是无需输入DTS模块但是需要通过音频线程输出的音频数据。
这种情况下,获取重采样模块在本次音频处理过程中输出的第一音频数据的操作可以为:获取第一缓冲区中的音频数据作为第一音频数据。相应地,获取第二音频数据的操作可以为:获取第二缓冲区中的音频数据作为第二音频数据。在本申请中,通过设置第一缓冲区和第二缓冲区可以便于DTS模块快速获取到所需的音频数据。
在此情况下,获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还可以接收音频信息,根据该音频信息确定缓冲区设置信息,该缓冲区设置信息用于指示每路音频流经重采样模块处理后需存储至的缓冲区。之后,将该缓冲区设置信息发送给重采样模块。
在本申请中,重采样模块根据该缓冲区设置信息可以确定本次音频处理过程中总共需要处理多少路音频流,且可以确定需要处理的每路音频流对应的缓冲区。对于任意一路音频流的音频数据,重采样模块在对该音频数据进行处理后,可以将处理得到的音频数据存储至对应的缓冲区。
可选地,本申请中存在第三缓冲区和第四缓冲区。第三缓冲区中的音频数据是DTS模块输出的经DTS音效处理后的音频数据。第四缓冲区中的音频数据为本次音频处理过程输出的音频数据,即第四缓冲区中的音频数据是需要通过音频线程输出的音频数据。
这种情况下,对第一音频数据进行DTS音效处理,得到第三音频数据之后,还可以将第三音频数据存储至第三缓冲区。相应地,将第三音频数据与第四音频数据进行叠加,得到第五音频数据的操作可以为:将第三缓冲区中的音频数据与第四音频数据进行叠加,得到第五音频数据,将第五音频数据存储至第四缓冲区。
进一步地,音频线程可以将第四缓冲区中的音频数据发送给音频驱动进行播放。或者,音频线程中还运行有用于进行其他音效处理的模块,这种情况下,音频线程还可以将第四缓冲区中的音频数据发送给该模块进行处理,然后将处理后的音频数据发送给音频驱动进行播放。
第二方面,提供了一种音频数据处理方法,所述方法应用于音频线程,所述音频线程中运行有DTS模块和重采样模块,所述方法包括:
所述重采样模块获取所述音频线程在本次音频处理过程中需要处理的每路音频流中的一帧音频数据,对所述音频数据进行处理,输出处理后的音频数据;
所述DTS模块获取所述重采样模块在所述本次音频处理过程中输出的第一音频数据;对所述第一音频数据进行DTS音效处理,得到第三音频数据;判断是否满足目标条件,所述目标条件用于指示所述重采样模块在所述本次音频处理过程中会输出无需进行所述DTS音效处理的第二音频数据且所述第二音频数据的声道数与所述第三音频数据的声道数不同;若满足所述目标条件,则获取所述第二音频数据,对所述第二音频数据的声道数进行转换,得到第四音频数据,所述第四音频数据的声道数与所述第三音频数据的声道数相同;将所述第三音频数据与所述第四音频数据进行叠加,得到第五音频数据。
第三方面,提供了一种计算机设备,所述计算机设备的结构中包括处理器和存储器,所述存储器用于存储支持计算机设备执行上述第一方面或第二方面所提供的音频数据处理方法的程序,以及存储用于实现上述第一方面或第二方面所述的音频数据处理方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述计算机设备还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的音频数据处理方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的音频数据处理方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种终端的结构示意图;
图2是本申请实施例提供的一种终端的软件系统的框图;
图3是本申请实施例提供的一种音频处理过程涉及的主体的示意图;
图4是本申请实施例提供的一种音频处理过程的示意图;
图5是本申请实施例提供的另一种音频处理过程的示意图;
图6是本申请实施例提供的一种多音频线程的示意图;
图7是本申请实施例提供的一种音频处理过程中的准备阶段的示意图;
图8是本申请实施例提供的一种重采样模块和DTS模块的处理过程的示意图;
图9是本申请实施例提供的一种音频数据的叠加示意图;
图10是本申请实施例提供的一种音频数据处理方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请中描述的“一个实施例”或“一些实施例”等语句意味着在本申请的一个或多个实施例中包括该实施例描述的特定特征、结构或特点。由此,在本申请中的不同之处出现的“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等语句不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。此外,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
下面对本申请实施例涉及的终端予以说明。
图1是本申请实施例提供的一种终端的结构示意图。参见图1,终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户识别模块(subscriber identity module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件,或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,比如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是终端100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过终端100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端100供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
移动通信模块150可以提供应用在终端100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在终端100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
终端100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
终端100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,比如Micro SD卡,实现扩展终端100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。比如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行终端100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100在使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,比如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
终端100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D以及应用处理器等实现音频功能,比如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和终端100的接触和分离。终端100可以支持1个或N个SIM卡接口,N为大于1的整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。终端100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端100中,不能和终端100分离。
接下来对终端100的软件系统予以说明。
终端100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的安卓(Android)系统为例,对终端100的软件系统进行示例性说明。
图2是本申请实施例提供的一种终端100的软件系统的框图。参见图2,分层架构将软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将软件系统分分为应用程序层,应用程序框架层,安卓运行时(Androidruntime)和系统层,扩展层,以及内核层。
应用程序层可以包括一系列应用程序包。如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,音乐,蓝牙,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图2所示,应用程序框架层可以包括音频框架(Audio Framework),窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
音频框架负责回放数据的输出、录音数据的采集以及音频事务的综合管理等。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问,这些数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,比如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序的显示界面,显示界面可以由一个或多个视图组成,比如,包括显示短信通知图标的视图,包括显示文字的视图,以及包括显示图片的视图。电话管理器用于提供终端100的通信功能,比如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如,通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或滚动条文本形式出现在系统顶部状态栏的通知,比如后台运行的应用程序的通知。通知管理器还可以是以对话窗口形式出现在屏幕上的通知,比如在状态栏提示文本信息,发出提示音,终端振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统层可以包括多个功能模块,比如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(比如:OpenGL ES),二维图形引擎(比如:SGL)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,比如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。二维图形引擎是二维绘图的绘图引擎。
扩展层也可称为硬件抽象层(hardware abstracting layer,HAL),其可以实现对内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。扩展层向上衔接Androidruntime和Framework,向下衔接驱动程序。扩展层可以包括音频硬件抽象层(Audio HAL),负责与音频硬件设备的交互。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动等。
下面对本申请实施例涉及的应用场景予以说明。
随着终端技术的飞速发展,诸如手机、平板电脑等终端的功能日益强大,逐渐成为人们工作和生活中不可或缺的工具。目前,终端可播放多种音频,比如,终端可播放音乐、来电铃声、闹钟铃声、提示音等音频。在一些场景中,音乐、来电铃声、闹钟铃声等音频在播放前需要进行DTS音效处理,而提示音等音频在播放前无需进行DTS音效处理。
如图3所示,音频处理过程的主体主要涉及音频线程(也可称为Thread)、DTS模块和重采样模块(也可称为Mixer)。DTS模块和重采样模块运行在音频线程上,也即,音频线程挂载有DTS模块和重采样模块。其中,音频线程也可称为音频通道,DTS模块也可称为DTS实例,重采样模块也可称为重采样器。
接下来结合图3对需要进行DTS音效处理的音频的处理过程进行说明:
图4是本申请实施例提供的一种音频处理过程的示意图。参见图4,一次音频处理过程可以包括准备阶段(也可称为prepareTracks_l阶段)、重采样阶段(也可称为threadLoop_mix阶段)、运行阶段(也可称为DTS process阶段)。
在准备阶段,音频线程设置重采样模块的输出声道数,重采样模块的输出声道数是指重采样模块输出的音频数据的声道数。具体来讲,音频线程可以获取本次需要处理的一路音频流的声道数,然后向重采样模块发送携带有该声道数的声道数设置请求,以指示重采样模块将该声道数设置为输出声道数,也即,指示重采样模块输出具有该声道数的音频数据。
并且,在准备阶段,音频线程可以指示DTS模块设置重采样模块的输出声道数。具体来讲,音频线程可以获取本次需要处理的一路音频流的声道数,然后向DTS模块发送该声道数;DTS模块接收到该声道数后,可以向重采样模块发送携带有该声道数的声道数设置请求,以指示重采样模块将该声道数设置为输出声道数。
在准备阶段,重采样模块在接收到音频线程和重采样模块发送的声道数设置请求后,若音频线程和重采样模块发送的声道数设置请求中携带的声道数相同,则将该声道数设置为重采样模块的输出声道数;若音频线程和重采样模块发送的声道数设置请求中携带的声道数不同,则将音频线程和重采样模块发送的声道数设置请求中携带的最大的声道数设置为重采样模块的输出声道数。
之后,在重采样阶段,重采样模块获取本次需要处理的音频数据,对该音频数据进行处理,如可进行重采样处理,将处理后的音频数据输入DTS模块,由DTS模块继续处理。
之后,在运行阶段,DTS模块对输入的音频数据进行DTS音效处理,将处理后的音频数据输出至音频线程。至此,完成本次音频处理过程。
接下来对无需进行DTS音效处理的音频的处理过程进行说明:
图5是本申请实施例提供的一种音频处理过程的示意图。参见图5,一次音频处理过程可以包括准备阶段、重采样阶段。
图5所示的音频处理过程中的准备阶段的操作与图4所示的音频处理过程中的准备阶段的操作相同,本申请实施例对此不再赘述。所不同的是重采样阶段。在重采样阶段,重采样模块获取本次需要处理的音频数据,对该音频数据进行处理,如可进行重采样处理,将处理后的音频数据输出至音频线程。至此,完成本次音频处理过程。
在一些场景中,需要在一个音频线程中实现对多路音频流的处理。
比如,如图6中的(a)图所示,存在两个音频线程,每个音频线程均用于处理一路音频流,每个音频线程上均挂载有DTS模块,比如,这两个音频线程中的一个音频线程可以为主输出流线程(也可称为primaryout线程),另一个音频线程可以为音乐音轨输出流线程(也可称为deepbuffer线程)。但是仅存在一个histen模块(也可称为histen实例),这个histen模块需要在这两个音频线程之间动态迁移,也即,这两个音频线程中的哪个音频线程有音频输出,这个histen模块就会迁移到哪个音频线程进行处理。然而,这个histen模块在这两个音频线程之间的迁移会导致播放音频时音量忽大忽小。也就是说,当多实例的DTS音效与一个单实例的histen音效串联时,单实例的histen音效在两个音频线程之间迁移会导致音频播放出现问题。为此,如图6中的(b)图所示,可以删除一个音频线程,保留另一个音频线程,通过保留的这个音频线程挂载DTS模块和histen模块,以避免histen模块的迁移。这种情况下,原先需要在两个音频线程上处理的两路音频流需要在保留的这个音频线程上并发处理。
而当这两路音频流中的一路音频流需要进行DTS音效处理而另一路音频流无需进行DTS音效处理时,这两路音频流在同一个音频线程中处理就很有可能会出现问题。比如,一个多声道的需要进行DTS音效处理的音频流与一个无需进行DTS音频处理的音频流在同一个音频线程中处理后很有可能会导致无需进行DTS音效处理的音频流在混合输出后出现变调、杂音的问题。需说明的是,本申请实施例中所述的多声道是指三声道或三声道以上的多声道。
如图7所示,图7是本申请实施例提供的一种音频处理过程中的准备阶段的示意图。在本次音频处理过程中,音频线程需要对两路音频流进行处理,假设一路音频流(可称为音频流A)为六声道,即音频流A的声道数为六,且音频流A需要进行DTS音效处理,另一路音频流(可称为音频流A)为双声道,即音频流B的声道数为二,且音频流B无需进行DTS音效处理。
在准备阶段,音频线程设置重采样模块的输出声道数为音频流A的声道数,具体是音频线程向重采样模块发送携带有音频流A的声道数的声道数设置请求,以指示重采样模块将音频流A的声道数设置为输出声道数,即设置输出声道数为六。并且,音频线程可以根据音频流A的声道数指示DTS模块设置重采样模块的输出声道数,具体是音频线程向DTS模块发送音频流A的声道数,DTS模块接收到音频流A的声道数后,将在本次音频处理过程中接收到的最大声道数设置给重采样模块。由于DTS模块此时仅接收到了音频流A的声道数,所以DTS模块向重采样模块发送携带有音频流A的声道数的声道数设置请求,以指示重采样模块将音频流A的声道数设置为输出声道数,即设置输出声道数为六。
并且,在准备阶段,音频线程设置重采样模块的输出声道数为音频流B的声道数,具体是音频线程向重采样模块发送携带有音频流B的声道数的声道数设置请求,以指示重采样模块将音频流B的声道数设置为输出声道数,即设置输出声道数为二。并且,音频线程可以根据音频流B的声道数指示DTS模块设置重采样模块的输出声道数,具体是音频线程向DTS模块发送音频流B的声道数,DTS模块接收到音频流B的声道数后,将在本次音频处理过程中接收到的最大声道数设置给重采样模块。由于之前DTS模块已经接收到了音频流A的声道数,且音频流A的声道数大于音频流B的声道数,所以DTS模块向重采样模块发送携带有音频流A的声道数的声道数设置请求,以指示重采样模块将音频流A的声道数设置为输出声道数,即设置输出声道数为六。
在准备阶段,重采样模块在接收到音频线程和重采样模块发送的声道数设置请求后,将音频线程和重采样模块发送的声道数设置请求中携带的声道数中的最大声道数设置为重采样模块的输出声道数,也即,设置重采样模块的输出声道数为六。
需说明的是,重采样模块的输出声道数为DTS模块的输入声道数。DTS模块的输出声道数可以是事先设置的,如可以是技术人员根据音频处理需求事先设置的,比如,DTS模块的输出声道数可以为二,即DTS模块输出的音频数据为双声道。
这种情况下,如图8所示,在重采样阶段,重采样模块获取六声道的音频流A的一帧音频数据,以及获取双声道的音频流B的一帧音频数据。
在重采样阶段,重采样模块对音频流A的六声道的音频数据进行处理后,得到六声道的音频数据输入到DTS模块。重采样模块对音频流B的双声道的音频数据进行处理后,得到六声道的音频数据。
在运行阶段,DTS模块对输入的六声道的音频数据进行DTS音效处理,得到双声道的音频数据。
重采样模块对音频流B的双声道的音频数据处理得到的六声道的音频数据需要与DTS模块对输入的六声道的音频数据处理得到的双声道的音频数据进行叠加后再输出。然而,六声道的音频数据与双声道的音频数据进行叠加时会出现错误。如图9所示,当六声道的音频数据“111111 222222 333333”与双声道的音频数据“11 22 33”进行叠加时,会将六声道的音频数据的前六位“111111”与双声道的音频数据“11 22 33”直接进行叠加,而六声道的音频数据的后十二位“222222 333333”将会被直接丢弃。也即,六声道的音频数据不仅会被错误的叠加到双声道的音频数据上,而且会丢失一部分音频数据,如此,会导致六声道的音频数据在后续播放时出现变调、杂音。
为此,本申请实施例提供了一种音频数据处理方法,可以在不影响原有的正常音频处理流程的情况下,即在不影响正常的DTS音效处理以及正常的播放流程的情况下,在音频数据叠加时进行纠错处理,以避免叠加后的音频数据在播放时出现变调、杂音的问题。
下面对本申请实施例提供的音频数据处理方法进行详细地解释说明。
可选地,本申请实施例提供的音频数据处理方法可以在图2实施例中所述的应用程序框架层的音频框架中执行。音频框架中可以包括AudioServer进程,AudioServer进程中可以运行有AudioFlinger进程。AudioFlinger是音频策略的执行者,负责输入输出流设备的管理以及音频流数据的处理传输。AudioFlinger进程中可以运行有多个音频线程(AudioOut),每个音频线程可以对音频流的音频数据进行处理,并将处理后的音频数据输出至Audio HAL,由Audio HAL将处理后的音频数据输出至内核层中的音频驱动进行播放。
可选地,每一路音频流可以对应一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中。AudioTrack负责回放数据的输出。应用程序层中的应用程序在应用程序框架层中创建AudioTrack后,会将音频流传递给AudioTrack,AudioTrack再传递给AudioFlinger,AudioFlinger中的音频线程对音频流的音频数据进行处理后再通过Audio HAL输出至音频驱动进行播放。
图10是本申请实施例提供的一种音频数据处理方法的流程图。参见图10,该方法包括:
步骤1001:音频线程获取音频信息。
在开始本次音频处理后音频线程首先需要获取音频信息。该音频信息可以包括本次音频处理过程中需要处理的每路音频流的音频类型、声道数等。比如,该音频类型可以包括音乐、提示音等类型。
音频线程中运行有DTS模块和重采样模块。可选地,音频线程中还可以运行有用于进行除DTS音效处理之外的其他音效处理的模块,如音频线程中还可以运行有histen模块。
步骤1002:音频线程将该音频信息发送给DTS模块。
步骤1003:DTS模块接收到该音频信息后,根据该音频信息确定第一数量和第二数量。
第一数量为本次音频处理过程中需要处理的音频流的总路数,第一数量可以称为Trackcount。第二数量为本次音频处理过程中需要进行DTS音效处理的音频流的总路数,第二数量可以称为DtsTrackcount。
DTS模块在接收到该音频信息后,根据该音频信息,可以获知本次音频处理过程中总共需要处理多少路音频流,以及确定这些音频流中的哪些音频流需要进行DTS音效处理,哪些音频流无需进行DTS音效处理。如此,DTS模块可以根据该音频信息准确确定出第一数量和第二数量。
可选地,对于该音频信息中包括的任意的一路音频流的音频类型,若该音频类型为第一音频类型,则DTS模块可以确定这一路音频流需要进行DTS音效处理;若该音频类型为第二音频类型,则DTS模块可以确定这一路音频流无需进行DTS音效处理。其中,第一音频类型和第二音频类型均可以事先进行设置,如第一音频类型可以包括音乐、来电铃声、闹钟铃声等类型,第二音频类型可以包括提示音等类型。
在一些实施例中,DTS模块接收到该音频信息后,还可以根据该音频信息确定缓冲区设置信息,该缓冲区设置信息用于指示本次音频处理过程中需要处理的每路音频流经重采样模块处理后需存储至的缓冲区。DTS模块可以将该缓冲区设置信息发送给重采样模块。示例地,DTS模块可以将该缓冲区设置信息发送给音频线程,由音频线程将该缓冲区设置信息发送给重采样模块。
可选地,DTS模块接收到该音频信息后,对于该音频信息中包括的任意的一路音频流的音频类型,若该音频类型为第一音频类型,则DTS模块可以确定这一路音频流经重采样模块处理后需存储至第一缓冲区;若该音频类型为第二音频类型,则DTS模块可以确定这一路音频流经重采样模块处理后需存储至第二缓冲区。其中,第一缓冲区中的音频数据是重采样模块存储至第一缓冲区中的,且第一缓冲区中的音频数据是需要输入DTS模块中的音频数据,比如,第一缓冲区可以为inbuffer。第二缓冲区中的音频数据是重采样模块存储至第二缓冲区中的,且第二缓冲区中的音频数据是无需输入DTS模块但是需要通过音频线程输出的音频数据,比如,第二缓冲区可以为mixbuffer。
步骤1004:对于本次音频处理过程中需要处理的任意的一路音频流,音频线程将这一路音频流的声道数发送给DTS模块。
可选地,音频线程还可以向重采样模块发送携带有这一路音频流的声道数的声道数设置请求,该声道数设置请求用于请求将重采样模块的输出声道数设置为该声道数。
步骤1005:DTS模块接收到这一路音频流的声道数后,将在本次音频处理过程中接收到的声道数中的最大声道数确定为目标声道数。
若DTS模块在本次音频处理过程中仅接收到这一路音频流的声道数,而尚未接收到其他路音频流的声道数,则DTS模块可以将这一路音频流的声道数确定为目标声道数。若DTS模块在本次音频处理过程中不仅接收到这一路音频流的声道数,还接收到了音频线程发送的其他路音频流的声道数,则DTS模块可以将接收到的声道数中的最大声道数确定为目标声道数。
步骤1006:DTS模块向重采样模块发送携带有目标声道数的声道数设置请求,该声道数设置请求用于请求将重采样模块的输出声道数设置为目标声道数。
需要说明的是,针对本次音频处理过程中需要处理的每一路音频流,均需执行上述步骤1004至步骤1006,以指示重采样模块进行输出声道数设置。在针对本次音频处理过程中需要处理的每一路音频流均执行上述步骤1004至步骤1006后,重采样模块会接收到DTS模块发送的至少一个声道数设置请求,可选的还会接收到音频线程发送的至少一个声道数设置请求,重采样模块可以将接收到的这些声道数设置请求中携带的声道数中的最大声道数设置为自身的输出声道数。如此,在有多路音频流的情况下,重采样模块是以该多路音频流的声道数中的最大声道数作为自身的输出声道数。
可选地,在针对本次音频处理过程中需要处理的每一路音频流均执行上述步骤1004至步骤1006后,DTS模块可以将接收到的声道数中的最大声道数确定为DTS模块的输入声道数(也可称为inchal),DTS模块的输入声道数为输入DTS模块的音频数据的声道数,DTS模块的输入声道数为重采样模块的输出声道数。另外,DTS模块的输出声道数可以是事先设置的,如可以是技术人员根据音频处理需求事先设置的,比如,DTS模块的输出声道数可以为二,即DTS模块输出的音频数据为双声道。
通过上述步骤1001至步骤1006就完成了本次音频处理过程中的准备阶段,完成准备阶段后可以继续进行如下重采样阶段。
步骤1007:重采样模块获取本次音频处理过程中需要处理的每路音频流中的一帧音频数据,并对每路音频流的音频数据进行处理,得到处理后的音频数据。
重采样模块在准备阶段已经获得了缓冲区设置信息,重采样模块根据该缓冲区设置信息可以确定本次音频处理过程中总共需要处理多少路音频流,且可以确定需要处理的每路音频流对应的缓冲区。对于任意一路音频流的音频数据,重采样模块在对该音频数据进行处理后,可以将处理得到的音频数据存储至对应的缓冲区。
可选地,若本次音频处理过程中需要处理一路音频流,且这一路音频流需要进行DTS音效处理,也即,若重采样模块根据该缓冲区设置信息确定本次音频处理过程中仅需要处理一路音频流且这一路音频流对应的缓冲区为第一缓冲区,则重采样模块可以对这一路音频流的音频数据进行重采样处理,并将处理得到的音频数据存储至第一缓冲区。
可选地,若本次音频处理过程中仅需要处理一路音频流,且这一路音频流无需进行DTS音效处理,也即,若重采样模块根据该缓冲区设置信息确定本次音频处理过程中仅需要处理一路音频流且这一路音频流对应的缓冲区为第二缓冲区,则重采样模块可以对这一路音频流的音频数据进行重采样处理,并将处理得到的音频数据存储至第二缓冲区。
可选地,若本次音频处理过程中需要处理多路音频流,且该多路音频流均需要进行DTS音效处理,也即,若重采样模块根据该缓冲区设置信息确定本次音频处理过程中需要处理多路音频流且该多路音频流对应的缓冲区均为第一缓冲区,则重采样模块可以对该多路音频流中每路音频流的音频数据先进行重采样处理再进行混音处理,并将处理得到的音频数据存储至第一缓冲区。
可选地,若本次音频处理过程中需要处理多路音频流,且该多路音频流均无需进行DTS音效处理,也即,若重采样模块根据该缓冲区设置信息确定本次音频处理过程中需要处理多路音频流且该多路音频流对应的缓冲区均为第二缓冲区,则重采样模块可以对该多路音频流中每路音频流的音频数据先进行重采样处理再进行混音处理,并将处理得到的音频数据存储至第二缓冲区。
可选地,若本次音频处理过程中需要处理多路音频流,且该多路音频流中存在至少一路音频流需要进行DTS音效处理且存在至少一路音频流无需进行DTS音效处理,也即,若重采样模块根据该缓冲区设置信息确定本次音频处理过程中需要处理多路音频流且该多路音频流中的一部分音频流对应的缓冲区为第一缓冲区且另一部分音频流对应的缓冲区为第二缓冲区,则重采样模块在与第一缓冲区对应的音频流的总路数为1的情况下,对与第一缓冲区对应的这一路音频流的音频数据进行重采样处理,并将处理得到的音频数据存储至第一缓冲区;在与第一缓冲区对应的音频流的总路数大于或等于2的情况下,对与第一缓冲区对应的至少两路音频流中每路音频流的音频数据先进行重采样处理再进行混音处理,并将处理得到的音频数据存储至第一缓冲区;在与第二缓冲区对应的音频流的总路数为1的情况下,对与第二缓冲区对应的这一路音频流的音频数据进行重采样处理,并将处理得到的音频数据存储至第二缓冲区;在与第二缓冲区对应的音频流的总路数大于或等于2的情况下,对与第二缓冲区对应的至少两路音频流中每路音频流的音频数据先进行重采样处理再进行混音处理,并将处理得到的音频数据存储至第二缓冲区。
由上可知,若本次音频处理过程中需要处理的音频流均需要进行DTS音效处理,则重采样模块在对本次音频处理过程中需要处理的每路音频流的音频数据进行处理后,会将处理得到的音频数据存储至第一缓冲区。在此情况下,只有第一缓冲区中存储有音频数据,第二缓冲区中未存储音频数据。
若本次音频处理过程中需要处理的音频流均无需进行DTS音效处理,则重采样模块在对本次音频处理过程中需要处理的每路音频流的音频数据进行处理后,会将处理得到的音频数据存储至第二缓冲区。在此情况下,只有第二缓冲区中存储有音频数据,第一缓冲区中未存储音频数据。
若本次音频处理过程中需要处理的音频流中有一部分音频流需要进行DTS音效处理且有另一部分音频流无需进行DTS音效处理,则重采样模块在对本次音频处理过程中需要处理的每路音频流的音频数据进行处理后,会将需要进行DTS音效处理的音频流对应的处理得到的音频数据存储至第一缓冲区,且会将无需进行DTS音效处理的音频流对应的处理得到的音频数据存储至第二缓冲区。在此情况下,第一缓冲区和第二缓冲区均存储有音频数据。
通过上述步骤1007就完成了本次音频处理过程中的重采样阶段,在有需要的情况下可以继续进行运行阶段。
需要说明的是,DTS模块在本次音频处理过程中的准备阶段可以确定第二数量,即可以获知本次音频处理过程中需要处理的音频流中有多少路音频流是需要进行DTS音效处理的。
若第二数量为0,即若DTS模块确定本次音频处理过程中需要处理的音频流均无需进行DTS音效处理,则无需进行运行阶段。在此情况下,DTS模块在本次音频处理过程中可以直接获取第二缓冲区中的音频数据,将获取到的音频数据输出给音频线程,至此,完成本次音频处理过程。具体来讲,DTS模块可以获取第二缓冲区中的音频数据,将获取到的音频数据存储至第四缓冲区,第四缓冲区中的音频数据为本次音频处理过程输出的音频数据,即第四缓冲区中的音频数据是需要通过音频线程输出的音频数据。比如,第四缓冲区可以为sinkbuffer。
若第二数量不为0,即若DTS模块确定本次音频处理过程中需要处理的音频流中存在需要进行DTS音效处理的音频流,则需要进行运行阶段。在此情况下,DTS模块可以执行如下步骤。
步骤1008:DTS模块获取重采样模块在本次音频处理过程中输出的第一音频数据。
可选地,DTS模块可以获取第一缓冲区中的音频数据作为第一音频数据。
步骤1009:DTS模块对第一音频数据进行DTS音效处理,得到第三音频数据。
可选地,DTS模块可以将第三音频数据存储至第三缓冲区。第三缓冲区中的音频数据是DTS模块输出的经DTS音效处理后的音频数据。比如,第三缓冲区可以为DTSsinkbuffer。
DTS模块在得到第三音频数据后,为了避免有可能出现的音频数据叠加错误,DTS模块需要执行步骤1010。
步骤1010:DTS模块判断是否满足目标条件。
目标条件用于指示需要进行音频数据叠加且直接进行音频数据叠加会出现错误。
换句话说,目标条件用于指示重采样模块在本次音频处理过程中会输出无需进行DTS音效处理的第二音频数据且第二音频数据的声道数与第三音频数据的声道数不同。由于第一音频数据和第二音频数据均是重采样模块输出的音频数据,所以第一音频数据的声道数与第二音频数据的声道数相同。
若重采样模块在本次音频处理过程中会输出无需进行DTS音效处理的第二音频数据,则DTS模块在得到第三音频数据后需要将第三音频数据与第二音频数据进行叠加。若第二音频数据的声道数与第三音频数据的声道数不同,那么直接将第二音频数据与第三音频数据进行叠加的话会出现错误。
可选地,DTS模块可以根据第一数量、第二数量、DTS模块的输入声道数和DTS模块的输出声道数,判断是否满足目标条件。这种情况下,目标条件可以为:第一数量大于第二数量且DTS模块的输入声道数与DTS模块的输出声道数不同。
由于第一数量为本次音频处理过程中需要处理的音频流的总路数,第二数量为本次音频处理过程中需要进行DTS音效处理的音频流的总路数,所以如果第一数量大于第二数量,则说明本次音频处理过程中需要处理的音频流中有一部分音频流需要进行DTS音效处理且有另一部分音频流无需进行DTS音效处理,那么重采样模块在对本次音频处理过程中需要处理的每路音频流的音频数据进行处理后,不仅会得到需要输出至DTS模块的第一音频数据,还会得到无需输出至DTS模块的第二音频数据,这种情况下,重采样模块将第一音频数据存储至第一缓冲区,将第二音频数据存储至第二缓冲区。
DTS模块的输入声道数即为重采样模块的输出声道数,DTS模块的输出声道数即为DTS模块输出的第三音频数据的声道数。因而DTS模块的输入声道数与输出声道数不同的话,就表明重采样模块的输出声道数与DTS模块的输出声道数不同,也即表明第二音频数据的声道数与第三音频数据的声道数不同。
在一些实施例中,由于DTS模块的输出声道数通常为二,而音频流的声道数通常会大于或等于二,所以目标条件进一步可以为:第一数量大于第二数量且DTS模块的输入声道数大于DTS模块的输出声道数。
若不满足目标条件,则DTS模块在第一数量与第二数量相等的情况下,即在确定重采样模块在本次音频处理过程中不会输出无需进行DTS音效处理的第二音频数据的情况下,将第三音频数据发送给音频线程,至此,完成本次音频处理过程。具体来讲,DTS模块可以将第三缓冲区中的音频数据存储至第四缓冲区。
或者,若不满足目标条件,则DTS模块在第一数量大于第二数量且DTS模块的输入声道数与输出声道数相同的情况下,即在确定重采样模块在本次音频处理过程中会输出无需进行DTS音效处理的第二音频数据且第二音频数据的声道数与第三音频数据的声道数相同的情况下,获取第二音频数据,将第二音频数据与第三音频数据进行叠加,将叠加得到的音频数据发送给音频线程,至此,完成本次音频处理过程。具体来讲,DTS模块可以获取第二缓冲区中的音频数据,将获取到的音频数据与第三缓冲区中的音频数据进行叠加,将叠加得到的音频数据存储至第四缓冲区。
步骤1011:若满足目标条件,则DTS模块获取第二音频数据,对第二音频数据的声道数进行转换,得到第四音频数据,第四音频数据的声道数与第三音频数据的声道数相同。
可选地,DTS模块可以获取第二缓冲区中的音频数据作为第二音频数据。之后,在满足目标条件的情况下,DTS模块将第二音频数据的声道数转换为与第三音频数据的声道数相同,以此避免后续出现叠加错误。
步骤1012:DTS模块将第三音频数据与第四音频数据进行叠加,得到第五音频数据。
可选地,DTS模块可以将第四音频数据与第三缓冲区中的音频数据进行叠加,得到第五音频数据,然后将第五音频数据存储至第四缓冲区。
通过上述步骤1001至步骤1012就完成了本次音频处理。在一些实施例中,音频线程可以将第四缓冲区中的音频数据发送给音频驱动进行播放。在另一些实施例中,音频线程中还运行有用于进行其他音效处理的模块,这种情况下,音频线程还可以将第四缓冲区中的音频数据发送给该模块进行处理,然后将处理后的音频数据发送给音频驱动进行播放。
在本申请实施例中,DTS模块获取到重采样模块在本次音频处理过程中输出的第一音频数据后,对第一音频数据进行DTS音效处理,得到第三音频数据。之后,DTS模块判断是否满足目标条件,目标条件用于指示需要进行音频数据叠加且直接进行音频数据叠加会出现错误。因而在满足目标条件的情况下,DTS模块获取重采样模块在本次音频处理过程中输出的第二音频数据,并对第二音频数据的声道数进行转换,得到第四音频数据。之后,DTS模块将第三音频数据与第四音频数据进行叠加,得到第五音频数据。由于第四音频数据的声道数与第三音频数据的声道数相同,所以不会出现叠加错误,从而可以保证叠加得到的第五音频数据在后续播放时不会出现变调、杂音的问题。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(比如:固态硬盘(Solid State Disk,SSD))等。
以上所述为本申请提供的可选实施例,并不用以限制本申请,凡在本申请的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种音频数据处理方法,其特征在于,应用于数字化影院系统DTS模块,所述方法包括:
获取重采样模块在本次音频处理过程中输出的第一音频数据;
对所述第一音频数据进行DTS音效处理,得到第三音频数据;
判断是否满足目标条件,所述目标条件用于指示所述重采样模块在所述本次音频处理过程中会输出无需进行所述DTS音效处理的第二音频数据且所述第二音频数据的声道数与所述第三音频数据的声道数不同;
若满足所述目标条件,则获取所述第二音频数据,对所述第二音频数据的声道数进行转换,得到第四音频数据,所述第四音频数据的声道数与所述第三音频数据的声道数相同;
将所述第三音频数据与所述第四音频数据进行叠加,得到第五音频数据。
2.如权利要求1所述的方法,其特征在于,所述判断是否满足目标条件,包括:
根据第一数量、第二数量、所述DTS模块的输入声道数和所述DTS模块的输出声道数,判断是否满足所述目标条件,所述第一数量为所述本次音频处理过程中需要处理的音频流的总路数,所述第二数量为所述本次音频处理过程中需要进行所述DTS音效处理的音频流的总路数,所述DTS模块的输入声道数为输入所述DTS模块的音频数据的声道数,所述DTS模块的输出声道数为所述DTS模块输出的音频数据的声道数。
3.如权利要求2所述的方法,其特征在于,所述目标条件为:所述第一数量大于所述第二数量且所述DTS模块的输入声道数与所述DTS模块的输出声道数不同。
4.如权利要求2或3所述的方法,其特征在于,所述获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还包括:
接收音频信息,所述音频信息包括所述本次音频处理过程中需要处理的每路音频流的音频类型;
根据所述音频信息确定所述第一数量和所述第二数量。
5.如权利要求1至4任一所述的方法,其特征在于,所述获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还包括:
接收所述本次音频处理过程中需要处理的任意一路音频流的声道数;
将所述本次音频处理过程中接收到的声道数中的最大声道数确定为目标声道数;
向所述重采样模块发送携带有所述目标声道数的声道数设置请求,所述声道数设置请求用于请求将所述重采样模块的输出声道数设置为所述目标声道数。
6.如权利要求1至5任一所述的方法,其特征在于,所述获取重采样模块在本次音频处理过程中输出的第一音频数据,包括:
获取第一缓冲区中的音频数据作为所述第一音频数据,所述第一缓冲区中的音频数据是所述重采样模块存储至所述第一缓冲区的;
所述获取所述第二音频数据,包括:
获取第二缓冲区中的音频数据作为所述第二音频数据,所述第二缓冲区中的音频数据是所述重采样模块存储至所述第二缓冲区的。
7.如权利要求6所述的方法,其特征在于,所述获取重采样模块在本次音频处理过程中输出的第一音频数据之前,还包括:
接收音频信息,所述音频信息包括所述本次音频处理过程中需要处理的每路音频流的音频类型;
根据所述音频信息确定缓冲区设置信息,所述缓冲区设置信息用于指示所述每路音频流经所述重采样模块处理后需存储至的缓冲区;
将所述缓冲区设置信息发送给所述重采样模块。
8.如权利要求1至7任一所述的方法,其特征在于,所述对所述第一音频数据进行DTS音效处理,得到第三音频数据之后,还包括:
将所述第三音频数据存储至第三缓冲区;
所述将所述第三音频数据与所述第四音频数据进行叠加,得到第五音频数据,包括:
将所述第三缓冲区中的音频数据与所述第四音频数据进行叠加,得到所述第五音频数据;
将所述第五音频数据存储至第四缓冲区,所述第四缓冲区中的音频数据为所述本次音频处理过程输出的音频数据。
9.一种音频数据处理方法,其特征在于,所述方法应用于音频线程,所述音频线程中运行有数字化影院系统DTS模块和重采样模块,所述方法包括:
所述重采样模块获取所述音频线程在本次音频处理过程中需要处理的每路音频流中的一帧音频数据,对所述音频数据进行处理,输出处理后的音频数据;
所述DTS模块获取所述重采样模块在所述本次音频处理过程中输出的第一音频数据;对所述第一音频数据进行DTS音效处理,得到第三音频数据;判断是否满足目标条件,所述目标条件用于指示所述重采样模块在所述本次音频处理过程中会输出无需进行所述DTS音效处理的第二音频数据且所述第二音频数据的声道数与所述第三音频数据的声道数不同;若满足所述目标条件,则获取所述第二音频数据,对所述第二音频数据的声道数进行转换,得到第四音频数据,所述第四音频数据的声道数与所述第三音频数据的声道数相同;将所述第三音频数据与所述第四音频数据进行叠加,得到第五音频数据。
10.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1至9任意一项所述的方法。
CN202310488006.7A 2023-04-28 2023-04-28 音频数据处理方法、设备和存储介质 Active CN117135532B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310488006.7A CN117135532B (zh) 2023-04-28 2023-04-28 音频数据处理方法、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310488006.7A CN117135532B (zh) 2023-04-28 2023-04-28 音频数据处理方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN117135532A true CN117135532A (zh) 2023-11-28
CN117135532B CN117135532B (zh) 2024-06-14

Family

ID=88853419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310488006.7A Active CN117135532B (zh) 2023-04-28 2023-04-28 音频数据处理方法、设备和存储介质

Country Status (1)

Country Link
CN (1) CN117135532B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082850A1 (ja) * 2005-02-01 2006-08-10 Matsushita Electric Industrial Co., Ltd. 再生装置、プログラム、再生方法
CN106375778A (zh) * 2016-08-12 2017-02-01 南京青衿信息科技有限公司 一种符合数字电影规范的三维音频节目码流传输的方法
US20170185371A1 (en) * 2015-12-29 2017-06-29 Amtran Technology Co., Ltd. Audio playback device and method
US20170242652A1 (en) * 2016-02-18 2017-08-24 Samsung Electronics Co., Ltd. Electronic device and method for processing audio data
WO2017215615A1 (zh) * 2016-06-16 2017-12-21 广东欧珀移动通信有限公司 一种音效处理方法及移动终端
CN109559763A (zh) * 2017-09-26 2019-04-02 华为技术有限公司 一种实时数字音频信号混音的方法及装置
CN113126948A (zh) * 2019-12-30 2021-07-16 华为技术有限公司 一种音频播放方法及相关设备
CN114420143A (zh) * 2022-01-14 2022-04-29 天津天地伟业智能安全防范科技有限公司 一种基于海思平台的多音频叠加输出方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082850A1 (ja) * 2005-02-01 2006-08-10 Matsushita Electric Industrial Co., Ltd. 再生装置、プログラム、再生方法
US20170185371A1 (en) * 2015-12-29 2017-06-29 Amtran Technology Co., Ltd. Audio playback device and method
US20170242652A1 (en) * 2016-02-18 2017-08-24 Samsung Electronics Co., Ltd. Electronic device and method for processing audio data
WO2017215615A1 (zh) * 2016-06-16 2017-12-21 广东欧珀移动通信有限公司 一种音效处理方法及移动终端
CN106375778A (zh) * 2016-08-12 2017-02-01 南京青衿信息科技有限公司 一种符合数字电影规范的三维音频节目码流传输的方法
CN109559763A (zh) * 2017-09-26 2019-04-02 华为技术有限公司 一种实时数字音频信号混音的方法及装置
CN113126948A (zh) * 2019-12-30 2021-07-16 华为技术有限公司 一种音频播放方法及相关设备
CN114420143A (zh) * 2022-01-14 2022-04-29 天津天地伟业智能安全防范科技有限公司 一种基于海思平台的多音频叠加输出方法及装置

Also Published As

Publication number Publication date
CN117135532B (zh) 2024-06-14

Similar Documents

Publication Publication Date Title
US20220159453A1 (en) Method for Using Remote SIM Module and Electronic Device
WO2022089207A1 (zh) 一种跨设备应用交互方法、电子设备与服务器
CN113094123A (zh) 应用程序中功能的实现方法、装置、电子设备和存储介质
US20230259250A1 (en) Control method and apparatus, and electronic device
EP4266202A1 (en) Data protection method and system, and medium and electronic device
US11991040B2 (en) Network configuration method and device
CN115314427B (zh) 一种协议测试方法、电子设备及芯片系统
CN117135532B (zh) 音频数据处理方法、设备和存储介质
EP4354270A1 (en) Service recommendation method and electronic device
CN116982042A (zh) 灵活授权的访问控制方法、相关装置及系统
CN115203716A (zh) 权限同步方法、相关装置及系统
CN111159734A (zh) 通信终端及多应用数据互访处理方法
CN110737765A (zh) 多轮对话的对话数据处理方法及相关装置
CN115002820B (zh) 通话状态监听方法、装置、设备、存储介质
CN116700660B (zh) 音频播放方法和电子设备
CN116737036B (zh) 通知消息的处理方法和电子设备
CN116708647B (zh) 通知消息回复方法及电子设备
CN117499850B (zh) 一种音频数据播放方法及电子设备
CN115002821B (zh) 通话状态监听方法、装置、设备、存储介质
CN113867999B (zh) 应用异常处理方法、终端及计算机可读存储介质
CN117135263B (zh) 日志信息获取方法、电子设备及计算机可读存储介质
CN115242547B (zh) 一种远程协助的系统、方法和电子设备
CN116662270B (zh) 文件解析方法及相关装置
CN114416011B (zh) 一种终端、音频控制方法及存储介质
CN114006969B (zh) 一种窗口启动方法和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant