本发明大体上涉及通信,且更具体地说,但不排它地,涉及用于动态视频切换的方法和设备。
背景技术:
市场需要可同时解码多个数据流(例如音频和视频数据流)的装置。视频数据流含有大量数据,因此在传输之前,对视频数据进行压缩以有效地使用传输媒体。视频压缩有效地将视频数据译码为流式视频格式。压缩将视频数据转换为可有效地传输的具有较少位的经压缩位流格式。压缩的逆过程为解压缩,也称作解码,其产生原始视频数据的复制品(或相当准确的近似)。
编解码器为对经压缩位流进行译码和解码的装置。使用硬件解码器与使用软件解码器相比为优选的,这归因于例如性能、功率消耗和处理器循环的交替使用等理由。因此,某些解码器类型与其它解码器类型相比为优选的,不管解码器是包括门块、中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)还是这些元件的组合。
参看图1,当两个或两个以上经编码数据流输入到常规装置时,先到先得常规指派模型100在视频事件发生时将传入的数据流指派给可用编解码器。视频事件触发先到先得常规指派模型100。举例来说,视频事件可为与视频流有关的一个或一个以上处理,例如开始、完成、暂停、恢复、查找和/或改变分辨率。在图1的实例中,仅一个硬件编解码器可用。第一所接收数据流为视频1 105,其被指派给硬件视频编解码器。随后接收第二数据流,视频2 110,且因为无硬件编解码器可用,所以将视频2 110指派给软件编解码器。随后接收的数据流也指派给软件编解码器,因为唯一的硬件编解码器预先被占用以用于处理视频1 105。在常规指派模型100中,一旦数据流被指派给编解码器,其便不会被重新指派给不同编解码器。因此,一旦指派给软件编解码器,视频2 110和随后的数据流便不会被指派给硬件编解码器,即使硬件编解码器停止处理视频1 105也如此。
常规指派模型100为简单的,但不是最佳的。硬件编解码器可非常快速且有效地解 码复杂的编码方案(例如,MPEG-4),而相对较简单的译码方案(例如,H.261)可由硬件编解码器和软件编解码器两者快速且有效地解码。然而,常规指派模型100不会有意地将数据流指派给可最有效地解码数据流的编解码器类型(硬件或软件)。再次参看图1,如果视频1 105具有简单的译码方案,且视频2 110具有复杂的译码方案,那么硬件编解码器的能力未充分用于解码视频1 105,而处理器努力解码视频2 110。观看视频1和视频2 110的用户体验视频1 105的令人满意的经解码版本,而用户期待提供比视频1 105高的性能的视频2 110(因为视频2 110的复杂译码方案)可能含有假影、丢失帧和量化噪声。因此,常规指派模型100浪费资源、效率低且向用户提供低于标准的结果。
因此,存在对用以解决上述问题的方法和设备的产业需要。
技术实现要素:
本发明的示范性实施例涉及用于动态视频切换的系统和方法。
在实例中,提供一种动态编解码器分配方法。所述方法包含接收多个数据流以及确定所述数据流中的每一者的相应编解码器负载因数。按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将所述数据流指派给编解码器。最初,将所述数据流指派给硬件编解码器,直到将所述硬件编解码器加载到大体最大容量为止。如果所述硬件编解码器加载到大体最大容量,那么将剩余数据流指派给软件编解码器。当接收到新数据流时,所述方法重复,且可基于数据流的相对编解码器负载因数而将先前指派的数据流从硬件编解码器重新指派给软件编解码器,且反之亦然。
在进一步实例中,提供一种动态编解码器分配设备。动态编解码器分配设备包含用于接收多个数据流的装置和用于确定所述多个数据流中的每一数据流的相应编解码器负载因数的装置。动态编解码器分配设备还包含用于按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将所述数据流指派给硬件编解码器直到所述硬件编解码器加载到大体最大容量为止的装置;以及用于在所述硬件编解码器加载到大体最大容量的情况下将剩余数据流指派给软件编解码器的装置。
在另一实例中,提供一种非暂时计算机可读媒体。所述非暂时计算机可读媒体包括存储在其上的指令,所述指令在由处理器执行的情况下致使所述处理器执行动态编解码器分配方法。所述动态编解码器分配方法包含接收多个数据流以及确定所述数据流中的每一者的相应编解码器负载因数。按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将所述数据流指派给编解码器。最初,将所述数据流指派给硬件编解码器,直到将所述硬件编解码器加载到大体最大容量为止。如果所述硬件编解码器加载到 大体最大容量,那么将剩余数据流指派给软件编解码器。当接收到新数据流时,所述方法重复,且可基于数据流的相对编解码器负载因数而将先前指派的数据流从硬件编解码器重新指派给软件编解码器,且反之亦然。
在进一步实例中,提供一种动态编解码器分配设备。所述动态编解码器分配设备包含硬件编解码器以及耦合到所述硬件编解码器的处理器。所述处理器经配置以接收多个数据流;确定所述多个数据流中的每一数据流的相应编解码器负载因数;按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将所述数据流指派给所述硬件编解码器,直到所述硬件编解码器加载到大体最大容量为止;以及如果所述硬件编解码器加载到大体最大容量,那么将剩余数据流指派给软件编解码器。
其它特征和优点在所附权利要求书且从以下详细描述显而易见。
附图说明
呈现附图以辅助对本发明的实施例的描述,且提供附图仅用于说明实施例而不限制实施例。
图1描绘常规指派模型。
图2描绘示范性通信装置。
图3描绘示范性动态视频切换装置的工作流程。
图4描绘视频流信息的示范性表。
图5描绘用于动态地指派编解码器的示范性方法的流程图。
图6描绘用于动态地指派编解码器的另一示范性方法的流程图。
图7描绘用于动态地指派编解码器的进一步示范性方法的流程图。
图8描绘动态视频切换方法的示范性时间线。
图9为列出示范性动态视频切换算法的伪码。
根据惯例,出于简单起见而简化图式中的一些。因此,图式可能不描绘给定设备(例如,装置)或方法的所有组件。最后,相似参考标号在整个说明书和图式中用以表示相似特征。
具体实施方式
本发明的各方面揭示于针对本发明的特定实施例的以下描述及相关图式中。可在不脱离本发明的范围的情况下设计替代实施例。此外,将不会详细描述或将省略本发明的众所周知的元件,以免混淆本发明的相关细节。
在本文中使用词语“示范性的”意味着“充当实例、例子或说明”。本文中被描述为“示范性的”任何实施例不必被理解为比其它实施例优选或有利。同样,术语“本发明的实施例”并非要求本发明的所有实施例均包含所论述的特征、优点或操作模式。
本文中所使用的术语仅出于描述特定实施例的目的且不希望限制本发明的实施例。如在本文中所使用,除非上下文另外清楚地指示,否则希望单数形式“一”和“所述”也包含复数形式。举例来说,此处对一硬件编解码器的提及也希望指代多个硬件编解码器。作为进一步实例,此处对一软件编解码器的提及也希望指代多个软件编解码器。而且,术语“包括”和/或“包含”在本文中使用时指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但并不排除一个或一个以上其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。
此外,根据待由(例如)计算装置的元件执行的动作的序列来描述许多实施例。应认识到,本文中描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、编码器、解码器、编解码器,由通过一个或一个以上处理器执行的程序指令或通过其组合来执行。此外,可认为本文中所述的这些动作序列完全实施于任何形式的计算机可读存储媒体内,所述计算机可读存储媒体中已存储有一组对应计算机指令,所述指令在被执行时将致使相关联的处理器执行本文中所述的功能性。因此,本发明的各种方面可以许多不同形式来实施,所有形式均被涵盖在所主张的标的物的范围内。此外,对于本文中所述的实施例的每一者来说,任何所述实施例的对应形式可在本文中被描述为(例如)“经配置以执行所描述的动作的逻辑”。
图2描绘其中可有利地采用本发明的实施例的示范性通信系统200。出于说明的目的,图2展示三个远程单元220、230和250以及两个基站240。应认识到,常规无线通信系统可具有更多的远程单元和基站。远程单元220、230和250包含如下文进一步论述的本发明的实施例225A到225C的至少一部分。图2展示从基站240到远程单元220、230和250的前向链路信号280,以及从远程单元220、230和250到基站240的反向链路信号290。
在图2中,远程单元220展示为移动电话,远程单元230展示为便携式计算机,且远程单元250展示为无线本地环路系统中的固定位置远程单元。举例来说,远程单元可为移动电话、手持式个人通信系统(PCS)单元、便携式数据单元(例如,个人数据助理)、导航装置(例如,具有GPS能力的装置)、机顶盒、音乐播放器、视频播放器、娱乐单元、固定位置数据单元(例如,仪表读取设备),或存储或检索数据或计算机指令的任何其它装置,或其任何组合。尽管图2说明根据本发明的教示的远程单元,但本发明不限于这 些示范性所说明单元。本发明的实施例可适合用于任何装置中。
图3描绘示范性动态视频切换装置300的工作流程。至少两个数据流305A到305N输入到处理器310,例如路由功能块。数据流305A到305N可为音频数据流、视频数据流或两者的组合。处理器310经配置以执行本文描述的方法的至少一部分,且可为中央处理单元(CPU)。举例来说,处理器可确定数据流305A到305N中的每一者的相应编解码器负载因数(m_codecLoad)。按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将数据流305A到305N指派给至少一个硬件编解码器315A到315M,直到硬件编解码器315A到315M经加载到大体最大容量为止。将数据流305A到305N指派给硬件编解码器315A到315M降低CPU的负载和功率消耗。如果硬件编解码器315A到315M加载到大体最大容量,那么将剩余数据流305A到305N指派给至少一个软件编解码器320A到320X。在实例中,软件编解码器320A到320X可为可编程块,例如基于CPU、基于GPU或基于DSP的块。当接收到新数据流时,所述方法重复,且可基于数据流的相对编解码器负载因数而将先前指派的数据流305A到305N从硬件编解码器315A到315M重新指派给软件编解码器320A到320X,且反之亦然。
硬件编解码器315A到315M和软件编解码器320A到320X可为音频编解码器、视频编解码器,和/或两者的组合。硬件编解码器315A到315M和软件编解码器320A到320X还可经配置以不共享资源,例如存储器。或者,在一些应用中,本文中描述的编解码器由解码器取代。使用硬件解码器与使用软件解码器相比为优选的,这归因于例如性能、功率消耗和处理器循环的交替使用等理由。因此,某些解码器类型与其它解码器类型相比为优选的,不管解码器是具有门块、中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)还是这些元件的组合。
处理器310可耦合到缓冲器325,缓冲器325在编解码器指派和重新指派期间缓冲数据流305A到305N中的数据。缓冲器325还可存储将在编解码器重新指派的情况下使用的描述数据流305A到305N的参数的信息。图4中描绘视频流信息的示范性表400。
将来自硬件编解码器315A到315M和软件编解码器320A到320X的输出输入到操作系统330,操作系统330使硬件编解码器315A到315M和软件编解码器320A到320X与使用、显示和/或以其它方式呈现数据流305A到305N中载运的信息的软件应用程序和/或硬件介接。操作系统330和/或软件应用程序可指示显示器335同时显示来自数据流305A到305N的视频数据。
图4描绘视频流信息的示范性表400。视频流信息的表400包含每一所接收数据流的相应负载因数(m_codecLoad)405,以及其它信息,例如当前指派的编解码器类型410、 分辨率行415、分辨率列420,以及其它参数425,例如位流标头信息、序列参数集(SPS)和图片参数集(PPS)。视频流信息的表400从最高负载因数405到最低负载因数405进行分类。
图5描绘用于动态地指派编解码器的示范性方法500的流程图。
在步骤505中,用于动态地指派编解码器的方法500开始接收视频数据流。
在步骤510中,参考表400,将表索引“i”设定为一。
在步骤515中,作出第一确定。如果“i”不小于或等于硬件编解码器的数目,那么执行步骤520,其结束方法。如果“i”小于或等于硬件编解码器的数目,那么执行步骤525。
在步骤525中,作出第二确定。如果对应于表条目“i”的数据流被指派给硬件编解码器,那么方法进行到步骤530,否则执行步骤535。
在步骤530中,将值一加到表条目号“i”,且重复步骤515。
在步骤535中,作出第三确定。如果硬件编解码器不可用,那么方法进行到步骤540,否则执行步骤550。
在步骤540中,识别表条目号“K”,其表示具有最低编解码器负载因数的数据流和所指派的硬件编解码器。
在步骤545中,产生软件编解码器且将其指派用于数据流“K”,且数据流“K”停止使用硬件编解码器。方法接着进行到步骤550。
在步骤550中,将可用硬件编解码器指派给数据流“i”。方法接着重复步骤530。图5的方法不是用于动态地指派编解码器的唯一方法。
图6描绘用于动态地指派编解码器的另一示范性方法600的流程图。
在步骤605中,用于动态地指派编解码器的方法600开始接收视频数据流。
在步骤610中,计算所接收视频数据流的编解码器负载因数(m_codecLoad)。
在步骤615中,作出确定。如果硬件编解码器可用,那么方法进行到步骤620,在步骤620处将所接收视频数据流指派给硬件编解码器。否则,方法进行到步骤625。
在步骤625中,作出决定。如果所接收视频数据流具有所有输入数据流(包含先前输入的数据流)中的最低负载因数,那么方法进行到步骤630,在步骤630处将所接收视频数据流指派给软件编解码器。如果所接收视频数据流不具有所有输入视频(包含先前输入的数据流)中的最低编解码器负载因数,那么方法进行到步骤640。
在步骤640中,将所接收视频数据流指派给硬件编解码器。如果所接收视频数据流具有比先前所指派视频数据流高的编解码器负载因数,那么可将先前指派给硬件编解码 器的不同视频数据流重新指派给软件编解码器。
图7描绘用于动态地指派编解码器的示范性方法700的流程图。
在步骤705中,接收多个数据流。
在步骤710中,确定用于多个数据流中的每一数据流的相应编解码器负载因数(m_codecLoad)。编解码器负载因数可基于编解码器参数、系统功率状态、电池能量等级和/或所估计的编解码器功率消耗。编解码器负载因数还可基于数据流分辨率、显示屏幕上的可见性、播放/暂停/停止状态、熵译码类型,以及视频简档和等级值。确定编解码器负载因数的一个等式为:
m_codecLoad=((视频宽度*视频高度)>>14)*显示器上的可见性*播放
其中如果相应视频中的任一者在显示屏幕上可见,那么“显示器上的可见性”设定为逻辑一,否则设定为逻辑零。如果相应视频正在播放,那么“播放”设定为逻辑一,否则设定为逻辑零。
在步骤715中,按照相应编解码器负载因数以最高相应编解码器负载因数开始按顺序将数据流指派给硬件编解码器,直到硬件编解码器加载到大体最大容量为止。指派可在数据流帧的开始处和/或在数据流处于中流时发生。
在步骤720中,如果硬件编解码器加载到大体最大容量,那么将剩余数据流指派给软件编解码器。
在步骤725中,任选地保存数据流负载因数以供未来使用。
图8描绘动态视频切换方法的示范性时间线800。时间线800展示当随后接收到具有相对较高的编解码器负载因数的第二视频数据流时,将具有低编解码器负载因数的第一视频数据流从硬件编解码器重新指派给软件编解码器的方式。可以任何操作次序执行时间线800所描述的方法的步骤。
在时间一805,接收到具有H.264译码的第一视频数据流810。确定用于第一视频数据流810的相应编解码器负载因数(m_codecLoad)。将第一视频数据流810指派给硬件编解码器,将其在第一缓冲器815中进行缓冲,且解码开始。
在时间二820,接收到具有H.264译码的第二视频数据流825。确定用于第二视频数据流825的相应编解码器负载因数(m_codecLoad)。在此实例中,用于第二视频数据流825的编解码器负载因数比用于第一视频数据流810的编解码器负载因数高。针对第二视频数据流825产生软件编解码器的个例。将第二视频数据流825指派给软件编解码器, 且将其在第二缓冲器830中进行缓冲。
在时间三835,基于第一视频数据流810和第二视频数据流825的编解码器负载因数的相对值,将第一视频数据流810重新指派给软件编解码器且将第二视频数据流825重新指派给硬件编解码器。重新指派可为自动的,可在硬件层执行,且不需要最终用户的任何动作。在时间三835时或之后,针对第一视频数据流810产生软件编解码器的个例,将第一视频数据流815的缓冲版本输入到软件编解码器且解码第一视频数据流810。第一视频数据流810的软件解码开始的时间可与来自第一视频数据流810的关键帧的开始同时进行。第一视频数据流810还停止使用硬件编解码器。另外,在时间三835时或之后,第二视频数据流825停止使用第二视频数据流825的相应软件编解码器,且开始使用硬件编解码器解码来自第二缓冲器的第二视频数据流825的缓冲版本。第二视频数据流825的解码开始的时间可与来自第二视频数据流825的关键帧的开始同时进行。在时间三与第二视频数据流825的缓冲版本的解码的开始之间存在时间延迟(Dt)。在实例中,Dt太短以致无法由第一视频数据流810和第二视频数据流825的观看者察觉到。在额外实例中,在切换时经解码视频存在小暂停或损坏。
在时间四840,第一视频数据流810中止,且第一视频数据流810的相应软件编解码器的个例停止。在时间五845,第二视频数据流825中止,且第二视频数据流825对硬件编解码器的使用停止。
动态指派方法适用于编码和解码过程两者。图9为列出示范性动态视频切换算法的伪码900,其描述用于动态视频切换的方法。
所属领域的技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在以上描述中始终参考的数据、指令、命令、信息、信号、位、符号及码片。
此外,所属领域的技术人员将了解,结合本文中所揭示的实施例而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清楚说明硬件与软件的此互换性,上文已大致关于其功能性而描述了各种说明性组件、块、模块、电路及步骤。所述功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但所述实施决策不应被解释为会导致脱离本发明的范围。
结合本文中所揭示的实施例而描述的方法、序列及/或算法可直接实施于硬件中、由处理器执行的软件模块中或两者的组合中。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式磁盘、 CD-ROM,或此项技术中已知的任一其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体式。
因此,本发明的实施例可包含实施用于动态视频切换的方法的计算机可读媒体。因此,本发明并不限于所说明的实例且用于执行本文中所描述的功能性的任何装置均包含在本发明的实施例中。
虽然前文的揭示内容展示本发明的说明性实施例,但应注意在不脱离如附加的权利要求书所界定的本发明的范围的情况下,可在本文中进行各种改变及修改。无需以任何特定次序来执行根据本文中所述的本发明的实施例的方法权利要求的功能、步骤及/或动作。此外,尽管可以单数形式描述或主张本发明的元件,但除非明确陈述对于单数的限制,否则也涵盖复数形式。