多媒体应用程序的运行方法

文档序号:7647200阅读:211来源:国知局
专利名称:多媒体应用程序的运行方法
技术领域
本发明涉及运行一组多媒体应用程序的方法。
例如,这样的一种方法可以通过一个在互联网型的分布式系统中对MPEG(运动图象专家组)音频和视频数据进行访问的浏览器用于一台计算机中。
背景技术
一个音频-视频播放器是一个在计算机上运行的程序,它将音频和视频数据流解码,以产生一个视听图象。

图1是一个依照先前的技术来播放音频和视频帧的方法的模块图。该方法播放MPEG-4数据,包括一个信号分离步骤(DEMUX),将一个MPEG一4解码数据流(IS)分割为一个音频流(AS)和几个视频流(VS1-VSn)。这样一种方法包括三个主要任务。
首先,该方法包括一个音频解码和再现任务(DR)。这一任务解码一个音频流(AS),并通过向音响系统硬件提供解码的音频采样来驱动声音着色系统。音响系统硬件将这些数字音频采样值转换为一个模拟声音信号(SO),送至扬声器(LS)。
该方法还包括一个视频解码任务(DEC)。该任务解码至少一个视频流(VS),并将解码的视频帧存储到一个视频帧缓冲器中(BUF)。
最后,该方法还包括一个视频再现任务(REN)。该任务从视频帧缓冲器中获取解码的视频帧(VF),向视频系统硬件提供对应于解码视频帧的象素,以便组成一个视频景象(SC)。该视频再现步骤还进行驱动一个监视器(MON)所需的所有视频帧转换。
欧洲专利申请n°0817103描述了一种用来在互联网型的分布式系统上提供多媒体内容数据访问的方法和系统。这样一种方法允许根据上面的描述,利用一个网络浏览器来播放多媒体数据,音频和视频的回放是在独立的控制线程上进行的。
发明概述本发明的一个目的是提供一种运行一组多媒体应用程序的方法,允许更好的音频和视频帧的同步和实时播放。本发明有下面几方面的考虑。
在依照先前技术的方法中,每个多媒体应用程序都含有自身的调度器,并在自身的线程中运行。所以,即使所有的应用程序固有的任务是同步的,总的应用程序也是没有必要同步的。在一个网络浏览器中集成多媒体播放器的例子中,每个应用程序都具有其自己的调度器,多媒体播放器可以解码并输送给浏览器一个准备显示的帧,比浏览器可能显示的速度要快。但是如果浏览器每秒仅可显示10帧,那么就无需每秒解码25帧视频序列。同样,如果中央处理器,后面称之为CPU,每秒钟不能完成多于10帧的解码,那么多媒体播放器也就不需每秒再现25帧。
为了克服先前技术的限制,依照本发明的用来运行一组多媒体应用程序的方法的特征包含了以下的步骤为了提供一个目标时间,在一开始创建一个公共的调度器,在公共调度器中注册任务,和控制任务的执行为目标时间的函数。
与一般的调度策略,如一个在操作系统内核程序中实现的调度相反,公共调度器的使用允许在实时播放时全部的应用程序保持同步。
而且,依照本发明的用来运行一组多媒体应用程序的方法的特征在于它进一步包括一个根据调度器提供的目标时间和一个任务的相关计时信息来计算该任务的一个局部时间的步骤。
这样一种方法保证了整个应用程序的正确运行。为此,提出了三个特定的实施方案。
在第一个实施方案中,运行一组多媒体应用程序的方法的特征是计算步骤包括根据一个任务的起始时间和调度器的起始时间的差值来确定该任务的相关的起始时间偏移量的子步骤。例如,当正在播放一个视频序列时,一个视频解码任务应需知道目标时间,以便解码正确的帧。但是,解码任务将首先试图解码对应于目标时间的帧,而且不会成功,因为目标时间不是0秒。这就是为什么依照本发明的方法为这一任务计算一个局部时间的原因,这样在一个公共调度器环境中保证了一个正确的视频解码。
在第二个实施方案中,依照本发明的运行一组多媒体应用程序的方法的特征是任务包含在一个来自于外部信源的多媒体应用程序中,计算步骤包括根据调度器起始时间和外部多媒体应用程序的起始时间的差值来确定一个外部时间偏移量的子步骤,根据目标时间和外部时间偏移量来计算局部时间。结果是,该方法允许从本地存储器读取或从广播或网络接收数字解码数据流。
在第三个实施方案中,运行一组多媒体应用程序的方法的特征是任务适用于一个时间限制的数据流,计算步骤包括确定数据流的周期,每次完成数据流时增加计数器,和根据目标时间和一个周期与计数值的乘积的差值来计算局部时间的子步骤。结果是,局部时间在从零到数据流的周期之间变化,改方法允许在上述的数据流上循环。
下面将参考附图来详细描述本发明的这些和其它特征。
附图简述现在将通过例子,参考附图来对本发明加以描述,其中图1是依照先前技术的运行一组多媒体应用程序的方法的模块图,图2是依照本发明的运行一组多媒体应用程序的方法的模块图,图3显示的是一个MPEG-4数据流的结构。
发明详述本发明设计一种运行一组多媒体应用程序的方法。在优选的实施方案中,一个主应用程序是一个VRML(虚拟现实造型语言)浏览器(A1),其中集成了至少一个辅助应用程序,即多媒体播放器(A2),总的应用程序为精确的任务调度提供了一个一般的易于使用的机制,来处理一个数字解码数据流(IS),以便为一个视听再现系统(LS,MON)提供音频和视频信号(SO,SC)。
在优选的实施方案中,多媒体播放器是一个MPEG-4播放器,首先包括一个多路输出选择器(DEMUX),将数字解码数据流分割为一个音频流(AS)和几个视频流(VS1-VSn)。
MPEG-4播放器还包括下面的任务第一类型音频解码和再现(DR)任务(TTD1),解码(ADEC)音频流,对通过解码提供的解码音频帧(AF)进行滤波(FIL),和再现音频帧。
第二种解码(DEC)视频流的任务(TTD2),提供视频对象,其解码的视频帧(VF1-VFn)被存储在视频缓冲器(BUF1-BUFn)中,一个视频解码任务与每个视频流相关联,和第三种再现和展示(REN)存储器视频缓冲器中的解码的视频帧的任务(TTD3)。
VRML浏览器包括一个第四种在屏幕上更新音频和视频帧再现(DIS)的任务(TTD4),包括接收由第三种任务提供的音频和视频帧,在两维对象上将其再现和展示,然后在一个三维对象上映射该两维对象。
应该注意到,存在与MovieTexture节点一样多的MPEG-4播放器,即播放视频序列的VRML节点。
最后,总的应用程序包括一个用于注册先前任务的调度器,为上述任务指定目标时间,控制任务的执行为目标时间的函数。
首先,一个调度器被定义为一个软件模块,可以在其中注册任务。一旦一个任务被注册,调度器保证该任务在正确的时间执行。通过一个调度周期启动调度器。例如,对于一个每秒25帧的视频序列,周期为40微秒。调度器管理一个任务循环;在注册任务列表中一个接一个地执行每个任务。通过调用其例程来执行一个任务。
调度器的一个主要作用是维护目标时间。目标时间是通过调度器使用系统时钟来计算的。例如,如果视频序列在124533开始,在播放22秒后媒体时间是22秒,它是根据系统时钟计算出来的,此时系统时钟是124555。调度器保证了此时执行的音频和视频解码与数字解码数据流中具有一个22秒媒体时间的数据相对应。
调度器的一个目的是保证播放器不会运行太快,对于浏览器和其它任务和程序来讲是友好的。为此,调度器在每个循环的结尾计算其运行所消耗的有效时间,并将其与调度周期相比较。如果此次循环的执行时间小于调度周期,则调度器将按该时间差调用一个操作系统睡眠,这样有效保证了第一,播放器不会运行太快,第二,播放器对于其它任务或应用程序来件是友好的,因为操作系统的睡眠调用使得操作系统内核转换到其它任务和应用程序。
调度器的另一个目的是保证播放器不会运行太慢。为此,调度器为每个任务执行例程指定目标时间。因而,每个任务了解当时应该做什么。
在先前的技术中,每个视频序列具有其自己的调度器,并在自己的线程中运行。解码器将解码的视频帧送给再现和展示任务。该任务重构MPEG-4景象并将其放置在称为DirectDrawSurface的准备显示的帧中。重现和展示任务也负责显示。
本应用程序的情况是不同的,其中浏览器可以在两个不同的时间启动两个不同的视频序列。这种情况下,再现和展示任务仅给出一个DirectDraw面,浏览器的再现任务在三维对象上进行映射。
依照本发明,运行一组多媒体应用程序的方法共享一个公共的调度器。在启动其它调度器之前,对应于一个每秒25帧的视频序列,创建一个具有一个40微妙周期的空的调度器。然后,产生一个对应于VRML浏览器主循环的任务,并将其插入到任务的调度器列表中。当对应于一个MovieTexture节点的一个MPEG-4视频序列开始时,所需的任务,即视频解码、视频再现和展示、以及音频解码和再现任务,被插入到调度器中。
当先前的目标时间和新的目标时间之间的差值大于给定的阈值时,该任务减少将进行的处理量,以便允许总的应用程序恢复同步。为此,运行一组多媒体应用程序的方法进一步包括为一个任务给出优先级和调度器根据该任务的目标时间和优先级来执行任务的步骤。
在优选的实施方案中,实现了四个特定的CPU可量测性机制。为音频解码和再现任务赋以最高的优先级,然后是视频解码任务,接下来是视频再现任务,最后,最低的优先级赋给浏览器显示本身的更新任务。
第一个保持播放器同步的机制是当CUP太忙时,跳过浏览器显示本身的更新。
第二个保持播放器同步的机制是当CPU太忙时跳过再现帧的任务。利用上述的调度器,实现如下当视频再现任务(REN)接收到一个具有目标时间的执行调用时,它寻址视频帧缓冲器(BUF),发现最接近该目标时间的视频帧(VF)。然后,视频再现任务仅显示该帧并返回。这一算法所产生的效应如下如果没有足够的CPU周期,则以一个较低的帧速率,例如每秒12帧的速率来再现一个原始的每秒25帧的帧序列。这是一个非常有效的机制,允许在机器上运行MPEG-4播放器,否则机器就不够有效。它还可以同时运行其它的应用程序。用户见到的仅仅是当CPU很忙时,视频帧速率将较慢。
第三个可量测性机制是当第一个机制不能充分保持实时同步时,跳过视频解码。但是,MPEG-4视频解码,更一般情况下,还有多数的视频编码方法,都不能在数字编码数据流中的任意点上恢复。这是因为视频编码算法是提取相邻帧间的时间冗余,以便改进编码效率。这些帧被称为预测的或P帧编码器仅发送当前帧和前面的一个帧间的差值。这样,先前的帧必须是已被解码。视频标准还规范化了另外一种类型的被称为内码或I帧的可以单独解码的帧。这些帧是随机存取点,即在数字编码数据流可以开始解码的点。所以,当视频解码任务(DEC)决定跳过解码时,视频显示冻结最后的图象,直到达到对应于一个随机存取点的目标时间。通常每秒利用一个I帧编码一个视频序列。结果是,调度器停止视频解码,并根据可用的CPU周期数,即等同于视频帧速率的最大减小量,来恢复视频解码。由于视频冻结很容易使用户造成混淆,仅在第一个CPU机制无助于播放器保持实时同步时,才使用该策略。因为调度器在三个主要任务上快速循环,通常,在该视频帧速率下,音频数据应该与视频数据同步。
第四机制是如果先前两个机制不能充分保持实时同步时,跳过音频解码。这样一个机制引起一个静止。这就是为什么使周适当的滤波器(FIR)来防止一个这一异常静止的开始和结束时噼拍噪声。该音频解码任务(ADEC)必须有效地产生相对于该静止的声音采样。这种情况下,由调度器(SCH)提供的目标时间被用来计算该静止的确切长度,这样,当CPU不怎么忙时,可以通过音频和视频帧的精确同步来恢复正常的播放。幸而,音频编码算法使得随机存取点的周期比视频编码小得多,通常为几微秒。所以,可以立即恢复正常的音频解码。由于音频解码比视频解码的CPU密集度小,通常仅当计算机因时间敏感任务而非常忙或者当用户启动了许多CPU密集型的应用程序时才会发生。
因此,利用这一新方法,仅有一个在一个VRML浏览器和至少一个MPEG-4播放器共享的公共的调度器,并共享一个公共时间线程。
运行一组多媒体应用程序的方法进一步包括一个根据调度器提供的目标时间和任务相关时间信息来计算该任务的局部时间的步骤。
当播放一部电影时,相应的解码器需要知道目标时间,以便解码正确的帧。问题是如果一个用户要在浏览器的主体启动之后启动一个20秒的视频序列时,解码器将试图根据目标时间解码20秒而不是0秒的帧。
为了解决这一问题,根据一个启动时间偏移量和目标时间的差值来计算局部时间。
局部时间=目标时间-启动时间偏移量。
根据一个任务的启动时间和调度器启动时间来计算启动时间偏移量。
启动时间偏移量=任务启动时间-调度器启动时间当必须实行该任务时,它为其执行线程计算上述的局部时间,这样就具有了自己的时间参考。结果是,不改变调度器提供的其它任务的目标时间。
利用这样一个机制,每个任务具有其自己与将要播放的视频序列相一致的时间参考,并仍有一个调度器的全局概念。
依照本发明的方法允许从一个本地存储器中读取数字编码数据流,但还应允许从一个广播和网络中接收数据流。
为此,来自于网络的MPEG-4文件和MPEG-4数据流(IS)都被当作一个如图3所示的存取单元(AU)的发生器。这一抽象层允许设计一个读取和解码存取单元的播放器,而不用考虑MPEG-4的来源类型。
在编码器侧,为每个存取单元给出其自己的组成时间标记(CTS),第一个单元从零开始,并根据其组合的时间(t)增加,用微秒表示。这些组成时间标记为解码器提供了时间的概念,因此向解码器表明解码是太快还是太慢。
当前的组成标记是与解码器时钟相一致的。不幸的是,CPU负荷、网络时延或其它的事情可能在解码器和要解码的当前单元之间产生一个延迟。这种情况下,解码器可能必须跳过一些存取单元,如跳到将来,以便停留在最新的存取单元。
例如,如果一个MPEG-4网络计算机辅助视频服务器于下午1200在网络某处启动,一个实时编码器通过增加从0开始的组成时间标记,产生存取单元。现在,如果具有一个网络计算机辅助客户的主应用程序在1200+10200微秒时启动,则一个播放器试图利用一个等于0的组成时间标记来解码该存取单元,这是不可能的,因为在本例中,具有范围为0-10180微秒的存取单元是无效的。
为了避免解码器搜索一个无效的存取单元,在解码器的时间线上增加一个外部时间偏移量,该偏移量对应于接收到的第一个存取单元的组成时间标记,本例中为10200微秒。结果是,解码时间参考等于由调度器提供的目标时间加上外部时间偏移量局部时间=目标时间+外部时间偏移量。
在一个公共调度器的环境中,时间线是唯一的,由所有的任务共享。调度器规定所有应用程序的分时,因此必须最先启动。时间线开始于0微秒,并不能根据一个特定的任务而改变,因为这样会影响所有其它的任务。根据接收到的第一个存取单元的组成时间标记向任务本身而不是调度器报告时间偏移量,可以允许两个独立的必须同步的应用程序之间有一个时间偏移,而不会影响公共调度器。
依照本发明的运行一组多媒体应用程序的方法还适用于时间有限的数据流。在总的应用程序结束之前所有的线程都不能中断时特别有用。在这些情况下,当一个视频解码任务被认为是输入数据流上的循环时,出现一个问题,因为由调度器给定的一个时间与数据流的存取单元之间变为非同步。
解决方案是改变传送给MPEG-4视频解码任务的,但是由调度器所拥有的时间。当到达数据流尾部时,必须重置该时间。第一次发生时,存储数据流周期,每次到达数据流的结尾处时,增加一个被初始化为零的计数器。然后,按如下方式在MPEG-4解码任务内部计算一个局部时间局部时间=目标时间-(数据流周期×计数值)。
目标时间在零到无穷大之间变化,但是局部时间是在零和数据周期之间变化,每次到达数据流结尾时被复位。因而,MPEG-4视频解码任务能够在数据流上循环。
有些情况下,两种类型的偏移量都是适用的,且都是渐增的。例如,假定计算机辅助管理服务器于1200启动,主程序于1210启动,视频解码任务于1212启动。在这种情况下,局部时间计算如下局部时间=目标时间-起始时间偏移量+外部时间偏移量。
应该注意到依照本发明的方法可以延伸到任意套多媒体应用程序,应用程序中的任务来处理按时间索引的数据。
前面描述了用于MPEG-4数据应用程序的方法,其中解码的复杂性的变化非常大,这样必须仔细管理CPU的负荷,以避免CPU周期的浪费。但是,它也同样适用于其它可提供多媒体数据的编码技术。
附图2是非常概略的,仅表现了本发明的一种可能的实施方案。这样,尽管该附图将不同的功能显示为不同的模块,但绝不是排除采用单一软件项目来实现几个功能的可能性。也不排除几个软件项目完成一个功能的可能性。在不背离本发明的宗旨和范围的前提下,也可以采用上面提到的应用程序或任务以外的应用程序或任务。
可以在一个集成电路中实现本发明的方法,集成电路可以集成在一个机顶盒或计算机中。加载到程序存储器中的一组指令使集成电路实现上述的方法。该套指令可以存储在数据载体,如磁盘中。可以从数据载体中读取该套指令,以便将其加载到集成电路的程序存储器中,来实现其作用。
显然,使用动词“包括”及其变化形式,表明不排除存在权利声明规定以外的其它步骤或元素。不应将后面的权利声明中的索引符号理解为权利声明的限制。
权利要求
1.一种运行一组多媒体应用程序(A)的方法,每个多媒体应用程序包括一系列任务(TTD),其特征是该方法包括步骤在启动时创建一个公共调度器(SCH),以便提供一个目标时间,在公共调度器中注册任务,和控制任务的执行为目标时间的函数。
2.依照权利要求1的播放一组多媒体应用程序的方法,其特征是它进一步包括一个根据调度器提供的目标时间和该任务的相关时间信息来计算一个局部时间的步骤。
3.依照权利要求2的播放一组多媒体应用程序的方法,其特征是计算步骤包括如下的子步骤根据任务的起始时间和调度器起始时间的差值来确定一个与该任务相关的起始时间偏移量,和根据目标时间和起始时间偏移量的差值来计算局部时间。
4.依照权利要求2的播放一组多媒体应用程序的方法,其特征是任务是包含来自于外部信源的多媒体应用程序,计算步骤包括如下的子步骤根据调度器起始时间和外部多媒体应用程序的起始时间的差值,来确定一个外部多媒体应用程序的外部时间偏移量,和根据目标时间和外部时间偏移量的差值来计算局部时间。
5.依照权利要求2的播放一组多媒体应用程序的方法,其特征是任务适用于一个时间受限的数据流,计算步骤包括的子步骤有确定数据流的一个周期,每次完成数据流时,增加一个计数器,和根据目标时间和周期与计数器的乘积之间的差值来计算局部时间。
6.依照权利要求1的播放一组多媒体应用程序的方法,其特征是它进一步包括一个为一个任务指定优先级的步骤,调度器适合根据目标时间和优先级来控制任务的执行。
7.依照权利要求6的播放一组多媒体应用程序的方法,其特征是一个多媒体应用程序是一个视听应用程序,包括一个音频解码和再现(DR)任务,将包含在数字编码的数据流中的一个音频流(AS)解码(ADEC),并再现由解码提供的解码的音频帧(AF),至少一个解码(DEC)一个包含在数字编码数据流中的视频流(VS)的任务,为一个视频缓冲器(BUF)提供一个解码的视频帧(VF),和一个再现(REN)存储在视频缓冲器中的解码视频帧的任务,和另一个应用程序是一个浏览器,包括在一个视听再现系统上重现(DIS)音频和视频帧的任务,根据其优先级来引用该任务,将最高的优先级赋予音频解码和再现任务。
8.一种用于机顶盒的计算机程序产品,包括一组指令,当加载到机顶盒中时,使机顶盒实现依照权利要求1-7的方法。
9.一种用于计算机的计算机程序产品,包括一组指令,当加载到计算机中时,使计算机实现依照权利要求1-7的方法。
全文摘要
本发明涉及的是一种运行一组多媒体应用程序的方法(A)。每个多媒体应用程序包括一系列任务(TTD),特征是该方法包括的步骤有在启动时创建一个公共调度器(SCH),以便提供一个目标时间,在公共调度器中注册任务,和根据目标时间来控制任务的执行。该方法还包括一个为一个任务指定优先级的步骤,调度器适用于根据目标时间和优先级来控制任务的执行。该方法还进一步包括一个根据由调度器提供的目标时间和任务的相关时间信息来计算一个局部时间的步骤。利用这一机制,每个任务都有自己的时间参考,这样保证了总体应用程序的正确运行,保持了一个调度的全局概念。
文档编号H04N7/24GK1393094SQ01803149
公开日2003年1月22日 申请日期2001年8月2日 优先权日2000年8月16日
发明者L·M·O·杜奎斯诺伊斯, G·布罗尔德, T·杜兰迪, T·普兰特罗斯 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1