音频服务实现方法、装置、电子设备和可读介质与流程

文档序号:32883771发布日期:2023-01-12 21:10阅读:34来源:国知局
音频服务实现方法、装置、电子设备和可读介质与流程

1.本公开涉及音频技术领域,具体而言,涉及一种音频服务实现方法、装置、电子设备和可读介质。


背景技术:

2.目前,pulseaudio(脉冲音频服务)是基于一个音频服务器实现的服务,通过一个后台进程从一个或多个音源(包括进程或输入设备)接收声音输入,然后重新定向到一个或多个槽,例如声卡、远程网络pulseaudio服务或其他进程。
3.在相关技术中,pulseaudio的一个目的是定向所有声音流,包括试图访问硬件的进程,pulseaudio通过提供适配器将音频资源提供给不同的声音系统。
4.但是,在没有人工操作的前提下,pulseaudio无法实现多种不同音频设备之间的动态切换(包括重启后顺序),例如,多款usb(通用串行总线,universal serial bus)耳机、多个dp(显示接口,displayport)接口外接hdmi(high definition multimedia interface,高清多媒体接口)显示器等,另外,在切换音频设备的过程中也存在诸多异常,甚至影响到提供脉冲音频服务的质量和可靠性。
5.需要说明的是,在上述背景技术部分公开的信息仅被配置为加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开的目的在于提供一种音频服务实现方法、装置、电子设备和可读介质,被配置为至少在一定程度上克服由于相关技术的限制和缺陷而导致的pulseaudio提供脉冲音频服务的可靠性差问题。
7.根据本公开实施例的第一方面,提供一种音频服务实现方法,包括:当需要为终端设备提供音频资源时,脉冲音频服务根据资源播放顺序表中至少一个音频设备的优先级确定目标音频设备,其中,资源播放顺序表中包括音频设备标识和对应优先级信息,音频设备标识包括设备信息和端口信息;脉冲音频服务基于目标音频设备提供音频资源。
8.在本公开的一种示例性实施例中,还包括:在脉冲音频服务初始化时,脉冲音频服务加载资源播放顺序表,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息;音频设备的接入顺序为至少一个音频设备接入终端设备的顺序;脉冲音频服务将资源播放顺序表中未接入终端设备的音频设备对应的音频设备标识的优先级信息设为最低优先级。
9.在本公开的一种示例性实施例中,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息包括:当接入终端设备的音频设备中存在不属于资源播放顺序表中的音频设备时,脉冲音频服务将音频设备对应的音频设备标识加入资源播放顺序表,并为音频设备对应的音频设备标识设定对应的优先级信息。
10.在本公开的一种示例性实施例中,还包括:根据至少一个音频设备的接入顺序更
新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括:响应于音频设备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;如果是新接入的音频设备,脉冲音频服务判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,将新接入的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为最高优先级;如果否,将新接入的音频设备对应的设备标识写入资源播放顺序表,并将新接入的音频设备对应的设备标识在资源播放顺序表中的优先级设置为最高优先级;如果是新拔出的音频设备,脉冲音频服务将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级。
11.在本公开的一种示例性实施例中,脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为预设优先级,并对不支持热插拔的音频设备进行静态侦测;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括:响应于除不支持热插拔的音频设备之外的第一音频设备的热插拔事件,确定热插拔事件对应的新接入的第一音频设备或新拔出的第一音频设备;如果是新接入的第一音频设备,脉冲音频服务将第一音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级;如果是新拔出的第一音频设备,脉冲音频服务将第一音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级。
12.在本公开的一种示例性实施例中,还包括:资源播放顺序表中还可以包括音频设备的可用状态,可用状态表明音频设备标识对应的优先级信息是否有效;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括:根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态;可用状态为可用或不可用。
13.在本公开的一种示例性实施例中,资源播放顺序表中还包括音频设备的可用状态,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备包括:脉冲音频服务根据资源播放顺序表中音频设备的优先级和可用状态确定目标音频设备根据资源播放顺序表中至少一个音频设备的优先级确定目标音频设备,包括:依据资源播放顺序表中各音频设备标识对应的可用状态确定音频设备标识对应的优先级信息是否有效;其中,可用状态为可用的音频设备标识对应的优先级信息为有效,可用状态为不可用的音频设备标识对应的优先级信息为无效;基于有效的优先级信息从至少一个音频设备中确定目标音频设备。
14.在本公开的一种示例性实施例中,还包括:对脉冲音频服务初始化,包括:脉冲音频服务初始化,加载资源播放顺序表;对终端设备的端口状态进行扫描,确定资源播放顺序表中包括的各音频设备标识对应的音频设备的初始接入状态;初始接入状态为已接入或未接入;将资源播放顺序表中初始接入状态为已接入的音频设备对应的音频设备标识的可用状态写为可用;将资源播放顺序表中初始接入状态为未接入的音频设备对应的音频设备标识的可用状态写为不可用。
15.在本公开的一种示例性实施例中,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态,包括:响应于音频设
备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;如果是新接入的音频设备,判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,将资源播放顺序表中新接入的音频设备的音频设备标识对应的优先级信息置为最高优先级,对应的可用状态更新为可用;如果否,将新接入的音频设备的音频设备标识写入资源播放顺序表,并将新接入的音频设备的音频设备标识在资源播放顺序表中的优先级信息设置为最高优先级,对应的可用状态写为可用;如果是新拔出的音频设备,将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级,对应的可用状态更新为不可用。
16.在本公开的一种示例性实施例中,脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级信息设置为预设优先级,对应的可用状态设置为可用;并对不支持热插拔的音频设备进行静态侦测;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态,包括:响应于除不支持热插拔的音频设备之外的第二音频设备的热插拔事件,确定热插拔事件对应的新接入的第二音频设备或新拔出的第二音频设备;如果是新接入的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为可用;如果是新拔出的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为不可用。
17.根据本公开实施例的第二方面,提供一种音频服务实现装置,包括:确定模块,被配置为当需要提供音频资源时,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备,其中,资源播放顺序表中包括音频设备标识和对应优先级信息,音频设备标识包括设备信息和端口信息;控制模块,被配置为脉冲音频服务基于目标音频设备提供音频资源。
18.根据本公开的第三方面,提供一种电子设备,包括:存储器;以及耦合到存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如上述任意一项的方法。
19.根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项的音频服务实现方法。
20.本公开实施例,当需要提供音频资源时,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备,通过资源播放顺序表中包括音频设备标识和对应优先级信息,且音频设备标识包括设备信息和端口信息,也即pulseaudio能够通过音频设备标识区分接入的端口,进一步地,脉冲音频服务基于目标音频设备提供音频资源,并且在多个音频设备之间的播放优先级发生变化时,及时切换目标音频设备来继续音频资源的交互,从而实现了多音频设备之间音频的动态切换,提升了脉冲音频服务的响应效率和可靠性。
21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
22.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起被配置为解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1示出了应用本发明实施例的音频服务实现方案的示例性系统架构的示意图;
24.图2是本公开示例性实施例中一种音频服务实现方法的流程图;
25.图3是本公开示例性实施例中另一种音频服务实现方法的流程图;
26.图4是本公开示例性实施例中一种音频服务实现方法的应用场景示意图;
27.图5是本公开示例性实施例中另一种音频服务实现方法的应用场景示意图;
28.图6是本公开示例性实施例中另一种音频服务实现方法的应用场景示意图;
29.图7是本公开示例性实施例中另一种音频服务实现方法的应用场景示意图;
30.图8是本公开示例性实施例中另一种音频服务实现方案的流程图;
31.图9是本公开示例性实施例中另一种音频服务实现方案的架构示意图;
32.图10是本公开示例性实施例中一种音频服务实现装置的方框图;
33.图11是本公开示例性实施例中一种电子设备的方框图。
具体实施方式
34.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
35.此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
36.图1示出了可以应用本发明实施例的音频服务实现方案的示例性系统架构的示意图。
37.如图1所示,系统架构100可以包括终端设备101、102、103中的一种或多种,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
38.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
39.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等等。
40.在一些实施例中,本发明实施例所提供的音频服务实现方法一般由服务器105执行,相应地,音频服务实现装置一般设置于终端设备103(也可以是终端设备101或102)中。在另一些实施例中,某些终端可以具有与服务器设备相似的功能从而执行本方法。
41.现有音频技术pulseaudio是不支持多幅耳机设备反复插拔并顺序性记忆输出输入功能,所以pulseaudio是存在诸多技术缺陷的,具体如下:
42.(1)顺序数据表的sink/source设备不区分端口;
43.(2)顺序数据表记录每个音频设备时,优先级大小比较颠倒;
44.(3)对顺序数据表读写操作时,接入耳机、hdmi/dp设备时sink/source优先级未实时更新;
45.(4)顺序数据表未对sink/source是否为可用状态进行识别,导致播放器音频停留在不可用的音频设备上;
46.(5)笔记本上扬声器和圆孔耳机在硬件上排斥性互切;
47.(6)当系统重启或注销时,不能按顺序记忆音频输入输出设备,并未对是否存在的设备进行清理检查;
48.(7)顺序数据表未及时维护更新。
49.本公开的实施例能够解决上述技术缺陷,下面结合附图对本公开示例实施方式进行详细说明。
50.图2是本公开示例性实施例一提供的音频服务实现方法的流程图。参考图2,音频服务实现方法可以包括以下步骤:
51.步骤s202,当需要提供音频资源时,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备,其中,资源播放顺序表中包括音频设备标识和对应优先级信息,音频设备标识包括设备信息和端口信息。
52.在本技术实施例中,脉冲音频服务是一种终端的后台音频服务,设备信息为接入终端的音频设备的标识,例如,从终端接收音频资源的音频设备可记作sink1、sink2、
……
、sink n,向终端发送音频资源的音频设备可记作source1、source2、
……
、source n,n为正整数。
53.进一步地,基于音频设备接入的端口确定端口信息,端口信息记作port。音频设备标识包括设备信息和端口信息,通常可以记为sink+port或source+port。基于此,不仅对设备进行了区分,也对接入端口实现了识别。进一步地,通过在资源播放顺序表中存储音频设备标识和各音频设备标识对应的优先级信息,并基于优先级信息确定接入终端设备的多个音频设备中的一个为目标音频设备,提高了确定接入终端的音频设备的优先级的效率和可靠性。
54.步骤s204,脉冲音频服务基于目标音频设备提供音频资源。
55.在本技术实施例中,当脉冲音频服务需要提供音频资源时,通过查询资源播放顺序表,确定各个音频设备标识对应的优先级信息,并基于优先级信息从至少一个音频设备中确定目标音频设备,目标音频设备基于音频设备标识中包含的端口与脉冲音频服务进行
音频资源的交互。
56.进一步地,脉冲音频服务基于目标音频设备提供音频资源,在音频设备的优先级信息发生变化时,目标音频设备也在发生相应的变化,基于此,能够实现接入终端设备的多个音频设备之间的动态切换,提升了脉冲音频服务的响应效率和可靠性。
57.下面,对音频服务实现方法的各步骤进行详细说明。
58.在本技术公开的一种示例性实施例中,在执行图2所示的步骤s202之前,可以执行相关的初始化步骤,具体包括以下步骤:在脉冲音频服务初始化时,脉冲音频服务加载资源播放顺序表,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息;其中,脉冲音频服务将资源播放顺序表中未接入的音频设备对应的音频设备标识的优先级设为最低优先级。音频设备的接入顺序是指至少一个音频设备接入终端设备的顺序。
59.在上述实施例中,资源播放顺序表可以存储于终端侧或服务器侧,为了提高音频设备动态切换的效率,可以设置一个资源播放顺序表对应于一个终端设备。在针对一个终端设备提供音频资源时,可以通过查询该终端设备对应的资源播放顺序表来提高查表速率和可靠性。
60.具体地,在脉冲音频服务初始化时,脉冲音频服务加载的资源播放顺序表中预设有音频设备标识和优先级信息;在终端设备完成音频驱动加载后,对终端设备的音频端口进行初始化扫描,确定已接入该终端设备的至少一个音频设备,以及确定全部已接入该终端设备的音频设备对应的音频设备标识在资源播放顺序表中的优先级信息;基于优先级信息确定全部已接入该终端设备的音频设备的播放优先级,并据此确定目标音频设备,其中,目标音频设备是指对应的音频设备标识具有最高的播放优先级且已接入该终端设备的音频设备。同时,将资源播放顺序表中包括的未接入终端设备的音频设备对应的音频设备标识的优先级设为最低优先级,以确保脉冲音频服务提供的音频资源不会切换至最低优先级对应的未接入的音频设备。
61.在本技术公开的一种示例性实施例中,可以按照接入终端设备的音频设备的接入顺序由先到后设置各音频设备对应的优先级信息为由低到高,也即最后接入的音频设备的优先级最高,越早接入的音频设备的优先级越低,且未接入的音频设备的优先级最低。脉冲音频服务基于即时更新后的资源播放顺序表中的优先级信息确定全部已接入该终端设备的音频设备的播放优先级,始终将音频资源提供给播放优先级最高的音频设备。
62.可选地,最低优先级的音频设备在资源播放顺序表中的优先级信息可以记作“0”或空值。
63.进一步地,本技术实施例中,脉冲音频服务根据至少一个音频设备的接入顺序更新资源播放顺序表中的优先级信息,还可以包括:当接入终端设备的音频设备中存在不属于资源播放顺序表中的音频设备时,脉冲音频服务将音频设备对应的音频设备标识加入资源播放顺序表,并为音频设备对应的音频设备标识设定对应的优先级信息。
64.在本技术公开的一种示例性实施例中,在扫描端口确定接入终端设备的音频设备时,如果存在未知音频设备,即确定未知音频设备的音频设备标识不属于资源播放顺序表时,脉冲音频服务将音频设备的音频设备标识加入资源播放顺序表,并为音频设备对应的音频设备标识设定对应的优先级信息,由此实现了及时更新资源播放顺序表中的优先级信
息。基于本技术实施例,不仅提高了资源播放顺序表的完备性,而且新录入资源播放顺序表中的音频设备也支持pulseaudio场景下实现动态切换,进一步提升了音频资源播放的流畅性和动态切换音频资源的响应效率。
65.进一步地,对于设置有支持热插拔端口的终端设备,在音频设备接入或拔出热插拔端口时产生热插拔事件。基于此,本技术实施例提供一种技术方案,可以在终端设备发生热插拔事件时,及时更新该终端设备接入的各音频设备的优先级信息,在每次产生热插拔事件后,能够基于更新后的资源播放顺序表中的优先级信息及时确定最高优先级的音频设备为目标音频设备,并与目标音频设备进行音频资源的交互。
66.基于此,对于支持热插拔的音频设备,响应于音频设备的热插拔事件,脉冲音频服务更新资源播放顺序表中音频设备的优先级信息,具体可以包括下述步骤a2-a6:
67.步骤a2:响应于音频设备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;
68.步骤a4:如果是新接入的音频设备,则脉冲音频服务判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,则将新接入的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为最高优先级;如果否,则将新接入的音频设备对应的设备标识写入资源播放顺序表,并将新接入的音频设备对应的设备标识在资源播放顺序表中的优先级设置为最高优先级。
69.在该实施例中,脉冲音频服务可以及时将新接入终端设备的热插拔端口的音频设备的优先级设置为最高优先级,在更新资源播放顺序表的同时,切换至最高优先级对应的音频设备进行音频资源的交互。
70.步骤a6:如果是新拔出的音频设备,则脉冲音频服务将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级。
71.在上述实施例中,脉冲音频服务可以及时将从终端设备的热插拔端口拔出的音频设备的优先级设置为最低优先级,及时更新资源播放顺序表,最低优先级的音频设备不进行音频资源的交互。
72.进一步地,对于不支持热插拔的音频设备,本技术实施例也提供一种技术方案,实现更新资源播放顺序表中音频设备的优先级信息,具体可以包括脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为预设优先级,并对不支持热插拔的音频设备进行静态侦测。
73.需要说明的是,本技术实施例中,当终端设备接入的音频设备仅包括不支持热插拔的音频设备时,将不支持热插拔的音频设备作为目标音频设备,通过不支持热插拔的音频设备进行音频资源的交互;当终端设备接入的音频设备中除不支持热插拔的音频设备,还包括其他音频设备(例如包括支持热插拔的音频设备)时,则如前述方法,按照资源播放顺序表中音频设备的优先级信息确定目标音频设备。
74.针对不支持热插拔的音频设备,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括以下步骤b2-b6:
75.步骤b2:响应于除不支持热插拔的音频设备之外的第一音频设备的热插拔事件,确定热插拔事件对应的新接入的第一音频设备或新拔出的第一音频设备。
76.步骤b4:如果是新接入的第一音频设备,脉冲音频服务将第一音频设备对应的音
频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级。
77.步骤b6:如果是新拔出的第一音频设备,脉冲音频服务将第一音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级。
78.进一步地,在本技术实施例中,资源播放顺序表中还可以包括音频设备的可用状态,可用状态被配置为表明音频设备标识对应的优先级信息是否有效。例如,针对某个音频设备标识,其对应的优先级为最高优先级,但其对应的可用状态为不可用,则表明该音频设备标识对应的音频设备的当前优先级信息无效,因此,即使该音频设备的优先级信息为最高优先级,也不选择该音频设备作为目标音频设备。
79.参照图3是本公开示例性实施例二提供的音频服务实现方法的流程图。参考图3,音频服务实现方法可以包括以下步骤:
80.步骤s302,当需要提供音频资源时,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备;其中,资源播放顺序表中包括音频设备标识、对应优先级信息、以及音频设备的可用状态,音频设备标识包括设备信息和端口信息。
81.本技术实施例二中,可用状态被配置为表明音频设备标识对应的优先级信息是否有效。基于此,根据资源播放顺序表中音频设备的优先级确定目标音频设备具体可以包括:
82.步骤a1、依据资源播放顺序表中各音频设备标识对应的可用状态确定音频设备标识对应的优先级信息是否有效;其中,可用状态为可用的音频设备标识对应的优先级信息为有效,可用状态为不可用的音频设备标识对应的优先级信息为无效;
83.步骤a2、基于有效的优先级信息从至少一个音频设备中确定目标音频设备。
84.进一步的,本技术实施例,还可以在每次更新资源播放顺序表中各音频设备标识的可用状态后,及时更新目标音频设备,并基于更新后的目标音频设备进行音频资源的播放。
85.步骤s304,脉冲音频服务基于目标音频设备提供音频资源。
86.在本技术公开的一种示例性实施例中,在执行图3所示的步骤s302之前,可以执行相关的初始化步骤,具体包括以下步骤:在脉冲音频服务初始化时,脉冲音频服务加载资源播放顺序表,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态;脉冲音频服务根据资源播放顺序表中音频设备标识的优先级信息和可用状态确定目标音频设备。
87.具体的,对脉冲音频服务初始化可以包括下述步骤c2-c8:
88.步骤c2:在脉冲音频服务初始化时,脉冲音频服务加载资源播放顺序表;
89.步骤c4:对终端设备的端口状态进行扫描,以确定资源播放顺序表中包括的各音频设备标识对应的音频设备的初始接入状态;
90.其中,初始接入状态可以包括已接入和未接入;初始接入状态为已接入表明对应的音频设备当前为接入终端设备的状态,初始接入状态为未接入表明对应的音频设备当前未接入终端设备。
91.步骤c6:将资源播放顺序表中初始接入状态为已接入的音频设备对应的音频设备标识的可用状态写为可用。
92.针对包括的已接入终端设备的音频设备,将音频设备对应的可用状态写为可用,以使接入的音频设备在资源播放顺序表中的优先级信息有效。
93.步骤c8:将资源播放顺序表中初始接入状态为未接入的音频设备对应的音频设备标识的可用状态写为不可用。
94.在完成脉冲音频服务初始化后,脉冲音频服务可以根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的可用状态。
95.对于设置有支持热插拔端口的终端设备,在音频设备接入或拔出热插拔端口时产生热插拔事件。基于此,本技术实施例二提供一种技术方案,可以在终端设备发生热插拔事件时,及时更新该终端设备接入的各音频设备的优先级信息和可用状态,在每次产生热插拔事件后,能够基于更新后的资源播放顺序表中的优先级信息和可用状态及时确定有效的最高优先级的音频设备为目标音频设备,并与目标音频设备进行音频资源的交互。
96.基于此,对于支持热插拔的音频设备,响应于音频设备的热插拔事件,脉冲音频服务更新资源播放顺序表中音频设备的优先级信息和可用状态,具体可以包括下述步骤d2-d6:
97.步骤d2:响应于音频设备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;
98.步骤d4、如果是新接入的音频设备,判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,将资源播放顺序表中新接入的音频设备的音频设备标识对应的优先级信息置为最高优先级,对应的可用状态更新为可用;如果否,则将新接入的音频设备的音频设备标识写入资源播放顺序表,并将新接入的音频设备的音频设备标识在资源播放顺序表中的优先级信息设置为最高优先级,对应的可用状态写为可用;
99.在该实施例中,脉冲音频服务可以及时将新接入终端设备的热插拔端口的音频设备的优先级设置为最高优先级,可用状态设置为可用,在更新资源播放顺序表的同时,切换至最高优先级对应的音频设备进行音频资源的交互。
100.步骤d6、如果是新拔出的音频设备,则将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级,对应的可用状态更新为不可用。
101.在上述实施例中,脉冲音频服务可以及时将从终端设备的热插拔端口拔出的音频设备的优先级设置为最低优先级,可用状态设置为不可用,及时更新资源播放顺序表,最低优先级的音频设备不进行音频资源的交互。
102.进一步地,对于不支持热插拔的音频设备,本技术实施例二也提供一种技术方案,实现更新资源播放顺序表中音频设备的优先级信息,具体可以包括:脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级信息设置为预设优先级,对应的可用状态设置为可用;并对不支持热插拔的音频设备进行静态侦测。
103.需要说明的是,本技术实施例中,当终端设备接入的音频设备仅包括不支持热插拔的音频设备,且音频设备的可用状态为可用时,将不支持热插拔的音频设备作为目标音频设备,通过不支持热插拔的音频设备进行音频资源的交互;当终端设备接入的音频设备中除不支持热插拔的音频设备,还包括其他音频设备(例如包括支持热插拔的音频设备)时,则如前述方法,按照资源播放顺序表中音频设备的优先级信息和可用状态确定目标音频设备。
104.针对不支持热插拔的音频设备,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态,包括以下步骤e2-e6:
105.步骤e2:响应于除不支持热插拔的音频设备之外的第二音频设备的热插拔事件,确定热插拔事件对应的新接入的第二音频设备或新拔出的第二音频设备;
106.步骤e4:如果是新接入的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为可用;
107.步骤e6:如果是新拔出的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为不可用。
108.在上述实施例中,在动态切换可用状态的音频设备的过程中,对于资源播放顺序中的优先级信息可以不进行修改,在发生热插拔事件时,基于音频设备接入终端设备写入可用,对应的优先级信息有效,基于音频设备拔出于终端设备写入不可用,对应的优先级信息无效。
109.上述基于音频设备的接入状态来确定优先级信息,另外,在实际应用中,为了满足用户对音频设备的使用需求,可以基于用户的选择指令调整资源播放顺序表中的音频设备标识的优先级信息,优先级设置事件包括用户对音频设备的偏好设置,具体可以包括下述步骤f2-f4:
110.步骤f2:响应于用户触发的音频设备优先级设置事件,基于优先级设置事件确定用户对资源播放顺序表中的音频设备标识的优先级设置指令。
111.步骤f4:基于优先级设置指令选择至少一个音频设备中的一个为目标音频设备,并调整音频设备在资源播放顺序表中的音频设备标识对应的优先级信息为最高优先级。
112.基于此,能够及时确定用户选择的一个音频设备为目标音频设备,切换至用户选择的音频设备进行音频资源的交互,提高了用户对音频设备的使用体验。
113.在上述示例性实施例中,在基于资源播放顺序表对音频设备进行动态切换的同时,音频服务实现方法还包括:脉冲音频服务基于优先级设置事件和/或热插拔事件上报资源播放顺序表给多媒体应用,以便多媒体应用向用户展示音频设备的优先级信息。
114.在上述示例性实施例中,脉冲音频服务基于事件上报资源播放顺序表给多媒体应用,以便多媒体应用向用户展示至少一个音频设备的播放优先级,提升了脉冲音频服务过程中的优先级信息的直观性,也提高了用户设置优先级的便捷性和效率。
115.在上述示例性实施例中,资源播放顺序表中包括在多媒体应用的应用场景中至少一个音频设备的优先级信息。
116.在上述示例性实施例中,音频类型信息包括音频、视频、音乐、游戏等,但不限于此。基于此,通过设置每个音频类型下包括各个音频设备的优先级信息,实现了pulseaudio在各个应用场景下独立的音频设备的动态切换。
117.在上述示例性实施例中,脉冲音频服务根据音频设备的接入顺序更新资源播放顺序表中的优先级信息包括以下具体步骤g2-g6:
118.步骤g2:在脉冲音频服务的启动后,基于音频驱动对音频设备进行加载。
119.步骤g4:基于音频设备的加载结果获得音频设备的设备信息和端口信息。
120.步骤g6:根据音频设备的设备信息和端口信息确定音频设备在资源播放顺序表中对应的音频设备标识。
121.在上述实施例中,在脉冲音频服务的启动后,基于音频驱动对音频设备进行加载,基于设备信息和端口信息确定设备标识信息,并根据接入顺序更新设备标识信息在资源播放顺序表中对应的优先级。
122.在上述示例性实施例中,基于音频驱动对音频设备进行加载包括以下具体步骤h2-h8:
123.步骤h2:加载厂家板载音频芯片所支持的音频驱动。
124.步骤h4:启动alsa模块对已加载的音频驱动检查是否存在用户定义配置。
125.步骤h6:启动udev进程对已加载的音频驱动检查是否支持udev音频规则,并对支持udev音频规则的音频驱动检查是否存在用户定义配置。
126.步骤h8:如果存在,则加载用户定义配置。
127.在上述示例性实施例中,alsa(advanced linux sound architecture的缩写,高级linux声音架构的简称)在linux操作系统上提供了音频和midi(musical instrument digital interface,音乐设备数字化接口)的支持,启动alsa模块对已加载的音频驱动检查是否存在用户定义配置,如果存在,则加载用户定义配置,进而通过接入的音频设备提供hifi(high-fidelity,高保真)质量的音频资源。
128.本公开的实施例提供了音频服务实现方案的应用场景,下面结合图4至图7所示的应用场景来说明如何对资源播放顺序表的优先级信息,并根据优先级信息确定目标音频设备。
129.如图4所示,应用场景一:
130.在装有pulseaudio的linux系统基础上,上电进入linux系统桌面后,用户打开ui(user interface,用户界面)声音设置界面,此后插拔圆孔耳机,ui声音设置界面能自动显示圆孔音频设备,用户打开音频播放器后,圆孔耳机同样有声音输出,包括以下步骤:
131.步骤s402,终端设备上电开机。
132.步骤s404,进入linux系统桌面。
133.步骤s406,打开脉冲音频服务的ui(user interface,用户界面)。
134.步骤s408,用户在终端设备的端口插入圆孔耳机,在资源播放顺序表中调整圆孔耳机的音频设备标识对应的优先级信息为最高优先级,脉冲音频服务即时确定圆孔耳机为目标音频设备,具有播放音频资源的最高优先级。
135.步骤s410,ui界面动态显示圆孔耳机。
136.步骤s412,打开音频播放器,圆孔耳机有声音(音频资源)播放。
137.应用场景二:
138.在应用场景一打开ui声音设置界面后,如图5所示,声音设置界面默认就有圆孔耳机(音频设备),属于静态式显示,当用户插拔圆孔耳机均无变化,但打开音频播放器后,圆孔耳机同样有声音输出,包括以下步骤:
139.步骤s502,终端设备上电开机。
140.步骤s504,进入linux系统桌面。
141.步骤s506,打开脉冲音频服务的ui界面。
142.步骤s508,ui界面静态显示圆孔耳机。
143.步骤s510,ui无变化。
144.应用场景三:
145.如图6所示,进入系统桌面后,不打开ui声音设置界面情况下,用户打开音频播放器,然后按自己预设的先后顺序插拔圆孔耳机、usb耳机以及hdmi(high definition multimedia interface,高清晰度多媒体接口)等多种不同硬件接口设备,播放器均能按照预设顺序依次播放出声音,包括以下步骤:
146.步骤s602,终端设备上电开机。
147.步骤s604,进入linux系统桌面。
148.步骤s606,不打开脉冲音频服务的ui界面。
149.步骤s608,打开音频播放器。
150.步骤s610,用户先后插拔圆孔耳机、usb耳机和hdmi设备,在资源播放顺序表中依次调整圆孔耳机、usb耳机、hdmi设备的音频设备标识的优先级信息为最高优先级,hdmi设备的播放优先级高于usb耳机的播放优先级,usb耳机的播放优先级高于圆孔耳机的播放优先级。
151.步骤s612,按圆孔耳机、usb耳机、hdmi设备的插拔顺序,圆孔耳机、usb耳机、hdmi设备依次有声音输出。
152.应用场景四:
153.在应用场景三基础之上,如图7所示,脉冲音频服务记录了每个圆孔耳机、usb耳机、hdmi等多种音频设备顺序,之后重启或者注销,当再次进入linux系统桌面,打开音频播放器,然后播放声音,均能按照记忆顺序依次找到对应的音频设备,声音也是按此顺序播放,包括以下步骤:
154.步骤s702,圆孔设备、usb耳机、hdmi设备插入或拔出于终端设备、。
155.步骤s704,reboot重启或注销。
156.步骤s706,进入linux系统桌面。
157.步骤s708,打开音频播放器。
158.步骤s710,按上次重启/注销前插拔记忆的资源播放顺序表确定音频设备标识对应的优先级信息,基于优先级信息即时确定目标音频设备,并通过目标音频设备进行音频资源的播放。
159.图8是本公开示例性实施例中另一种音频服务实现方案的流程图。
160.如图8所示,本公开示例性实施例中另一种音频服务实现方案的整体流程包括:
161.步骤s802,linux系统上电开机。
162.步骤s804,内核加载圆孔设备、usb耳机、hdmi等设备的音频驱动模块。
163.步骤s806,alsa模块加载初始化。
164.步骤s808,pluseaudio服务启动。
165.步骤s810,进入linux系统桌面。
166.步骤s812,用户打开声音设置界面。
167.步骤s814,用户打开音频设备。
168.步骤s816,厂家板载音频固件支持音频协议规范,card驱动包括圆孔设备、hdmi设
备、dp显示器和usb耳机的对应驱动等,但不限于此。
169.步骤s818,启动alsa-lib模块。
170.步骤s820,检查udev规则,即检查是否支持udev规则,若支持udev规则,则执行步骤s822。
171.其中,规则文件是udev里最重要的部分,默认是存放在/etc/udev/rules.d/下。所有的规则文件必须以“.rules”为后缀名。规则文件里的规则有一系列的键/值对组成,键/值对之间用逗号(,)分割。每一个键或者是用户匹配键,或者是一个赋值键。匹配键确定规则是否被应用,而赋值键表示分配某值给该键。这些值将影响udev创建的设备文件,赋值键可以处理一个多值列表。
172.步骤s822,检查用户定义配置。
173.步骤s824,判断端口是否存储用户定义配置,若是,则执行步骤s826,若否,则执行步骤s828。
174.步骤s826,采用默认端口信息。
175.步骤s828,解析配置并加载返回。
176.如图8所示,当装有linux系统机器上电开机后,系统内核会加载厂家板载音频芯片所支持驱动,包括usb/hdmi以及第三方厂家提供的音频驱动等,然后系统启动alsa模块进行初始化,接着系统启动pulseaudio服务,进入linux系统桌面后,最后用户无论是打开声音设置,还是打开音频播放器,都是跟pulseaudio守护程序进行交互的,默认选择一个音频设备作为主音频设备播放。
177.其中,pulseaudio守护程序首先是通过pulseaudio服务引导启动的,启动之后运行在后台;它启动时首先做初始化处理,如图8所示的card驱动框里面的每个音频驱动设备card n(n=0...n)顺序依次通过alsa-lib模块和udev规则,执行检查是否带有用户定义配置,如有配置则解析后并加载生效,从而实现插入耳机自动侦测,否则搜索不到跳过交由pulseaudio加载自带的默认配置。
178.改进后的pulseaduio守护程序可随时记忆用户插拔多幅圆孔耳机、usb耳机、hdmi、dp接口带音频功能的显示器先后顺序,然后返回给声音设置界面以及音频播放器,从而实现播放音频设备随意切换,除了当前用户使用插拔以外,还可以实现重启或者注销音频记忆性切换。
179.图8所示的pulseaudio守护程序是linux整个音频系统中最重要的部分,也是所有音频数据信息交互处理中枢,对于声音设置界面和音频播放器应用而言,只需要从pulseaudio那获取到音频设备上报的事件数据event,然后解析切换到哪个音频设备即可。
180.图8所示的alsa模块(advanced linux sound architecture的缩写,高级linux声音架构的简称),也是音频系统不可或缺的部分,提供了音频和midi(musical instrument digital interface,音乐设备数字化接口)的支持,其负责功能主要是配合pulseaudio解析用户定义配置规范,以做到自动侦测识别功能。
181.其中,用户定义配置规范是针对厂家板载音频芯片编写的,这需要厂家板载音频固件支持音频协议标准书,否则是无法做到hifi高保真音质效果。如厂家板载音频固件不支持音频协议规范,则由pulseaudio采用默认配置给厂家板载音频芯片定义一个模拟耳机或者模拟麦克风的profile属性,以方便用户操控耳机音频或者麦克风设备。
182.另外,在声音设置界面改动,主要集中在用户设置的显示和交互,比如用户播放音频的时候,想改变下当前所有音频设备的播放顺序,则可以通过声音设置界面选择点击任一音频设备优先播放,交由pulseaudio操作音频记忆存储库读取并找到对应的sink+port或者source+port,然后将优先级值更新到最大+1,即将用户选择的音频设备最高优先级。
183.图9是本公开示例性实施例中的音频服务实现方案的架构示意图。
184.如图9所示,本公开示例性实施例中的音频服务实现方案包括以下几个核心处理阶段:
185.(1)增加port,并录入sink+port或source+port作为音频设备的标识。
186.其中,每一个sink(source)对应着每一幅耳机(麦克风设备),而有些sink或者source设备在实际应用中存在着多个port端口属性,每一个port端口代表着一种音频输出或者音频输入接口,比如一副圆孔耳机代表一个sink,但要区分前置输出和后置输出两种,或者是笔记本上扬声器和模拟耳机两种,甚至有的nvidia显卡后面带有多个dp接口,一个dp接口代表一个sink,所以不同耳机、麦克风、显卡hdmi、dp接口在硬件功能上会有所不同,不能仅用sink或者source来代表它,否则会导致音频设备产生数据冲突。
187.在本公开的示例性实施例中,通过引入port端口这一概念,用sink+port端口方式来具体表示每一个音频输出设备,同理,用source+port端口方式来具体表示每一个音频输入设备。
188.(2)确定预存的顺序数据表,顺序数据表包括上述标识和对应的优先级。
189.其中,优先级是指接入音频设备耳机先后顺序,不是指sink/source上的属性优先级。
190.(3)接入圆孔设备、usb耳机和hdmi输出设备,并更新顺序数据表。
191.(4)确定port是否为可用状态。
192.在现有技术中,未接入圆孔耳机等设备,其状态是非可用,但音频播放器播放时错误地默认为此圆孔耳机sink是可用状态,从而导致播放在此sink上引发音频卡顿情况。
193.在本公开的示例性实施例中,通过增加port端口的可用状态识别,加强了代码健壮性和可靠性,减少了音频设备切换引发其他异常bug。
194.(5)引入port hook方法来解决扬声器和圆孔耳机之间的互斥。
195.在现有技术中,笔记本上的圆孔耳机和扬声器同属于一个sink不同的端口port,这两个port在硬件上排斥性(二选一),拔掉圆孔耳机会自动识别到扬声器,同时会实时更新顺序数据表,导致播放声音顺序混乱。
196.在本公开的示例性实施例中,通过增加额外句柄hook来独立处理此情况发生,通过遇到拔掉圆孔耳机时,不更新顺序数据表来避免异常发生。
197.(6)重启注销登陆时清除不存在设备。
198.在现有技术中,当系统重启注销登录时,可能用户会中途拔掉某音频设备,而此sink/source已为非可用状态,但开源代码并未对开机登录进行检查清理,这可能还会引起播放音频停留在非可用sink/source之上。
199.在本公开的示例性实施例中,通过增加开机定时清理非可用状态的音频设备,直接修改非可用状态的音频设备优先级为0,进一步地减少了音频设备切换引发其他异常bug。
200.(7)重启注销维护顺序数据表。
201.随着时间推移,接入音频系统的不同sink/source音频设备可能会越来越多。
202.在本公开的示例性实施例中,通过及时对顺序数据表优先级顺序及时调整更新,保证了每次重启注销都是按记忆性顺序播放音频。
203.另外,pulsecore是pulseaudio程序最核心关键部件,几乎所有的sink/source数据操作都与此有关,主要还是在音频播放器播放默认停留在了非可用状态sink上,在本公开的示例性实施例中,增加了port端口的可用状态识别以及更新默认的最佳best sink或者best source值,最佳best sink或者best source值对应的音频设备的优先级最高。
204.其中,图9所示的一个sink代表模拟一个设备的音频输出(即耳机),一个source代表模拟一个设备的音频输入(即麦克风)。实际应用场景中,有些设备就没有source,比如hdmi/dp接口的显示器,所以至少有一个sink音频设备。一个sndcard代表的是一个音频逻辑设备卡,这里包含所有此音频设备的驱动数据结构信息。
205.另外,图9所示的音频记忆存储实际上是顺序数据表的一份拷贝,可以理解为顺序数据表是在内存里运行的,而音频记忆存储是有实物媒体介质,这是为了保证每次开机重启或注销都能获取到最新的音频记忆顺序表,以此保证每次开机重启注销各类耳机等音频设备依次播放输出声音。
206.另外,图9所示的daemon是一段连续运行的程序,被配置为处理计算机系统希望接收到的阶段性的服务需求。daemon程序段将请求提交给其他合适的程序(或者进程)。网络上每个页面的服务器都有一个httpd或是超文本传输协议daemon,持续地等待从网络客户端及其用户发送来的请求。
207.对应于上述方法和架构所示的实施例,本公开还提供一种音频服务实现装置,可以被配置为执行上述方法实施例。
208.图10是本公开示例性实施例中一种音频服务实现装置的方框图。
209.参考图10,音频服务实现装置1000可以包括:
210.确定模块1002,被配置为当需要提供音频资源时,脉冲音频服务根据资源播放顺序表中音频设备的优先级确定目标音频设备,其中,资源播放顺序表中包括音频设备标识和对应优先级信息,音频设备标识包括设备信息和端口信息。
211.控制模块1004,被配置为基于目标音频设备提供音频资源。
212.在本公开的一种示例性实施例中,确定模块1002还被配置为:在脉冲音频服务初始化时,脉冲音频服务加载资源播放顺序表,根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息;音频设备的接入顺序为至少一个音频设备接入终端设备的顺序;脉冲音频服务将资源播放顺序表中未接入终端设备的音频设备对应的音频设备标识的优先级信息设为最低优先级。
213.在本公开的一种示例性实施例中,确定模块1002还被配置为:当接入终端设备的音频设备中存在不属于资源播放顺序表中的音频设备时,脉冲音频服务将音频设备对应的音频设备标识加入资源播放顺序表,并为音频设备对应的音频设备标识设定对应的优先级信息。
214.在本公开的一种示例性实施例中,确定模块1002还被配置为:响应于音频设备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;如果是新接
入的音频设备,脉冲音频服务判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,将新接入的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为最高优先级;如果否,将新接入的音频设备对应的设备标识写入资源播放顺序表,并将新接入的音频设备对应的设备标识在资源播放顺序表中的优先级设置为最高优先级;如果是新拔出的音频设备,脉冲音频服务将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级。
215.在本公开的一种示例性实施例中,确定模块1002还被配置为:脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为预设优先级,并对不支持热插拔的音频设备进行静态侦测;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括:响应于除不支持热插拔的音频设备之外的第一音频设备的热插拔事件,确定热插拔事件对应的新接入的第一音频设备或新拔出的第一音频设备;如果是新接入的第一音频设备,脉冲音频服务将第一音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级;如果是新拔出的第一音频设备,脉冲音频服务将第一音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级。
216.在本公开的一种示例性实施例中,确定模块1002还被配置为:资源播放顺序表中还可以包括音频设备的可用状态,可用状态表明音频设备标识对应的优先级信息是否有效;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息,包括:根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态;可用状态为可用或不可用。
217.在本公开的一种示例性实施例中,确定模块1002还被配置为:根据资源播放顺序表中至少一个音频设备的优先级确定目标音频设备,包括:依据资源播放顺序表中各音频设备标识对应的可用状态确定音频设备标识对应的优先级信息是否有效;其中,可用状态为可用的音频设备标识对应的优先级信息为有效,可用状态为不可用的音频设备标识对应的优先级信息为无效;基于有效的优先级信息从至少一个音频设备中确定目标音频设备。
218.在本公开的一种示例性实施例中,确定模块1002还被配置为:对脉冲音频服务初始化,包括:脉冲音频服务初始化,加载资源播放顺序表;对终端设备的端口状态进行扫描,确定资源播放顺序表中包括的各音频设备标识对应的音频设备的初始接入状态;初始接入状态为已接入或未接入;将资源播放顺序表中初始接入状态为已接入的音频设备对应的音频设备标识的可用状态写为可用;将资源播放顺序表中初始接入状态为未接入的音频设备对应的音频设备标识的可用状态写为不可用。
219.在本公开的一种示例性实施例中,确定模块1002还被配置为:根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态,包括:响应于音频设备的热插拔事件,确定热插拔事件对应的新接入的音频设备或新拔出的音频设备;如果是新接入的音频设备,判断新接入的音频设备的音频设备标识是否属于资源播放顺序表,如果是,将资源播放顺序表中新接入的音频设备的音频设备标识对应的优先级信息置为最高优先级,对应的可用状态更新为可用;如果否,将新接入的音频设备的音频设备标识写入资源播放顺序表,并将新接入的音频设备的音频设备标识在资源
播放顺序表中的优先级信息设置为最高优先级,对应的可用状态写为可用;如果是新拔出的音频设备,将新拔出的音频设备的音频设备标识在资源播放顺序表中的优先级设置为最低优先级,对应的可用状态更新为不可用。
220.在本公开的一种示例性实施例中,确定模块1002还被配置为:脉冲音频服务将不支持热插拔的音频设备对应的音频设备标识在资源播放顺序表中的优先级信息设置为预设优先级,对应的可用状态设置为可用;并对不支持热插拔的音频设备进行静态侦测;根据至少一个音频设备的接入顺序更新资源播放顺序表中音频设备对应的音频设备标识的优先级信息和可用状态,包括:响应于除不支持热插拔的音频设备之外的第二音频设备的热插拔事件,确定热插拔事件对应的新接入的第二音频设备或新拔出的第二音频设备;如果是新接入的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为可用;如果是新拔出的第二音频设备,脉冲音频服务将第二音频设备对应的音频设备标识在资源播放顺序表中的优先级设置为不高于不支持热插拔的音频设备在资源播放顺序表中的优先级,将第二音频设备对应的音频设备标识的可用状态设置为不可用。
221.在本公开的一种示例性实施例中,确定模块1002还被配置为:脉冲音频服务基于优先级设置事件和/或音频设备的热插拔事件上报资源播放顺序表给多媒体应用,以便多媒体应用向用户展示音频设备的优先级信息。
222.在本公开的一种示例性实施例中,资源播放顺序表中包括在多媒体应用的应用场景中至少一个音频设备的优先级信息。
223.在本公开的一种示例性实施例中,确定模块1002还被配置为:在脉冲音频服务的启动后,基于音频驱动对音频设备进行加载;基于音频设备的加载结果获得音频设备的设备信息和端口信息;根据音频设备的设备信息和端口信息确定音频设备在资源播放顺序表中对应的音频设备标识。
224.在本公开的一种示例性实施例中,确定模块1002还被配置为:加载厂家板载音频芯片所支持的音频驱动;启动alsa模块对已加载的音频驱动检查是否存在用户定义配置;和/或,启动udev进程对已加载的音频驱动检查是否支持udev音频规则,并对支持udev音频规则的音频驱动检查是否存在用户定义配置;如果存在,则加载用户定义配置。
225.由于音频服务实现装置1000的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。
226.应当注意,尽管在上文详细描述中提及了被配置为动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
227.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
228.下面参照图11来描述根据本发明的这种实施方式的电子设备1100。图11显示的电子设备1100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
229.如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统
组件(包括存储单元1120和处理单元1110)的总线1130。
230.其中,存储单元存储有程序代码,程序代码可以被处理单元1110执行,使得处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1110可以执行如本公开实施例所示的方法。
231.存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)11201和/或高速缓存存储单元11202,还可以进一步包括只读存储单元(rom)11203。
232.存储单元1120还可以包括具有一组(至少一个)程序模块11205的程序/实用工具11204,这样的程序模块11205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
233.总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
234.电子设备1100也可以与一个或多个外部设备1140(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1100交互的设备通信,和/或与使得该电子设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1150进行。并且,电子设备1100还可以通过网络适配器11110与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器11110通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
235.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
236.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码被配置为使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
237.根据本发明的实施方式的被配置为实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
238.所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举
的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
239.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输被配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。
240.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
241.可以以一种或多种程序设计语言的任意组合来编写被配置为执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
242.此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
243.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被为示例性的,本公开的真正范围和构思由权利要求指出。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1