一种应用级播放器的音频硬解码方法及显示设备与流程

文档序号:29039583发布日期:2022-02-25 20:14阅读:421来源:国知局
一种应用级播放器的音频硬解码方法及显示设备与流程

1.本技术涉及音频解码技术领域,尤其涉及一种应用级播放器的音频硬解码方法及显示设备。


背景技术:

2.随着显示设备的快速发展,显示设备的功能将越来越丰富,性能也越来越强大,目前,显示设备包括智能电视机、双屏激光电视、智能机顶盒、智能盒子,以及带有智能显示屏幕等。
3.现有的显示设备在播放音视频文件(片源),通常采用应用级播放器,由应用级播放器对片源的音频数据和视频数据进行解码后实现播放。应用级播放器包括ijkplayer,exoplayer,adoplayer,pplivetvplayer等,上述应用级别播放器在对音频进行解码时通常使用ffmpeg(第三方开源解封装解码程序)、audio extractor(android原生解封装程序)或者自身封装的解码器。
4.但是,由于应用级播放器播放的片源大多是网络片源,音频编码格式单一,采用上述解码方式解码后声道输出一般为2声道,采样率和比特率较低,导致在播放音视频文件时无法得到很好的视听效果。


技术实现要素:

5.本技术提供了一种应用级播放器的音频硬解码方法及显示设备,以解决现有的解码方式无法获得良好的视听效果的问题。
6.第一方面,本技术提供了一种显示设备,包括:
7.控制器,所述控制器内配置有用于播放指定音视频文件的应用级播放器,所述应用级播放器被配置为:
8.获取音频硬解码参数和解码前音频数据,所述解码前音频数据是指对所述指定音视频文件进行解封装处理得到的音频数据,所述音频硬解码参数是指对所述解码前音频数据进行音频硬解码处理所需的参数;
9.基于所述音频硬解码参数,创建音频硬解码器;
10.调用所述音频硬解码器对所述解码前音频数据进行音频硬解码处理,得到解码后音频数据;
11.将所述解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,所述avframe结构体存储形式是指应用级播放器采用的存储形式;
12.将所述采用avframe结构体存储形式的解码后音频数据写入音频解码后数据队列,以播放所述指定音视频文件。
13.本技术的一些实施例中,所述应用级播放器在执行所述基于所述音频硬解码参数,创建音频硬解码器,被进一步配置为:
14.创建音频硬解码器;
15.基于所述音频硬解码参数,配置所述音频硬解码器;
16.在配置有所述音频硬解码参数的音频硬解码器中,创建硬解码输入线程和硬解码输出线程。
17.本技术的一些实施例中,所述应用级播放器在执行所述调用所述音频硬解码器对所述解码前音频数据进行音频硬解码处理,得到解码后音频数据,被进一步配置为:
18.调用所述音频硬解码器中的硬解码输入线程对所述解码前音频数据进行音频硬解码处理,得到的解码后音频数据;
19.将所述解码后音频数据写入所述音频硬解码器中的硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据,所述pbuffer结构体存储形式是指音频硬解码器采用的存储形式。
20.本技术的一些实施例中,所述应用级播放器在执行所述创建音频硬解码器,被进一步配置为:
21.获取音频硬解码器的运行环境参数,所述运行环境参数是指调用音频硬解码器时所需的参数;
22.对所述运行环境参数进行编译,生成包括函数名称的跨语言调用文件;
23.获取所述音频硬解码参数对应的函数名称,以及,将所述音频硬解码参数对应的函数名称和所述跨语言调用文件中的函数名称进行匹配;
24.在函数名称匹配一致时,创建音频硬解码器。
25.本技术的一些实施例中,所述应用级播放器在执行所述调用所述音频硬解码器中的硬解码输入线程将对所述解码前音频数据进行音频硬解码处理,被进一步配置为:
26.调用所述音频硬解码器中的硬解码输入线程,获取所述解码前音频数据和输入缓冲索引;
27.将所述解码前音频数据写入所述输入缓冲索引中进行音频硬解码处理,得到解码后音频数据。
28.本技术的一些实施例中,所述应用级播放器在执行所述获取输入缓冲索引之前,被进一步配置为:
29.基于在播放所述指定音视频文件时的用户操作,判断是否需要清空音频数据;
30.如果需要清空音频数据,则清空所述音频硬解码器中存储的音频数据;
31.如果不需要清空音频数据,则执行获取输入缓冲索引的步骤。
32.本技术的一些实施例中,所述应用级播放器在执行所述将解码后音频数据写入所述音频硬解码器中的硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据,被进一步配置为:
33.调用所述音频硬解码器中的硬解码输出线程,从所述音频硬解码器中获取输出缓冲索引;
34.将所述解码后音频数据写入所述输出缓冲索引中,得到采用pbuffer结构体存储形式的解码后音频数据。
35.本技术的一些实施例中,所述应用级播放器在执行所述将所述解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,被进一步配置为:
36.获取音频数据输出格式信息和采用pbuffer结构体存储形式的解码后音频数据,
所述音频数据输出格式信息是指采用avframe结构体存储形式输出所需的信息;
37.从所述采用pbuffer结构体存储形式的解码后音频数据中获取音频数据偏移量;
38.基于所述音频数据偏移量和解码后音频数据,得到采用pbuffer结构体存储形式的真实解码后音频数据;
39.基于所述采用pbuffer结构体存储形式的真实解码后音频数据,创建avframe结构体;
40.将所述音频数据输出格式信息写入所述avframe结构体,得到采用avframe结构体存储形式的解码后音频数据。
41.本技术的一些实施例中,所述应用级播放器被进一步配置为:
42.调用标准解码接口,获取包括一一对应的解码格式和底层解码名称的对照表,每个所述底层解码名称对应一种应用芯片;
43.基于所述对照表和所述音频硬解码参数对应的解码格式,确定第一底层解码名称;
44.从配置的静态文件中获得第二底层解码名称,对所述第一底层解码名称和第二底层解码名称进行打分;
45.将得分最高的底层解码名称确定为目标底层解码名称,以及,与所述目标底层解码名称对应的应用芯片建立连接。
46.第二方面,本技术还提供了一种应用级播放器的音频硬解码方法,所述方法包括:
47.获取音频硬解码参数和解码前音频数据,所述解码前音频数据是指对所述指定音视频文件进行解封装处理得到的音频数据,所述音频硬解码参数是指对所述解码前音频数据进行音频硬解码处理所需的参数;
48.基于所述音频硬解码参数,创建音频硬解码器;
49.调用所述音频硬解码器对所述解码前音频数据进行音频硬解码处理,得到解码后音频数据;
50.将所述解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,所述avframe结构体存储形式是指应用级播放器采用的存储形式;
51.将所述采用avframe结构体存储形式的解码后音频数据写入音频解码后数据队列,以播放所述指定音视频文件。
52.第三方面,本技术还提供了一种存储介质,该计算机存储介质可存储有程序,该程序执行时可实现包括本技术提供的应用级播放器的音频硬解码方法各实施例中的部分或全部步骤。
53.由以上技术方案可知,本发明实施例提供的一种应用级播放器的音频硬解码方法及显示设备,其配置的应用级播放器用于获取音频硬解码参数和解码前音频数据,基于音频硬解码参数,创建音频硬解码器;调用音频硬解码器对解码前音频数据进行音频硬解码处理,得到采用pbuffer结构体存储形式的解码后音频数据,将采用pbuffer结构体存储形式的后音频数据转换为采用avframe结构体存储形式的解码后音频数据,并写入音频解码后数据队列,以播放指定音视频文件。可见,本发明实施例提供的方法及显示设备,可使应用级播放器采用硬解码方式对音频数据进行解码,可以对音效做预处理,通过解码将音频数据解码成多声道,达到增强音效的效果。
附图说明
54.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
55.图1中示例性示出了根据一些实施例的显示设备与控制装置之间操作场景的示意图;
56.图2中示例性示出了根据一些实施例的显示设备200的硬件配置框图;
57.图3中示例性示出了根据一些实施例的控制设备100的硬件配置框图;
58.图4中示例性示出了根据一些实施例的显示设备200中软件配置示意图;
59.图5中示例性示出了根据一些实施例的显示设备200中应用程序的图标控件界面显示示意图;
60.图6中示例性示出了根据一些实施例的应用级播放器的音频硬解码方法的流程图;
61.图7中示例性示出了根据一些实施例的应用级播放器的结构框图;
62.图8中示例性示出了根据一些实施例的创建音频硬解码器的方法流程图;
63.图9中示例性示出了根据一些实施例的硬解码输入线程的数据流图;
64.图10中示例性示出了根据一些实施例的硬解码输出线程的执行方法流程图;
65.图11中示例性示出了根据一些实施例的硬解码输出线程的数据流图;
66.图12中示例性示出了根据一些实施例的转换avframe结构体的方法流程图;
67.图13中示例性示出了根据一些实施例的转换avframe结构体的数据流图;
68.图14中示例性示出了根据一些实施例的多芯片omx层解码格式兼容的方法流程图。
具体实施方式
69.为使本技术的目的、实施方式和优点更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
70.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
71.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
72.本技术中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(unless otherwise indicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据本技术实施例图示或描述中给出那些以外的顺序实施。
73.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,
例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
74.本技术中使用的术语“模块”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
75.本技术中使用的术语“遥控器”,是指电子设备(如本技术中公开的显示设备)的一个组件,通常可在较短的距离范围内无线控制电子设备。一般使用红外线和/或射频(rf)信号和/或蓝牙与电子设备连接,也可以包括wifi、无线usb、蓝牙、动作传感器等功能模块。例如:手持式触摸遥控器,是以触摸屏中用户界面取代一般遥控装置中的大部分物理内置硬键。
76.本技术中使用的术语“手势”,是指用户通过一种手型的变化或手部运动等动作,用于表达预期想法、动作、目的/或结果的用户行为。
77.图1中示例性示出了根据一些实施例的显示设备与控制装置之间操作场景的示意图。如图1中示出,用户可通过移动终端300和控制装置100操作显示设备200。
78.在一些实施例中,控制装置100可以是遥控器,遥控器和显示设备的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式等,通过无线或其他有线方式来控制显示设备200。用户可以通过遥控器上按键,语音输入、控制面板输入等输入用户指令,来控制显示设备200。如:用户可以通过遥控器上音量加减键、频道控制键、上/下/左/右的移动按键、语音输入按键、菜单键、开关机按键等输入相应控制指令,来实现控制显示设备200的功能。
79.在一些实施例中,也可以使用移动终端、平板电脑、计算机、笔记本电脑、和其他智能设备以控制显示设备200。例如,使用在智能设备上运行的应用程序控制显示设备200。该应用程序通过配置可以在与智能设备关联的屏幕上,在直观的用户界面(ui)中为用户提供各种控制。
80.在一些实施例中,移动终端300可与显示设备200安装软件应用,通过网络通信协议实现连接通信,实现一对一控制操作的和数据通信的目的。如:可以实现用移动终端300与显示设备200建立控制指令协议,将遥控控制键盘同步到移动终端300上,通过控制移动终端300上用户界面,实现控制显示设备200的功能。也可以将移动终端300上显示音视频内容传输到显示设备200上,实现同步显示功能。
81.如图1中还示出,显示设备200还与服务器400通过多种通信方式进行数据通信。可允许显示设备200通过局域网(lan)、无线局域网(wlan)和其他网络进行通信连接。服务器400可以向显示设备200提供各种内容和互动。示例的,显示设备200通过发送和接收信息,以及电子节目指南(epg)互动,接收软件程序更新,或访问远程储存的数字媒体库。服务器400可以是一个集群,也可以是多个集群,可以包括一类或多类服务器。通过服务器400提供视频点播和广告服务等其他网络服务内容。
82.显示设备200,可以液晶显示器、oled显示器、投影显示设备。具体显示设备类型,尺寸大小和分辨率等不作限定,本领技术人员可以理解的是,显示设备200可以根据需要做性能和配置上一些改变。
83.显示设备200除了提供广播接收电视功能之外,还可以附加提供计算机支持功能的智能网络电视功能,包括但不限于,网络电视、智能电视、互联网协议电视(iptv)等。
84.图2中示例性示出了根据一些实施例的显示设备200的硬件配置框图。
85.在一些实施例中,显示设备200中包括控制器250、调谐解调器210、通信器220、检测器230、输入/输出接口255、显示器275,音频输出接口285、存储器260、供电电源290、用户接口265、外部装置接口240中的至少一种。
86.在一些实施例中,显示器275,用于接收源自第一处理器输出的图像信号,进行显示视频内容和图像以及菜单操控界面的组件。
87.在一些实施例中,显示器275,包括用于呈现画面的显示屏组件,以及驱动图像显示的驱动组件。
88.在一些实施例中,显示视频内容,可以来自广播电视内容,也可以是说,可通过有线或无线通信协议接收的各种广播信号。或者,可显示来自网络通信协议接收来自网络服务器端发送的各种图像内容。
89.在一些实施例中,显示器275用于呈现显示设备200中产生且用于控制显示设备200的用户操控ui界面。
90.在一些实施例中,根据显示器275类型不同,还包括用于驱动显示的驱动组件。
91.在一些实施例中,显示器275为一种投影显示器,还可以包括一种投影装置和投影屏幕。
92.在一些实施例中,通信器220是用于根据各种通信协议类型与外部设备或外部服务器进行通信的组件。例如:通信器220可以包括wifi模块221,蓝牙模块222,有线以太网模块223等其他网络通信协议模块或近场通信协议模块,以及红外接收器中的至少一种。
93.在一些实施例中,显示设备200可以通过通信器220与外部控制设备100或内容提供设备之间建立控制信号和数据信号发送和接收。
94.在一些实施例中,用户接口265,可用于接收控制装置100(如:红外遥控器等)红外控制信号。
95.在一些实施例中,检测器230是显示设备200用于采集外部环境或与外部交互的信号。
96.在一些实施例中,检测器230包括光接收器,用于采集环境光线强度的传感器,可以通过采集环境光可以自适应性显示参数变化等。
97.在一些实施例中,检测器230还可以包括图像采集器232,如相机、摄像头等,可以用于采集外部环境场景,以及用于采集用户的属性或与用户交互手势,可以自适应变化显示参数,也可以识别用户手势,以实现与用户之间互动的功能。
98.在一些实施例中,检测器230还可以包括温度传感器等,如通过感测环境温度。
99.在一些实施例中,显示设备200可自适应调整图像的显示色温。如当温度偏高的环境时,可调整显示设备200显示图像色温偏冷色调,或当温度偏低的环境时,可以调整显示设备200显示图像偏暖色调。
100.在一些实施例中,检测器230还包括声音采集器231等,如麦克风,可以用于接收用户的声音。示例性的,包括用户控制显示设备200的控制指令的语音信号,或采集环境声音,用于识别环境场景类型,使得显示设备200可以自适应适应环境噪声。
101.在一些实施例中,如图2所示,输入/输出接口255被配置为,可进行控制器250与外部其他设备或其他控制器250之间的数据传输。如接收外部设备的视频信号数据和音频信
号数据、或命令指令数据等。
102.在一些实施例中,外部装置接口240可以包括,但不限于如下:可以高清多媒体接口hdmi接口、模拟或数据高清分量输入接口、复合视频输入接口、usb输入接口、rgb端口等任一个或多个接口。也可以是上述多个接口形成复合性的输入/输出接口。
103.在一些实施例中,如图2所示,调谐解调器210被配置为,通过有线或无线接收方式接收广播电视信号,可以进行放大、混频和谐振等调制解调处理,从多多个无线或有线广播电视信号中解调出音视频信号,该音视频信号可以包括用户所选择电视频道频率中所携带的电视音视频信号,以及epg数据信号。
104.在一些实施例中,调谐解调器210解调的频点受到控制器250的控制,控制器250可根据用户选择发出控制信号,以使的调制解调器响应用户选择的电视信号频率以及调制解调该频率所携带的电视信号。
105.在一些实施例中,广播电视信号可根据电视信号广播制式不同区分为地面广播信号、有线广播信号、卫星广播信号或互联网广播信号等。或者根据调制类型不同可以区分为数字调制信号,模拟调制信号等。或者根据信号种类不同区分为数字信号、模拟信号等。
106.在一些实施例中,控制器250和调谐解调器210可以位于不同的分体设备中,即调谐解调器210也可在控制器250所在的主体设备的外置设备中,如外置机顶盒等。这样,机顶盒将接收到的广播电视信号调制解调后的电视音视频信号输出给主体设备,主体设备经过第一输入/输出接口接收音视频信号。
107.在一些实施例中,控制器250,通过存储在存储器上中各种软件控制程序,来控制显示设备的工作和响应用户的操作。控制器250可以控制显示设备200的整体操作。例如:响应于接收到用于选择在显示器275上显示ui对象的用户命令,控制器250便可以执行与由用户命令选择的对象有关的操作。
108.在一些实施例中,所述对象可以是可选对象中的任何一个,例如超链接或图标。与所选择的对象有关操作,例如:显示连接到超链接页面、文档、图像等操作,或者执行与所述图标相对应程序的操作。用于选择ui对象用户命令,可以是通过连接到显示设备200的各种输入装置(例如,鼠标、键盘、触摸板等)输入命令或者与由用户说出语音相对应的语音命令。
109.如图2所示,控制器250包括随机存取存储器251(random access memory,ram)、只读存储器252(read-only memory,rom)、视频处理器270、音频处理器280、其他处理器253(例如:图形处理器(graphics processing unit,gpu)、中央处理器254(central processing unit,cpu)、通信接口(communication interface),以及通信总线256(bus)中的至少一种。其中,通信总线连接各个部件。
110.在一些实施例中,ram 251用于存储操作系统或其他正在运行中的程序的临时数据在一些实施例中,rom 252用于存储各种系统启动的指令。
111.在一些实施例中,rom 252用于存储一个基本输入输出系统,称为基本输入输出系统(basic input output system,bios)。用于完成对系统的加电自检、系统中各功能模块的初始化、系统的基本输入/输出的驱动程序及引导操作系统。
112.在一些实施例中,在收到开机信号时,显示设备200电源开始启动,处理器254运行rom 252中系统启动指令,将存储在存储器的操作系统的临时数据拷贝至ram 251中,以便
于启动或运行操作系统。当操作系统启动完成后,处理器254再将存储器中各种应用程序的临时数据拷贝至ram 251中,然后,以便于启动或运行各种应用程序。
113.在一些实施例中,处理器254,用于执行存储在存储器中操作系统和应用程序指令。以及根据接收外部输入的各种交互指令,来执行各种应用程序、数据和内容,以便最终显示和播放各种音视频内容。
114.在一些示例性实施例中,处理器254,可以包括多个处理器。多个处理器可包括一个主处理器以及一个或多个子处理器。主处理器,用于在预加电模式中执行显示设备200一些操作,和/或在正常模式下显示画面的操作。一个或多个子处理器,用于在待机模式等状态下一种操作。
115.在一些实施例中,图形处理器253,用于产生各种图形对象,如:图标、操作菜单、以及用户输入指令显示图形等。包括运算器,通过接收用户输入各种交互指令进行运算,根据显示属性显示各种对象。以及包括渲染器,对基于运算器得到的各种对象,进行渲染,上述渲染后的对象用于显示在显示器上。
116.在一些实施例中,视频处理器270被配置为将接收外部视频信号,根据输入信号的标准编解码协议,进行解压缩、解码、缩放、降噪、帧率转换、分辨率转换、图像合成等等视频处理,可得到直接可显示设备200上显示或播放的信号。
117.在一些实施例中,视频处理器270,包括解复用模块、视频解码模块、图像合成模块、帧率转换模块、显示格式化模块等。
118.其中,解复用模块,用于对输入音视频数据流进行解复用处理,如输入mpeg-2,则解复用模块进行解复用成视频信号和音频信号等。
119.视频解码模块,则用于对解复用后的视频信号进行处理,包括解码和缩放处理等。
120.图像合成模块,如图像合成器,其用于将图形生成器根据用户输入或自身生成的gui信号,与缩放处理后视频图像进行叠加混合处理,以生成可供显示的图像信号。
121.帧率转换模块,用于对转换输入视频帧率,如将60hz帧率转换为120hz帧率或240hz帧率,通常的格式采用如插帧方式实现。
122.显示格式化模块,则用于将接收帧率转换后视频输出信号,改变信号以符合显示格式的信号,如输出rgb数据信号。
123.在一些实施例中,图形处理器253可以和视频处理器可以集成设置,也可以分开设置,集成设置的时候可以执行输出给显示器的图形信号的处理,分离设置的时候可以分别执行不同的功能,例如gpu+frc(frame rate conversion))架构。
124.在一些实施例中,音频处理器280,用于接收外部的音频信号,根据输入信号的标准编解码协议,进行解压缩和解码,以及降噪、数模转换、和放大处理等处理,得到可以在扬声器中播放的声音信号。
125.在一些实施例中,视频处理器270可以包括一颗或多颗芯片组成。音频处理器,也可以包括一颗或多颗芯片组成。
126.在一些实施例中,视频处理器270和音频处理器280,可以单独的芯片,也可以于控制器一起集成在一颗或多颗芯片中。
127.在一些实施例中,音频输出,在控制器250的控制下接收音频处理器280输出的声音信号,如:扬声器286,以及除了显示设备200自身携带的扬声器之外,可以输出至外接设
备的发生装置的外接音响输出端子,如:外接音响接口或耳机接口等,还可以包括通信接口中的近距离通信模块,例如:用于进行蓝牙扬声器声音输出的蓝牙模块。
128.供电电源290,在控制器250控制下,将外部电源输入的电力为显示设备200提供电源供电支持。供电电源290可以包括安装显示设备200内部的内置电源电路,也可以是安装在显示设备200外部电源,在显示设备200中提供外接电源的电源接口。
129.用户接口265,用于接收用户的输入信号,然后,将接收用户输入信号发送给控制器250。用户输入信号可以是通过红外接收器接收的遥控器信号,可以通过网络通信模块接收各种用户控制信号。
130.在一些实施例中,用户通过控制装置100或移动终端300输入用户命令,用户输入接口则根据用户的输入,显示设备200则通过控制器250响应用户的输入。
131.在一些实施例中,用户可在显示器275上显示的图形用户界面(gui)输入用户命令,则用户输入接口通过图形用户界面(gui)接收用户输入命令。或者,用户可通过输入特定的声音或手势进行输入用户命令,则用户输入接口通过传感器识别出声音或手势,来接收用户输入命令。
132.在一些实施例中,“用户界面”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面常用的表现形式是图形用户界面(graphic user interface,gui),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的一个图标、窗口、控件等界面元素,其中控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、widget等可视的界面元素。
133.存储器260,包括存储用于驱动显示设备200的各种软件模块。如:第一存储器中存储的各种软件模块,包括:基础模块、检测模块、通信模块、显示控制模块、浏览器模块、和各种服务模块等中的至少一种。
134.基础模块用于显示设备200中各个硬件之间信号通信、并向上层模块发送处理和控制信号的底层软件模块。检测模块用于从各种传感器或用户输入接口中收集各种信息,并进行数模转换以及分析管理的管理模块。
135.例如,语音识别模块中包括语音解析模块和语音指令数据库模块。显示控制模块用于控制显示器进行显示图像内容的模块,可以用于播放多媒体图像内容和ui界面等信息。通信模块,用于与外部设备之间进行控制和数据通信的模块。浏览器模块,用于执行浏览服务器之间数据通信的模块。服务模块,用于提供各种服务以及各类应用程序在内的模块。同时,存储器260还用存储接收外部数据和用户数据、各种用户界面中各个项目的图像以及焦点对象的视觉效果图等。
136.图3示例性示出了根据一些实施例的控制设备100的配置框图。如图3所示,控制设备100包括控制器110、通信接口130、用户输入/输出接口、存储器、供电电源。
137.控制设备100被配置为控制显示设备200,以及可接收用户的输入操作指令,且将操作指令转换为显示设备200可识别和响应的指令,起用用户与显示设备200之间交互中介作用。如:用户通过操作控制设备100上频道加减键,显示设备200响应频道加减的操作。
138.在一些实施例中,控制设备100可是一种智能设备。如:控制设备100可根据用户需求安装控制显示设备200的各种应用。
139.在一些实施例中,如图1所示,移动终端300或其他智能电子设备,可在安装操控显示设备200的应用之后,可以起到控制设备100类似功能。如:用户可以通过安装应用,在移动终端300或其他智能电子设备上可提供的图形用户界面的各种功能键或虚拟按钮,以实现控制设备100实体按键的功能。
140.控制器110包括处理器112和ram 113和rom 114、通信接口130以及通信总线。控制器用于控制控制设备100的运行和操作,以及内部各部件之间通信协作以及外部和内部的数据处理功能。
141.通信接口130在控制器110的控制下,实现与显示设备200之间控制信号和数据信号的通信。如:将接收到的用户输入信号发送至显示设备200上。通信接口130可包括wifi芯片131、蓝牙模块132、nfc模块133等其他近场通信模块中至少之一种。
142.用户输入/输出接口140,其中,输入接口包括麦克风141、触摸板142、传感器143、按键144等其他输入接口中至少一者。如:用户可以通过语音、触摸、手势、按压等动作实现用户指令输入功能,输入接口通过将接收的模拟信号转换为数字信号,以及数字信号转换为相应指令信号,发送至显示设备200。
143.输出接口包括将接收的用户指令发送至显示设备200的接口。在一些实施例中,可以红外接口,也可以是射频接口。如:红外信号接口时,需要将用户输入指令按照红外控制协议转化为红外控制信号,经红外发送模块进行发送至显示设备200。再如:射频信号接口时,需将用户输入指令转化为数字信号,然后按照射频控制信号调制协议进行调制后,由射频发送端子发送至显示设备200。
144.在一些实施例中,控制设备100包括通信接口130和输入输出接口140中至少一者。控制设备100中配置通信接口130,如:wifi、蓝牙、nfc等模块,可将用户输入指令通过wifi协议、或蓝牙协议、或nfc协议编码,发送至显示设备200.
145.存储器190,用于在控制器的控制下存储驱动和控制控制设备200的各种运行程序、数据和应用。存储器190,可以存储用户输入的各类控制信号指令。
146.供电电源180,用于在控制器的控制下为控制设备100各元件提供运行电力支持。可以电池及相关控制电路。
147.在一些实施例中,系统可以包括内核(kernel)、命令解析器(shell)、文件系统和应用程序。内核、shell和文件系统一起组成了基本的操作系统结构,它们让用户可以管理文件、运行程序并使用系统。上电后,内核启动,激活内核空间,抽象硬件、初始化硬件参数等,运行并维护虚拟内存、调度器、信号及进程间通信(ipc)。内核启动后,再加载shell和用户应用程序。应用程序在启动后被编译成机器码,形成一个进程。
148.图4中示例性示出了根据一些实施例的显示设备200中软件配置示意图。参见图4,在一些实施例中,将系统分为四层,从上至下分别为应用程序(applications)层(简称“应用层”),应用程序框架(application framework)层(简称“框架层”),安卓运行时(android runtime)和系统库层(简称“系统运行库层”),以及内核层。
149.在一些实施例中,应用程序层中运行有至少一个应用程序,这些应用程序可以是操作系统自带的窗口(window)程序、系统设置程序、时钟程序、相机应用等;也可以是第三方开发者所开发的应用程序,比如嗨见程序、k歌程序、魔镜程序等。在具体实施时,应用程序层中的应用程序包不限于以上举例,实际还可以包括其它应用程序包,本技术实施例对
此不做限制。
150.框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层相当于一个处理中心,这个中心决定让应用层中的应用程序做出动作。应用程序通过api接口,可在执行中访问系统中的资源和取得系统的服务
151.如图4所示,本技术实施例中应用程序框架层包括管理器(managers),内容提供者(content provider)等,其中管理器包括以下模块中的至少一个:活动管理器(activity manager)用与和系统中正在运行的所有活动进行交互;位置管理器(location manager)用于给系统服务或应用提供了系统位置服务的访问;文件包管理器(package manager)用于检索当前安装在设备上的应用程序包相关的各种信息;通知管理器(notification manager)用于控制通知消息的显示和清除;窗口管理器(window manager)用于管理用户界面上的括图标、窗口、工具栏、壁纸和桌面部件。
152.在一些实施例中,活动管理器用于:管理各个应用程序的生命周期以及通常的导航回退功能,比如控制应用程序的退出(包括将显示窗口中当前显示的用户界面切换到系统桌面)、打开、后退(包括将显示窗口中当前显示的用户界面切换到当前显示的用户界面的上一级用户界面)等。
153.在一些实施例中,窗口管理器用于管理所有的窗口程序,比如获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕,控制显示窗口变化(例如将显示窗口缩小显示、抖动显示、扭曲变形显示等)等。
154.在一些实施例中,系统运行库层为上层即框架层提供支撑,当框架层被使用时,安卓操作系统会运行系统运行库层中包含的c/c++库以实现框架层要实现的功能。
155.在一些实施例中,内核层是硬件和软件之间的层。如图4所示,内核层至少包含以下驱动中的至少一种:音频驱动、显示驱动、蓝牙驱动、摄像头驱动、wifi驱动、usb驱动、hdmi驱动、传感器驱动(如指纹传感器,温度传感器,触摸传感器、压力传感器等)等。
156.在一些实施例中,内核层还包括用于进行电源管理的电源驱动模块。
157.在一些实施例中,图4中的软件架构对应的软件程序和/或模块存储在图2或图3所示的第一存储器或第二存储器中。
158.在一些实施例中,以魔镜应用(拍照应用)为例,当遥控接收装置接收到遥控器输入操作,相应的硬件中断被发给内核层。内核层将输入操作加工成原始输入事件(包括输入操作的值,输入操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,根据焦点当前的位置识别该输入事件所对应的控件以及以该输入操作是确认操作,该确认操作所对应的控件为魔镜应用图标的控件,魔镜应用调用应用框架层的接口,启动魔镜应用,进而通过调用内核层启动摄像头驱动,实现通过摄像头捕获静态图像或视频。
159.在一些实施例中,对于具备触控功能的显示设备,以分屏操作为例,显示设备接收用户作用于显示屏上的输入操作(如分屏操作),内核层可以根据输入操作产生相应的输入事件,并向应用程序框架层上报该事件。由应用程序框架层的活动管理器设置与该输入操作对应的窗口模式(如多窗口模式)以及窗口位置和大小等。应用程序框架层的窗口管理根据活动管理器的设置绘制窗口,然后将绘制的窗口数据发送给内核层的显示驱动,由显示
驱动在显示屏的不同显示区域显示与之对应的应用界面。
160.图5中示例性示出了根据一些实施例的显示设备200中应用程序的图标控件界面显示示意图。在一些实施例中,如图5中所示,应用程序层包含至少一个应用程序可以在显示器中显示对应的图标控件,如:直播电视应用程序图标控件、视频点播应用程序图标控件、媒体中心应用程序图标控件、应用程序中心图标控件、游戏应用图标控件等。
161.在一些实施例中,直播电视应用程序,可以通过不同的信号源提供直播电视。例如,直播电视应用程可以使用来自有线电视、无线广播、卫星服务或其他类型的直播电视服务的输入提供电视信号。以及,直播电视应用程序可在显示设备200上显示直播电视信号的视频。
162.在一些实施例中,视频点播应用程序,可以提供来自不同存储源的视频。不同于直播电视应用程序,视频点播提供来自某些存储源的视频显示。例如,视频点播可以来自云存储的服务器端、来自包含已存视频节目的本地硬盘储存器。
163.在一些实施例中,媒体中心应用程序,可以提供各种多媒体内容播放的应用程序。例如,媒体中心,可以为不同于直播电视或视频点播,用户可通过媒体中心应用程序访问各种图像或音频所提供服务。
164.在一些实施例中,应用程序中心,可以提供储存各种应用程序。应用程序可以是一种游戏、应用程序,或某些和计算机系统或其他设备相关但可以在智能电视中运行的其他应用程序。应用程序中心可从不同来源获得这些应用程序,将它们储存在本地储存器中,然后在显示设备200上可运行。
165.在一些实施例中,显示设备在进行音视频文件播放时,通常配置有应用级播放器,例如ijkplayer,exoplayer,adoplayer,pplivetvplayer等。在利用应用级播放器播放音视频文件时,通常经过解封装音视频文件,解码音频数据、视频数据和字幕数据,以及渲染后实现播放。
166.应用级别播放器在音频解码时通常采用软解码的方式,例如采用ffmpeg(第三方开源解封装解码程序)、audio extractor(android原生解封装程序)或者自身封装的解码器进行音频解码。由于应用级播放器播放的大多是网络片源,音频编码格式单一,因此,使用软解码对系统开支影响较小。
167.但是,随着网络播放多样化和显示设备底层芯片技术的发展,需要提供更好的视听效果,而经过软解码进行音频解码时会占用更多的cpu和内存,声道一般为2声道,采样率和比特率较低,使得解码后的音视频文件无法达到较高的视听效果。因此,需要应用播放器使用硬解码(mediacodec)来达到更好的视听效果。
168.在显示设备中的应用级播放器采用硬解码方式对音频数据进行解码,可以在解码端对dts dolby(杜比)音效做预处理,通过解码将上述音频数据(解码前2声道)解码成8声道或者6声道,达到增强音效的效果。并且,随着音视频技术发展,音频编码技术也会更加复杂,使用硬解码则可以有效降低系统开销,为向后兼容做准备。
169.为此,本发明实施例提供一种显示设备,包括控制器,控制器内配置有用于播放指定音视频文件的应用级播放器。该显示设备可实现基于ijkplayer的应用级播放器的音频解码流调用mediacodec(android原生解码器)硬解码功能,增加mediacodec端多声道输出支持,同时实现对现有芯片nova,mtk,hisi方案audio硬解码格式多样性兼容支持。
170.图6中示例性示出了根据一些实施例的应用级播放器的音频硬解码方法的流程图。本发明实施例提供的一种显示设备,在执行应用级播放器的音频硬解码方法时,其配置的应用级播放器被配置为执行下述步骤:
171.s1、获取音频硬解码参数和解码前音频数据,解码前音频数据是指对指定音视频文件进行解封装处理得到的音频数据,音频硬解码参数是指对解码前音频数据进行音频硬解码处理所需的参数。
172.显示设备在播放指定音视频文件时,需先启动应用级播放器,由应用级播放器通过setoption(播放器单独对上功能接口)接口设置对音视频文件中的音频数据进行音频硬解码处理所需的参数,即音频硬解码参数。
173.在设置音频硬解码参数时,可基于用户的选择来进行设置,例如,如果用户想要在播放指定音视频文件时达到最好的音效,可以选择杜比音效的选项,此时,可设定实现杜比音效的音频硬解码参数。
174.图7中示例性示出了根据一些实施例的应用级播放器的结构框图。参见图7,应用级播放器包括下载以及解封装模块、解码前数据队列、解码模块、解码后数据队列和渲染模块。
175.下载以及解封装模块用于下载指定音视频文件的片源,并对指定音视频文件进行解封装处理,得到音频数据、视频数据和字幕数据。解码前数据队列用于将音频数据存储在解码前音频数据队列(audio pkg queue)中,将视频数据存储在解码前视频数据队列(video pkg queue)中,将字幕数据存储在解码前字幕数据队列(subtitle pkg queue)中。解码模块用于对音频数据、视频数据和字幕数据进行硬解码(mediacodec)或软解码(avcodec)。解码后数据队列用于将解码后的音频数据放入解码后音频数据队列(asmq)中,将解码后的视频数据放入解码后视频数据队列(vpicq)中,将解码后的字幕数据放入解码后字幕数据队列(subpicq)中。渲染模块用于对解码后的视频数据、音频数据和字幕数据进行渲染,实现更高音效效果的指定音视频文件的播放。
176.在一些实施例中,在对音频数据进行硬解码处理时,应用级播放器获取经过解封装得到的解码前音频数据,并放入解码前音频数据队列中,以便后续由解码模块进行音频硬解码处理。
177.由于解码模块具有两种解码方式,因此,需要在应用级播放器获取到解码前音频数据之后,选择所采用的解码方式。
178.在一些实施例中,应用级播放器在执行获取解码前音频数据之后,被进一步配置为:基于音频硬解码参数,选择对应的对指定音视频文件进行解码的音频解码方式;如果选择的音频解码方式为音频硬解码方式,则对指定音视频文件进行音频硬解码处理。
179.由于音频硬解码参数可标识用户是否选择进行音效加强处理,如果用户在播放指定音视频文件时选择音效加强,如选择杜比音效,则可根据音频硬解码参数选择音频硬解码方式,以对指定音视频文件进行音频硬解码处理。
180.s2、基于音频硬解码参数,创建音频硬解码器。
181.应用级播放器在将解码前音频数据存储在解码前音频数据队列之后,即可由解码模块对解码前音频数据队列中存储的解码前音频数据进行音频硬解码处理。解码模块在进行音频硬解码处理时,需根据音频硬解码参数,创建音频硬解码器(android mediacodec)。
音频硬解码器采用异步解码方式,因此,需在音频硬解码器中创建硬解码输入线程和硬解码输出线程。
182.在一些实施例中,应用级播放器在执行基于音频硬解码参数,创建音频硬解码器,被进一步配置为执行下述步骤:
183.步骤21、创建音频硬解码器。
184.步骤22、基于音频硬解码参数,配置音频硬解码器。
185.步骤23、在配置有音频硬解码参数的音频硬解码器中,创建硬解码输入线程和硬解码输出线程。
186.在进行音频硬解码处理时,应用级播放器调用解码模块创建音频硬解码器,音频硬解码器用于对解码前音频数据进行音频硬解码处理。
187.为使经过音频硬解码处理后的音频数据能够具有较高的采样率、比特率,声道数增多等高音效所需的参数,需依据音频硬解码参数配置音频硬解码器。音频硬解码参数包括可实现高音效的采样率、比特率、声道数、音频格式等解码相关媒体参数。
188.同时,为实现异步解码方式,避免解码前后产生直接依赖关系,即若解码前出现异常导致无法得到解码后数据,出现卡死现象,影响正常解码处理过程。因此,在一些实施例中,在配置有音频硬解码参数的音频硬解码器中,创建硬解码输入线程和硬解码输出线程。
189.硬解码输入线程和硬解码输出线程并非直接连接的关系,而是相互独立的两个线程,硬解码输入线程将解码后的音频数据存储到音频硬解码器中,在需要输出音频数据时,硬解码输出线程在音频硬解码器中获取解码后的音频数据,再进行后续操作。采用异步解码方式,可避免因某个线程异常出现卡死的情况。
190.解码模块在创建音频硬解码器,以及,调用音频硬解码器中的硬解码输入线程和硬解码输出线程时,均需要解码模块与音频硬解码器实现通信。
191.图8中示例性示出了根据一些实施例的创建音频硬解码器的方法流程图。为此,在一些实施例中,参见图8,应用级播放器在执行创建音频硬解码器,被进一步配置为:
192.s211、获取音频硬解码器的运行环境参数,运行环境参数是指调用音频硬解码器时所需的参数。
193.s212、对运行环境参数进行编译,生成包括函数名称的跨语言调用文件;
194.s213、获取音频硬解码参数对应的函数名称,以及,将音频硬解码参数对应的函数名称和跨语言调用文件中的函数名称进行匹配;
195.s214、在函数名称匹配一致时,创建音频硬解码器。
196.若要实现应用级播放器中的解码模块调用音频硬解码器,需要解码模块中具有可调用音频硬解码器相关参数,即解码模块中需具有音频硬解码器的运行环境参数。
197.应用级播放器对可实现调用音频硬解码器的运行环境参数进行编译,生成跨语言调用文件(jni文件)。跨语言调用文件中包括多个运行环境参数,同一类的运行环境参数可作为一个java类名,即函数名称,因此,跨语言调用文件中包括多个函数名称,每个函数名称对应可实现调用音频硬解码器的至少一个运行环境参数。跨语言调用文件中的函数名称包括但不限于:设置音频媒体格式方法、启动解码方法、获取输入缓冲索引方法、获取输出数据方法和停止解码方法等。
198.应用级播放器在设置对音视频文件中的音频数据进行音频硬解码处理所需的参
数(音频硬解码参数)后,应用级播放器中的解码模块中存储有多个函数名称,音频硬解码参数对应的函数名称包括但不限于:设置音频媒体格式、启动解码、获取输入缓冲索引、获取输出数据和停止解码等。
199.因此,将音频硬解码参数对应的函数名称和跨语言调用文件中的函数名称进行匹配,即可确定应用级播放器中的解码模块是否可创建音频硬解码器。
200.若音频硬解码参数对应的函数名称和跨语言调用文件中的函数名称匹配一致,则应用级播放器中的解码模块可通过jni层创建音频硬解码器,实现应用级播放器中的解码模块调用音频硬解码器。
201.s3、调用所述音频硬解码器对所述解码前音频数据进行音频硬解码处理,得到解码后音频数据。
202.在完成包括硬解码输入线程和硬解码输出线程的音频硬解码器的创建后,即可对指定音视频文件的解码前音频数据进行音频硬解码处理。由于音频硬解码(mediacodec)处理后得到的音频数据为pbuffer结构体(一种解码后音频数据的存储单位)的形式,因此,经过硬解码输入线程和硬解码输出线程后得到的是采用pbuffer结构体存储形式的解码后音频数据。
203.在一些实施例中,应用级播放器在执行调用音频硬解码器对解码前音频数据进行音频硬解码处理,得到解码后音频数据,被进一步配置为:
204.步骤301、调用音频硬解码器中的硬解码输入线程对解码前音频数据进行音频硬解码处理,得到的解码后音频数据;
205.步骤302、将解码后音频数据写入音频硬解码器中的硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据,pbuffer结构体存储形式是指音频硬解码器采用的存储形式。
206.由于音频解码器中包括硬解码输入线程和硬解码输出线程,因此,调用硬解码输入线程对解码器音频数据进行音频硬解码,得到解码后音频数据。再将解码后音频数据存储至硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据。
207.图9中示例性示出了根据一些实施例的硬解码输入线程的数据流图。在一些实施例中,参见图9,应用级播放器在执行步骤301,即调用音频硬解码器中的硬解码输入线程对解码前音频数据进行音频硬解码处理,被进一步配置为执行下述步骤:
208.步骤311、调用音频硬解码器中的硬解码输入线程,获取解码前音频数据和输入缓冲索引。
209.步骤312、将解码前音频数据写入输入缓冲索引中进行音频硬解码处理,得到解码后音频数据。
210.在进行音频硬解码处理过程中,应用级播放器启动音频硬解码器,即调用硬解码输入线程进行硬解码处理。硬解码输入线程中设有退出标志位,若识别到退出标志位,则退出硬解码输入线程。因此,在执行硬解码输入线程时,实时识别硬解码输入线程中是否存在退出标志位,若未识别到退出标志位,则可执行硬解码过程,即获取硬解码处理所需的解码前音频数据和输入缓冲索引。
211.由于在播放指定音视频文件时采用一边解码一边播放的形式,在播放时,用户可能会对指定音视频文件进行操作,例如,快进、快退等。在用户操作时,会产生冗余数据,为
保证硬解码处理的效果,需要在获取输入缓冲索引之前,对冗余数据进行处理。
212.为此,在一些实施例中,应用级播放器在执行获取输入缓冲索引之前,被进一步配置为执行下述步骤:
213.步骤3111、基于在播放指定音视频文件时的用户操作,判断是否需要清空音频数据。
214.步骤3112、如果需要清空音频数据,则清空音频硬解码器中存储的音频数据。
215.步骤3113、如果不需要清空音频数据,则执行获取输入缓冲索引的步骤。
216.在一些实施例中,对冗余数据进行处理的方式可为清空音频数据。因此,应用级播放器若识别到用户产生相应操作,例如,快退、快进等,则可判断出需要执行清空音频数据,此时,需清空音频硬解码器中存储的音频数据。音频解码器中存储的音频数据为前一次进行硬解码处理得到的音频数据。
217.硬解码输入线程是循环对解码前音频数据进行硬解码处理的过程,每获取到一帧解码前音频数据,即由输入缓冲索引进行一次硬解码处理,并将解码后音频数据存储到硬解码输出线程中。
218.如果用户未对指定音视频文件的播放进行操作,则不需要清空音频数据,而后即可获取输入缓冲索引,以进行硬解码。即将解码前音频数据写入输入缓冲索引中进行音频硬解码处理,得到解码后音频数据。
219.应用级播放器中的解码模块(sdl_amediacodec)在将解码前音频数据写入输入缓冲索引中时,需建立解码模块与硬解码输入线程的通信。
220.由于应用级播放器中的解码模块在调用音频硬解码器时,需要通过jni(java native interface:java跨语言中间模块)层来实现,即应用级播放器中的解码模块在将解码前音频数据写入输入缓冲索引中时,需要利用jni层进行传输。
221.为此,在一些实施例中,应用级播放器在执行将解码前音频数据写入输入缓冲索引中进行音频硬解码处理,被进一步配置为执行下述步骤:
222.步骤3121、获取解码前音频数据对应的函数名称和包括函数名称的跨语言调用文件,跨语言调用文件是指基于音频硬解码器的运行环境参数生成的文件。
223.步骤3122、将解码前音频数据对应的函数名称和跨语言调用文件中的函数名称进行匹配。
224.步骤3123、在函数名称匹配一致时,将解码前音频数据写入输入缓冲索引中,进行音频硬解码处理。
225.若要实现应用级播放器中的解码模块调用音频硬解码器中的硬解码输入线程,需要先获取到跨语言调用文件。跨语言调用文件是在应用级播放器创建音频硬解码器时基于调用音频硬解码器所需参数生成的文件,具体生成过程可参照前述步骤s211至s212的实现过程,此处不再赘述。该文件生成后,后续再调用音频硬解码器时,可直接获取使用。
226.跨语言调用文件中包括多个运行环境参数对应的函数名称,应用级播放器中的解码模块中存储有多个解码前音频数据对应的函数名称,解码前音频数据对应的函数名称包括但不限于:设置音频媒体格式、启动解码、获取输入缓冲索引、获取输出数据和停止解码等。
227.因此,将解码前音频数据对应的函数名称和跨语言调用文件中的函数名称进行匹
配,即可确定应用级播放器中的解码模块是否可调用音频硬解码器中的硬解码输入线程。
228.若解码前音频数据对应的函数名称和跨语言调用文件中的函数名称匹配一致,则可通过jni层建立应用级播放器中的解码模块与音频硬解码器的通信,实现应用级播放器中的解码模块调用硬解码输入线程。因此,在解码模块与音频硬解码器通信后,应用级播放器中的解码模块即可将解码前音频数据写入硬解码输入线程中,具体写入输入缓冲索引,进行硬解码处理,得到解码后音频数据。
229.将解码后音频数据存储至硬解码输出线程中,以便后续进行音频输出。音频硬解码器采用pbuffer结构体的形式存储解码后音频数据,因此,将解码后音频数据存储至硬解码输出线程后,即可得到采用pbuffer结构体存储形式的解码后音频数据。
230.图10中示例性示出了根据一些实施例的硬解码输出线程的执行方法流程图;图11中示例性示出了根据一些实施例的硬解码输出线程的数据流图。在一些实施例中,参见图10和图11,应用级播放器在执行步骤302,即将解码后音频数据写入音频硬解码器中的硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据,被进一步配置为:
231.s321、调用音频硬解码器中的硬解码输出线程,从音频硬解码器中获取输出缓冲索引。
232.s322、将解码后音频数据写入输出缓冲索引中,得到采用pbuffer结构体存储形式的解码后音频数据。
233.在进行音频硬解码处理过程中,音频硬解码器中的硬解码输入线程每完成一帧解码前音频数据的硬解码后,即将得到的解码后音频数据存储到音频硬解码器中。在需要输出音频数据进行渲染处理以实现指定音视频文件的播放时,应用级播放器调用硬解码输出线程获取解码后音频数据。
234.硬解码输出线程中设有退出标志位,若识别到退出标志位,则退出硬解码输出线程。因此,在执行硬解码输出线程时,实时识别硬解码输出线程中是否存在退出标志位,若未识别到退出标志位,则可执行获取解码后音频数据的过程。
235.音频硬解码器在存储输入缓冲索引写入的解码后音频数据时,是将解码后音频数据存储在输出缓冲索引中。为此,启动硬解码输出线程,从音频硬解码器中获取输出缓冲索引,将解码后音频数据存储至输出缓冲索引内。由于音频硬解码器采用pbuffer结构体的形式存储音频数据,因此,将解码后音频数据存储至输出缓冲索引后,即可得到采用pbuffer结构体存储形式的解码后音频数据。
236.s4、将解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,avframe结构体存储形式是指应用级播放器采用的存储形式。
237.由于应用级播放器通常采用ffmpeg作为解封装工具,其解封装后的音频存储数据结构和ffmpeg自身软解码模块使用的avframe(解码后音频存储单位)高度契合,因此,应用级播放器需将解码后的音频数据统一成avframe格式,即将采用pbuffer结构体存储形式的解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,以保证解码后音频数据的输出。
238.图12中示例性示出了根据一些实施例的转换avframe结构体的方法流程图;图13中示例性示出了根据一些实施例的转换avframe结构体的数据流图。参见图12和图13,在一些实施例中,应用级播放器在执行将解码后音频数据转换为采用avframe结构体存储形式
的解码后音频数据,被进一步配置为执行下述步骤:
239.s41、获取音频数据输出格式信息和采用pbuffer结构体存储形式的解码后音频数据,音频数据输出格式信息是指采用avframe结构体存储形式输出所需的信息。
240.s42、从采用pbuffer结构体存储形式的解码后音频数据中获取音频数据偏移量。
241.s43、基于音频数据偏移量和解码后音频数据,得到采用pbuffer结构体存储形式的真实解码后音频数据。
242.s44、基于采用pbuffer结构体存储形式的真实解码后音频数据,创建avframe结构体。
243.s45、将音频数据输出格式信息写入avframe结构体,得到采用avframe结构体存储形式的解码后音频数据。
244.在经过音频硬解码器处理后,得到的解码后音频数据通常为采用pbuffer结构体存储形式。在将采用pbuffer结构体存储形式的解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据时,需先获取转换结构体所需的音频数据输出格式信息,音频数据输出格式信息包括采用avframe结构体存储形式输出所需的信息。同时,从输出缓冲索引中获取采用pbuffer结构体存储形式的解码后音频数据。
245.应用级播放器中的解码模块(sdl_amediacodec)在从硬解码输出线程中获取硬解码处理得到的解码后音频数据时,需建立解码模块与硬解码输出线程的通信。
246.应用级播放器中的解码模块在调用音频硬解码器时,需要通过jni(java native interface:java跨语言中间模块)层来实现,即应用级播放器中的解码模块在从硬解码输出线程(输出缓冲索引)中获取硬解码处理得到的解码后音频数据时,需要利用jni层进行传输。
247.在一些实施例中,应用级播放器在执行获取采用pbuffer结构体存储形式的解码后音频数据,被进一步配置为执行下述步骤:
248.步骤411、获取解码后音频数据对应的函数名称和包括函数名称的跨语言调用文件,跨语言调用文件是指基于音频硬解码器的运行环境参数生成的文件。
249.步骤412、将解码后音频数据对应的函数名称和跨语言调用文件中的函数名称进行匹配。
250.步骤413、在函数名称匹配一致时,从硬解码输出线程的输出缓冲索引中获取采用pbuffer结构体存储形式的解码后音频数据。
251.若要实现应用级播放器中的解码模块调用音频硬解码器中的硬解码输出线程的输出缓冲索引,需要先获取到跨语言调用文件。跨语言调用文件是在应用级播放器创建音频硬解码器时基于调用音频硬解码器所需参数生成的文件,具体生成过程可参照前述步骤s211至s212的实现过程,此处不再赘述。该文件生成后,后续再调用音频硬解码器时,可直接获取使用。
252.在得到解码后音频数据后,应用级播放器中的解码模块中存储有多个函数名称,解码后音频数据对应的函数名称包括但不限于:设置音频媒体格式、启动解码、获取输入缓冲索引、获取输出数据和停止解码等。跨语言调用文件中包括多个运行环境参数对应的函数名称,因此,将解码后音频数据对应的函数名称和跨语言调用文件中的函数名称进行匹配,即可确定应用级播放器中的解码模块是否可调用音频硬解码器,以从硬解码输出线程
中的输出缓冲索引中获取到解码后音频数据。
253.若解码后音频数据对应的函数名称和跨语言调用文件中的函数名称匹配一致,则可通过jni层建立应用级播放器中的解码模块与硬解码输出线程的通信,实现应用级播放器中的解码模块调用硬解码输出线程。因此,在解码模块与硬解码输出线程通信后,应用级播放器中的解码模块即可从硬解码输出线程的输出缓冲索引中获取到采用pbuffer结构体存储形式的解码后音频数据。
254.由于音频硬解码器经过硬解码处理得到的解码后音频数据可能并非全部为有效数据,因此,需要从解码后音频数据中获取到音频数据偏移量,基于音频数据偏移量来确定可进行输出的采用pbuffer结构体存储形式的真实解码后音频数据。
255.例如,如果pbuffer结构体内存储的解码后音频数据的音频数据偏移量为10字节,那么从解码后音频数据的开始第一个字节开始向后移动10个字节,即删除前10个字节的数据,从第11个字节开始及以后的字节的数据则为采用pbuffer结构体存储形式的真实解码后音频数据。
256.根据采用pbuffer结构体存储形式的真实解码后音频数据,创建ffmpeg解封装所使用的avframe结构体,实现pbuffer结构体向avframe结构体的转换。
257.而后,将音频数据输出格式信息写入avframe结构体,得到采用avframe结构体存储形式的解码后音频数据。音频数据输出格式信息包括时间戳、声道数、采样数、采样率等,为将音频数据解码成多声道,基于音频输出所需的声道数,将每一声道对应的音频数据输出格式信息依次写入avframe结构体。
258.在完成规定的声道数的音频数据输出格式信息的写入后,即可写入数据的声道数为0时,可得到具有多声道、高采样数、高采样率的采用avframe结构体存储形式的解码后音频数据,进而写入解码后音频数据队列中。
259.s5、将采用avframe结构体存储形式的解码后音频数据写入音频解码后数据队列,以播放指定音视频文件。
260.在得到应用级播放器输出所需的采用avframe结构体存储形式的解码后音频数据后,为便于播放指定音视频文件,将采用avframe结构体存储形式的解码后音频数据写入解码后数据队列,具体写入音频解码后数据队列。
261.在播放指定音视频文件时,由渲染模块对解码后数据队列中的解码后音频数据队列中的解码后音频数据、解码后视频数据队列中的解码后视频数据和解码后字幕数据队列中的解码后字幕数据进行渲染,实现指定音视频文件的播放。
262.可见,本发明实施例提供的显示设备,可实现应用级播放器调用硬解码功能,采用硬解码方式对音频数据进行解码,可以在解码端对dts dolby(杜比)音效做预处理,通过解码将音频数据(解码前2声道)解码成8声道或者6声道,达到增强音效的效果。
263.由于显示设备中可配置不同的应用芯片,例如nova,mtk,hisi等。不同应用芯片的omx(openmax,android底层对接解码模块)层的音频格式不统一,为保证应用级播放器在采用硬解码方式对音频数据进行解码的方法能够应用在不同应用芯片的omx层,需要应用级播放器在采用硬解码方式具有兼容特性。
264.图14中示例性示出了根据一些实施例的多芯片omx层解码格式兼容的方法流程图。参见图14,本发明实施例提供的显示设备,应用级播放器在执行前述所述的应用级播放
器的音频硬解码方法的基础上,应用级播放器被进一步配置为执行下述步骤:
265.s61、调用标准解码接口,获取包括一一对应的解码格式和底层解码名称的对照表,每个底层解码名称对应一种应用芯片。
266.s62、基于对照表和音频硬解码参数对应的解码格式,确定第一底层解码名称。
267.s63、从配置的静态文件中获得第二底层解码名称,对第一底层解码名称和第二底层解码名称进行打分。
268.s64、将得分最高的底层解码名称确定为目标底层解码名称,以及,与目标底层解码名称对应的应用芯片建立连接。
269.为实现多芯片的omx层的解码格式兼容,应用级播放器调用标准解码接口(mediacodeclist.getcodecinfo),获取所有支持的解码格式和底层解码名称(omxtype),每个解码格式均对应一个底层解码名称,形成对照表。每个底层解码名称对应一种应用芯片。
270.获取音频硬解码参数对应的解码格式,通过模糊匹配方法,在对照表中查找与输入格式对应的omxtype,即在对照表中查找与音频硬解码参数对应的解码格式对应的第一底层解码名称。
271.同时,读取配置的静态文件,静态文件中包含现有各应用芯片解码格式和对应的omxtype,由此可确定出与音频硬解码参数对应的解码格式对应的第二底层解码名称。
272.分别对,对第一底层解码名称和第二底层解码名称进行打分,最终拿到得分最高的底层解码名称omxtype作为目标底层解码名称,此时,应用级播放器可与目标底层解码名称对应的应用芯片建立连接,实现多芯片底层差异兼容。
273.可见,本发明实施例提供的显示设备,可实现基于ijkplayer的应用级播放器的音频解码流调用mediacodec(android原生解码器)硬解码功能,增加mediacodec端多声道输出支持,同时实现对现有芯片nova,mtk,hisi提供音频硬解码格式多样性兼容支持。
274.由以上技术方案可知,本发明实施例提供的一种应用级播放器的音频硬解码方法及显示设备,其配置的应用级播放器用于获取音频硬解码参数和解码前音频数据,基于音频硬解码参数,创建包括硬解码输入线程和硬解码输出线程的音频硬解码器;调用硬解码输入线程对解码前音频数据进行音频硬解码处理,将得到的解码后音频数据写入所述硬解码输出线程,得到采用pbuffer结构体存储形式的解码后音频数据,将采用pbuffer结构体存储形式的后音频数据转换为采用avframe结构体存储形式的解码后音频数据,并写入音频解码后数据队列,以播放指定音视频文件。可见,本发明实施例提供的方法及显示设备,可使应用级播放器采用硬解码方式对音频数据进行解码,可以对音效做预处理,通过解码将音频数据解码成多声道,达到增强音效的效果。
275.图6中示例性示出了根据一些实施例的应用级播放器的音频硬解码方法的流程图。参见图6,本技术还提供了一种应用级播放器的音频硬解码方法,由前述实施例提供的显示设备中的应用级播放器执行,所述方法包括:
276.s1、获取音频硬解码参数和解码前音频数据,所述解码前音频数据是指对指定音视频文件进行解封装处理得到的音频数据,所述音频硬解码参数是指对所述解码前音频数据进行音频硬解码处理所需的参数;
277.s2、基于所述音频硬解码参数,创建音频硬解码器;
278.s3、调用所述音频硬解码器对所述解码前音频数据进行音频硬解码处理,得到解码后音频数据;
279.s4、将所述解码后音频数据转换为采用avframe结构体存储形式的解码后音频数据,所述avframe结构体存储形式是指应用级播放器采用的存储形式;
280.s5、将所述采用avframe结构体存储形式的解码后音频数据写入音频解码后数据队列,以播放所述指定音视频文件。
281.具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的应用级播放器的音频硬解码方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:rom)或随机存储记忆体(英文:random access memory,简称:ram)等。
282.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
283.本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于应用级播放器的音频硬解码方法实施例而言,由于其基本相似于显示设备实施例,所以描述的比较简单,相关之处参见显示设备实施例中的说明即可。
284.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
285.为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1