具体实施方式
为了增进对媒体内容播放器的投入和用户满意度,期望提供视频、音频和/或数据内容的高质量呈现。当前,当用户期望主观评价由不同媒体内容播放器或其媒体处理组件所产生的视频质量时,通常通过捕获被测试的播放器和/或组件的输出并连续比较它与参考播放器和/或组件的输出来执行这样的评价。常常需要许多耗时的步骤(诸如解码和将未压缩的解码数据保存到单独文件内),之后连续比较未压缩的文件,且人记忆常常会导致不正确的质量评估。尽管某些已知的媒体内容播放器能同时再现和/或呈现多于一个媒体内容项目(例如,主电影以及诸如导演评论、演员传记或广告之类的特征),这样的媒体内容播放器通常不允许对多个输入引脚(pin)去隔行(deinterlace)和/或实时呈现质量比较。
在本文中描述了媒体处理比较***(“MPCS”)和技术,其允许评价媒体呈现质量,而无需耗时的中间步骤和存储(例如解码并保存未压缩的解码数据到单独文件内且然后连续比较未压缩的文件)。MPCS和技术便于在特定媒体内容播放器中在由执行相同功能的媒体处理组件的不同实例(例如,由不同实体供应的媒体处理组件的实例)产生的媒体呈现之间进行同时的主观质量比较。在一个示例性实施方式中,媒体处理组件包括但不限于呈硬件、软件、固件和/或其组合的形式的解析器、编码器/解码器对(“编解码器”)、解密器和/或解复用器或其组合的实例。
转至附图,其中同样的附图标记指代同样的组件,图1为MPCS 100的示例性实施方式的简化功能方块图。一般而言,设计选择指示如何实施MPCS 100的具体功能。这样的功能可使用硬件、软件、固件或其组合来实施。
在该示例性实施方式中,MPCS 100是与媒体内容播放器相关联的多媒体管线(例如在个人计算设备中操作的Windows®多媒体管线)或操作于其内。但应了解任何已知或后来开发的框架可用于实施多媒体处理管线,且任何已知或后来开发的媒体内容播放器操作环境是可能的。媒体内容播放器和操作环境的实例因此包括但不限于:光学媒体播放器;计算设备的操作***;个人媒体播放器;机顶盒;服务器,个人计算机;视频记录器;移动电话;个人数字助理;以及游戏设备。
如图1中所示的那样,MPCS从媒体源102接收媒体内容项目105,使用媒体处理组件(一个或多个)104的两个或更多实例(示出实例1至N)来执行处理任务,并使用再现器106将用于向用户(未示出)呈现的媒体内容项目准备为两个或更多同步媒体呈现157(示出媒体呈现1至N,对应于媒体处理组件(一个或多个)的实例1至N)。
媒体源102代表从其中导出或获得媒体内容项目105的任何设备、位置或数据。媒体源102的实例包括但不限于光学媒体、硬驱动器、网络位置、空中传输和其他源。一般而言,任何计算机可读介质可用作媒体源102(示出计算机可读介质404且在下文中结合图4进一步讨论)。
媒体内容项目105代表布置为多个可个别呈现的单元的数字信息(例如视频、音频、图形、图像、数据或其组合)的有序集合(例如流),在本文中被称作“媒体样本”。在示例性情形下,特定媒体内容项目105为具有循序次序帧的视频剪辑。如图所示的那样,在处理之前,媒体样本被称作编码的媒体样本107,在经由媒体处理组件(一个或多个)104的实例(在下文中进一步讨论)处理之后,媒体样本被称作解码的媒体样本117,在经由再现器106(在下文中进一步讨论)再现之后,媒体样本被称作再现的媒体样本127,且在经由呈现设备120(也在下文中进一步讨论)呈现和用户选择之后,媒体样本被称作用户指定的媒体样本166。但应了解这里使用的命名约定(一个或多个)只是出于说明目的,且可使用任何期望的命名约定。还应了解可个别呈现的单元和其中的数字信息的序列可以任何期望的方式来分组,且由任何期望的单元来表示,期望的单元例如位、帧、数据分组、图片组、增强的视频对象单元等来表示。还应了解在特定媒体样本内的数字信息或其量可基于若干因素,例如形成该媒体样本的视频、音频、图形、图像或数据的特征或者与从中导出媒体样本的媒体源102相关联的一个或多个参数(例如,媒体源身份和/或位置、编解码参数或设置或加密参数或设置)。
继续参看图1,简要地参看图2,图2为与具有多个可个别呈现的单元(其被称作媒体样本201)的特定媒体内容项目105相关联的示例性媒体时间线200的图形说明。媒体内容项目105具有预定播放持续时间205,其表示媒体内容项目可向用户播放的特定时间量。每个媒体样本201具有在播放持续时间内的相关联的预定呈现时间202。为了在媒体呈现中避免用户可感知的假信号(glitch),一个或多个即将到来的媒体样本201可准备在所安排的/预定的呈现时间(一个或多个)202的前面呈现。
再次参看图1,媒体处理组件(一个或多个)方块104(示出了1至N)表示用于从从媒体源102接收的编码媒体样本107取回视频、音频、图形、图像和/或数据内容并产生解码的媒体样本117的任何设备、指令或技术。媒体处理组件(一个或多个)执行功能,这些功能可以包括但不限于下列中的一个或多个:解析、编码/解码、解密、解复用或前述这些的组合。媒体处理组件(一个或多个)可例如为解析器、编解码器、解密器、解复用器或其组合,它们使用硬件、软件、固件或其任何组合来实现。
一般而言,媒体处理组件(一个或多个)104的每个实例执行相同的功能(一个或多个)来产生对应于可在特定呈现时间202播放的特定编码的媒体样本107的解码的媒体样本117。媒体处理组件(一个或多个)104的特定实例可以各种方式而不同,包括但不限于:由不同的实体供应;根据不同的标准操作;具有不同的设置;或者,以不同的形式(例如,硬件、软件或固件)实现。在一个示例性实施方式中,复制媒体内容项目105或其单独的媒体样本使得存在同时可用于输入到媒体处理组件(一个或多个)104的每个实例的编码的媒体样本107。应了解当编码的媒体样本输入到媒体处理组件(一个或多个)的实例时,处理/解码次序和输出次序可不同。
由媒体处理组件(一个或多个)104的特定实例所产生的解码的媒体样本117存储于一个或多个队列(示出了两个队列,队列1 140和队列N 145)中。如所示,媒体处理组件(一个或多个)104的每个实例在单独队列中存储解码的媒体样本117 ,尽管可使用更少的队列(例如一个队列)。解码的媒体样本117可以(例如由媒体处理组件(一个或多个)的实例)推到队列上或替代地可以(例如由再现器106)拉到队列上。可使用队列锁(示出了队列锁141和142)来维持读/写操作期间队列状态的一致性。
再现器106代表用于以下的任何设备、指令(例如,媒体再现指令110,其如所示包括再现线程111和呈现线程113)或技术:从媒体处理组件(一个或多个)104的实例接收解码的媒体样本117;准备解码的媒体样本以进行再现;以及,产生再现的媒体样本127。再现的媒体样本127表示由再现器106准备在或大约在特定呈现时间202呈现的信息。
在该示例性实施方式中,从特定队列接收由媒体处理组件(一个或多个)的特定实例产生的解码的媒体样本117以经由再现线程111进行再现。再现器106可具有多个输入引脚。可使用队列锁141和142来维持读/写操作期间队列状态的一致性。维持同步性的一种方式是再现线程111保证直到至少一个解码的媒体样本117(可在或大约在相同的呈现时间202播放)可从媒体处理组件(一个或多个)104的每个实例获得才发生解码的媒体样本的再现以产生再现的媒体样本127。维持同步性的另一方式是保证媒体样本不丢下(drop),即,保证从媒体处理组件(一个或多个)的每个实例接收的解码的媒体样本的数量相同。因此,通常并不需要再现线程111传输质量消息给上游媒体处理组件。
呈现线程113协调与媒体处理组件(一个或多个)104的每个实例相关联的再现的媒体样本127的同步呈现。一般而言,与媒体处理组件(一个或多个)104的不同实例相关联的再现的媒体样本127经由诸如显示器和/或扬声器之类的一个或多个呈现设备120向用户呈现为单独的同步媒体呈现157(示出了媒体呈现1至N)。特定媒体呈现157表示由呈现设备120基于再现的媒体样本127产生且由用户感知到的可视和/或可听信息。
特定媒体呈现157通常在逐个样本的基础上呈现,通过呈现时间202与与媒体处理组件(一个或多个)的其他实例相关联的媒体呈现同步。维持同步性的一种方式是呈现线程113保证再现的媒体样本127的呈现直到至少一个与媒体处理组件(一个或多个)的每个实例相关联的再现的媒体样本(可在相同的呈现时间202播放)可获得时才发生。在示例性实施方式中,此可经由再现线程111与队列140、145的交互来实现,如上文所讨论的那样,或者可经由呈现线程113与队列140、145的交互来实现,或经由这两种交互来实现。举例而言,状态变量(未示出)可由呈现线程113用于检查特定队列是否为空的或者具有待呈现的解码和/或再现的样本。在呈现时,可从队列移除解码的和/或再现的媒体样本127。
当媒体源102到达特定媒体内容项目105的结尾时(或者当用户停止、暂停或跳跃到媒体呈现(一个或多个)内的特定样本时),一个或多个事件到达再现器106。在示例性实施方式中,某些事件向再现线程111指示不应期待从媒体处理组件(一个或多个)104的一个或多个实例接收附加解码多媒体样本117,且再现线程111可通知呈现线程113。需要呈现线程113等待退出直到其从再现线程111接收到不应期待接收与媒体处理组件(一个或多个)104的实例中的任一个相关联的再现的媒体样本127的通知为止。
可选地,用户可指定被用于形成编辑的媒体内容文件121的期望的媒体样本(被称作“用户指定的媒体样本166”)。举例而言,用户可在逐个样本的基础上比较媒体呈现157并指定所需再现媒体样本127包括于编辑的媒体内容文件121中(或从编辑的媒体内容文件121丢下(drop)再现的媒体样本)。编辑的媒体内容文件121通常为可存储于暂时或持续存储器中的未压缩文件。
以此方式,用户可高效地且实时地主观评价并比较媒体呈现质量,且因此评价不同媒体处理组件的性能,而无需大量和耗时的中间步骤和存储。
继续参看图1和图2,图3为示出用于使用MPCS 100的各方面再现诸如媒体内容项目105之类的媒体内容的方法的某些方面的流程图。图3中所示的方法(一个或多个)可使用由一个或多个通用、多用途或单用途处理器执行的计算机可执行指令来实施(示例性计算机可执行指令406和处理器402在下文中进一步结合图4讨论)。应了解图3的方法在性质上为示例性的,且在权利要求中限定的主题不必限于下文所描述的具体特征或行为。而是,上文所述的具体特征和行为公开为实施权利要求的实例形式。除非具体地陈述,本文所述的方法不限于特定次序或顺序。此外,所描述的方法或其元素中的某些可同时发生或执行。应了解所示的所有步骤无需在执行本文所述的功能时发生。
该方法始于方块300且在方块302处继续,其中确定与特定媒体内容项目相关联的媒体时间线,诸如媒体时间线200。基于如分别在方块304和306所指示的媒体时间线,识别诸如特定呈现时间202之类的呈现时间和诸如特定编码的媒体样本107之类的相对应的媒体样本。接下来,使用执行相同功能的一个或多个媒体处理组件的两个或更多实例(诸如解析器、编解码器、解密器、解复用器或其组合)对媒体样本解码以产生解码的媒体样本,诸如解码的媒体样本117,存储这些解码的媒体样本(例如在单独队列中)。
在菱形310处,判断是否存在与媒体处理组件(一个或多个)的每个实例相关联的解码的媒体样本(例如,解码的媒体样本是否存在于每个队列中)。如果不是,且其并非该流的结尾或播放尚未结束,如在方块312所确定的那样(在此情况下,该方法退出,如在方块314处所指示的那样),那么方法返回到菱形310直到确定了存在与媒体处理组件(一个或多个)的每个实例相关联的解码的媒体样本为止。
如在方块316处所指示的那样,再现解码的媒体样本(例如以产生再现的媒体样本127)且同步呈现解码的媒体样本(例如,如媒体呈现157以逐个样本的方式)。如在上文中结合图1所讨论的那样,单独的软件或硬件线程,诸如再现线程111和呈现线程113,可用于保证与媒体处理组件(一个或多个)的不同实例相关联的媒体呈现之间的同步。在呈现再现的媒体样本之前,可需要等待直到存在与媒体处理组件(一个或多个)的每个实例相关联的再现的媒体样本为止,这可使用如结合方块308所述的相同(或附加)队列和结合菱形310所述的技术来实现。
如在方块318所示的那样,用户可在逐个样本的基础上高效地且实时地主观评价并比较媒体呈现质量,且因此评价不同媒体处理组件的性能,而无需大量且耗时的中间步骤和存储。
继续参看图1至图3,图4为其中可实施或使用MPCS 100的各方面和/或图3中所示的方法(一个或多个)的示例性操作环境400的简化方块图。操作环境400通常指示很多种通用或专用计算环境,且不预期暗示对本文所述的***(一个或多个)和方法的用途或功能的范围的任何限制。举例而言,操作环境400可为电子设备,诸如移动电话、服务器、游戏设备、个人数字助理、移动电话、个人计算机、个人媒体播放器、计算机/电视设备、机顶盒、硬驱动存储设备、视频记录器、光学介质播放器、暂时地或永久地安装于诸如带轮车辆、飞机或火车这样的运输装备中的设备或另一类型的已知或后来开发的电子设备。
如所示,操作环境400包括处理器(一个或多个)402、计算机可读介质404、计算机可执行指令406、用户接口(一个或多个)416、通信接口(一个或多个)410和专用硬件/固件442。一个或多个总线421或其他通信介质可用于在操作环境400或其元件内、到操作环境400或其元件、从操作环境400或其元件传送数据、地址、控制信号和其他信息。
可为真实或虚拟处理器的处理器402通过执行计算机可执行的指令406来控制操作环境的功能。处理器可执行汇编、编译或机器级的指令来执行特定过程。
计算机可读介质404可表示现在已知或后来开发的能记录、存储或传输计算机可读数据的任何形式的任意多个本地设备或远程设备和其组合。特别地,计算机可读介质404可为或可包括半导体存储器(例如,诸如只读存储器(“ROM”)、任何类型的可编程ROM(“PROM”)、随机存取存储器(“RAM”)或闪存);磁性存储设备(诸如软盘驱动器,硬盘驱动器,磁鼓、磁带或磁光盘);光学存储设备(诸如任何类型的致密盘或数字多用盘);磁泡存储器;高速缓冲存储器;磁芯存储器;全息存储器;记忆棒;或其任何组合。计算机可读介质也可包括传输介质和与之相关联的数据。传输介质/数据的实例包括但不限于以有线传输或无线传输的任一形式体现的数据,例如由调制的载波信号携带的分组或非分组数据。
计算机可执行指令406表示任何信号处理方法或存储的指令。一般而言,计算机可执行指令4306根据基于组件的软件开发的知名实践实施为软件组件,并在计算机可读介质中编码。计算机程序可以各种方式组合或分布。但计算机可执行指令406不限于通过计算机程序的任何具体实施例的实施且在其他实例中可由硬件、软件、固件或其任何组合来实施或执行于硬件、软件、固件或其任何组合中。
用户接口(一个或多个)416表示限定用户与诸如MPCS 100之类的特定应用或设备交互的方式的物理或逻辑呈现工具和控制件的组合。使用呈现工具来向用户提供输出。物理呈现工具的实例为呈现设备120(诸如显示器或扬声器)。物理呈现工具的另一实例为诸如纸张、玻璃、金属等之类的表面上的印刷的材料。逻辑呈现工具的实例为数据组织技术(例如,视窗、菜单或其布局)。控制件便于从用户接收输入。物理控制件的实例为输入设备,诸如遥控器、显示器、鼠标、钢笔、触针、跟踪球、键盘、麦克风或扫描设备。逻辑控制的实例为数据组织技术(例如,视窗、菜单或其布局),经由数据组织技术,用户可发布命令。应了解相同的物理设备或逻辑构造可用于向用户提供输出以及从用户接收输入。
通信接口(一个或多个)410表示一个或多个物理或逻辑元件,诸如连接设备或计算机可执行的指令,其实现操作环境400与外部设备或服务之间经由一个或多个协议或技术的通信。这种通信可为但不必为客户端服务器型通信或点对点通信。在给定网络接口处接收的信息可穿过通信协议栈的一个或多个层。
专用硬件442表示实施操作环境400的功能的任何硬件或固件。专用硬件的实例包括媒体处理组件104或其各方面,专用集成电路、时钟等等。
应了解,操作环境400的特定配置可包括比所描述的那些更少、更多或不同的组件。此外,操作环境400的功能组件可由协同定位或远程定位的一个或多个设备以多种方式来实施。
在本文中描述为计算机程序的功能/组件不限于通过计算机程序的任何具体实施例的实施。而是,这样的功能/组件为输送或转换数据且通常可由硬件、软件、固件或其任何组合实施或执行于硬件、软件、固件或其任何组合中的过程。
应了解,当一个元件被指示为对另一元件做出响应时,这些元件可直接地或间接地耦合。本文所述的连接实际上可为逻辑或物理的以实现元件之间的耦合或通信接口。除了其他方式之外,连接可实施为软件过程之间的过程间通信或联网的计算机之间的机器间通信。
词语“示例性”在本文中用于表示用作例子、实例或说明。本文描述为“示例性”的任何实施方式或其方面不必解释为相对于其他实施方式或其各方面是优选的或有利的。
如理解的,在不偏离所附权利要求的精神和范围的情况下,可设计出上文所述的具体实施例之外的实施例,预期本文的主题的范围将由下文的权利要求决定。