一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

媒体插件加载方法、电子设备及计算机可读存储介质与流程

2022-03-01 21:24:16 来源:中国专利 TAG:


1.本技术涉及多媒体领域,尤其涉及一种媒体插件加载方法、电子设备及计算机可读存储介质。


背景技术:

2.gstreamer框架是一种在gnome桌面环境下用来构建流媒体应用的多媒体框架。gstreamer框架可以被划分成两个部分:gstreamer核心框架和gstreamer插件。gstreamer核心框架是基础,gstreamer插件是基于gstreamer核心框架实现的具体功能,不同设备可以根据设备形态选择打包不同的插件构建特定的媒体服务能力。gstreamer核心框架根据输入的媒体数据格式,查询插件注册表信息,创建能够处理这些媒体数据的插件对象,组合成一条媒体播放管道(pipeline管道),每个插件负责媒体数据播放的其中一个环节,整个媒体播放管道形成了媒体播放的功能。
3.如图1所示,gstreamer框架在第一次启动进行初始化时,会依次遍历并加载所有的gstreamer插件,从中读取每个gstreamer插件的描述信息,并记录到注册表缓存文件中。由于需要dlopen所有gstreamer插件,导致在执行媒体播放任务时,不需要真正使用的gstreamer插件亦被加载到内存中,造成内存资源浪费。如图2所示,gstreamer框架为了完成一项媒体播放任务,基于加载到内存中的gstreamer插件创建插件对象,形成媒体播放管道。当媒体播放任务完成时,无法自动卸载gstreamer插件,导致媒体服务进程的常驻内存过大,造成内存资源紧缺。


技术实现要素:

4.有鉴于此,有必要提供一种媒体插件加载方法,其可克服上述问题,识别不同的媒体播放任务所需要的媒体插件,以实现合理加载媒体插件。
5.本技术实施例第一方面公开了一种媒体插件加载方法,应用于多媒体播放组件。多媒体播放组件包括多个媒体插件及与每个媒体插件对应的插件描述文件,插件描述文件记载对应的媒体插件的描述信息。所述方法包括:响应于获取到的对媒体数据的处理需求,读取每个插件描述文件并得到相应的媒体插件的描述信息;基于每个媒体插件的描述信息及媒体数据的处理需求,从多个媒体插件中确定需加载的目标媒体插件;加载目标媒体插件至指定存储区,并基于加载的目标媒体插件创建插件对象;基于创建的插件对象构建媒体播放管道,并利用媒体播放管道对媒体数据进行处理。
6.通过采用该技术方案,可实现合理加载媒体插件,对于不同的媒体播放任务,仅加载所需要的媒体插件,使得媒体服务占用内存最小化。
7.在一种可能的实现方式中,基于每个媒体插件的描述信息及媒体数据的处理需求,从多个媒体插件中确定需加载的目标媒体插件,包括:基于每个媒体插件的描述信息及媒体数据的处理需求,判断多媒体播放组件是否具备处理所述媒体数据的能力;若多媒体播放组件具备处理媒体数据的能力,从多个媒体插件中确定需加载的目标媒体插件;或若
多媒体播放组件不具备处理媒体数据的能力,返回插件加载异常的提示信息。通过采用该技术方案,可以在确定媒体播放任务所需要的媒体插件前,先判断多媒体播放组件是否具备执行该媒体播放任务的能力。
8.在一种可能的实现方式中,所述多个媒体插件预先存储在不同于指定存储区的第一存储区,所述加载目标媒体插件至指定存储区包括:从第一存储区读取所述目标媒体插件并将目标媒体插件加载至指定存储区。通过采用该技术方案,可以实现仅将媒体播放任务所需要的媒体插件加载至指定存储区。
9.在一种可能的实现方式中,第一存储区为硬盘的存储区,指定存储区为内存的存储区。通过采用该技术方案,可以实现仅将媒体播放任务所需要的媒体插件加载至内存。
10.在一种可能的实现方式中,每个媒体插件对应设置有引用计数,该引用计数具有初始值,所述加载目标媒体插件至指定存储区包括:加载目标媒体插件至指定存储区,并将目标媒体插件的引用计数增加预设值。通过采用该技术方案,可以实现对加载至指定存储区的媒体插件进行管理。
11.在一种可能的实现方式中,所述方法还包括:若媒体播放管道被销毁及媒体播放管道所包含的插件对象被释放,将释放的插件对象所对应的目标媒体插件的引用计数减少预设值。通过采用该技术方案,可以实现对加载至指定存储区的媒体插件进行管理。
12.在一种可能的实现方式中,所述方法还包括:判断目标媒体插件的引用计数是否等于初始值;若目标媒体插件的引用计数等于初始值,将目标媒体插件从指定存储区卸载。通过采用该技术方案,可以实现对加载至指定存储区的媒体插件进行管理,将指定存储区中引用计数等于初始值的媒体插件卸载,保持媒体服务内存占用最小化。
13.在一种可能的实现方式中,所述方法还包括:若媒体数据被处理完成或媒体数据被停止处理,将媒体播放管道进行销毁。通过采用该技术方案,可以实现对媒体播放管道进行管理。
14.在一种可能的实现方式中,插件描述文件还记载有插件优先级信息,所述基于每个媒体插件的描述信息及媒体数据的处理需求,从多个媒体插件中确定需加载的目标媒体插件,包括:基于每个媒体插件的描述信息与插件优先级信息,以及媒体数据的处理需求,确定多个媒体插件中需加载的目标媒体插件。通过采用该技术方案,可以实现根据媒体插件的描述信息与优先级来确定媒体播放任务所需要的媒体插件。
15.在一种可能的实现方式中,多媒体播放组件包括多个具有相同数据处理能力的媒体插件,多个具有相同数据处理能力的媒体插件对应的插件描述文件还记载有插件优先级信息,媒体数据的处理需求包括多个数据处理子需求,所述基于每个媒体插件的描述信息及媒体数据的处理需求,从多个媒体插件中确定需加载的目标媒体插件,包括:基于每个媒体插件的描述信息确定与每个数据处理子需求匹配的媒体插件;若存在两个或两个以上的具有相同数据处理能力的媒体插件对应同一数据处理子需求,根据插件优先级信息从该两个或两个以上的媒体插件中选择优先级最高的媒体插件作为需加载的目标媒体插件。通过采用该技术方案,当存在多个功能相同的媒体插件时,可以根据插件优先级来确定媒体播放任务所需要的媒体插件。
16.在一种可能的实现方式中,插件优先级信息基于媒体插件的功耗、占用存储空间、数据处理能力、数据处理效率中的至少一个进行设定。通过采用该技术方案,可以根据媒体
插件的功耗、占用存储空间、数据处理能力、或数据处理效率来确定其优先级。
17.在一种可能的实现方式中,多媒体播放组件还与指定服务器进行通信,所述方法还包括:判断指定服务器上是否存在可更新的媒体插件与插件描述文件;若指定服务器上存在可更新的媒体插件与插件描述文件,从指定服务器下载更新版媒体插件与更新版插件描述文件;利用下载的更新版媒体插件与更新版插件描述文件更新多媒体播放组件。通过采用该技术方案,使得多媒体播放组件具备自动更新功能。
18.在一种可能的实现方式中,媒体插件与插件描述文件均包括属性信息,所述利用下载的更新版媒体插件与更新版插件描述文件更新多媒体播放组件,包括:判断下载的更新版媒体插件的属性信息与更新版插件描述文件的属性信息是否匹配;若更新版媒体插件的属性信息与更新版插件描述文件的属性信息匹配,利用下载的更新版媒体插件与更新版插件描述文件更新所述多媒体播放组件;或若更新版媒体插件的属性信息与更新版插件描述文件的属性信息不匹配,放弃对多媒体播放组件进行更新。通过采用该技术方案,在对多媒体播放组件进行插件更新前,增加属性信息验证步骤,避免更新版媒体插件与更新版插件描述文件不匹配。
19.在一种可能的实现方式中,属性信息为版本号,所述判断下载的更新版媒体插件的属性信息与更新版插件描述文件的属性信息是否匹配,包括:判断下载的更新版媒体插件的版本号与更新版插件描述文件的版本号是否相同。通过采用该技术方案,通过比对更新版媒体插件的版本号与更新版插件描述文件的版本号,实现判断更新版媒体插件与更新版插件描述文件是否匹配。
20.在一种可能的实现方式中,利用下载的更新版媒体插件与更新版插件描述文件更新多媒体播放组件,包括:利用下载的更新版媒体插件与更新版插件描述文件对多媒体播放组件中的媒体插件与插件描述文件进行替换。通过采用该技术方案,使得多媒体播放组件可进行媒体插件更新。
21.在一种可能的实现方式中,插件描述文件为xml文件或json文件。通过采用该技术方案,可以实现根据读取插件描述文件,得到媒体插件的描述信息。
22.在一种可能的实现方式中,媒体插件的描述信息包括插件标识信息、插件的功能描述信息、插件的存储路径信息、插件所支持的媒体输入格式信息及插件处理完的媒体输出格式信息。通过采用该技术方案,可以实现根据媒体插件的描述信息确定媒体播放任务所需要的媒体插件。
23.第二方面,本技术实施例提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面所述的媒体插件加载方法。
24.第三方面,本技术实施例提供一种电子设备,所述电子设备中至少安装代理服务进程,所述电子设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述电子设备执行如第一方面所述的媒体插件加载方法。
25.第四方面,本技术实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面所述的媒体插件加载方法。
26.第五方面,本技术实施例提供一种装置,该装置具有实现上述第一方面所提供的方法中第一电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
27.可以理解地,上述提供的第二方面所述的计算机可读存储介质,第三方面所述的电子设备,第四方面所述的计算机程序产品,第五方面所述的装置均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
28.图1为现有技术中的gstreamer框架获取每个gstreamer插件的描述信息的流程示意图;
29.图2为现有技术中的gstreamer框架执行媒体播放任务的流程示意图;
30.图3a为本技术一实施例提供的多媒体播放组件的应用场景示意图;
31.图3b为本技术另一实施例提供的多媒体播放组件的应用场景示意图;
32.图4为本技术一实施例提供的多媒体播放组件的软件架构的组成示意图;
33.图5为本技术一实施例提供的插件加载方法的流程示意图;
34.图6为本技术另一实施例提供的多媒体播放组件的软件架构的组成示意图;
35.图7为本技术另一实施例提供的插件加载方法的流程示意图;
36.图8为本技术实施例提供的一种可能的电子设备的结构示意图。
具体实施方式
37.需要说明的是,本技术中“至少一个”是指一个或者多个,“多个”是指两个或多于两个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。本技术的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不是用于描述特定的顺序或先后次序。
38.为了便于理解,示例性的给出了部分与本技术实施例相关概念的说明以供参考。
39.下面结合图3a-3b示例性的介绍本发明实施例提供的多媒体播放组件的应用场景图。
40.多媒体播放组件100可以安装至电子设备200中,可以根据电子设备200需要处理的媒体数据为电子设备200构建匹配的媒体播放管道,进而实现媒体播放功能。比如,电子设备200需播放mp4格式的媒体文件,多媒体播放组件100可以在电子设备200中构建用于处理mp4格式的媒体数据的媒体播放管道,进而实现mp4格式的媒体播放功能。再比如,电子设备200需播放avi格式的媒体文件,多媒体播放组件100可以在电子设备200中构建用于处理avi格式的媒体数据的媒体播放管道,进而实现avi格式的媒体播放功能。
41.在一些实施例中,电子设备200可以是第一类型设备,也可以是第二类型设备。第一类型设备可以是指内存充裕、存储空间充裕的电子设备。比如,第一类型设备可以包括手机、液晶电视、车机、平板电脑、个人电脑等。第二类型设备可以是指内存少、存储空间少的电子设备。比如,第二类型设备可以包括低端智能手表、无线耳机、智能眼镜等。
42.如图3a所示,多媒体播放组件100可安装至第一类型设备中,例如手机。
43.如图3b所示,多媒体播放组件100也可安装至第二类型设备中,例如智能手表。
44.下面结合图4示例性的介绍本发明实施例提供的多媒体播放组件的架构示意图。
45.多媒体播放组件100包括gstreammer核心框架101、多个媒体插件及多个插件描述文件。可选地,每个插件描述文件与每个媒体插件一一对应。比如,多媒体播放组件100包括m个媒体插件102_1~102_m及m个插件描述文件103_1~103_m,媒体插件102_1与插件描述文件103_1对应,媒体插件102_m-1与插件描述文件103_m-1对应,媒体插件102_m与插件描述文件103_m对应。gstreammer核心框架101用于负责m个媒体插件102_1~102_m的加载与管理。每个插件描述文件103_1~103_m记载有与其对应的媒体插件102_1~102_m的描述信息。
46.在一些实施例中,插件描述文件103_1~103_m可以是xml文件或json文件。每个插件描述文件103_1~103_m记载的媒体插件的描述信息可以包括以下多种信息的组合:插件标识信息、插件的功能描述信息、插件的存储路径信息、插件所支持的媒体输入格式信息、插件处理完的媒体输出格式信息。插件标识信息可以记载有媒体插件的名称,插件的功能描述信息可以记载有媒体插件的功能,插件的存储路径信息可以记载有媒体插件的存储路径,插件所支持的媒体输入格式信息可以记载有媒体插件所能处理的媒体数据的格式,插件处理后的媒体输出格式信息可以记载有媒体插件对媒体数据进行处理后的输出格式。
47.比如,媒体插件102_1为avdec_h264视频解码插件,插件描述文件103_1记载的描述信息包括:
48.插件标识信息:avdec_h264;
49.插件的功能描述信息:libav h264 decoder;
50.插件的存储路径信息:/home/m6547/usr_tmp/lib/gstreamer-1.0/libgstlibav.so;
51.插件所支持的媒体输入格式信息:video/x-h264;
52.插件处理完的媒体输出格式信息:video/x-raw,format:{rgb,bgr,gray8,rgb8p,argb,rgba,abgr,bgra,gray16_be,gray16_le}。
53.对应媒体插件102_1的插件描述文件103_1的代码信息如下所示:
[0054][0055]
在一些实施例中,可选地,多个媒体插件102_1~102_m具有不同的功能,媒体插件102_1~102_m之间的耦合程度优选较低,便于媒体插件102_1~102_m的选择与加载。多个媒体插件102_1~102_m也可以包括几个具有相同功能的媒体插件。比如,多个媒体插件102_1~102_m-2的功能均不相同,媒体插件102_1与媒体插件102_m-1的功能相同,媒体插件102_2与媒体插件102_m的功能相同。
[0056]
例如,媒体插件102_1用于负责各种协议的处理(file协议,http协议,rtsp协议等),媒体插件102_2用于负责数据源的处理(alsa,v4l2,tcp/udp等),媒体插件102_3用于负责媒体容器的处理(avi,mp4,ogg等),媒体插件102_4用于负责媒体的编解码(mp3,vorbis等),媒体插件102_5用于负责媒体流的处理(converters,mixers,effects等),媒体插件102_6用于负责媒体流输出到指定设备或目的地(alsa,xvideo,tcp/udp等)。
[0057]
在一些实施例中,当多个媒体插件102_1~102_m包括几个具有相同功能的媒体插件时,可以为具有相同功能的媒体插件定义优先级,其他的媒体插件可以不定义优先级,进而可以根据媒体插件的优先级来选择最优的媒体插件。比如,媒体插件102_1与媒体插件102_m-1的功能相同,预先为媒体插件102_1定义第一优先级,为媒体插件102_m-1定义第二优先级,第二优先级小于第一优先级,进而在确定媒体插件102_1、媒体插件102_m-1与一媒体数据的处理需求匹配时,会最终选定媒体插件102_1。
[0058]
在一些实施例中,每个插件描述文件103_1~103_m记载的媒体插件的描述信息还可以包括媒体插件的优先级信息,进而通过读取插件描述文件103_1~103_m即可得知媒体插件的优先级。
[0059]
例如,当确定与一媒体数据的处理需求匹配的媒体插件包括媒体插件102_1、媒体插件102_2、媒体插件102_3及媒体插件102_m-1。媒体插件102_1、媒体插件102_2与媒体插件102_3的功能互不相同,媒体插件102_1与媒体插件102_m-1功能相同,且媒体插件102_1的优先级高于媒体插件102_m-1,进而最终选定与该媒体数据的处理需求匹配的媒体插件
为媒体插件102_1、媒体插件102_2、媒体插件102_3。
[0060]
在一些实施例中,媒体插件的优先级可以基于媒体插件的功耗、占用存储空间、数据处理能力、数据处理效率中的至少一个进行设定。比如,媒体插件102_1与媒体插件102_m-1功能相同,优先级基于媒体插件的功耗(定义为参数p1)、占用存储空间(定义为参数p2)、数据处理能力(定义为参数p3)及数据处理效率(定义为参数p4)进行设定,预先为参数p1~参数p4配置权重系数,并分别为媒体插件102_1、媒体插件102_m-1的参数p1~参数p4进行评分,然后根据媒体插件102_1的参数p1~参数p4的分值计算得到第一评分值,根据媒体插件102_m-1的参数p1~参数p4的分值计算得到第二评分值,通过将第一评分值与第二评分值进行比较来为媒体插件102_1与媒体插件102_m-1设定不同的优先级。
[0061]
参照图5所示,本技术实施例提供的一种媒体插件加载方法,应用于多媒体播放组件100中。本实施例中,媒体插件加载方法包括:
[0062]
501、响应于获取到的对媒体数据的处理需求,读取每个插件描述文件103_1~103_m并得到每个媒体插件102_1~102_m的描述信息。
[0063]
在一些实施例中,当电子设备200启动对一媒体文件的媒体播放任务时,gstreammer核心框架101可以获取到对该媒体文件所包含的媒体数据进行处理的需求,gstreammer核心框架101通过读取每个插件描述文件103_1~103_m得到每个媒体插件102_1~102_m的描述信息。比如,当电子设备200的一媒体播放app执行媒体播放任务时,gstreammer核心框架101可以获取到媒体数据进行处理的需求;gstreammer核心框架101可以对多个插件描述文件103_1~103_m进行遍历,并得到每个媒体插件102_1~102_m的描述信息。
[0064]
在一些实施例中,多媒体播放组件100初始是存储在电子设备200的第一存储区,比如,第一存储区为电子设备的硬盘。电子设备200启动媒体播放任务时,gstreammer核心框架101被读取到电子设备200的内存中,每个插件描述文件103_1~103_m亦被读取到电子设备200的内存中,进而gstreammer核心框架101可以得到每个媒体插件102_1~102_m的描述信息。
[0065]
502、基于每个媒体插件102_1~102_m的描述信息及所述媒体数据的处理需求,从多个媒体插件102_1~102_m中确定需加载的目标媒体插件。
[0066]
在一些实施例中,所述媒体数据的处理需求可以是为了实现对该媒体文件进行播放所需用到的媒体插件(目标媒体插件)。所述目标媒体插件可以为多个媒体插件102_1~102_m中的一个或多个插件。
[0067]
在一些实施例中,所述媒体数据的处理需求可以被划分成多个数据处理子需求,进而可以基于每个媒体插件102_1~102_m的描述信息确定与每个数据处理子需求匹配的媒体插件。当存在两个或两个以上具有相同数据处理能力的媒体插件对应同一数据处理子需求时,可以从该两个或两个以上的媒体插件中选择优先级最高的媒体插件作为与该数据处理子需求对应的目标媒体插件。
[0068]
503、加载目标媒体插件至指定存储区,并基于加载的目标媒体插件创建插件对象。
[0069]
在一些实施例中,该指定存储区为电子设备200的内存。当确定需加载的目标媒体插件时,将目标媒体插件从电子设备200的第一存储区(硬盘)读取到内存,进而gstreammer
核心框架101可以基于内存存储的目标媒体插件创建多个插件对象。每个插件对象可以实现一个功能,比如读取文件、解码、输出等功能。
[0070]
在上述实施例中,对于执行该媒体播放任务不需要使用的媒体插件,是不会被加载到内存中,从而避免造成内存存储资源的浪费。比如,目标媒体插件包括四个媒体插件102_1~102_4,在执行本次媒体播放任务时仅会将媒体插件102_1~102_4加载到内存,其余媒体插件102_5~102_m不会被加载到内存。
[0071]
504、基于创建的插件对象构建媒体播放管道,并利用媒体播放管道对媒体数据进行处理。
[0072]
在一些实施例中,当完成插件对象的创建后,gstreammer核心框架101可以将多个插件对象组合成一条媒体播放管道,每个插件对象可以负责媒体数据处理的其中一个环节,整个媒体播放管道形成了媒体播放的功能。
[0073]
上述媒体插件加载方法,可根据媒体播放任务合理加载媒体插件至内存,避免不必要的媒体插件被加载到内存中,减少媒体播放服务常驻内存的存储空间消耗,达到能够部署在不同类型设备的目标,特别是内存少的第二类型设备。
[0074]
请参考图6,为本技术另一实施例提供的多媒体播放组件的架构示意图。
[0075]
多媒体播放组件100包括gstreammer核心框架101、多个媒体插件102_1~102_m及多个插件描述文件103_1~103_m。gstreammer核心框架101包括插件管理模块1011及插件更新模块1012。
[0076]
插件管理模块1011用于管理媒体插件102_1~102_m的生命周期,实现合理加载和释放媒体插件,使得媒体播放服务内存占用最小化。
[0077]
在一些实施例中,每个媒体插件102_1~102_m的引用计数均具有初始值,该初始值可以根据实际需求进行设定,比如每个媒体插件102_1~102_m的引用计数的初始值设置为0,或者每个媒体插件102_1~102_m的引用计数初始值设置为1。插件管理模块1011对媒体插件102_1~102_m进行管理的过程可以包括:
[0078]
i、当一媒体插件被加载至指定存储区(内存)时,将该媒体插件的引用计数增加一个预设值。
[0079]
在一些实施例中,该预设值可以根据实际需求进行设定。比如,该预设值为1。假设媒体插件102_1的引用计数具有初始值0,当媒体插件102_1被加载至内存时,媒体插件102_1的引用计数加1,即媒体插件102_1的引用计数由0变成1。gstreammer核心框架101可基于加载到内存的媒体插件102_1来构建插件对象,以便后续进行媒体播放管道构建。
[0080]
ii、当媒体播放管道被销毁导致该媒体播放管道所包含的插件对象被释放时,将释放的插件对象所对应的媒体插件的引用计数减少所述预设值。
[0081]
在一些实施例中,当媒体播放任务完成或者媒体播放任务被停止时,该媒体播放任务对应的媒体播放管道将会被销毁。当媒体播放管道被销毁,该媒体播放管道所包含的插件对象将会被释放。
[0082]
插件对象包括四种状态:null状态、ready状态、pause状态及playing状态。null状态表示释放插件对象的所有资源或者未分配资源至插件对象;ready状态表示为插件对象分配资源,但是媒体播放管道出于关闭状态;pause状态表示媒体播放管道处于打开状态,插件对象开始处理媒体数据,但媒体文件不处于播放状态;playing状态表示媒体播放管道
处于打开状态,插件对象开始处理媒体数据,且媒体文件处于播放状态。插件对象可以通过gst_element_set_state()函数来进行四个状态之间的跳转,该gst_element_set_state()函数可以使得插件对象在任意两个状态之间进行转换。当插件对象的状态由null状态变为ready状态,由于需要为插件对象分配资源,此时插件管理模块1011可以为该插件对象对应的媒体插件的引用计数增加该预设值。当插件对象的状态由ready状态、pause状态,或者playing变为null状态时,表明媒体播放管道被释放,此时需要减少对应插件的引用计数,即插件管理模块1011可以为该插件对象对应的媒体插件的引用计数减少该预设值。
[0083]
iii、判断媒体插件的引用计数是否等于所述初始值。
[0084]
在一些实施例中,当发生媒体播放管道释放的情形,插件管理模块1011可以进行一次引用计数是否等于所述初始值的判断操作。具体地,插件管理模块1011可以判断指定存储区中是否存在一个或者多个媒体插件的引用计数等于初始值。
[0085]
iv、若指定存储区中存在一个或多个媒体插件的引用计数等于所述初始值,将该一个或多个媒体插件从指定存储区卸载。
[0086]
在一些实施例中,当指定存储区中存在一个或多个媒体插件的引用计数等于所述初始值时,插件管理模块1011可以调用dlclose将该一个或多个媒体插件从指定存储区中卸载,使得媒体播放服务加载的媒体插件占用的指定存储区的空间最小化。
[0087]
例如,每个媒体插件102_1~102_m的引用计数初始值为零,在媒体文件播放过程中需要用到媒体插件102_1创建插件对象时,插件管理模块1011将媒体插件102_1对应的插件引用计数加一,当播放完成时,插件对象被释放,插件管理模块1011将被释放的插件对象所对应的媒体插件102_1的引用计数减一,如果此时媒体插件102_1的引用计数变为零,插件管理模块1011调用dlclose将媒体插件102_1从内存中卸载。
[0088]
插件更新模块1012用于为多媒体播放组件100更新媒体插件及插件描述文件。当多媒体播放组件100应用在电子设备200中,电子设备200可以通过有线或者无线方式与指定服务器进行通信。插件更新模块1012可以判断该指定服务器上是否有可更新的媒体插件与插件描述文件,使得多媒体播放组件100具有自动更新媒体插件与插件描述文件的功能。插件更新模块1012对多媒体播放组件100中的媒体插件及插件描述文件进行更新的过程可以包括:
[0089]
a、判断指定服务器上是否存在可更新的媒体插件与插件描述文件。
[0090]
b、若指定服务器上存在可更新的媒体插件与插件描述文件,从该指定服务器上下载更新版媒体插件与更新版插件描述文件。
[0091]
c、判断下载的更新版媒体插件的属性信息与更新版插件描述文件的属性信息是否匹配。
[0092]
d、若该更新版媒体插件的属性信息与该更新版插件描述文件的属性信息匹配,利用下载的该更新版媒体插件与该更新版插件描述文件更新多媒体播放组件100。
[0093]
e、若该更新版媒体插件的属性信息与该更新版插件描述文件的属性信息不匹配,放弃对多媒体播放组件100进行更新。
[0094]
在一些实施例中,属性信息可以是版本号或者其他标识信息。当更新版媒体插件的版本号与更新版插件描述文件的版本号相同时,表明该更新版媒体插件与该更新版插件描述文件相匹配,插件更新模块1012可以利用该更新版媒体插件与该更新版插件描述文件
对多媒体播放组件100进行更新。当更新版媒体插件的版本号与更新版插件描述文件的版本号不相同时,插件更新模块1012放弃利用该更新版媒体插件与该更新版插件描述文件对多媒体播放组件100进行更新。
[0095]
在一些实施例中,插件更新模块1012利用该更新版媒体插件与该更新版插件描述文件对多媒体播放组件100中的媒体插件与插件描述文件进行替换来实现更新。比如,若指定服务器上存在可更新的媒体插件102_1与插件描述文件103_1,且可更新的媒体插件102_1与插件描述文件103_1的版本号相同,插件更新模块1012可以将下载的该更新版媒体插件与更新版插件描述文件替换掉原有的媒体插件102_1与插件描述文件103_1。
[0096]
参照图7所示,本技术实施例提供的一种媒体插件加载方法,应用于多媒体播放组件100中。本实施例中,媒体插件加载方法包括:
[0097]
701、响应于获取到的对媒体数据的处理需求,读取每个插件描述文件103_1~103_m并得到每个媒体插件102_1~102_m的描述信息。
[0098]
702、基于每个媒体插件102_1~102_m的描述信息及媒体数据的处理需求,判断多媒体播放组件100是否具备处理所述媒体数据的能力。
[0099]
703、若多媒体播放组件100不具备处理所述媒体数据的能力,返回插件加载异常的提示信息。
[0100]
704、若多媒体播放组件100具备处理所述媒体数据的能力,基于每个媒体插件102_1~102_m的描述信息及媒体数据的处理需求,确定多个媒体插件102_1~102_m中需加载的目标媒体插件。
[0101]
705、加载目标媒体插件至指定存储区,基于加载的目标媒体插件创建插件对象,并将该目标媒体插件的引用计数增加预设值。
[0102]
706、基于创建的插件对象构建媒体播放管道,并利用该媒体播放管道对媒体数据进行处理。
[0103]
707、若该媒体播放管道被销毁及该媒体播放管道所包含的插件对象被释放,将释放的插件对象所对应的媒体插件的引用计数减少所述预设值。
[0104]
708、判断指定存储区中是否存在一个或多个媒体插件的引用计数等于初始值。
[0105]
709、若指定存储区中存在一个或多个媒体插件的引用计数等于该初始值,将该一个或多个媒体插件从指定存储区卸载。
[0106]
在一些实施例中,当得到每个媒体插件102_1~102_m的描述信息时,既可以判断处理所述媒体数据所需的媒体插件是否包含在多媒体播放组件100的媒体插件102_1~102_m中。若处理所述媒体数据所需的媒体插件包含在多媒体播放组件100的媒体插件102_1~102_m中,表明多媒体播放组件100具备对所述媒体数据进行处理的能力,可以继续确定多个媒体插件102_1~102_m中哪些是需加载的目标媒体插件。若处理所述媒体数据所需的媒体插件有一个或多个不包含在多媒体播放组件100的媒体插件102_1~102_m中,表明多媒体播放组件100不具备对所述媒体数据进行处理的能力,多媒体播放组件100无法执行播放任务,可以返回诸如插件加载异常的提示信息,或者播放异常的提示信息。
[0107]
上述媒体插件加载方法,可在保持原有多媒体播放组件功能不变的情况下,合理加载媒体插件,对于不同情形下的媒体播放任务,仅加载所需要的媒体插件,当媒体播放任务完毕后,释放媒体插件,保持媒体服务内存占用最小化,对于内存资源受限的电子设备具
有明显的优化,相比现有的多媒体插件加载方式,播放同一个媒体文件,内存占用比可有效减少,例如减少50%,甚至更多。
[0108]
参考图8,为本技术实施例提供的电子设备200的硬件结构示意图。如图8所示,电子设备200可以包括处理器2001、存储器2002及通信总线2003。存储器2002用于存储一个或多个计算机程序2004。一个或多个计算机程序2004被配置为被该处理器2001执行。该一个或多个计算机程序2004包括指令,上述指令可以用于执行上述实施例中对媒体插件的加载,以实现在电子设备200中执行媒体插件加载方法。
[0109]
可以理解的是,本实施例示意的结构并不构成对电子设备200的具体限定。在另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
[0110]
处理器2001可以包括一个或多个处理单元,例如:处理器2001可以包括应用处理器(application processor,ap),调制解调器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0111]
处理器2001中还可以设置有存储器,用于存储指令和数据。在一些实施例中,处理器1001中的存储器为高速缓冲存储器。该存储器可以保存处理器2001刚用过或循环使用的指令或数据。如果处理器2001需要再次使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器2001的等待时间,因而提高了系统的效率。
[0112]
在一些实施例中,处理器2001可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,sim接口,和/或usb接口等。
[0113]
在一些实施例中,存储器2002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0114]
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的媒体插件加载方法。
[0115]
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的媒体插件加载方法。
[0116]
另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的媒体插件加载方法。
[0117]
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0118]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0119]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0120]
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0121]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0122]
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0123]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献