1.本发明涉及音频解码技术领域,尤其涉及一种音频数据转换播放方法、装置及音频播放器。
背景技术:2.目前常用的音乐播放方法是把各种音频格式解码成脉冲编码调制(pulse
‑
codemodulation,pcm)格式的音频进行播放,但相较于使用pcm格式的音频直接播放,使用直接比特流数字(direct stream digital,dsd)格式的音频能提供更好的声音质量,因此,将pcm格式的音频转换为dsd格式的音频就尤为关键。
3.现有技术中的dsd音频转换方法,往往依赖于独立的pcm
‑
dsd转换芯片,给移动终端增加了硬件成本的同时,无法适配所有的dsd音频转换格式。
技术实现要素:4.为了解决上述技术问题,本公开实施例提供了一种音频数据转换播放方法、装置及音频播放器,具体方案如下:
5.第一方面,本公开实施例提供了一种音频数据转换播放方法,应用于装配安卓系统的音频播放器,所述方法包括:
6.从待转换音频缓冲区中提取待转换音频数据,并获取所述待转换音频数据的特征参数,其中,所述特征参数包括采样率、位深度和dsd音频数据转换类型;
7.根据所述待转换音频数据的特征参数配置并启动转换线程,所述转换线程用于将待转换音频数据转换为dsd音频数据;
8.根据dsd音频数据类型配置并启动播放线程,所述播放线程用于通过声音架构接口向内核层输出dsd音频数据。
9.根据本公开实施例的一种具体实施方式,所述从待转换音频缓冲区中提取待转换音频数据的步骤之前,所述方法还包括:
10.接收应用层发送的初始音频数据,并将所述初始音频数据存入所述待转换音频缓冲区中,所述初始音频数据包括未解码的pcm音频数据;
11.解码所述初始音频数据,以得到所述待转换音频数据,其中,所述待转换音频数据包括解码后的pcm音频数据;
12.将所述待转换音频数据存入所述待转换音频缓冲区中。
13.根据本公开实施例的一种具体实施方式,所述根据所述待转换音频数据的特征参数配置并启动转换线程的步骤,包括:
14.根据所述待转换音频数据的采样率和位深度确定正在播放的音频配置;
15.根据所述dsd音频数据的转换类型和所述正在播放的音频配置启动转换线程。
16.根据本公开实施例的一种具体实施方式,所述根据所述待转换音频数据的特征参数配置并启动转换线程的步骤之后,所述方法还包括:
17.将转换后的dsd音频数据存入dsd音频缓冲区中;
18.计算所述dsd音频缓冲区中剩余未播放的第一音频帧数和所述待转换音频缓冲区中未解码的第二音频帧数;
19.根据所述待转换音频数据的采样率和位深度计算初始阻塞时间;
20.根据预设规则、所述第一音频帧数、所述第二音频帧数以及所述初始阻塞时间实时调整阻塞时间。
21.根据本公开实施例的一种具体实施方式,所述根据预设规则、所述第一音频帧数、所述第二音频帧数以及所述初始阻塞时间实时调整阻塞时间的步骤,包括:
22.若所述第一音频帧数满足第一预设范围且所述第二音频帧数满足第二预设范围,则增大接收所述初始音频数据的速度;
23.若所述第一音频帧数满足第三预设范围,则减小接收所述初始音频数据的速度;
24.若所述第一音频帧数满足第四预设范围,则保持接收所述初始音频数据的速度。
25.根据本公开实施例的一种具体实施方式,所述根据dsd音频数据类型配置并启动播放线程的步骤,包括:
26.从dsd缓冲器区中提取对应的dsd音频数据;
27.检测所述dsd音频数据类型,其中,所述dsd音频数据类型为dsd32、dsd64、dsd128、dsd256、dsd1024和dsd2048中的任一种;
28.根据dsd音频数据类型配置并启动播放线程。
29.第二方面,本公开实施例还提供了一种音频数据转换播放装置,所述装置包括:
30.参数获取模块,用于从待转换音频缓冲区中提取待转换音频数据,并获取所述待转换音频数据的特征参数,其中,所述特征参数包括采样率、位深度和dsd音频数据转换类型;
31.转换模块,用于根据所述待转换音频数据的特征参数配置并启动转换线程,所述转换线程用于将待转换音频数据转换为dsd音频数据;
32.播放模块,用于根据dsd音频数据类型配置并启动播放线程,所述播放线程用于通过声音架构接口向内核层输出dsd音频数据。
33.根据本公开实施例的一种具体实施方式,所述转换模块,具体用于根据所述待转换音频数据的采样率和位深度确定正在播放的音频配置;
34.根据所述dsd音频数据的转换类型和所述正在播放的音频配置启动转换线程。
35.第三方面,本公开实施例提供了一种音频播放器,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行第一方面所述的音频数据转换播放方法。
36.第四方面,本公开实施例提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面所述的音频数据转换播放方法。
37.本公开实施例提供了一种音频数据转换播放方法、装置及音频播放器,应用于装配安卓系统的音频播放器,所述方法包括:从待转换音频缓冲区中提取待转换音频数据,并获取所述待转换音频数据的特征参数,其中,所述特征参数包括采样率、位深度和dsd音频数据转换类型,根据所述待转换音频数据的特征参数配置并启动转换线程,所述转换线程
用于将待转换音频数据转换为dsd音频数据,根据dsd音频数据类型配置并启动播放线程,所述播放线程用于通过声音架构接口向内核层输出dsd音频数据。本公开实施例提供的音频数据转换播放方法通过双线程单独配置并启动的方式将转换步骤与播放步骤隔离开,从而保证将所有的待转换音频数据转换为dsd音频数据的同时,实现更为流畅的音频播放效果,优化用户体验。
附图说明
38.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
39.图1示出了本公开实施例提供的一种音频数据转换播放方法的方法流程示意图;
40.图2示出了本公开实施例提供的一种音频数据转换播放方法的交互流程示意图;
41.图3示出了本公开实施例提供的一种音频数据转换播放装置的装置模块示意图。
具体实施方式
42.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
43.通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
45.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
46.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
47.参考图1,为本公开实施例提供的一种音频数据转换播放方法,应用于装配安卓系统的音频播放器,如图1所示,所述音频数据转换播放方法包括:
48.s101,从待转换音频缓冲区中提取待转换音频数据,并获取所述待转换音频数据的特征参数,其中,所述特征参数包括采样率、位深度和dsd音频数据转换类型;
49.如图2所示,在具体实施例中,安卓音频系统包括有应用层、中间层和硬件抽象层等用于处理音频数据的组件,本实施例所公开的音频数据转换播放方法,则是基于安卓音
频系统提出的一种能够有效提升音频播放器播放音频时的音质和流畅度的方法。
50.在具体实施过程中,硬件抽象层audio hal从待转换音频缓冲区提取待转换的音频数据,并获取所述待转换音频数据的特征参数,方便后续对所述待转换的音频数据执行转换线程。其中,所述待转换音频缓冲区为一个临时的环形数据池,用于存储系统写入的待转换音频数据。
51.所述待转换音频数据可以为脉冲编码调制pcm音频数据或其它类型的音频数据,在本实施例中,使用脉冲编码调制pcm音频数据作为待转换音频数据的示例进行描述。所述待转换音频数据的类型也可以为多种,此处不作限定。
52.根据本公开实施例的一种具体实施方式,所述从待转换音频缓冲区中提取待转换音频数据的步骤之前,所述方法还包括:
53.接收应用层发送的初始音频数据,并将所述初始音频数据存入所述待转换音频缓冲区中,所述初始音频数据包括未解码的pcm音频数据;
54.解码所述初始音频数据,以得到所述待转换音频数据,其中,所述待转换音频数据包括解码后的pcm音频数据;
55.将所述待转换音频数据存入所述待转换音频缓冲区中。
56.在具体实施过程中,应用层发送初始音频数据至中间层audio track,以使得所述中间层audio track能够将所述初始音频数据写入硬件抽象层audio hal,所述硬件抽象层audio hal将所述初始音频数据存放在待转换音频缓冲区中。
57.其中,所述初始音频数据包括未解码的pcm音频数据,所述待转换音频缓冲区可以为环形数据池pcm_ring_buffer。
58.进一步的,所述中间层audio track会从所述待转换音频缓冲区中提取相应的初始音频数据,并对所述初始音频数据执行解码步骤,以获得解码后的待转换音频数据,其中,所述待转换音频数据包括解码后的pcm音频数据。将所述待转换音频数据存入所述待转换音频缓冲区中,从而方便硬件抽象层audio hal后续提取所述待转换音频数据进行转换操作。
59.在对所述初始音频数据解码后,将所述待转换音频数据存入待转换音频缓冲区中,即完成了对所述待转换音频缓冲区存储内容的更新。检测所述待转换音频缓冲区中存储的内容,则能够得出所述待转换音频缓冲区中已完成解码的音频帧数和未完成解码的音频帧数。
60.s102,根据所述待转换音频数据的特征参数配置并启动转换线程,所述转换线程用于将待转换音频数据转换为dsd音频数据;
61.在具体实施例中,所述硬件抽象层audio hal对所述待转换音频数据执行过采样步骤后,能够获得所述待转换音频数据的特征参数,所述特征参数包括采样率、位深度和直接比特流数字dsd音频数据转换类型等,所述硬件抽象层audio hal根据所述待转换音频数据的特征参数对转换线程进行配置,从而可以将所述待转换音频数据全部转换为直接比特流数字dsd音频数据。
62.具体的,所述转换线程可以为多个,根据所述待转换音频数据的音频类型数量来决定,多个转换线程能够将各类型的待转换音频数据均转换为同一类型的直接比特流数字dsd音频数据,从而稳定提升音频播放器播放的声音质量。
63.在具体实施过程中,所述根据所述待转换音频数据的特征参数配置并启动转换线程的步骤,包括:
64.根据所述待转换音频数据的采样率和位深度确定正在播放的音频配置;
65.根据所述dsd音频数据的转换类型和所述正在播放的音频配置启动转换线程。
66.所述根据所述待转换音频数据的特征参数配置并启动转换线程的步骤之后,所述方法还包括:
67.将转换后的dsd音频数据存入dsd音频缓冲区中;
68.计算所述dsd音频缓冲区中剩余未播放的第一音频帧数和所述待转换音频缓冲区中未解码的第二音频帧数;
69.根据所述待转换音频数据的采样率和位深度计算初始阻塞时间;
70.根据预设规则、所述第一音频帧数、所述第二音频帧数以及所述初始阻塞时间实时调整阻塞时间。
71.具体的,在获取了所述待转换音频数据的特征参数后,所述硬件抽象层audio hal则根据所述待转换音频数据的采样率和位深度计算初始阻塞时间base_time,以定义所述硬件抽象层audio hal接收所述初始音频数据的初始速度。
72.在具体实施例中,可以实时调整阻塞时间,以控制所述应用层发送所述初始音频数据的速度,为所述待转换音频缓冲区提供充足的音频数据。
73.在具体实施例中,所述硬件抽象层audio hal获取所述直接比特流数字dsd音频数据后,则将所述直接比特流数字dsd音频数据存入dsd音频缓冲区中,其中,所述dsd音频缓冲区同样为一个环形数据池,dsd音频缓冲区dsd_ring_buffer用于存储转换后的直接比特流数字dsd音频数据。值得注意的是,所述dsd音频缓冲区和所述待转换音频缓冲区属于不同的独立环形数据池。
74.通过所述待转换音频缓冲区存储待转换音频数据,通过所述dsd音频缓冲区存储所述直接比特流数字dsd音频数据,能够实现将转换线程和播放线程所使用的数据分开储存的技术效果,从而将所述转换线程与所述播放线程隔离开。
75.在所述转换线程启动后,所述硬件抽象层audio hal还会实时计算所述dsd音频缓冲区剩余未播放第一音频帧数dsd_frame_counter和所述待转换音频缓冲区剩余未解码的第二音频帧数pcm_frame_counter。
76.所述硬件抽象层audio hal根据预设规则、所述第一音频帧数dsd_frame_counter、所述第二音频帧数pcm_frame_counter和所述初始阻塞时间base_time实时调节阻塞时间,从而能够保证所述待转换音频缓冲池中有充足的音频数据用于转换成直接比特流数字dsd音频数据,且保证所述待转换音频缓冲池中不会有过多的音频数据引起的音频播放器声音卡顿和ui显示不同步问题。
77.根据本公开实施例的一种具体实施方式,所述根据预设规则、所述第一音频帧数、所述第二音频帧数以及所述初始阻塞时间实时调整阻塞时间的步骤,包括:
78.若所述第一音频帧数满足第一预设范围且所述第二音频帧数满足第二预设范围,则增大接收所述初始音频数据的速度;
79.若所述第一音频帧数满足第三预设范围,则减小接收所述初始音频数据的速度;
80.若所述第一音频帧数满足第四预设范围,则保持接收所述初始音频数据的速度。
81.举例来说,所述转换线程在将脉冲编码调制pcm音频数据转换为直接比特流数字dsd音频数据时,若所述第一音频帧数dsd_frame_counter小于5帧且所述第二音频帧数pcm_frame_counter小于4帧时,将阻塞时间设置为1ms,以增大接收所述初始音频数据的速度。
82.若所述第一音频帧数dsd_frame_counter大于20帧,则将初始阻塞时间base_time*10,以减小接收所述初始音频数据的速度。
83.若所述第一音频帧数处于其他帧数时,则不改变所述初始阻塞时间,以保持接收所述初始音频数据的速度。
84.通过上述预设规则调整阻塞速度,从而能够有效保证转换线程和播放线程的流畅度,使音频播放器能够稳定、流畅的播放高质量声音。
85.s103,根据dsd音频数据类型配置并启动播放线程,所述播放线程用于通过声音架构接口向内核层输出dsd音频数据。
86.在所述转换线程启动并将转换后的直接比特流数字dsd音频数据存入所述dsd音频缓冲区后,所述硬件抽象层audio hal则根据所述直接比特流数字音频数据的数据类型配置并启动播放线程。
87.具体的,所述根据dsd音频数据类型配置并启动播放线程的步骤,包括:
88.从dsd缓冲器区中提取对应的dsd音频数据;
89.检测所述dsd音频数据类型,其中,所述dsd音频数据类型为dsd32、dsd64、dsd128、dsd256、dsd1024和dsd2048中的任一种;
90.根据dsd音频数据类型配置并启动播放线程。
91.在所述配置好所述播放线程后,则将直接比特流数字dsd音频数据通过声音架构接口输出至linux内核层,以实现音频数据的播放。其中,所述声音架构接口可以为高级linux声音架构(advanced linux sound architecture,简称alsa)接口。
92.上述实施例公开的所述音频数据转换播放方法,基于两个独立的音频缓冲区存储音频数据,从而实现了将转换线程和播放线程分离开,能够保证转换充分的同时,使得音频播放器稳定、流畅的播放声音。
93.参考图3,本公开实施例还提供了一种音频数据转换播放装置300,如图3所示,所述音频数据转换播放装置300包括:
94.参数获取模块301,用于从待转换音频缓冲区中提取待转换音频数据,并获取所述待转换音频数据的特征参数,其中,所述特征参数包括采样率、位深度和dsd音频数据转换类型;
95.转换模块302,用于根据所述待转换音频数据的特征参数配置并启动转换线程,所述转换线程用于将待转换音频数据转换为dsd音频数据;
96.播放模块303,用于根据dsd音频数据类型配置并启动播放线程,所述播放线程用于通过声音架构接口向内核层输出dsd音频数据。
97.根据本公开实施例的一种具体实施方式,所述转换模块302,具体用于从所述待转换音频缓冲区中提取所述待转换音频数据;
98.根据所述待转换音频数据的采样率和位深度计算初始阻塞时间,以定义接收音频层初始音频数据的初始速度;
99.根据所述初始阻塞时间和dsd音频数据的转换类型配置并启动转换线程。
100.其次,本公开实施例还提供了一种音频播放器,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述实施例中所述的音频数据转换播放方法。
101.本公开实施例提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序在处理器上运行时执行上述实施例中所述的音频数据转换播放方法。
102.综上所述,本公开实施例提供了一种音频数据转换播放方法、装置及音频播放器,应用于装配安卓系统的音频播放器,通过独立的待转换音频缓冲区存储待转换音频数据,通过独立的dsd音频缓冲区存储转换后的dsd音频数据,从而使得转换线程的起点和播放线程的起点分别从不同的音频缓冲区开始,将转换线程和播放线程隔离开,保证转换线程和播放线程的流畅进行。并且,在进行音频数据转换线程的过程中,通过动态调整阻塞时间,从而避免音频播放器出现卡顿和ui不同步的问题。且上述方法能够直接在装配安卓系统的音频播放器上运行,无需安装其它的芯片设备,通过安卓系统自带的音频系统就能实现将所有的待转换音频数据转换为dsd音频数据,并通过声音架构接口输出至内核层,保证音频播放器高质量声音的播放。另外,所提供的音频数据转换播放装置、音频播放器及计算机可读存储介质的具体实施过程,可以参见上述方法实施例的具体实施过程,在此不再一一赘述。
103.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
104.另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
105.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
106.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。