音频播放方法及显示设备

文档序号:1144523 发布日期:2020-09-11 浏览:3次 >En<

阅读说明:本技术 音频播放方法及显示设备 (Audio playing method and display device ) 是由 孙永瑞 张安祺 马斌义 李森 齐消消 于 2020-05-27 设计创作,主要内容包括:本申请实施例涉及音频播放技术领域,尤其涉及一种音频播放方法及显示设备,用以在通过外接播放设备播放音频数据时,利用HAL中的Tinyslsa直接的从SOC芯片中获取音频数据,以减少音频数据的播放时延。该方法包括:第一AudioTrack接收来自音频数据控制模块输入的第一格式的音频数据,对音频数据进行复制,将原音频数据和已复制的音频数据分别输出至第一AudioFlinger和第二AudioFlinger;第一AudioFlinger接收音频数据,并对音频数据进行混音处理得到第一音频数据,将第一音频数据输出至SOC芯片;第二AudioFlinger接收音频数据,并对音频数据进行混音处理得到第二音频数据,将第二音频数据写入HAL;Tinyalsa在HAL写入第二音频数据时从SOC芯片中获取第一音频数据并输出至外接播放设备进行播放。(The embodiment of the application relates to the technical field of audio playing, in particular to an audio playing method and display equipment, which are used for directly acquiring audio data from an SOC chip by utilizing Tinylsa in HAL when the audio data are played through external playing equipment so as to reduce the playing time delay of the audio data. The method comprises the following steps: the first Audio track receives audio data in a first format input by an audio data control module, copies the audio data, and respectively outputs the original audio data and the copied audio data to a first Audio Flinger and a second Audio Flinger; the first Audio Flinger receives the audio data, performs sound mixing processing on the audio data to obtain first audio data, and outputs the first audio data to the SOC chip; the second Audio Flinger receives the audio data, performs sound mixing processing on the audio data to obtain second audio data, and writes the second audio data into the HAL; and the Tinyalsa acquires the first audio data from the SOC chip and outputs the first audio data to the external playing equipment for playing when the HAL writes the second audio data.)

音频播放方法及显示设备

技术领域

本申请涉及音频播放技术领域,尤其涉及一种音频播放方法及显示设备。

背景技术

目前,大多智能电视所搭载的操作系统是Android(安卓)操作系统。在安卓操作系统下,当智能电视通过外接播放设备播放音频数据时,该音频数据首先由SOC(SOC(Systemon a Chip,片上系统)芯片进行解码和混音,之后经过Tinyalsa(精简版高级Linux音频框架)、AudioRecord(音频录制模块)、HiAPK(应用程序模块)、AudioTrack(音轨)和AudioFlinger(第一音频数据实体)等模块的处理,最终传输至HAL(Hardware AbstractionLayer,硬件抽象层)中的外接播放设备接口,进而实现由外接播放设备播放该音频数据。

但上述音频数据在由SOC芯片路由至HAL中外接播放设备接口的过程中,参与音频数据传输和处理的模块较多,导致音频数据在外接播放设备播放时延时较高。

发明内容

本申请提供一种音频播放方法及显示设备,用以在通过外接播放设备播放音频数据时,利用HAL中的Tinyslsa直接的从SOC芯片中获取音频数据,并传输至外接播放设备进行播放,减少了音频数据的播放时延。

第一方面,本申请提供一种显示设备,包括:

显示器;

与所述显示器耦合连接的控制器,至少包括:设置在音频数据控制模块与片上系统SOC芯片之间的第一音轨AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger,以及在外部播放设备启动时创建的精简版高级Linux音频框架Tinyalsa;所述Tinyalsa运行在HAL中,处于所述SOC芯片与所述外部播放设备之间;

所述第一AudioTrack,用于接收来自所述音频数据控制模块输入的第一格式的音频数据,对所述音频数据进行复制,将原音频数据和已复制的音频数据分别输出至所述第一AudioFlinger和所述第二AudioFlinger;

所述第一AudioFlinger,用于接收所述音频数据,并对所述音频数据进行混音处理得到第一音频数据,将所述第一音频数据输出至所述SOC芯片;

所述第二AudioFlinger,用于接收所述音频数据,并对所述音频数据进行混音处理得到第二音频数据,将所述第二音频数据写入HAL;

所述Tinyalsa,用于在所述HAL写入所述第二音频数据时从所述SOC芯片中获取所述第一音频数据并输出至所述外接播放设备进行播放。

第二方面,本申请提供一种一种显示设备,包括:

显示器;

与所述显示器耦合连接的控制器,至少包括:静音数据控制模块,设置在静音数据控制模块与SOC芯片之间并关联所述静音数据控制模块的第二AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger,以及在外部播放设备启动时创建的Tinyalsa;所述Tinyalsa运行在HAL中,处于所述SOC芯片与所述外部播放设备之间;

所述静音数据控制模块,用于在所述SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据并输出至所述第二AudioTrack;所述静音数据与所述第二格式的音频数据的播放时长相等;

所述第二AudioTrack,用于接收来自所述静音数据控制模块输入的所述静音数据,对静音数据进行复制,将原静音数据和已复制的静音数据分别输出至所述第一AudioFlinger和所述第二AudioFlinger;

所述第一AudioFlinger,用于接收所述静音数据,并对所述静音数据进行混音处理得到第三音频数据,将所述第三音频数据输出至所述SOC芯片;

所述第二AudioFlinger,用于接收所述静音数据,并对所述静音数据进行混音处理得到第四音频数据,将所述第四音频数据写入HAL;

所述SOC芯片,用于接收所述第二格式的音频数据,将所述第二格式的音频数据转换为第一格式的音频数据,并在接收到所述第三音频数据时,将转换后的音频数据与已接收的第一格式的音频数据进行混音处理得到第五音频数据;

所述Tinyalsa,用于在所述HAL写入所述第四音频数据时从所述SOC芯片中获取所述第五音频数据并输出至所述外接播放设备进行播放。

第三方面,本申请提供一种显示设备,包括:

显示器;

与所述显示器耦合的控制器,至少包括:设置在音频数据控制模块与SOC芯片之间的第三AudioTrack、第三AudioFlinger;

所述第三AudioTrack,用于接收来自所述音频数据控制模块输入的第一格式的音频数据,并输出至所述第三AudioFlinger;

所述第三AudioFlinger,用于接收所述音频数据,并对所述音频数据进行混音处理得到第六音频数据,将所述第六音频数据输出至所述外接播放设备进行播放。

第四方面,本身请提供一种显示设备,包括:

显示器;

与所述显示器耦合的控制器,至少包括:设置在静音数据控制模块与SOC芯片之间并关联所述静音数据控制模块的第四AudioTrack、第三AudioFlinger,以及音频混音器AudioMixer和在外部播放设备启动时创建的Tinyalsa;所述AudioMixer和所述Tinyalsa运行在所述HAL,处于所述SOC芯片与所述外部播放设备之间;

所述静音数据控制模块,用于在所述SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据并输出至所述第四AudioTrack;所述静音数据与所述第二格式的音频数据的播放时长相等;

所述第四AudioTrack,用于接收来自所述静音数据控制模块输入的静音数据,并输出至所述第三AudioFlinger;

所述第三AudioFlinger,用于接收所述静音数据,并对所述静音数据进行混音处理得到第七音频数据,将所述第七音频数据输出至所述AudioMixer;

所述SOC芯片,用于接收所述第二格式的音频数据,将所述第二格式的音频数据转换为第一格式的音频数据;

所述Tinyalsa,用于在所述AudioMixer接收到所述第七音频数据时从所述SOC芯片中获取所述第一格式的音频数据并输出至所述AudioMixer;

所述AudioMixer,用于接收Tinyalsa输出的第一格式的音频数据和所述第七音频数据,并对第一格式的音频数据和所述第七音频数据进行混音处理得到第八音频数据,将所述第八音频数据输出至所述外接播放设备进行播放。

第五方面,本身请提供一种音频播放方法,该方法包括:

在开机时,启动设置在音频数据控制模块与片上系统SOC芯片之间的第一音轨AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger;

在外部播放设备启动时,创建Tinyalsa;所述Tinyalsa运行在HAL中,处于所述SOC芯片与所述外部播放设备之间;

所述第一AudioTrack接收来自所述音频数据控制模块输入的第一格式的音频数据,对所述音频数据进行复制,将原音频数据和已复制的音频数据分别输出至所述第一AudioFlinger和所述第二AudioFlinger;

所述第一AudioFlinger接收所述音频数据,并对所述音频数据进行混音处理得到第一音频数据,将所述第一音频数据输出至所述SOC芯片;

所述第二AudioFlinger接收所述音频数据,并对所述音频数据进行混音处理得到第二音频数据,将所述第二音频数据写入HAL;

所述Tinyalsa在所述HAL写入所述第二音频数据时,从所述SOC芯片中获取所述第一音频数据并输出至所述外接播放设备进行播放。

第六方面,本申请提供一种音频播放方法,该方法包括:

在开机时,启动静音数据控制模块、设置在静音数据控制模块与SOC芯片之间并关联所述静音数据控制模块的第二AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger;

在外部播放设备启动时,创建Tinyalsa;所述Tinyalsa运行在HAL中,处于所述SOC芯片与所述外部播放设备之间;

所述静音数据控制模块在所述SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据并输出至所述第二AudioTrack;所述静音数据与所述第二格式的音频数据的播放时长相等;

所述第二AudioTrack接收来自所述静音数据控制模块输入的所述静音数据,对静音数据进行复制,将原静音数据和已复制的静音数据分别输出至所述第一AudioFlinger和所述第二AudioFlinger;

所述第一AudioFlinger接收所述静音数据,并对所述静音数据进行混音处理得到第三音频数据,将所述第三音频数据输出至所述SOC芯片;

所述第二AudioFlinger接收所述静音数据,并对所述静音数据进行混音处理得到第四音频数据,将所述第四音频数据写入HAL;

所述SOC芯片接收所述第二格式的音频数据,将所述第二格式的音频数据转换为第一格式的音频数据,并在接收到所述第三音频数据时,将转换后的音频数据与已接收的第一格式的音频数据进行混音处理得到第五音频数据;

所述Tinyalsa在所述HAL写入所述第四音频数据时从所述SOC芯片中获取所述第五音频数据并输出至所述外接播放设备进行播放。

第七方面,本申请提供一种音频播放方法,该方法包括:

在开机时,启动设置在音频数据控制模块与SOC芯片之间的第三AudioTrack、第三AudioFlinger;

所述第三AudioTrack接收来自所述音频数据控制模块输入的第一格式的音频数据,并输出至所述第三AudioFlinger;

所述第三AudioFlinger接收所述音频数据,并对所述音频数据进行混音处理得到第六音频数据,将所述第六音频数据输出至所述外接播放设备进行播放。

第八方面,本申请提供一种音频播放方法,该方法包括:

在开机时,启动设置在静音数据控制模块与SOC芯片之间并关联所述静音数据控制模块的第四AudioTrack、第三AudioFlinger,以及音频混音器AudioMixer;

在外部播放设备启动时,创建Tinyalsa;所述AudioMixer和所述Tinyalsa运行在所述HAL,处于所述SOC芯片与所述外部播放设备之间;

所述静音数据控制模块在所述SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据并输出至所述第四AudioTrack;所述静音数据与所述第二格式的音频数据的播放时长相等;

所述第四AudioTrack接收来自所述静音数据控制模块输入的静音数据,并输出至所述第三AudioFlinger;

所述第三AudioFlinger接收所述静音数据,并对所述静音数据进行混音处理得到第七音频数据,将所述第七音频数据输出至所述AudioMixer;

所述SOC芯片接收所述第二格式的音频数据,将所述第二格式的音频数据转换为第一格式的音频数据;

所述Tinyalsa在所述AudioMixer接收到所述第七音频数据时从所述SOC芯片中获取所述第一格式的音频数据并输出至所述AudioMixer;

所述AudioMixer接收所述Tinyalsa输出的第一格式的音频数据和所述第七音频数据,并对第一格式的音频数据和所述第七音频数据进行混音处理得到第八音频数据,将所述第八音频数据输出至所述外接播放设备进行播放。

在上述实施例中,当通过外接播放设备播放音频数据的过程中,会在本地创建两个AudioFlinger,其中一个AudioFlinger用于将AudioTrack传输的音频数据混音为第一音频数据并输入SOC芯片,而另一个AudioFlinger用于将AudioTrack传输的音频数据混音为第二音频数据并输入HAL,以触发HAL中的Tinyslsa直接的从SOC芯片中获取第一音频数据并传输至外接播放设备进行播放,避免了音频数据在由SOC芯片路由至HAL中播放设备接口的过程中,AudioRecord、HiAPK、AudioTrack和AudioFlinger等模块的处理,从而降低了音频数据播放时的延时。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1A中示例性示出了显示设备与控制装置之间操作场景的示意图;

图1B中示例性示出了图1A中控制装置100的配置框图;

图1C中示例性示出了图1A中显示设备200的配置框图;

图1D中示例性示出了显示设备200存储器中操作系统的架构配置框图;

图2示例性示出了显示设备200的音频播放框架配置图;

图3A-C示例性示出了一种音频播放方法的交互流程图;

图4A-D示例性示出了显示设备200的另一种音频播放框架配置图;

图5A-C示例性示出了另一种音频播放方法的交互流程图;

图6A-D示例性示出了显示设备200的另一种音频播放框架配置图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部份实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

本申请中的术语“用户界面”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面常用的表现形式是图形用户界面(graphicuserinterface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在显示设备的显示屏中显示的一个图标、窗口、控件等界面元素,其中控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。

本申请实施例所提供的音频播放方法可应用于显示设备。用户可通过操作用于控制显示设备的控制装置,以控制显示设备执行本申请实施例所提供的音频播放方法。

图1A中示例性示出了显示设备与控制装置之间操作场景的示意图。如图1A所示,控制装置100和显示设备200之间可以有线或无线方式进行通信。

其中,控制装置100被配置为控制显示设备200,其可接收用户输入的操作指令,且将操作指令转换为显示设备200可识别和响应的指令,起着用户与显示设备200之间交互的中介作用。如:用户通过操作控制装置100上频道加减键,显示设备200响应频道加减的操作。

控制装置100可以是遥控器100A,包括红外协议通信或蓝牙协议通信,及其他短距离通信方式等,通过无线或其他有线方式来控制显示设备200。用户可以通过遥控器上按键、语音输入、控制面板输入等输入用户指令,来控制显示设备200。如:用户可以通过遥控器上音量加减键、频道控制键、上/下/左/右的移动按键、语音输入按键、菜单键、开关机按键等输入相应控制指令,来实现控制显示设备200的功能。

控制装置100也可以是智能设备,如移动终端100B、平板电脑、计算机、笔记本电脑等。例如,使用在智能设备上运行的应用程序控制显示设备200。该应用程序通过配置可以在与智能设备关联的屏幕上,通过直观的用户界面(UI)为用户提供各种控制。

示例性的,移动终端100B可与显示设备200安装软件应用,通过网络通信协议实现连接通信,实现一对一控制操作的和数据通信的目的。如:可以使移动终端100B与显示设备200建立控制指令协议,通过操作移动终端100B上提供的用户界面的各种功能键或虚拟按钮,来实现如遥控器100A布置的实体按键的功能。也可以将移动终端100B上显示的音视频内容传输到显示设备200上,实现同步显示功能。

显示设备200可提供广播接收功能和计算机支持功能的网络电视功能。显示设备可以实施为,数字电视、网络电视、互联网协议电视(IPTV)等。

显示设备200,可以是液晶显示器、有机发光显示器、投影设备。具体显示设备类型、尺寸大小和分辨率等不作限定。

显示设备200还与服务器300通过多种通信方式进行数据通信。这里可允许显示设备200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。服务器300可以向显示设备200提供各种内容和互动。示例的,显示设备200可以发送和接收信息,例如:接收电子节目指南(EPG)数据、接收软件程序更新、或访问远程储存的数字媒体库。服务器300可以一组,也可以多组,可以一类或多类服务器。通过服务器300提供视频点播和广告服务等其他网络服务内容。

图1B中示例性示出了控制装置100的配置框图。如图1B所示,控制装置100包括控制器110、存储器120、通信器130、用户输入接口140、输出接口150、供电电源160。

控制器110包括随机存取存储器(RAM)111、只读存储器(ROM)112、处理器113、通信接口以及通信总线。控制器110用于控制控制装置100的运行和操作,以及内部各部件之间的通信协作、外部和内部的数据处理功能。

示例性的,当检测到用户按压在遥控器100A上布置的按键的交互或触摸在遥控器100A上布置的触摸面板的交互时,控制器110可控制产生与检测到的交互相应的信号,并将该信号发送到显示设备200。

存储器120,用于在控制器110的控制下存储驱动和控制控制装置100的各种运行程序、数据和应用。存储器120,可以存储用户输入的各类控制信号指令。

通信器130在控制器110的控制下,实现与显示设备200之间控制信号和数据信号的通信。如:控制装置100经由通信器130将控制信号(例如触摸信号或按钮信号)发送至显示设备200上,控制装置100可经由通信器130接收由显示设备200发送的信号。通信器130可以包括红外信号接口131和射频信号接口132。例如:红外信号接口时,需要将用户输入指令按照红外控制协议转化为红外控制信号,经红外发送模块进行发送至显示设备200。再如:射频信号接口时,需将用户输入指令转化为数字信号,然后按照射频控制信号调制协议进行调制后,由射频发送端子发送至显示设备200。

用户输入接口140,可包括麦克风141、触摸板142、传感器143、按键144等中至少一者,从而用户可以通过语音、触摸、手势、按压等将关于控制显示设备200的用户指令输入到控制装置100。

输出接口150,通过将用户输入接口140接收的用户指令输出至显示设备200,或者,输出由显示设备200接收的图像或语音信号。这里,输出接口150可以包括LED接口151、产生振动的振动接口152、输出声音的声音输出接口153和输出图像的显示器154等。例如,遥控器100A可从输出接口150接收音频、视频或数据等输出信号,并且将输出信号在显示器154上显示为图像形式、在声音输出接口153输出为音频形式或在振动接口152输出为振动形式。

供电电源160,用于在控制器110的控制下为控制装置100各元件提供运行电力支持。形式可以为电池及相关控制电路。

图1C中示例性示出了显示设备200的硬件配置框图。如图1C所示,显示设备200中可以包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、存储器260、用户接口265、视频处理器270、显示器275、音频处理器280、音频输出接口285、供电电源290。

调谐解调器210,通过有线或无线方式接收广播电视信号,可以进行放大、混频和谐振等调制解调处理,用于从多个无线或有线广播电视信号中解调出用户所选择的电视频道的频率中所携带的音视频信号,以及附加信息(例如EPG数据)。

调谐解调器210,可根据用户选择,以及由控制器250控制,响应用户选择的电视频道的频率以及该频率所携带的电视信号。

调谐解调器210,根据电视信号的广播制式不同,可以接收信号的途径有很多种,诸如:地面广播、有线广播、卫星广播或互联网广播等;以及根据调制类型不同,可以数字调制方式或模拟调制方式;以及根据接收电视信号的种类不同,可以解调模拟信号和数字信号。

在其他一些示例性实施例中,调谐解调器210也可在外部设备中,如外部机顶盒等。这样,机顶盒通过调制解调后输出电视信号,经过外部装置接口240输入至显示设备200中。

通信器220,是用于根据各种通信协议类型与外部设备或外部服务器进行通信的组件。例如显示设备200可将内容数据发送至经由通信器220连接的外部设备,或者,从经由通信器220连接的外部设备浏览和下载内容数据。通信器220可以包括WIFI模块221、蓝牙通信协议模块222、有线以太网通信协议模块223等网络通信协议模块或近场通信协议模块,从而通信器220可根据控制器250的控制接收控制装置100的控制信号,并将控制信号实现为WIFI信号、蓝牙信号、射频信号等。

检测器230,是显示设备200用于采集外部环境或与外部交互的信号的组件。检测器230可以包括声音采集器231,如麦克风,可以用于接收用户的声音,如用户控制显示设备200的控制指令的语音信号;或者,可以采集用于识别环境场景类型的环境声音,实现显示设备200可以自适应环境噪声。

在其他一些示例性实施例中,检测器230,还可以包括图像采集器232,如相机、摄像头等,可以用于采集外部环境场景,以自适应变化显示设备200的显示参数;以及用于采集用户的属性或与用户交互手势,以实现显示设备与用户之间互动的功能。

在其他一些示例性实施例中,检测器230,还可以包括光接收器,用于采集环境光线强度,以自适应显示设备200的显示参数变化等。

在其他一些示例性实施例中,检测器230,还可以包括温度传感器,如通过感测环境温度,显示设备200可自适应调整图像的显示色温。示例性的,当温度偏高的环境时,可调整显示设备200显示图像色温偏冷色调;当温度偏低的环境时,可以调整显示设备200显示图像色温偏暖色调。

外部装置接口240,是提供控制器250控制显示设备200与外部设备间数据传输的组件。外部装置接口240可按照有线/无线方式与诸如机顶盒、游戏装置、笔记本电脑等外部设备连接,可接收外部设备的诸如视频信号(例如运动图像)、音频信号(例如音乐)、附加信息(例如EPG)等数据。

其中,外部装置接口240可以包括:高清多媒体接口(HDMI)端子241、复合视频消隐同步(CVBS)端子242、模拟或数字分量端子243、通用串行总线(USB)端子244、组件(Component)端子(图中未示出)、红绿蓝(RGB)端子(图中未示出)等任一个或多个。

控制器250,通过运行存储在存储器260上的各种软件控制程序(如操作系统和各种应用程序),来控制显示设备200的工作和响应用户的操作。例如,控制器可实现为芯片(System-on-a-Chip,SOC芯片)。

如图1C所示,控制器250包括随机存取存储器(RAM)251、只读存储器(ROM)252、图形处理器253、CPU处理器254、通信接口255、以及通信总线256。其中,RAM251、ROM252以及图形处理器253、CPU处理器254通信接口255通过通信总线256相连接。

ROM252,用于存储各种系统启动指令。如在接收到开机信号时,显示设备200电源开始启动,CPU处理器254运行ROM252中的系统启动指令,将存储在存储器260的操作系统拷贝至RAM251中,以开始运行启动操作系统。当操作系统启动完成后,CPU处理器254再将存储器260中各种应用程序拷贝至RAM251中,然后,开始运行启动各种应用程序。

图形处理器253,用于产生各种图形对象,如图标、操作菜单、以及用户输入指令显示图形等。图形处理器253可以包括运算器,用于通过接收用户输入各种交互指令进行运算,进而根据显示属性显示各种对象;以及包括渲染器,用于产生基于运算器得到的各种对象,将进行渲染的结果显示在显示器275上。

CPU处理器254,用于执行存储在存储器260中的操作系统和应用程序指令。以及根据接收的用户输入指令,来执行各种应用程序、数据和内容的处理,以便最终显示和播放各种音视频内容。

在一些示例性实施例中,CPU处理器254,可以包括多个处理器。多个处理器可包括一个主处理器以及多个或一个子处理器。主处理器,用于在显示设备预加载模式中执行显示设备200的一些初始化操作,和/或,在正常模式下显示画面的操作。多个或一个子处理器,用于执行在显示设备待机模式等状态下的一种操作。

通信接口255,可包括第一接口到第n接口。这些接口可以是经由网络被连接到外部设备的网络接口。

控制器250可以控制显示设备200的整体操作。例如:响应于接收到用于选择在显示器275上显示的GUI对象的用户输入命令,控制器250便可以执行与由用户输入命令选择的对象有关的操作。例如,控制器可实现为SOC芯片(System on Chip,,系统级芯片)或者MCU(Micro Control Unit,微控制单元)。

其中,该对象可以是可选对象中的任何一个,例如超链接或图标。该与所选择的对象有关的操作,例如显示连接到超链接页面、文档、图像等操作,或者执行与对象相对应的程序的操作。该用于选择GUI对象的用户输入命令,可以是通过连接到显示设备200的各种输入装置(例如,鼠标、键盘、触摸板等)输入命令或者与由用户说出语音相对应的语音命令。

存储器260,用于存储驱动和控制显示设备200运行的各种类型的数据、软件程序或应用程序。存储器260可以包括易失性和/或非易失性存储器。而术语“存储器”包括存储器260、控制器250的RAM251和ROM252、或显示设备200中的存储卡。

在一些实施例中,存储器260具体用于存储驱动显示设备200中控制器250的运行程序;存储显示设备200内置的和用户从外部设备下载的各种应用程序;存储用于配置由显示器275提供的各种GUI、与GUI相关的各种对象及用于选择GUI对象的选择器的视觉效果图像等数据。

在一些实施例中,存储器260具体用于存储调谐解调器210、通信器220、检测器230、外部装置接口240、视频处理器270、显示器275、音频处理器280等的驱动程序和相关数据,例如从外部装置接口接收的外部数据(例如音视频数据)或用户接口接收的用户数据(例如按键信息、语音信息、触摸信息等)。

在一些实施例中,存储器260具体存储用于表示操作系统(OS)的软件和/或程序,这些软件和/或程序可包括,例如:内核、中间件、应用编程接口(API)和/或应用程序。示例性的,内核可控制或管理系统资源,以及其它程序所实施的功能(如所述中间件、API或应用程序);同时,内核可以提供接口,以允许中间件、API或应用程序访问控制器,以实现控制或管理系统资源。

图1D中示例性示出了显示设备200存储器中操作系统的架构配置框图。该操作系统架构从上到下依次是应用层、中间件层和内核层。

应用层,系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互。应用层可包括多个应用程序,如设置应用程序、电子帖应用程序、媒体中心应用程序等。这些应用程序可被实现为Web应用,其基于WebKit引擎来执行,具体可基于HTML5、层叠样式表(CSS)和JavaScript来开发并执行。

这里,HTML,全称为超文本标记语言(HyperText Markup Language),是一种用于创建网页的标准标记语言,通过标记标签来描述网页,HTML标签用以说明文字、图形、动画、声音、表格、链接等,浏览器会读取HTML文档,解释文档内标签的内容,并以网页的形式显示出来。

CSS,全称为层叠样式表(Cascading Style Sheets),是一种用来表现HTML文件样式的计算机语言,可以用来定义样式结构,如字体、颜色、位置等的语言。CSS样式可以直接存储与HTML网页或者单独的样式文件中,实现对网页中样式的控制。

JavaScript,是一种应用于Web网页编程的语言,可以***HTML页面并由浏览器解释执行。其中Web应用的交互逻辑都是通过JavaScript实现。JavaScript可以通过浏览器,封装JavaScript扩展接口,实现与内核层的通信,

中间件层,可以提供一些标准化的接口,以支持各种环境和系统的操作。例如,中间件层可以实现为与数据广播相关的中间件的多媒体和超媒体信息编码专家组(MHEG),还可以实现为与外部设备通信相关的中间件的DLNA中间件,还可以实现为提供显示设备内各应用程序所运行的浏览器环境的中间件等。

内核层,提供核心系统服务,例如:文件管理、内存管理、进程管理、网络管理、系统安全权限管理等服务。内核层可以被实现为基于各种操作系统的内核,例如,基于Linux操作系统的内核。

内核层也同时提供系统软件和硬件之间的通信,为各种硬件提供设备驱动服务,例如:为显示器提供显示驱动程序、为摄像头提供摄像头驱动程序、为遥控器提供按键驱动程序、为WIFI模块提供WiFi驱动程序、为音频输出接口提供音频驱动程序、为电源管理(PM)模块提供电源管理驱动等。

用户接口265,接收各种用户交互。具体的,用于将用户的输入信号发送给控制器250,或者,将从控制器250的输出信号传送给用户。示例性的,遥控器100A可将用户输入的诸如电源开关信号、频道选择信号、音量调节信号等输入信号发送至用户接口265,再由用户接口265转送至控制器250;或者,遥控器100A可接收经控制器250处理从用户接口265输出的音频、视频或数据等输出信号,并且显示接收的输出信号或将接收的输出信号输出为音频或振动形式。

在一些实施例中,用户可在显示器275上显示的图形用户界面(GUI)输入用户命令,则用户接口265通过GUI接收用户输入命令。确切的说,用户接口265可接收用于控制选择器在GUI中的位置以选择不同的对象或项目的用户输入命令。

或者,用户可通过输入特定的声音或手势进行输入用户命令,则用户接口265通过传感器识别出声音或手势,来接收用户输入命令。

视频处理器270,用于接收外部的视频信号,根据输入信号的标准编解码协议,进行解压缩、解码、缩放、降噪、帧率转换、分辨率转换、图像合成等视频数据处理,可得到直接在显示器275上显示或播放的视频信号。

示例的,视频处理器270,包括解复用模块、视频解码模块、图像合成模块、帧率转换模块、显示格式化模块等。

其中,解复用模块,用于对输入音视频数据流进行解复用处理,如输入MPEG-2流(基于数字存储媒体运动图像和语音的压缩标准),则解复用模块将其进行解复用成视频信号和音频信号等。

视频解码模块,用于对解复用后的视频信号进行处理,包括解码和缩放处理等。

图像合成模块,如图像合成器,其用于将图形生成器根据用户输入或自身生成的GUI信号,与缩放处理后视频图像进行叠加混合处理,以生成可供显示的图像信号。

帧率转换模块,用于对输入视频的帧率进行转换,如将输入的60Hz视频的帧率转换为120Hz或240Hz的帧率,通常的格式采用如插帧方式实现。

显示格式化模块,用于将帧率转换模块输出的信号,改变为符合诸如显示器显示格式的信号,如将帧率转换模块输出的信号进行格式转换以输出RGB数据信号。

显示器275,用于接收源自视频处理器270输入的图像信号,进行显示视频内容、图像以及菜单操控界面。显示视频内容,可以来自调谐解调器210接收的广播信号中的视频内容,也可以来自通信器220或外部装置接口240输入的视频内容。显示器275,同时显示显示设备200中产生且用于控制显示设备200的用户操控界面UI。

以及,显示器275可以包括用于呈现画面的显示屏组件以及驱动图像显示的驱动组件。或者,倘若显示器275为一种投影显示器,还可以包括一种投影装置和投影屏幕。

音频处理器280,用于接收外部的音频信号,根据输入信号的标准编解码协议,进行解压缩和解码,以及降噪、数模转换、和放大处理等音频数据处理,得到可以在扬声器286中播放的音频信号。

示例性的,音频处理器280可以支持各种音频格式。例如MPEG-2、MPEG-4、高级音频编码(AAC)、高效AAC(HE-AAC)等格式。

音频输出接口285,用于在控制器250的控制下接收音频处理器280输出的音频信号,音频输出接口285可包括扬声器286,或输出至外接设备的发生装置的外接音响输出端子287,如耳机输出端子。

在其他一些示例性实施例中,视频处理器270可以包括一个或多个芯片组成。音频处理器280,也可以包括一个或多个芯片组成。

以及,在其他一些示例性实施例中,视频处理器270和音频处理器280,可以为单独的芯片,也可以与控制器250一起集成在一个或多个芯片中。

供电电源290,用于在控制器250的控制下,将外部电源输入的电力为显示设备200提供电源供电支持。供电电源290可以是安装在显示设备200内部的内置电源电路,也可以是安装在显示设备200外部的电源。

在一些实施例中,如上述的显示设备外接有外接播放设备时,显示设备会按如图2所示流程将音频数据输出至外接播放设备进行播放。结合图2所示流程来说,当显示设备中存在需要播放的音频数据时,例如,显示设备中APP(Application,应用程序)产生PCM(Pulse Code Modulation,脉冲编码调制)音频数据时,该PCM音频数据首先会经AudioTrack和AudioFlinger传输至SOC芯片。又例如,机顶盒向显示设备传输Physic物理音频数据时,该Physic物理音频数据会被直接传输至SOC芯片。之后,由SOC芯片对该Physic物理音频进行解码,由SOC芯片将解码后的音频数据与PCM音频数据进行混音,得到混音后的音频数据,即最终需要播放的音频数据。当得到最终需要播放的音频数据后,会由Tinyalsa、AudioRecord、HiAPK、AudioTrack和AudioFlinger等模块对该混音后的音频数据进行处理和传输,以将该混音后的音频数据最终传输至外接播放设备进行播放。但在上述音频播放过程中,参与音频数据传输和处理的模块较多,导致音频数据在外接播放设备播放时延时较高。

为此,本实施例提供一种音频播放方法,以在通过外接播放设备播放音频数据时,利用HAL中的Tinyslsa直接的从SOC芯片中获取音频数据,并传输至外接播放设备进行播放,进而减少音频数据的播放时延。

本实施例提供的音频播放方法,根据所需播放音频数据的格式不同,分为三种不同的情况。下面,将分别对不同的情况进行说明。

作为第一种情况,具体为显示设备需要输出第一格式的音频数据至外接播放设备进行播放。结合图3A所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图4A和图4B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:设置在音频数据控制模块与片上系统SOC芯片之间的第一音轨AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger,以及在外部播放设备启动时创建的精简版高级Linux音频框架Tinyalsa;Tinyalsa运行在HAL中,处于SOC芯片与外部播放设备之间。

如图3A所示,该流程可包括以下步骤:

步骤101,音频数据控制模块向第一AudioTrack输出第一格式的音频数据。

作为一个示例,第一格式的音频数据可以是PCM格式的音频数据。

作为一个示例,本实施例中的显示设备在其搭载的Android操作系统启动时,会自动的启动第一AudioTrack。第一AudioTrack用于接收音频数据控制模块传输的音频数据。其中,音频数据控制模块可以通过软件形式实现、也可以通过硬件方式,该音频数据控制模块对应于运行在显示设备中的应用程序,用于将待播放的音频数据输出至第一AudioTrack。具体的,音频数据控制模块具体对应于显示设备中的哪一个应用程序,本申请实施例不对其进行限定。

作为一个示例,音频数据可以是显示设备中任一应用程序所产生的音频数据,例如,视频播放器在播放视频媒体文件或音频播放器在播放音频媒体文件时所产生的音频数据。音频数据可以是静音数据、也可以是非静音数据。这里的静音数据,除用户调节应用程序的播放音量为0,进而使应用程序所输出的音频数据的音量为0之外,下文还描述了一种在非用户自定义操作下输出静音数据的实现方式。至于该实现方式具体在何种场景下起到何种作用,下文会详细描述,这里暂不赘述。

作为一个示例,当显示设备中存在多个应用程序需要输出音频数据时,则显示设备中会对应于多个应用程序创建多个音频数据控制模块,每个音频数据控制模块则均对应一个AudioTrack。

步骤102,第一AudioTrack接收来自音频数据控制模块输入的第一格式的音频数据,对音频数据进行复制,将原音频数据和已复制的音频数据分别输出至第一AudioFlinger和第二AudioFlinger。

作为一个示例,本实施例中的显示设备在其搭载的Android操作系统启动时,会自动的启动两个AudioFlinger,分别是第一AudioFlinger和第二AudioFlinger。这里的第一和第二仅用于对不同AudioFlinger的区别,并不作为具体限定。

作为一个示例,当第一AudioTrack创建后,第一AudioTrack和第一AudioFlinger以及第二AudioFlinger可以通过Android操作系统中所定义的捆绑(binder)机制建立联系。由于该捆绑机制并不是本申请的改进重点,因而在此不作详细描述。

作为一个示例,由于显示设备中所创建的第一AudioTrack关联有两个AudioFlinger,因此,需配置第一AudioTrack与每个AudioFlinger的交互模式为Duplicating(复制)模式。具体的,当第一AudioTrack采用Duplicating模式工作时,其在接收到音频数据后,会根据其所关联AudioFlinger的数量对音频数据进行复制,以使关联该第一AudioTrack的每一AudioFlinger都能接收到一份音频数据。结合上述步骤101而言,由于第一AudioTrack关联了第一AudioFlinger和第二AudioFlinger,因此该第一AudioTrack在采用Duplicating模式工作时,会复制一份其所接收到的音频数据,进而得到两份音频数据。之后,该第一AudioTrack便可将其中一份音频数据发送至第一AudioFlinger,将另一份音频数据发送至第二AudioFlinger。

作为一个示例,第一AudioTrack所接收到的音频数据可以是PCM音频数据。

步骤103,第一AudioFlinger接收音频数据,并对音频数据进行混音处理得到第一音频数据。

作为一个示例,第一AudioFlinger在被创建时,可以基于显示设备中的SOC芯片创建,进而使该第一AudioFlinger能够将混音处理后的音频数据输出至SOC芯片。

作为一个示例,第一AudioFlinger用于对接收到的多路音频数据进行混音处理,进而得到一路混音后的音频数据,即,第一音频数据。由于该第一AudioFlinger基于显示设备中的SOC芯片创建,进而能够在得到第一音频数据后,将该第一音频数据传输至该SOC芯片。至于SOC芯片如何处理其接收到的第一音频数据,后续会详细描述,这里暂不赘述。

作为一个示例,第一AudioFlinger在对音频数据进行混音处理时,可以有采用多种混音策略。例如,第一AudioFlinger在执行混音处理时,为了提高音频数据的传输效率,可将采样率大于48KHz、位深大于16Bit、比特率大于32kbit/s的多路音频数据,混音处理为一路采样率为48KHz、位深为16Bit、比特率为32kbit/s的音频数据。具体的,假设第一AudioFlinger同时接收到两路音频数据,其中一路音频数据的播放时长为3分15秒13帧,采样率为48KHz、位深为16Bit、比特率为32kbit/s、而另一路音频数据的播放时长为2分10秒13帧,采样率为96KHz、位深为24Bit、比特率为96kbit/s。之后,第一AudioFlinger会根据播放时长较长的音频数据,设置混音处理后音频数据的播放时长。这里,混音处理后得到的音频数据的播放时长被设置为3分15秒13帧。之后,第一AudioFlinger会将两路音频数据的采样率、位深和比特率进行调整,使两路音频数据的采样率为48KHz、位深为16Bit、比特率为32kbit/s。在将两路音频数据的采样率、位深和比特率均调节至预先设定的数值后,便可将上述两路音频数据以叠加的方式处理为一路音频数据,进而完成混音处理。

需要说明的是,第一AudioFlinger所采用的混音策略可根据实际情况设置,本申请并不对其进行具体限定。

作为一个示例,SOC芯片在接收到第一AudioFlinger输出的第一音频数据后,会将该第一音频数据存储在SOC芯片中。至于存储在SOC芯片中的第一音频数据如何被输出,下文会详细描述,这里暂不赘述。

步骤104,第一AudioFlinger将第一音频数据输出至SOC芯片。

作为一个示例,第一AudioFlinger在完成对音频数据的混音处理,得到第一音频数据后,便可将该第一音频数据输出至SOC芯片。

步骤105,第二AudioFlinger接收音频数据,并对音频数据进行混音处理得到第二音频数据。

作为一个示例,第二AudioFlinger在被创建时,可以基于显示设备所外接的外接播放设备创建,进而使该第二AudioFlinger能够将处理后的音频数据输出至Android操作系统中的HAL,之后由HAL将音频数据输出至外接播放设备。至于音频数据如何由HAL输出至外接播放设备,后续会详细描述,这里暂不赘述。

作为一个示例,第二AudioFlinger用于对接收到的多路音频数据进行混音,进而得到一路混音后的音频数据,即,第二音频数据。这里,为了保证后续音频数据的正常输出,可设置第二AudioFlinger与第一AudioFlinger的混音策略相同。

需要说明的是,第二AudioFlinger所采用的混音策略可根据实际情况设置,本申请并不对其进行具体限定。

步骤106,第二AudioFlinger将第二音频数据写入HAL。

作为一个示例,第二AudioFlinger在完成对音频数据的混音处理,得到第二音频数据后,可以调用out_write函数,将第二音频数据写入HAL。

步骤107,Tinyalsa在HAL写入第二音频数据时,从SOC芯片发中获取第一音频数据。

作为一个示例,位于HAL的Tinyalsa,可以由显示设备在检测到连接有已启动的外部播放设备时创建,由显示设备在检测到外部播放设备断开或关闭时释放。

作为一个示例,当第二音频数据写入HAL时,便可驱动位于HAL的Tinyalsa主动的从SOC芯片中获取第一音频数据。由于Tinyalsa主动从SOC芯片中获取音频数据的操作需要由HAL中所写入的第二音频数据驱动,因此,Tinyalsa从SOC芯片中所获取的第一音频数据与第二AudioFlinger向HAL所写入的第二音频数据的播放时长是相同的。具体的,在第二音频数据写入HAL后,Tinyalsa便可向SOC芯片发送读取第一音频数据的读取请求,该读取请求中携带有待读取的音频数据的播放时长,该播放时长便是第二音频数据的播放时长,以读取SOC芯片中存储的第一音频数据。SOC芯片在接受到Tinyalsa发送的读取请求后,便可将SOC芯片中存储的第一音频数据发送至Tinyalsa。

步骤108,Tinyalsa将第一音频数据输出至外接播放设备进行播放。

作为一个示例,当Tinyalsa从SOC芯片中获取到第一音频数据后,便可将该第一音频数据输出至外接播放设备的音频播放接口,进而使该外接播放设备根据音频播放接口所接收到的第一音频数据进行音频播放。结合图4B来说在Tinyalsa可与外接播放设备的音频播放接口之间设置一个Data Pool(数据池),用于对第一音频数据进行缓存,以避免第一音频数据在传输时因出现阻塞而丢失。

至此,完成对显示设备如何播放第一格式的音频数据的描述。

在上述实施例中,当通过外接播放设备播放音频数据的过程中,会在本地创建两个AudioFlinger,其中一个AudioFlinger用于将AudioTrack传输的音频数据混音为第一音频数据并输入SOC芯片,以由SOC芯片对其处理得到最终需要播放的第三音频数据,而另一个AudioFlinger用于将AudioTrack传输的音频数据混音为第二音频数据并输入HAL,以触发HAL中的Tinyslsa直接的从SOC芯片中获取第三音频数据并传输至外接播放设备进行播放,避免了音频数据在由SOC芯片路由至HAL中播放设备接口的过程中,AudioRecord、HiAPK、AudioTrack和AudioFlinger等模块的处理,从而降低了音频数据播放时的延时。

作为第二种情况,结合上述关于第一种情况的描述,Tinyalsa主动从SOC芯片中获取音频数据的操作需要由HAL中所写入的第二音频数据驱动。因此,当显示设备中不存在任何需要输出的第一格式的音频数据,而仅存在需要输出的第二格式的音频数据时,则会导致没有第二音频数据可以写入HAL以驱动Tinyalsa从SOC芯片中获取第二格式的音频数据,进而导致SOC芯片中的第二格式的音频数据无法被播放。基于此,本申请实施例还额外在显示设备中设置了一个用于构造静音数据的静音数据控制模块,以在上述情况下利用静音数据以驱动Tinyalsa,下面详细描述:

结合图3B所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图4C和图4B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:静音数据控制模块,设置在静音数据控制模块与SOC芯片之间并关联静音数据控制模块的第二AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger,以及在外部播放设备启动时创建的Tinyalsa;Tinyalsa运行在HAL中,处于SOC芯片与外部播放设备之间。

如图3B所示,该流程可包括以下步骤:

步骤201,SOC芯片接收第二格式的音频数据,将第二格式的音频数据转换为第一格式的音频数据。

作为一个示例,这里的第一格式为PCM格式,而第二格式则是除第一格式之外的其他格式,例如,Physic物理音频数据。由于Android操作系统限定AudioTrack仅能够传输PCM格式的音频数据,因此,其他格式的音频数据会被首先传输至SOC芯片,以由该SOC芯片将其解码为PCM音频数据,再进行后续的相应处理。

步骤202,静音数据控制模块在SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据。

作为一个示例,静音数据控制模块可对应于显示设备中安装的静音应用程序,可用于构造静音数据。静音数据可以是PCM格式的音频数据。

作为一个示例,由于静音数据控制模块在构造静音数据时,也会消耗显示设备的处理资源并对音频数据的输出过程产生压力,因此可选择仅在SOC芯片接收到待解码的音频数据时,才触发该静音数据控制模块构造静音数据,进而将静音数据输出。具体的,可针对SOC芯片中用于接收第二格式的音频数据的接口进行监听,一旦监听到上述接口接收到第二格式的音频数据,便可向静音数据控制模块发送构造静音数据的指令,以使该静音数据控制模块开始构造静音数据,并将静音数据输出。之后,当监听到上述接口不再接收到第二格式的音频数据时,则可向该静音数据控制模块发送停止构造静音数据的指令,以使该静音数据控制模块停止构造静音数据。在此基础上,实现静音数据与SOC芯片所接收第二格式的音频数据的播放时长相等。

步骤203,静音数据控制模块将静音数据输出至第二AudioTrack。

步骤204,第二AudioTrack接收来自静音数据控制模块输入的静音数据,对静音数据进行复制,将原静音数据和已复制的静音数据分别输出至第一AudioFlinger和第二AudioFlinger。

作为一个示例,本步骤所执行的具体操作与前述步骤102相类似,可参考前述对步骤102的相关描述,这里不再赘述。

步骤205,第一AudioFlinger接收静音数据,并对静音数据进行混音处理得到第三音频数据。

作为一个示例,本步骤中第一AudioFlinger对静音数据所进行的混音处理,与前述步骤103相类似,可参考前述对步骤103的相关描述,这里不再赘述。

需要说明的是,第一AudioFlinger所采用的混音策略可根据实际情况设置,本申请并不对其进行具体限定。

步骤206,第一AudioFlinger将第三音频数据输出至SOC芯片。

作为一个示例,第一AudioFlinger在完成对静音数据的混音处理,得到第三音频数据后,便可将该第三音频数据输出至SOC芯片。

步骤207,第二AudioFlinger接收静音数据,并对静音数据进行混音处理得到第四音频数据。

作为一个示例,本步骤中第二AudioFlinger对静音数据所进行的混音处理,与前述步骤105相类似,可参考前述对步骤105的相关描述,这里不再赘述。

需要说明的是,第二AudioFlinger所采用的混音策略可根据实际情况设置,本申请并不对其进行具体限定。

步骤208,第二AudioFlinger将第四音频数据写入HAL。

作为一个示例,第二AudioFlinger在完成对静音数据的混音处理,得到第四音频数据后,可以调用out_write函数,将第四音频数据写入HAL。

步骤209,SOC芯片在接收到第三音频数据时,将转换后的音频数据与已接收的第一格式的音频数据进行混音处理得到第五音频数据。

作为一个示例,在SOC芯片对需要解码的第二格式的音频数据进行解码的过程中,则该SOC芯片会在完成对第二格式的音频数据的解码后,将解码后的音频数据与第三音频数据进行混音处理,得到第五音频数。

作为一个示例,在SOC芯片完成对需要解码的第二格式的音频数据的解码后,若接收到第一AudioFlinger传输的第三音频数据,则该SOC芯片会将解码后的音频数据与第三音频数据进行混音处理,得到第五音频数。

步骤210,Tinyalsa在HAL写入第四音频数据时,从SOC芯片中获取第四音频数据。

步骤211,Tinyalsa将第四音频数据输出至外接播放设备进行播放。

作为一个示例,当Tinyalsa从SOC芯片中获取到第四音频数据后,便可将该第四音频数据输出至外接播放设备的音频播放接口,进而使该外接播放设备根据音频播放接口所接收到的第四音频数据进行音频播放。在具体实施时,可在Tinyalsa与外接播放设备的音频播放接口之间设置一个数据池,用于对第四音频数据进行缓存,以避免第四音频数据在传输时因出现阻塞而丢失。

至此,完成对显示设备如何播放第二格式音频数据的描述。

作为第三种情况,具体为显示设备需要同时输出PCM音频数据和Physic物理音频数据至外接播放设备进行播放。结合图3C所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图4D和图4B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:设置在音频数据控制模块和静音数据控制模块与片上系统SOC芯片之间的第一AudioTrack、第二AudioTrack、AudioTrack、第一音频数据实体AudioFlinger和第二AudioFlinger,以及在外部播放设备启动时创建的Tinyalsa;Tinyalsa运行在HAL中,处于SOC芯片与外部播放设备之间。

由于本实施例中所涉及的内容在前述两个实施例中已经进行了相关描述,因此本实施例中的各步骤,可参考前述两个实施例的描述,在下文中不再赘述。

如图3C所示,该流程可包括以下步骤:

步骤301,SOC芯片接收第二格式的音频数据,将第二格式的音频数据转换为第一格式的音频数据。

步骤302,静音数据控制模块在SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据

步骤303,静音数据控制模块将静音数据输出至第二AudioTrack。

步骤304,第二AudioTrack接收来自静音数据控制模块输入的第一格式的静音数据,对静音数据进行复制,将原静音数据和已复制的静音数据分别输出至第一AudioFlinger和第二AudioFlinger。

步骤305,音频数据控制模块向第一AudioTrack输出第一格式的音频数据。

步骤306,第一AudioTrack接收来自音频数据控制模块输入的第一格式的音频数据,对音频数据进行复制,将原音频数据和已复制的音频数据分别输出至第一AudioFlinger和第二AudioFlinger。

步骤307,第一AudioFlinger接收音频数据和静音数据,并对音频数据和静音数据进行混音处理得到第九音频数据。

步骤308,第二AudioFlinger接收音频数据和静音数据,并对音频数据和静音数据进行混音处理得到第十音频数据。

步骤309,第一AudioFlinger将第九音频数据输出至SOC芯片。

步骤310,第二AudioFlinger将第十音频数据写入HAL。

步骤311,SOC芯片接收第九音频数,并对第九音频数据和第一格式的音频数据进行混音处理得到第十一音频数据。

步骤312,Tinyalsa在HAL写入第十音频数据时,从SOC芯片获取第十一音频数据。

步骤313,Tinyalsa将第十一音频数据输出至外接播放设备进行播放。

至此,完成对显示设备如何同时播放第一格式和第二格式音频数据的描述。

除上述描述的音频播放方法之外,本申请实施例还提供了另外一种音频播放方法。本实施例中所提供的音频播放方法,也会根据所需播放音频数据的格式不同,分为三种不同的情况。下面,将分别对不同的情况进行说明。

作为第一种情况,具体为显示设备需要输出第一格式的音频数据至外接播放设备进行播放。结合图5A所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图6A和6B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:设置在音频数据控制模块与SOC芯片之间的第三AudioTrack、第三AudioFlinger。

如图5A所示,该流程可包括以下步骤:

步骤401,第三AudioTrack接收来自音频数据控制模块输入的第一格式的音频数据。

作为一个示例,第三AudioTrack如何与第三AudioFlinger进行关联、以及AudioTrack如何传输第一格式的音频数据至第三AudioFlinger,可参考前述对步骤101及步骤102所作描述,这里不再赘述。

步骤402,第三AudioTrack将音频数据输出至第三AudioFlinger。

作为一个示例,由于本实施例中的第三AudioTrack仅需将音频数据传输至第三AudioFlinger,因此,本实施例中的第三AudioTrack则无需采用Duplicating模式进行工作,即第三AudioTrack无需对其所接收到的音频数据进行拷贝,可直接的将音频数据传输至第三AudioFlinger。

步骤403,第三AudioFlinger接收音频数据,并对音频数据进行混音处理得到第六音频数据。

作为一个示例,本实施例中的第三AudioFlinger的混音处理过程,可参考前述对步骤103所作描述,这里不再赘述。

步骤404,第三AudioFlinger将第六音频数据输出至外接播放设备进行播放。

作为一个示例,第三AudioFlinger在完成混音处理,得到第六音频数据后,则可以直接的将第六音频数据直接的输出至输出至外接播放设备的音频播放接口,进而使该外接播放设备根据音频播放接口所接收到的第六音频数据进行音频播放。

至此,完成对显示设备如何播放第一格式的音频数据的描述。

作为第二种情况,具体为显示设备需要输出第二格式的音频数据至外接播放设备进行播放。结合图5B所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图6C和6B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:设置在静音数据控制模块与SOC芯片之间并关联静音数据控制模块的第四AudioTrack、第三AudioFlinger,以及音频混音器AudioMixer和在外部播放设备启动时创建的Tinyalsa;AudioMixer和Tinyalsa运行在HAL中,处于SOC芯片与外部播放设备之间。

如图5B所示,该流程可包括以下步骤:

步骤501,SOC芯片接收第二格式的音频数据,将第二格式的音频数据转换为第一格式的音频数据。

作为一个示例,本步骤中SOC芯片如何接收第二格式的音频数据,以及如何将第二格式的音频数据转换为第一格式的音频数据,在前述步骤201中已经进行了详细描述,相关内容可参考前述对步骤201所作描述,这里不再赘述。

步骤502,静音数据控制模块在SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据。

作为一个示例,静音数据控制模块如何构造第一格式的静音数据,在前述步骤202中已经进行了详细描述,相关内容可参考前述对步骤202所作描述,这里不再赘述。

步骤503,静音数据控制模块将静音数据输出至第四AudioTrack。

作为一个示例,第四AudioTrack是与静音数据控制模块相关联的AudioTrack。

步骤504,第四AudioTrack接收来自静音数据控制模块输入的静音数据,并输出至第三AudioFlinger。

步骤505,第三AudioFlinger接收静音数据,并对静音数据进行混音处理得到第七音频数据。

步骤506,第三AudioFlinger将第七音频数据输出至AudioMixer。

作为一个示例,第三AudioFlinger在被创建时,可以基于显示设备所外接的外接播放设备创建,进而使该第三AudioFlinger能够将混音后的音频数据输出至Android操作系统中的HAL,但由于本实施例额外的在HAL中设置了AudioMixer,因此该第三AudioFlinger会将混音后的音频数据输出至HAL中的AudioMixer,再由AudioMixer对该音频进行处理并传输至外接播放设备。

步骤507,Tinyalsa在AudioMixer接收到第七音频数据时,从SOC芯片获取第一格式的音频数据。

作为一个示例,当第七音频数据输出至AudioMixer时,便可驱动位于HAL的Tinyalsa主动的从SOC芯片中获取第一格式的音频数据。具体的,在第七音频数据写入AudioMixer后,Tinyalsa便可向SOC芯片发送读取第一格式的音频数据的读取请求,该读取请求中携带有待读取的音频数据的播放时长,该播放时长便是第七音频数据的播放时长,以读取SOC芯片中存储的第一格式的音频数据。

步骤508,Tinyalsa将第一格式的音频数据输出至AudioMixer。

步骤509,AudioMixer接收Tinyalsa输出的第一格式的音频数据和第七音频数据,并对第一格式的音频数据和第七音频数据进行混音处理得到第八音频数据。

作为一个示例,本实施例在HAL中额外设置了一个AudioMixer,以用于对写入HAL中的音频数据进行混音。该AudioMixer在被创建时,可以基于显示设备所外接的外接播放设备创建,进而使该AudioMixer可以将其混音后得到的音频数据输出至外接播放设备。

作为一个示例,AudioMixer所执行的混音处理,可参照前述对AudioFlinger的相关描述,这里不再赘述。

步骤510,AudioMixer将第八音频数据输出至外接播放设备进行播放。

至此,完成对显示设备如何播放第一格式的音频数据的描述。

作为第三种情况,具体为显示设备需要同时输出第一格式和第二格式的音频数据至外接播放设备进行播放。结合图5C所示流程,在该情况下本实施例提供的音频播放方法可以应用于如上的显示设备,该显示设备可搭载Android(安卓)操作系统。结合图6D和6B来说,该显示设备可以包括显示器、与显示器耦合连接的控制器。在该控制器中可至少设置有:设置在音频数据控制模块与SOC芯片之间的第三AudioTrack、设置在静音数据控制模块与SOC芯片之间并关联静音数据控制模块的第四AudioTrack、第三AudioFlinger,以及音频混音器AudioMixer和在外部播放设备启动时创建的Tinyalsa;AudioMixer和Tinyalsa运行在HAL中,处于SOC芯片与外部播放设备之间。

由于本实施例中所涉及的内容在前述两个实施例中已经进行了相关描述,因此本实施例中的各步骤,可参考前述两个实施例的描述,在下文中不再赘述。

参考图5C,该流程可以包括以下步骤:

步骤601,SOC芯片接收第二格式的音频数据,将第二格式的音频数据转换为第一格式的音频数据。

步骤602,静音数据控制模块在SOC芯片接收到第二格式的音频数据时,构造第一格式的静音数据。

步骤603,静音数据控制模块将静音数据输出至第四AudioTrack。

步骤604,第四AudioTrack接收来自静音数据控制模块输入的静音数据,并输出至第三AudioFlinger。

步骤605,第三AudioTrack接收来自音频数据控制模块输入的第一格式的音频数据。

步骤606,第三AudioTrack将音频数据输出至第三AudioFlinger。

步骤607,第三AudioFlinger接收音频数据和静音数据,并对音频数据和静音数据进行混音处理得到第十二音频数据。

步骤608,第三AudioFlinger将第十二音频数据输出至AudioMixer。

步骤609,Tinyalsa在AudioMixer接收到第十二音频数据时,从SOC芯片获取第一格式的音频数据。

步骤610,Tinyalsa将第一格式的音频数据输出至AudioMixer。

步骤611,AudioMixer接收Tinyalsa输出的第一格式的音频数据和第十二音频数据,并对第一格式的音频数据和第十二音频数据进行混音处理得到第十三音频数据。

步骤612,AudioMixer将第十三音频数据输出至外接播放设备进行播放。

至此,完成对显示设备如何播放第一格式和第二格式的音频数据的描述。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

36页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种声音输出幅度的调整方法及显示设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类