使用软件包装组件提供多媒体功能的方法、设备和计算机程序的制作方法

文档序号:6349786阅读:171来源:国知局
专利名称:使用软件包装组件提供多媒体功能的方法、设备和计算机程序的制作方法
技术领域
本发明的实施例总体上涉及计算装置,更具体地,实施例涉及一种用于在计算装置中提供多媒体功能的方法、设备和计算机程序。
背景技术
多媒体软件应用的盛行已引领其在大量不同计算平台上的使用。结果是,出现了使多媒体应用可跨多个不同计算装置平台移植的需求。OpenMAX标准提供了用于开发可跨多个不同计算装置平台移植的多媒体应用软件的API。

发明内容
本发明的示例的多种方面在权利要求中进行了阐述。本发明的第一示例提供了一种方法,包括使用软件包装组件在计算装置中执行多媒体功能,所述包装组件包括一个或多个多媒体软件子组件,每个多媒体软件子组件执行至少部分多媒体功能,所述包装组件能够用于响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。在示例中,所述包装组件能够用于在执行所述多媒体功能时,将所述一个或多个多媒体子组件中的至少一个插入到所述包装组件和/或从所述包装组件删除。在示例中,所述多媒体功能包含在有限状态机中,并且所述包装组件能够用于根据有限状态机进行操作,以执行所述多媒体功能。在示例中,所述包装组件能够用于向客户端组件提供输出,所述输出包括来自所述一个或多个多媒体子组件中的至少一个的回调。在示例中,所述包装组件能够用于向客户端组件提供访问,以控制所述一个或多个多媒体子组件中的至少一个的功能。在示例中,所述包装组件还包括输入端口和输出端口,用于与其他包装组件和所述客户端组件进行通信,所述包装输入端口与所述一个或多个子组件中的一个子组件的输入端口对应,所述包装输出端口与所述一个或多个子组件中的一个子组件的输出端口对应。在示例中,所述包装输入和输出端口与所述一个或多个多媒体子组件的边缘端口对应。在示例中,所述包装组件能够用于管理通过一个或多个多媒体子组件中的至少一个对所述计算装置的有限资源的访问。在示例中,所述包装组件能够用于依据计算装置的有限资源的可用性来控制所述一个或多个多媒体子组件执行所述多媒体功能。在示例中,所述包装组件能够用于如果对于所述组件,存在足够的计算装置资源用来控制所述一个或多个多媒体子组件执行所述多媒体功能,则从所述客户端组件接收待通知的命令;识别当前是否有足够的计算装置资源可用;以及,如果当前具有足够的计算装置资源可用,则通知所述客户端组件。在另一示例中, 所述包装组件确定没有足够的计算装置资源可用,并且包装组件能够用于在将来具有足够的计算装置资源可用时,通知所述客户端组件。在示例中,所述包装组件包括多个包装组件。在示例中,所述一个或多个多媒体子组件中的至少一个是包装组件。在示例中,所述包装组件符合现有的多媒体应用编程接口。在另一个实例中,现有的多媒体应用编程接口是OpenMAX IL API。本发明的第二示例提供了一种设备,包括处理器存储器,其包括计算机程序代码所述存储器和计算机程序代码被配置用来与处理器一起使所述设备至少执行以下步骤使用软件包装组件在计算装置中执行多媒体功能,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件能够用于响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。本发明的第三示例提供了一种计算机程序,包括用于使用软件包装组件在计算装置中执行多媒体功能的代码,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件能够用于响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。在示例中,所述计算机程序是计算机程序产品,其包括其中承载与计算机一起使用的计算机程序代码的计算机可读介质。本发明的第四示例提供了一种计算机可读介质,其编码有指令,当所述指令被计算机执行时,使用软件包装组件在计算装置中执行多媒体功能,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件能够用于响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。本发明的第五示例提供了一种设备,包括用于在计算装置中执行多媒体功能的部件,所述部件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述部件能够用于响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。


下面参考附图描述实施例,其中,图1是OpenMAX IL环境的示意图;图2是在其中实现本发明的实施例的计算装置的示意性表示;
图3是示出图2的计算装置的硬件组件的布置的示意图;图4是示出根据本发明的实施例布置时,图2的计算装置的硬件和软件组件的布置的示意图;图5是在图2的计算装置上运行并体现本发明第一实施例的多媒体用例的功能图;图6是示出图5的用例的操作的流程图;图7是在图2的计算装置上运行并体现本发明第二实施例的多媒体用例的功能图;图8是示出图7的用例的操作的流程图;图9是在图2的计算装置上运行并体现本发明第三实施例的多媒体用例的功能图。
具体实施例方式OpenMAX是由Khronos公司开发的标准。OPenMAX提供了一组用于开发组件和应用的API,这些API可跨多个不同的计算环境移植。OpenMAX提供了三层接口 应用层(AL)、 集成层(IL)和开发层(DL)。OpenMAX IL提供了 API,并且是现有多媒体应用编程接口。具体地,OpenMAX IL提供用于在多媒体框架或应用与一组组件之间进行接口连接的API,每个所述组件都为框架或应用提供至少部分多媒体功能。例如,对于向人类用户播放MP3文件的媒体播放器软件应用,该媒体播放器需要使用MP3文件、文件解码器和扬声器。OpenMAX IL提供了在媒体应用、文件、解码器和扬声器之间进行接口连接的手段,使得媒体应用能够在扬声器上播放 MP3文件。图1提供了 OpenMAX IL环境2的示意性表示。OpenMAX IL API与表示为IL客户端4的更高层级的实体进行接口连接。IL客户端4可以是滤器图(filter graph)多媒体框架(例如,GStreamer)、OpenMAX AL API、或者软件应用或框架。实践中,IL客户端4意指调用OpenMAX IL环境的方法(即,功能)的任何软件(见下文)。OpenMAX IL API包括两部分核心API 6和组件API (8a至8c)。核心6用于在主存储器中动态地加载和卸载多媒体软件组件(8a至8c),以及用于便利组件(8a至8c)通信。一旦组件被加载,核心6就允许IL客户端4直接与组件(8a 至8c)通信。然而,由于IL客户端4仅能经由核心6与组件(8a至8c)通信,所以IL客户端4调用核心6的宏,这引起核心6调用组件(8a至8c)的方法。类似地,核心6允许IL 客户端4在两个组件(8a至8c)之间建立通信链路(也称为隧道)。一旦建立隧道,核心6 就不再被使用,并且通信直接在组件(8a至8c)间流动。隧道式通信示于图1组件A和B、 以及组件B和C之间。组件API用于创建新的组件(8a至8c)。组件(8a至8c)代表单个功能模块。组件(8a至8c)运行于四种数据类型音频、视频、图像和其他(如用于同步的时间数据)。组件(8a至8c)具有源、接收器(sink)、编解码器、过滤器、分离器、混合器或任意其他数据操作器的功能。根据组件的实现方式,组件可代表一硬件、软件编解码器、另一个处理器或其组合。
通过被称为端口(9a至9d)的接口进行去往和来自组件的数据通信。在OpenMAX IL中定义了四种类型的端口,并且他们与端口可传递的数据类型对应,即,有音频、视频和图像数据端口和其他端口。组件可通过输入端口(9b和9d)接收数据,或通过输出端口(9a 和9c)发送数据。类似地,可通过将一个组件的输出端口连接到另一个组件的输入端口(例如,组件A和B、以及B和C两者之间所示),建立两个组件之间的通信隧道。端口可代表组件经由缓冲器到数据流的连接,即,端口可并入缓冲器。OpenMAX IL组件(8a至8c)向IL客户端4提供对组件功能或方法的标准集合的访问。这些功能允许IL客户端4获得并设置组件和端口配置参数、获取并设置组件的执行状态、向组件发送命令、接收事件通知、分配缓充器、建立与单个组件端口的通信、以及在两个组件端口之间建立通信。组件参数包括与组件的运行(即,其特定功能,例如编译码器) 或组件的实际执行状态(即,空闲或执行中)相关的数据。缓冲器状态、错误以及其他时间敏感的数据被经由一组回调功能中继到IL客户端4。在示例中,鉴于上文,IL客户端4可以是运行在计算装置上的媒体播放器应用。为了提供MP3回放功能,媒体播放器应用与核心6通信,并命令核心6加载组件A(Sa)、组件 B(Sb)和组件C (Sc)。组件A代表MP3文件,并因此提供多媒体数据源并具有单个输出端口 (9a)。组件B代表MP3解码器,并因此必须具有用于接收MP3数据的输入端口(9b)以及用于提供已解码样本的输出端口(9c)。解码器对文件数据进行解码并将其转换成脉冲编码调制(PCM)样本,然后该样本被传送给组件C。组件C代表声音驱动器,并因此提供接收器并具有单个输入端口(9d)。该声音驱动器将PCM声音样本发送到计算装置的扬声器,以启动音频回放。下面仅以示例的方式提供对多个实施例的描述。图2是具有壳12的计算装置10的示意图。计算装置10形成将要描述的实施例的基础。装置10的壳12封装了键区(keypad) 14、触摸屏显示器16、扬声器18和麦克风20。 装置10还包括天线22。图2中示例性示出的装置10是移动装置,其可以被用户握在手中并用来加入通信会话,特别是电话呼叫。在此会话期间,可使用装置10使得扬声器18被保持在用户耳朵周围,并且麦克风20位于用户嘴巴附近。装置10是像移动电话那样运行的计算装置。然而,另外的实施例可涉及不是将电话包括为其主要功能的计算装置。图3是示出图2的装置10的硬件组件的布置的示意性示例图。图2中所示的键区14、显示器16、扬声器18和麦克风20与系统总线42通信。总线42进一步与应用处理器24、基带处理器沈、发射器观、接收器30和电池40通信。发射器28和接收器30与天线 22通信。总线42还与存储器控制器32通信,存储器控制器32则与易失性存储器34和非易失性存储器36通信。应用处理器M处理与运行在装置10上并提供装置10的各种功能的各种软件模块和操作系统软件相关的指令。基带处理器26与通信功能有关,并为此控制电话堆栈,并与发射器观和接收器30通信,以便借助天线22建立通信。可在单个处理器上提供装置10的各种处理元件,例如应用处理器M和基带处理器26。存储器控制器32控制对易失性存储器34和非易失性存储器36的访问和与其进行的交互。以这种方式,应用处理器M能够与各种硬件元件以及存储器控制器32通信,由此根据存储在易失性存储器;34或非易失性存储器36上的软件指令来控制各种硬件元件的运行。图3中仅示出单个总线,总线42。将认识到,该总线可由两个或更多的总线替代, 并且图3的拓扑将相应地改变。此外,已知的计算装置包括除了图3中示例性示出的那些之外的硬件组件,但是这些在本领域是公知的,在此不再进行描述。图4是示例性示出装置10的各种硬件和软件组件的图。运行在装置10上的软件可按多种方式进行分类。某些软件运行以管理由各种硬件组件提供的资源,并建立其中执行其他软件的可运行环境。该软件被称为装置的操作系统,并在图4中由内核50表示。内核50和如前文所述那样与易失性存储器34和非易失性存储器36通信的存储器管理单元 32交互。内核50还与多个应用44通信,每个应用44以内核50指定的方式访问硬件组件。 应用44是用户应用,其可由用户启动和终止。图4示出应用44包括媒体播放器应用46。 媒体播放器46为装置10的用户提供了指示装置10运行特定多媒体用例的途径,该多媒体用例包括但不限于,播放音频或视频、录制音频或视频以及查看或编辑图像。内核50借助装置驱动器52与键区14通信,借助装置驱动器M与扬声器18通信, 并借助装置驱动器56与显示器16通信。虽然仅示出一些硬件组件,但是通常,内核50通过各种装置驱动器来控制装置10的硬件资源。此外,虽然装置驱动器被示为与内核50分离,但是它们被合并到内核50中也是可行的。图4的软件组件通过虚线区域60来划出。然而,软件和硬件之间的这种区分不是必要的。图4中被示为软件的组件可提供在硬件中,并且被示为硬件的组件在某些情况下可提供为软件。在装置运行期间,存储在非易失性存储器36中的软件指令建立内核50、应用44和装置驱动器5254和56。通过使用图3中示出的各种组件,用户能够按各种应用44提供的功能来使用装置10。例如,用户使用键区14和/或触摸屏显示器16,以便借助装置驱动器 52和56来与内核50通信,以引起应用44中的一个借助存储器管理单元32来访问存储在非易失性存储器36上的数据。内核50使存储器管理单元32提供的数据被应用44处理, 应用44典型地运行在应用处理器M上。应用处理器M在过程中通常使用易失性存储器 34从数据和指令返回结果。根据来自应用的进一步指令,内核50将借助装置驱动器56使结果在显示器16上被显示给用户。将认识到,装置驱动器5254和56也是源自存储在非易失性存储器36上的指令的软件组件。仅以示例的方式呈现了对图4的说明。已知的装置可包括比示出的那些更多的组件。实施例的实现方式不取决于图2、3和4中示出的组件的精确布置和配置。因此,在不影响实施例的运行的情况下,可用其他具有类似功能的组件来替代,并且额外的组件可被添加到这里,或从这里省略所示出的组件。图5示例性示出存在于装置10上的OpenMAX IL API环境。图5的环境代表多媒体用例70,并且具体地,代表播放MP3文件的用例。在本示例中,MP3文件存储在易失性存储器34上,并将在扬声器18上播放。媒体播放器应用46充当图5的环境中的IL客户端。将理解,IL客户端是该示例上下文中的客户端组件。媒体播放器46与核心72通信。核心72与包装软件组件(以下为‘包装’)74通信,该包装软件组件74包括三个多媒体软件子组件源76、解码器78和接收器80。此外,为了便于子组件76到80之间的通信,源76包括输出端口 82,解码器78包括输入端口 84和输出端口 86,并且接收器80包括输入端口 88。端口 82到88的布置使得在源76和解码器78之间,以及解码器78和接收器80之间,建立隧道式通信。媒体播放器 46使用核心72以便将包装74,包括包装74的单独多媒体子组件(76至80),加载到装置 10的易失性存储器34中,以便实现每个元件的功能。此外,媒体播放器46使用核心72以便在组件76至80之间建立通信链路。此处使用术语‘包装’(wrapper)来描述包含一个或多个软件子组件的软件实体。 包装起到协调子组件的作用,以便向诸如IL客户端的客户端组件提供子组件的功能。在本发明的一些实施例中,包装还额外提供管理功能,以辅助对子组件进行的协调。操作中,包装74能够执行完整的多媒体功能,其在本示例中包括播放MP3文件。相应地,包装74提供了用于执行完整多媒体功能的手段。现参照图6的流程图来描述包装74 播放MP3文件的操作。图6的过程在步骤100处开始,其中,媒体播放器46被命令播放MP3文件。媒体播放器46可由应用44中的另一个应用或装置10的操作系统来命令。装置10的用户经由, 例如,被提供给触摸屏显示器16或键区14的输入,指示媒体播放器46播放MP3文件也是可行的。还可行的是,发送给媒体播放器46的任何指令都被经由内核50来发送。在任何情况下,一旦媒体播放器46收到播放存储在非易失性存储器36上的MP3文件的指示,过程就从步骤100行进到步骤102。在步骤102,媒体播放器46将包装74加载到主存储器中。在本示例中,包装74被加载到易失性存储器34中。此外,在这种情况下,包装具体涉及所期望的用例,即,‘播放 MP3文件,。通过媒体播放器46和核心72来执行包装74的加载。具体地,媒体播放器46 指示核心72将包装组件74的多媒体子组件76到80中的每一个都加载到易失性存储器34 中。多媒体播放器46还指示核心72通过自动建立组件76到80之间的合适的通信链路来配置包装74。在本示例中,核心72在源76与解码器78,以及解码器78和接收器80之间建立隧道式通信链路。一旦包装74被加载到存储器中并被配置,过程就从步骤102行进到 104。一旦包装74被加载并配置,媒体播放器46就可将驱动用例(即,播放MP3文件)的工作委托给包装74。在步骤104,包装74使用源76来加载MP3文件,该MP3文件与在步骤100媒体播放器46接收的原始指令中指定的那个对应。如此,源子组件76代表软件文件加载器。一旦加载了所指定的文件,其中所包含的MP3数据就通过源76传递到解码器78,随后过程行进到步骤106.在步骤106,包装74使用解码器78对来自源76的MP3数据进行解码,以生成脉冲编码调制(PCM)声音样本。解码器78可代表使用应用处理器M来实现解码算法的软件解码器。可替代地,装置10可包括硬件加速器,并且解码器78可代表使用该加速器来实现解码算法的软件解码器。在任何情况下,经解码的PCM样本都被从解码器78发送到接收器 80,并且过程行进到步骤108。在步骤108,接收器80接收PCM样本,并将其发送到扬声器18。接收器代表装置驱动器讨,并由此控制扬声器18以播放经过解码的PCM样本。步骤110代表最终步骤,其中,扬声器18播放PCM样本。可通过有限状态机对OpenMAX IL多媒体子组件(76到80)的行为进行模型化。相应地,可调用每个子组件的方法以便驱动由有限状态机限定的子组件的行为,由此激活子组件的功能。包装组件的行为作为整体也可通过有限状态机来模型化。IL客户端(即,媒体播放器46)可请求包装上的状态改变,以驱动包装的特定用例。换言之,IL客户端可简单地驱动包装,并且包装于是将驱动其单独子组件,使得包装根据其有限状态机那样工作。包装74提供了单个整体OpenMAX IL组件(即,包装组件74)下组合在一起的多个 OpenMAX IL组件(即,多媒体子组件76到80)。此外,包装将一组关联的多媒体子组件归类,所述关联的多媒体子组件形成能够运行特定多媒体用例,即播放MP3文件,的功能组。 当然,其他用例也是可行的,例如,播放WMA文件、流式视频文件、录制视频文件、捕获JPEG 图像和显示JPEG图像。在其他示例中,可提供用于每个用例的单独的包装组件。每个包装将包括对于用来提供与其关联的用例来说必要的子组件(例如,播放WMA文件、流式视频文件、录制视频文件、捕获JPEG图像和显示JPEG图像)。通常,包装从IL客户端(即,媒体播放器46)接收触发该包装的特定用例的命令。内部地,包装在其子组件(即,多媒体子组件76到80)上调用所需的命令,并且包装能够处理子组件发布的事件。在需要时,包装也向IL客户端(即,媒体播放器46)发送回调,以便符合OpenMAX IL API。包装74能够进行资源管理。资源管理涉及控制组件(76到80)对有限资源的访问,例如,诸如存储器34或电池40的硬件资源。因此,包装74 了解有多少具体资源可用, 哪些组件当前正在使用资源,以及组件正在使用多少资源。作为资源管理器,包装74将基于资源冲突和可用性,向策略管理器推荐哪些组件应该被预先清空或恢复。在本实例中, 对MP3数据进行解码会生成声音样本形式的数据,该声音样本必须存储在易失性存储器34 中,使得其随后可在扬声器18上播放。易失性存储器34具有有限的存储容量,其对于装置 10的组件76到80之外的元件来说也必须是可用的。相应地,包装74 了解易失性存储器 34的容量,并管理对其进行的访问,使得装置10能够工作。包装74能够进行策略管理。策略管理器负责管理子组件链或流,其中,子组件流是协作来执行多媒体功能的组件集。在本示例中,组件76至80提供子组件流,其中,该流执行播放MP3文件的多媒体功能。策略管理用于确定流是否能够基于包括资源、系统配置和其他因素的信息来运行。因此,包装根据该信息控制组件76到80播放MP3文件的操作。包装74的操作使得一旦包装74被加载到存储器中并且其关联的多媒体功能被起动,则多媒体子组件可被动态地插入或移除。例如,包装74可被布置为使得在包装74的其他部分被加载时,解码器子组件78没有在步骤102被加载。作为替代,所加载的特定解码器子组件可依赖源76加载的文件的文件格式。如果MP3文件在步骤104被加载,则在该文件被解码之前,MP3解码器子组件可在步骤106被加载。可替代地,如果WMA (windows (RTM)媒体音频)文件在步骤104被加载,则在该文件被解码之前,WMA解码器子组件可在步骤106 被加载。可替代地,MP3解码器可在步骤102被加载,然后,如果WMA文件在步骤104被加载,则在步骤106,在WMA文件被解码之前,MP3解码器可被移除并且WMA解码器可被插入到其位置。包装74的操作使得媒体播放器46能够加载包装74,然后将播放MP3文件的工作委托给该包装74。换言之,媒体播放器46无需使其自己关注组合以播放MP3文件的单独的步骤,例如加载MP3文件、解码文件或将解码后的文件发送给装置驱动器。也就是说,如果需要,媒体播放器46仍旧可访问每个多媒体子组件76到80的各个功能。此外,可通过其他OpenMAX组件或IL客户端来访问对包装74的任何输入或来自包装74的任何输出。具体地,包装的输入端口由包装的子组件流中的第一子组件的输入提供,而包装的输出端口由包装的子组件流中的最后子组件的输出提供。这些端口被称为‘边缘’端口,因为每个边缘端口都位于子组件流的边缘,即,在流的进口(inlet)或出口(outlet)。需要注意的是, 在图5的示例中,第一子组件是不具有输入端口的源76,最后的子组件是不具有输出端口的接收器80。然而,在本发明的一些实施例中,包装输入端口或输出端口不是与包装的子组件的边缘端口对应。作为替代,包装的输入端口或输出端口可以是特定子组件的任意输入端口或输出端口。在一些其他实施例中,某些子组件输入和输出端口可被预定义为包装输入端口或输出端口。包装组件也完全符合OpenMAX IL API和规范。相应地,包装组件可跨多个不同计算平台移植的,并且具体地跨多个不同的移动计算平台移植的。此外,包装允许创建仅使用 OpenMAX IL构造的过滤器图,并且因此,使得其符合OpenMAX IL标准。在本示例中,过滤器图形成自源76、解码器78和接收器80 (它们提供了播放MP3文件的完整多媒体功能)。根据本示例的包装组件的优点是,软件框架或应用(即,IL客户端)可将多个 OpenMAX IL多媒体子组件一起组合成包装,以便运行特定的多媒体用例,如播放MP3文件。 然后,IL客户端可将驱动该用例的工作委托给该包装。这是有益的,因为包装符合OpenMAX IL组件API并且可被控制(如同包装就是基础OpenMAX IL组件那样)。此外,包装可对IL 客户端隐藏协调其中组合的单独多媒体子组件所需的大部分复杂性。此方法允许更加简单的IL客户端实现,同时维持与OpenMAX IL标准的兼容性。具体地,IL客户端无需考虑资源或策略管理,作为替代,可依靠于包装组件来处理。允许更加简单的IL客户端实现意味着对于软件开发者来说更易于设计这样的IL客户端,并且因此减少了设计此类IL客户端所花的时间。本实施例的优点是,可预设一个或多个包装组件,使得应用和框架(即,IL客户端)能够简易地使用它们的功能。具体地,被频繁使用的多媒体功能可被预先设置并用作由其运行特定用例的构建块。例如,播放MP3文件是可由多个不同的应用或框架提供的多媒体功能,并且由此,包装72可以是预设的包装。额外地或可替代地,可预设一组其他的包装组件,以提供多媒体功能,这包括但不限于播放WMA文件、流式视频文件、录制视频文件、 捕获JPEG图像以及显示JPEG图像。相应地,创建能够提供任何这些多媒体功能的IL客户端被简化,从而减少开发此类IL客户端所花的时间。图7是示出本发明的第二实施例的OpenMAX IL环境。除下文的例外之外,图7的 OpenMAX IL环境与图5的环境相同。包装(在图8中被重新编号为74’)额外地包括测试组件112。一旦包装组件74’被加载,媒体播放器46 (充当IL客户端)就可调用测试组件 112。调用测试组件112需要包装74’通知媒体播放器46 装置10是否具有足够的可用资源来执行包装74’的多媒体功能,S卩,通过扬声器18播放MP3文件。例如,资源可能是有限的资源,例如,易失性存储器34或电池40。为了提供上述功能,包装组件74’能够识别执行其多媒体功能将需要装置10的哪些资源。另外,包装组件74’能够确定其需要每个被识别的资源中的多少,以及每个被识别的资源中有多少可用。在一些实施例中,是包装组件的资源管理和/或策略管理功能提供了该能力。在包装74’确定有至少一个被识别的有限资源不是足够可用的情况下,包装74’不响应媒体播放器的呼叫。然而,在有足够可用的被识别的有限资源的情况下,包装74’响应多媒体播放器74,的呼叫。在媒体播放器46收到来自包装74’的响应的情况下,媒体播放器46指示包装74’运行其多媒体功能。现参考图8的流程图来解释上述操作。需要注意的是,包装74’的操作与以上参考图6论述的包装74的操作类似。以下描述根据图6的操作与根据图9的操作之间的不同。一旦包装74’被加载到存储器中并被配置,过程从步骤102行进到步骤114。在步骤114,媒体播放器46调用测试组件112,随后过程行进到步骤116。在步骤116,包装组件74,识别为了执行其播放MP3文件的多媒体功能,需要装置10的哪些有限资源。然后, 包装组件74’确定对于每个被识别的资源,是否有足够的量可用。在对于被识别的装置资源中的至少一个不足够的情况下,过程在步骤116等待,直到足够的资源可用。可替代地, 在所有被识别的装置资源都足够的情况下,过程行进到步骤104。从步骤104起的过程如上文参照图6所述。应当理解,在本发明的其他实施例中,包装74’可额外地或可替代地,通知媒体播放器46没有足够的资源可用并且不能执行多媒体功能(即,播放MP3文件),而不是过程在步骤116等待,直到有足够的装置资源可用为止。在此情况下,媒体播放器46然后可在显示器16上显示适当的消息,以将此消息中继给用户。已经参照播放MP3文件的用例讨论了在此描述的第一和第二实施例。此外,那些实施例考虑了包括三个组件的包装组件。应当理解,本发明的实施例在用于执行其他多媒体用例时会同样有效。另外,应当理解,实施例在用于与不同数量的组件连接时会同样有效。例如,多于或少于三个的组件可被用于执行特定的多媒体用例。另外,可创建不同类型的子组件。例如,作为替代,可使用呈现器(renderer)子组件,而不是解码器子组件。需要注意的是,改变组件的功能将继而改变包装组件所实施的用例以及所创建的OpenMAX IL环境。具体地,可使用具有源、接收器、编解码器、过滤器、分离器、混合器或任意其他数据操作器的功能的组件。此外,此类组件可用来实现任何多媒体用例,包括但不限于,在显示屏上播放视频文件、使用相机录制视频、在显示屏上显示图像、捕获文件中的图像。图9是示例性示出本发明第三实施例的OpenMAX IL环境。图9的OpenMAX IL环境示出多媒体用例150,包括三个包装组件152、156和158。更具体地,包装组件152包括具有一个输出的多媒体子组件154、具有一个输入和一个输出的包装组件156、以及具有一个输入的包装组件158。包装组件156和158置于包装组件152内。包装组件156包括具有输入和输出的多媒体子组件156a,以及具有输入和输出的多媒体子组件156b。包装组件158包括具有输入和输出的多媒体子组件158a,以及具有输入的多媒体子组件158b。图9的用例150的操作如参照图6所述。然而,在步骤102,通过使用核心74的多媒体播放器46,加载三个包装组件152、156和158。将一个包装组件置于另一个包装组件内的好处是,被置入的包装的功能对于其所嵌入的包装是可用的。如以上参照第一实施例所述,可预先设置多个包装组件,以便提供多媒体功能的多个构建块。在此情况下,能够将一个功能置于另一个中以构造能够执行多个构建块的完整多媒体功能的单个包装组件是有用的。例如,可预先设置第一包装组件,以提供在扬声器上播放MP3文件的功能。同时,可预先设置第二包装组件,以便取MP3文件并对其内容执行一些复杂的数据处理,例如,以提高文件中声音数据的可听度。因为包装组件可被置于其他包装组件内,所以可以将第二包装组件置于第一包装组件内,使得在MP3文件在扬声器上被播放之前被处理。应当理解,不具有输入或输出端口的包装组件(即,包装组件74,74’和15 在此被称为流包装组件。同时,具有一个输入端口和一个输出端口的包装组件(即,包装组件 156)在此被称为过滤器包装组件。另外,具有一个输入端口的包装组件(即,包装组件158) 在此被称为接收器包装。应当理解,使用‘组合模式’和‘OpenMAX IL组件扩展机制’这两个构造来创建根据本发明一些实施例的包装组件。具体地,使用OpenMAX IL组件扩展API来创建新的 Index 和 Config 结构对,例如,诸如 OMXJndexConfigWrapperCompList 和 0MX_C0NFIG_MG_ C0MP0NENTLIST_TYPE,来实现包装组件组合。在这种情况下,组件列表类型结构包含将被添加为包装组件的子组件的OpenMAX IL组件名称(或者甚至是组件角色,这取决于不同的实现方式)的列表。此外,在IL客户端要求访问包装的单独的子组件的实施例中,IL客户端可获取使用扩展机制的子组件的句柄,并从而访问子组件的功能。例如,可使用新的^dex 和 Config 结构对扩展,例如,OMX_IndexConfigffrapperCompHandles 和 0MX_C0NFIG_MG_ C0MP0NENTHANDLESTYPE。在以上论述的实施例中,媒体播放器应用通过承担IL客户端的角色来充当客户端组件。然而,应当理解,媒体播放器应用只是提供了示例性的IL客户端。此外,其他应用将同样提供合适的IL客户端。例如,其他合适的IL客户端可以是其他软件应用,例如,电子邮件应用或日历应用。同时,IL客户端的角色可由诸如OpenMAX AL API等框架来提供。 另外,IL客户端的角色可由能够调用OpenMAX IL环境的功能或方法(例如,包装的多媒体子组件的功能)的计算装置的任意软件来提供。应当理解,根据本发明的一些实施例的包装组件可用在除移动电话之外的计算装置平台上。例如,包装可与个人数字助理、膝上计算机、桌面计算机、便携式MP3播放器或便携式MP4播放器一起使用。本发明的以上示例和实施例涉及OpenMAX IL API和标准。然而,涉及其他现有多媒体应用编程接口的本发明的一些实施例在所附权利要求的范围内。最后,可对上述实施例做出各种附加和修改,以提供进一步的实施例。对于作为本领域技术人员的预期读者明显的是,任意和所有可预见的都落在所附权利要求的范围内。
权利要求
1.一种方法,包括使用软件包装组件在计算装置中执行多媒体功能,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件被配置为响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。
2.根据权利要求1所述的方法,进一步包括,在执行所述多媒体功能时,将所述一个或多个多媒体子组件中的至少一个插入到所述包装组件中和/或从所述包装组件移除。
3.根据前述权利要求中任一项所述的方法,进一步包括,向所述客户端组件提供输出, 所述输出包括来自所述一个或多个多媒体子组件中的至少一个的回调。
4.根据前述权利要求中任一项所述的方法,进一步包括,向所述客户端组件提供访问, 以便控制所述一个或多个多媒体子组件中的至少一个的功能。
5.根据前述权利要求中任一项所述的方法,其中,所述包装组件进一步包括与所述一个或多个多媒体子组件中的一个的输入端口对应的输入端口,以及与所述一个或多个多媒体子组件中的一个的输出端口对应的输出端口,其中,所述输入端口和输出端口被配置为与其他包装组件和所述客户端组件通信。
6.根据权利要求5所述的方法,其中,所述输入和输出端口与所述一个或多个多媒体子组件的边缘端口对应。
7.根据前述权利要求中任一项所述的方法,进一步包括,管理通过所述一个或多个多媒体子组件中的至少一个对所述计算装置的有限资源的访问。
8.根据前述权利要求中任一项所述的方法,进一步包括如果对于所述包装组件,有足够的计算装置资源可用,以控制所述一个或多个多媒体子组件执行所述多媒体功能,则从所述客户端组件接收待通知的指示;识别当前是否有足够的计算装置资源可用;以及,如果当前有足够的计算装置资源可用,则通知所述客户端组件。
9.根据前述权利要求中任一项所述的方法,其中,所述包装组件包括多个包装组件。
10.根据前述权利要求中任一项所述的方法,其中,所述一个或多个多媒体子组件中的至少一个是包装组件。
11.根据前述权利要求中任一项所述的方法,其中,所述包装组件符合现有的多媒体应用编程接口。
12.根据权利要求11所述的方法,其中,所述现有的多媒体应用编程接口是OpenMAX IL API。
13.一种设备,包括至少一个处理器;以及至少一个存储器,其包括计算机程序代码,所述至少一个存储器和所述计算机程序代码被配置用来与所述至少一个处理器一起使所述设备至少执行使用软件包装组件在所述设备中执行多媒体功能,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件被配置为响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。
14.一种计算机程序,包括用于使用软件包装组件在计算装置中执行多媒体功能的代码,所述包装组件包括一个或多个多媒体软件子组件,每个所述多媒体软件子组件执行至少部分所述多媒体功能,所述包装组件被配置为响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。
15.一种计算机可读介质,其编码有当被计算装置执行时使该计算装置执行如权利要求1至12所述的方法的指令。
全文摘要
本发明的示例涉及使用软件包装组件在计算装置中执行多媒体功能的方法、设备和计算机程序。所述包装组件包括一个或多个多媒体软件子组件。每个子组件执行至少部分所述多媒体功能。所述包装组件能够用来响应于来自客户端组件的请求,控制所述一个或多个多媒体子组件执行所述多媒体功能。
文档编号G06F9/445GK102473100SQ201080029405
公开日2012年5月23日 申请日期2010年5月25日 优先权日2009年6月29日
发明者M·P·博雷戈 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1