识别在编码过程中引入的错误的技术的制作方法

文档序号:13081553阅读:191来源:国知局
识别在编码过程中引入的错误的技术的制作方法与工艺

相关申请的交叉引用

本申请要求2015年2月13日提交的美国专利申请序列号14/622,771的权益,该申请通过引用并入本文。

本发明的实施例总体涉及计算机科学,更具体地,涉及用于识别在编码期间引入的错误(error)的技术。



背景技术:

高效准确地编码源视频对于视频内容的实时传送至关重要。在经编码的视频内容被接收到之后,源视频被进行解码和观看或以其他方式操作。一些编码过程采用无损压缩算法(如霍夫曼编码)来实现源的精确复制。相比之下,为了提高压缩率和/或减小编码视频内容的大小,其他编码过程利用有损数据压缩技术,该技术消除了选定的信息,通常只能实现源的近似重构。

为了优化编码时间,一些编码过程并行化跨多个计算实例的编码工作。在并行编码的一种方法中,编码引擎将源视频分解为单独的分块,在多个计算实例之间分布每块编码,然后配置最终的计算实例以将多个编码的分块组合成聚合编码。

与传统技术相比,并行化编码工作可以显著降低总体解码时间,但这种“分治”法所固有的复杂性为错误带来了额外的机会。例如,如果编码引擎没有正确地组合编码的分块,则可能引入同步错误,从而降低所得到的视频的质量。值得注意的是,观众观众可能会遇到同步错误,因为电影的视频和音频组成之间具有不可接受且恼人的滞后。不幸的是,因为源视频通常在编码引擎将源视频分解成分块之后不可用,将源视频与后编码视频进行比较的常规验证技术在上述并行编码范例中具有有限的应用或是不适用的。因此,并行编码引擎通常不能确保编码视频的质量,或者不能以高效的、系统的方式这样做。

如上所述,本领域需要用于识别编码过程中引入的错误的更有效的技术。



技术实现要素:

本发明的一个实施例提出了一种用于识别编码期间引入的错误的计算机实现的方法。该方法包括:接收从源数据导出的帧差分数据;接收从源数据导出的聚合编码数据;对聚合编码数据进行解码以产生聚合解码数据;生成从聚合解码数据导出的帧差数据;对从源数据导出的帧差数据和从聚合解码数据导出的帧差数据执行至少一个相位相关运算,以产生相位相关值;并且基于相位相关值检测包含在聚合编码数据中的低相位相关错误。

所公开的错误识别技术的一个优点是,这些技术使得能够验证从源数据导出的编码数据,而不管源数据的可用性如何。此外,由于所公开的技术对从源数据导出的帧差数据进行操作而不是对源数据进行操作,所以并行编码系统可以由聚合编码数据中所识别的错误引导来进行有效的调试。

附图说明

为了能够详细地理解本发明的上述特征的方式,可以通过参考实施例来简要总结上述本发明的更具体的描述,其中一些实施例在附图中示出。然而,应当注意,附图仅示出了本发明的典型实施例,因此不应将其视为限制本发明的范围,因为本发明可以承认其他同等有效的实施例。

图1是被配置为实现本发明的一个或多个方面的系统的概念图;

图2是示出根据本发明的一个实施例的图1的编码验证器的框图;

图3是根据本发明的一个实施例的用于生成视频源的经验证的聚合编码的方法步骤的流程图;以及

图4a-4b示出了根据本发明的一个实施例的用于在对视频源进行编码时识别和分类错误的方法步骤的流程图。

具体实施方式

在下面的描述中,阐述了许多具体细节以提供对本发明的更彻底的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一个或多个的情况下实践本发明。

系统概述

图1是被配置为实现本发明的一个或多个方面的系统100的概念图。如图所示,系统100包括连接到能够发送输入数据和/或显示视频的各种设备的虚拟私有云(即,封装的共享资源、软件、数据等)102。这样的设备包括但不限于智能电话104和笔记本电脑106。在替代实施例中,系统100可以包括任何组合形式的任何数量和/或类型的输入、输出和/或输入/输出设备。

虚拟专用云(vpc)100包括但不限于任何数量和类型的计算实例110。vpc100从输入设备(例如,笔记本电脑106)接收输入用户信息,一个或多个计算机实例110对用户信息进行操作,并且vpc100将经处理的信息发送给用户。vpc100通过诸如常规阴极射线管、液晶显示器、发光二极管等任意数量的器件的显示能力将输出信息传送给用户。

在替代实施例中,vpc100可以被任何类型的云计算环境(诸如公共云或混合云)替代。其他实施例中,系统100可以包括代替vpc100的任何分布式计算机系统。在其他实施例中,系统100不包括vpc100,而是,系统100包括实现多个处理单元(例如,任何组合形式的中央处理单元和/或图形处理单元)的单个计算单元。

如对于计算实例1100所示,每个计算实例110包括中央处理单元(cpu)112、图形处理单元(gpu)114和存储器116。在操作中,cpu122是计算实例110的主处理器,控制和协调包括在计算实例110中的其它组件的操作。具体地,cpu122发出控制gpu144的操作的命令。gpu114包含针对图形和视频处理优化的电路,例如包括视频输出电路。在各种实施例中,gpu114可以与计算实例110的一个或多个其他元件集成。存储器116存储供计算实例110的cpu112和gpu114使用的诸如软件应用和数据的内容。

通常,包括在vpc100中的计算实例110被配置为实现一个或多个应用。更具体地,包括在vpc100中的计算实例110被配置为对诸如视频文件的源105进行编码。如图所示,计算实例1100被配置作为源检查器110和源分块器112,计算实例1101-110n被配置作为并行分块编码器120,并且计算实例110n+1被配置作为多分块组装器130和编码验证器140。

源分块器121接收源105并将源分解成n个不同的源分块115,其中n对应于并行分块编码器120中包括的计算实例110的数量。随后,源分块器121将源分块151-15n中的每一个路由到计算实例1101-110n中的不同的一者,并且计算实例110各自执行编码操作以创建相应的编码分块1251-125n。多分块组装器130然后将编码分块1251-125n组合成聚合编码135。

并发编码操作不仅减少编码源105所需的时间,而且跨多个计算实例110分布编码操作可减少任何单个计算实例110对编码过程的影响。例如,如果计算实例110n失败,则并行分块编码器120仅重新处理单个编码分块125n。然而,分解源105、分布源分块115、编码源分块115以及将编码分块125重组成聚合编码135中的每个过程都容易出错。例如,编码分块125的重组中的错误可能导致源105的一个或多个帧在聚合编码135中被丢弃,当聚合编码135解码时潜在地导致显著的同步错误。

为此,计算实例110n+1也被配置作为编码验证器140。如本领域技术人员将认识到的那样,完整的源105对于并行分块编码器120、多分块组装器130和编码验证器140是不可用的。因此,编码验证器140不实现计算和比较诸如源150和聚合编码135两者的峰值信噪比(psnr)的度量的常规验证技术。而是,源检查器110和编码验证器140协同工作以间接地将源105与聚合编码135进行比较。在替代实施例中,计算实例110n+1被配置作为多分块组装器130,但不被配置作为编码验证器140。在这样的实施例中,将计算实例110中的不同的一个(例如,计算实例110n+2)配置作为编码验证器140。

作为处理源105的一部分,源检查器110计算每对相邻帧之间的平均亮度差,并将帧差值存储作为源帧差数据137。小帧差值表示两个相邻帧比较相似-反映静态场景或几乎没有运动的场景。相比之下,大帧差值表示两个相邻帧之间的急剧变化,通常反映大的运动或场景切换(即,场景变化)。源检查器110可以以任何技术上可行的方式生成源帧差数据137。

相应地,编码验证器140解码聚合编码135,然后计算每对相邻帧之间的平均亮度差,产生“编码帧差数据”。随后,编码验证器140利用源帧差数据137和编码帧差数据来验证聚合编码135,而不访问源105。更具体地,编码验证器140在源帧差数据137和编码帧差数据之间执行相位相关操作。这些相位相关操作使得编码验证器140能够检测聚合编码135中归因于帧丢失和编码误行为的不期望的低相位相关错误。

值得注意的是,编码验证器140还使用相位相关操作来消除“假”错误。更具体地,作为编码处理的一部分,编码验证器140识别指示被接受的孤立的错误的各种情形,然后修剪这些错误。这些假错误包括归因于在并行分块编码器120中实现的有损数据压缩技术的具有伪像(artifact)的孤立的帧块和/或坏的编码器速率控制。有利的是,区别由编码过程引入的真(即无意的)错误和假(即,预期的)错误使得编码验证器140能够最佳地引导聚合编码135的分类以及源分块器121、并行分块编码器120和多分块组装器130的检错(triage)。

识别“真”错误

图2是示出根据本发明的一个实施例的图1的编码验证器140的框图。如图所示,编码验证器140包括但不限于解码器和帧差生成器210以及错误识别引擎220。

在接收到聚合编码135时,解码器和帧差生成器210解码聚合编码135,然后产生编码帧差数据237。如前所述,编码帧差数据237是解码的聚合编码135中的每对相邻帧之间的平均亮度差。解码器和帧差生成器210可以以任何技术上可行的方式生成编码帧差数据237。在一些实施例中,可以使用相同的算法来产生源帧差数据137和编码帧差数据237。

如图所示,错误识别引擎220接收编码帧差数据237和源帧差数据137两者。值得注意的是,错误识别引擎220既不接收源105也不接收聚合编码135。错误识别引擎220不是依赖于直接比较,而是基于编码帧差数据237和源帧差数据137之间的比较来间接地识别聚合编码135中的错误。

通常,错误识别引擎220被设计为间接地识别聚合编码135中的错误,修剪任何假错误,然后生成反映剩余(即真)错误的数量和/或类型的验证结果295,如“良好编码””或“不良编码”。错误识别引擎220包括但不限于帧范围检查器230、低互相关块检测器240、扩展互相关分析器250、场景切换对准分析器260、低互相关持续分析器270、隔离低互相关分析器280和低比特率编码分析器290。

在替代实施例中,错误识别引擎220可以以基于编码帧差数据237和源帧差数据137的任何技术上可行的方式识别错误。此外,错误识别引擎220可以以任何顺序组合任何数量的验证技术以确定验证结果295。例如,在一些实施例中,省略了场景切换对准分析器260和相关联的功能。验证功能可以组合或分成任何数量的单个组件,例如,低互相关持续分析器270和隔离低互相关分析器280可以组合成单个“低互相关分析器”。

通常,错误识别引擎220可以通过执行任何类型和数量的相位相关操作来识别错误。例如,在替代实施例中,可以修改编码验证器140的组件以用附加类型的相位相关操作替换或增强互相关操作。

在其他实施例中,源检查器110被修改为在源帧差数据137中包括附加信息,诸如色度信息。类似地,解码器和帧差生成器210包括编码帧差数据237中的色度信息。在这样的实施例中,错误识别引擎220被扩展以包括基于色度信息的错误分析。例如,错误识别引擎220可以基于亮度和色度信息生成颜色直方图,然后分析颜色直方图以识别归因于色移和色度编码伪像的错误。

错误识别引擎220引导错误检测和修剪过程,其中不同的算法在不同的组件中实现。有利地,错误识别引擎220被配置为在达成关于聚合编码135中存在“真”错误的结论的情况下使评估过程短路,从而避免不必要地使用计算资源。

首先,错误识别引擎220运行帧范围检查器230。帧范围检查器230计算源帧差数据137的帧计数与编码帧差数据230的帧计数之间的差。如果该帧计数差超过可配置阈值,则错误识别引擎220得出结论:存在真错误,错误识别引擎220发出“不良编码”的验证结果295,并且错误识别引擎220成功终止。在这种情况下,错误识别引擎220使评估处理短路,不调用低互相关块检测240、扩展互相关分析器250、场景切换对准分析器260、低互相关持续分析器270、隔离低互相关分析器280和低比特率编码分析器290。

帧范围检查器230可以实现任何可配置的阈值。例如,通常在聚合编码235的结尾发生一些帧丢失(即,结束处的黑色帧)。由于这种帧丢失并不显著地影响聚合编码235的质量,在一些实施例中,可配置阈值被设置为10帧。

如果帧计数差异不超过可配置阈值,则错误识别引擎220继续进行分析,并且调用低互相关块检测器240。低互相关块检测器240计算源帧差数据137和编码帧差数据237之间的逐块互相关。每个块中包括的帧的数量在块之间是一致的,并且可以任何技术上可行的方式确定。在一些实施例中,作为适应本地视频内容变化和检测场景切换检测之间的权衡,块大小设置为1000帧。

如本领域技术人员将认识到的,互相关是用于检测两个信号源之间的相移的稳健且有效的工具。通常,对于给定的块(一组帧),如果源帧差数据137和编码帧差数据230比较相似,则视频内容可能比较相似-两个块之间的互相关高。相反,如果源帧差数据137和编码帧差数据230显著不同,则聚合编码135的视频内容可能与源105的视频内容不同步。在这种情况下,两个块之间的互相关相对较低,通常在编码过程中反映为帧丢失。

在计算互相关数据之后,低互相关块检测器240产生相对低互相关的块的列表。对于每个块,低互相关块检测器240评估源帧差数据137和编码帧差数据230之间的互相关。如果块的互相关低于预定阈值,则低互相关块检测器240将该块加到低互相关块列表中。可以基于任何试探法将阈值设置为任何值。在一些实施例中,将阈值设置为0.78。在其他实施例中,将阈值设置为更高或更低的值。

在进行下一个评估阶段之前,错误识别引擎220确定低互相关块列表是否为空(即,低互相关块检测器240没有识别出低互相关块)。如果错误识别引擎220确定没有低互相关块,则错误识别引擎220发出“良好编码”的验证结果295,并且错误识别引擎220成功终止。在这种情况下,错误识别引擎220使评估过程短路,不调用扩展互相关分析器250、场景切换对准分析器260、低互相关持续分析器270、隔离低互相关分析器280和低比特率编码分析器290。

否则,作为识别同步错误的一部分,扩展互相关分析器250评估低互相关块的列表。对于每个低互相关块,扩展互相关分析器250对于围绕低互相关块的一组帧在源帧差数据137和编码帧差数据237之间施加小的相移。扩展互相关分析器250然后计算相应的经移位的互相关,并且确定源105的块和聚合编码135之间的匹配是否在施加相移的情况下比不施加相移的情况下更好。

如果扩展互相关分析器250确定经移位的互相关显著优于原始互相关,则扩展互相关分析器250确定聚合编码135在块处不同步。在识别出这种不同步块时,扩展互相关分析器250认为聚合编码235包括真错误,错误识别引擎220发出“不良编码”的验证结果295,并且错误识别引擎220成功终止。

相反,如果扩展互相关分析器250确定原始互相关显著优于经移位的互相关,则扩展互相关分析器250确定聚合编码135在块处是同步的,并从低互相关列表中移除该块。

扩展互相关分析器250可以以任何技术上可行的方式实现经移位的互相关比较。在一个实施例中,扩展互相关分析器250实现以下算法:

对于源帧差数据137中的给定低互相关块,扩展互相关分析器250将块相对于对应的编码帧差数据237在预设的相位窗内(例如[-5,+5])移位。扩展互相关分析器250然后逐相移对互相关进行如下分析:

1)如果通过将编码帧差数据237中的块移位离开原始位置而发现最大值,并且最大值显著大于所有其他互相关值,则当前块被标识为“不同步”。分析结束,并且“不良编码”的验证结果295被发出。

2)否则,如果最大值仍然对应于原始位置(即,无移位),并且由移位产生的所有其他值保持显著低于最大值,则扩展互相关分析器250认为该块“同步”并且从低互相关块列表中移除该块。

注意,如果从统计学角度看,某相关值位于远离数据中心标准偏差的两倍以上,则该相关值与其他相关值“显著”不同。

在扩展互相关分析器250完成对每个低互相关块的扩展互相关分析之后,错误识别引擎220确定在低互相关块列表中是否存在剩余的低互相关块。如果错误识别引擎220确定没有剩余的低互相关块,则错误识别引擎220发出“良好编码”的验证结果295,并且错误识别引擎220成功终止。在这种情况下,错误识别引擎220使评估过程短路,不调用场景切换对准分析器260、低互相关持续分析器270、隔离低互相关分析器280和低比特率编码分析器290。

相反地,如果低互相关块列表仍然包括任何低互相关块,则场景切换对准分析器260识别通过场景切换产生的基本上不可察觉的任何错误。一般来说,场景改变和场景切换表示视频序列中的关键阶段信息。如本领域技术人员将认识到的是,如果聚合编码135中的场景改变/切换与源105中的场景改变/切换完全对准,则紧接在场景改变/切换之前的图像通常是同步的。通常,场景切换对准分析器260检查源帧差数据137和编码帧差数据237,以确定场景切换对准。场景切换对准分析器260然后紧在场景切换之前从低相关块列表移除任何低相关块-修剪假错误。在一个实施例中,场景切换对准分析器260实现以下算法:

1)源105和聚合编码135中只有那些“显著”场景改变/切换被间接识别以供对准分析。场景改变/切换在以下情形中被认为是“显著”的:(1)相应的帧差数据是大值(例如,>=15),以及(2)当前帧的帧差数据显著大于紧在当前帧前面的帧的帧差数据(例如,在大小上>=5)。

2)如果显著的场景切换/改变被间接地确定为在源105和聚合编码135之间对准,则仅紧在对准的切换/改变之前的低相关块被视为“同步”并从低互相关块列表被移除。

如果低互相关块列表现在为空,则错误识别引擎220发出“良好编码”的验证结果295,并且错误识别引擎220成功终止,有效地使评估过程短路。通常,任何剩余的低互相关块代表源105和聚合编码135之间的显着量的低视觉相似性,归因于以下之一:

1)视频序列中没有尖锐的场景改变或时间模式,这使得逐块互相关对于任何时间移位不那么敏感并且降低了场景切换对准检查的有效性。

2)在聚合编码135上存在显著的编码伪像,当在一段时间内延伸时,这可以显着地降低了源105与聚合编码之间的结构相关性,从而使得扩展互相关和场景切换对准分析不太可靠。

低互相关持续分析器270能够对这两种情况进行错误检测。低互相关持续分析器270基于两个经验观察实现试探法:

1)如果低互相关块不同步(即由于帧丢失),那么缺少同步通常会持续一定数量的块,直到按顺序到达下一个同步分块。

2)如果低互相关块遭受严重的编码降级,那么这种降级往往在当前的分块结束之前都有效。

在操作中,低互相关持续分析器270扫描低互相关块列表中的剩余块并识别相邻低互相关块的序列。如果相邻低互相关块的序列中任一个包括多于预定阈值的块(例如4),则低互相关持续分析器270确定聚合编码235有缺陷。然后,错误识别引擎220返回“不良编码”的验证结果295并成功终止,而不执行任何附加的错误分析。

隔离低互相关分析器280被配置为确定性地识别与各种复杂情形相对应的错误,包括以下情形:

1)帧在编码分块的中间或视频序列的末尾丢失。

2)帧在场景渐隐/淡入/淡出期间丢失。

3)显着的编码是在相机平移和/或缩放期间引入的伪像。

4)由于编码器速率控制不良,时间性视频质量下降发生。

在操作中,隔离低互相关分析器170基于统计假设测试来区分假错误和真错误。特别地,隔离低互相关分析器170将格拉布斯(grubbs)测试应用于低互相关块列表,并且基于互相关数据的分布来识别异常值。在一个实施例中,隔离互相关分析器170将具有95%置信区之外的相关值的低互相关块视为“异常值”。如果隔离互相关分析器170确定异常值的总数小于预定的最大值(例如3),则隔离互相关分析器170认为聚合编码135为具有临界码伪像的正常/良好的视频。在操作中,如果隔离互相关分析器170确定聚合编码135为“正常”,则错误识别引擎220发出“良好编码”的验证结果295,并且错误识别引擎220成功终止。在这种情况下,错误识别引擎220使评估过程短路,并且不调用低比特率编码分析器290。

低比特率编码分析器290执行比特率评估以确定低互相关块列表中的剩余块是否可能归因于低编码比特率。特别地,如果编码比特率相对较低(例如,<=500kbps,包含大多数低速率h263、h264和vc1编码),则低比特率编码分析器290将聚合编码135认为是“正常”-具有低编码比特率的伪像。否则,低比特率编码分析器290认为聚合编码135是有缺陷的。

如果低比特率编码分析器290确定聚合编码135是“正常”,则错误识别引擎220发出“良好编码”的验证结果295。如果低比特率编码分析器290确定聚合编码135有缺陷,则错误识别引擎220发出“不良编码”的验证结果295。不管从低比特率编码分析器290获得的结果如何,错误识别引擎220然后成功终止。

图3是根据本发明的一个实施例的用于生成视频源的经验证的聚合编码的方法步骤的流程图。尽管参照图1-2的系统描述了方法步骤,但是本领域技术人员将理解,配置为以任何顺序实现方法步骤的任何系统都在本发明的范围内。

如图所示,方法300从步骤304开始,其中源检查器110和源分块器121接收源105。源检查器110生成源帧差数据137,源分块器112将源105分解成源分块115。在步骤306,并行分块编码器120将源分块115中的每一个分配到包括在并行分块编码器120中的单独计算实例110。这些计算实例110中的每一个然后生成相应的编码分块125。在替代实施例中,并行分块编码器120可以以技术上可行的能够实现源分块115中的至少两个的并发处理的方式来分配源分块115。例如,并行分块编码器120可以在并行分块编码器120中包括的两个计算实例110之间分割源分块115。

在步骤308,多分块组装器130将编码分块125组装成聚合编码135。编码验证器140然后对聚合编码135进行解码,并生成编码帧差数据237(即,解码的聚合编码的帧差数据)。

在步骤310,包含在编码验证器140中的错误识别引擎220执行源帧差数据137和编码帧差数据237之间的各种互相关操作。这些相互关操作被设计为识别归因于编码过程中的缺陷的“真”错误,而不会标记有损压缩算法的预期伪像的“假”错误。基于所识别的错误,编码验证器140生成聚合编码135的验证结果295。通常,编码验证器140和错误识别引擎220在其他操作以外还可以以任何组合、以任何顺序、以任何技术上可行的方式执行任何数量和类型的互相关操作。例如,在一些实施例中,编码验证器140(包括错误识别引擎220)执行下面结合图4a-4b概述的方法步骤。

在步骤312,编码验证器140确定验证结果295是否反映“良好编码”。如果在步骤312,如果编码验证器140确定验证结果295反映“良好编码”,则该方法进行到步骤314。在步骤314,包括编码验证器140的虚拟私有云(vpc)102被配置为将聚合编码135递送给指定用户以供消费(例如,观看),随之方法300结束。

如果在步骤312,编码验证器140确定验证结果295反映“不良编码”,则该方法进行到步骤316。在步骤316,编码验证器140发出指示聚合编码135包括“真”错误的错误消息,并且方法300结束。作为步骤316的一部分,编码验证器140可选择地提交聚合编码135以进行验错来识别编码过程(即,源分块器121、并行分块编码器120和多分块组装器130)中的缺陷。有利地,因为编码验证器140在确定验证结果295之前消除了假错误,调试工作可以优化地集中于分析真缺陷的根本原因,而不是无效地追踪归因于所实施的压缩算法的预期伪像。

图4a-4b示出了根据本发明的一个实施例的用于在对视频源进行编码时识别和分类错误的方法步骤的流程图。尽管参照图1-2的系统描述了方法步骤,但是本领域技术人员将理解,配置为以任何顺序实现方法步骤的任何系统都在本发明的范围内。

如图所示,方法400在步骤406开始,其中编码验证器140接收源帧差数据137和编码帧差数据237。源帧差数据137是源105中每对相邻帧之间的平均亮度差,编码帧差数据237是解码的聚合编码中每对相邻帧之间的平均亮度差。

在步骤408,帧范围检查器230计算源帧差数据137的帧计数与编码帧差数据230的帧计数之间的差。在步骤410,帧范围检查器230确定所计算的帧计数差是否超过可配置阈值。如果在步骤410,帧范围检查器230确定所计算的帧计数差异超过可配置阈值,则帧范围检查器230得出结论:帧计数差是不可接受的,并且方法400进行到步骤412。在步骤412,错误识别引擎220发出“检测到帧丢失,不良编码”的验证结果295,并且方法400结束。

如果在步骤410,帧范围检查器230确定所计算的帧计数差不超过可配置阈值,则帧范围检查器230得出结论:帧计数差是可接受的,并且方法400进行到步骤414。在步骤414,低互相关块检测器240计算源帧差数据137和编码帧差数据237之间的逐块互相关,并生成相对低互相关的块的列表。具体地,对于每个块,低互相关块检测器240比较源帧差数据137和编码帧差数据230之间的互相关。如果块的互相关低于预定阈值,则低互相关块检测器240将该块加到低互相关块列表中。

在步骤416,错误识别引擎220将低互相关块的数量(即,包括在低互相关块列表中的块的数量)与可接受的低互相关块数量进行比较。如果在步骤416,错误识别引擎220确定低互相关块的数量不超过可接受的低互相关块数量,则方法400进行到步骤418。在步骤418,错误识别引擎220发出“良好编码,无帧丢弃”的验证结果295,并且方法400结束。

如果在步骤416,错误识别引擎220确定低互相关块的数量超过可接受的低互相关块数量,则方法400进行到步骤420。在步骤420,作为识别同步错误的一部分,扩展互相关分析器250评估每个低互相关块。对于每个低互相关块,扩展互相关分析器250对于围绕该低互相关块的一组帧在源帧差数据137和编码帧差数据237之间施加小的相移。

对于每个低互相关块,如果扩展互相关分析器250确定经移位的互相关显著优于原始互相关,那么扩展互相关分析器250认为聚合编码135是在该块上是不同步的。在步骤422,扩展互相关分析器确定聚合编码135是否在任何低互相关块处不同步。如果在步骤422,扩展互相关分析器确定聚合编码135在任何低互相关块处不同步,则方法400进行到步骤424。在步骤424,错误识别引擎220发出“检测到帧丢失,不良编码”的验证结果295,并且错误识别引擎220成功终止

如果在步骤422,扩展互相关分析器250确定没有一个移位操作产生显著改善的互相关,则方法400进行到步骤426。在替代实施例中,为了提高验证过程的效率,扩展互相关分析器250可以基于经移位的互相关分析来修剪低互相关块列表。扩展互相关分析器250可以以技术上可行的方式实现这种修剪,例如结合图2详细描述的算法。

在步骤426,场景切换对准分析器260识别由场景切换产生的基本上不可察觉的任何错误,并且从低互相关块列表中移除相关联的块。更具体地,场景切换对准分析器260基于源帧差数据137和编码帧差数据237来识别场景切换。随后,场景切换对准分析器260识别在时间上位于紧在场景切换之前的任何低相关块,然后从低相关块列表中移除所识别的块。

在步骤428,错误识别引擎220将“剩余”低互相关块的数量(即,仍然包括在低互相关块列表中的块的数量)与可接受的低互相关块数量进行比较。如果在步骤428,错误识别引擎220确定剩余低互相关块的数量不超过可接受数量的低互相关块,则方法400进行到步骤430。在步骤430,错误识别引擎220发出“良好编码,无帧丢弃”的验证结果295,并且方法400结束。

如果在步骤428,错误识别引擎220确定剩余的低互相关块的数量超过可接受的低互相关块数量,则方法400进行到步骤432。在步骤432,低互相关持续分析器270扫描低互相关块列表中的剩余块,识别相邻低互相关块的序列。在步骤434,低互相关持续分析器270确定所识别的相邻低互相关块序列中的任何一个是否包括多于预定阈值的块。

如果在步骤434,低互相关持续分析器270确定所识别的相邻低互相关块序列中的任何一个包括大于预定阈值的块,则低互相关持续分析器270得出结论:聚合编码235有缺陷,方法400进行到步骤435。在步骤435,错误识别引擎220返回“发现不良编码分块”的验证结果295,并且方法400结束。

如果在步骤434,低互相关持续分析器270确定所识别的相邻低互相关块序列中没有一个包括大于预定阈值的块,则方法400进行到步骤436。在步骤436,隔离低互相关分析器170基于统计假设测试来区分假错误和真错误。特别地,隔离低互相关分析器170将grubbs测试应用于低互相关块列表,并且基于互相关数据的分布来识别异常值。在步骤438中,低互相关持续分析器270基于异常值的总数确定低互相关块的范围。如果在步骤438,低互相关持续分析器270确定低互相关块的范围是受限制的,则方法400进行到步骤440。在步骤440,错误识别引擎220发出“良好编码,具有编码伪像”的确认结果295,并且方法400结束。

在步骤438中,如果低互相关持续分析器270确定低互相关块的范围没有被充分限制,则方法400进行到步骤442。在步骤442,低比特率编码分析器290将编码比特率与预定阈值进行比较。如果在步骤442,低比特率编码分析器290确定编码比特率低于预定阈值,则方法400进行到步骤444。在步骤444,错误识别引擎220发出“良好编码,低编码比特率”的验证结果295,方法400结束。

如果在步骤442,低比特率编码分析器290确定编码比特率不低于预定阈值,则方法400进行到步骤444。在步骤444中,由于低互相关块列表不为空,所以错误识别引擎220发出“不良编码”的验证结果295,并且方法400结束。

总之,所公开的技术可以用于有效地和正确地识别在编码期间无意地引入的错误。在操作中,在对源进行编码之前,源检查器为源创建帧差数据,源分块器将源分解成分块。并行分块编码器然后在多个计算实例上基本并行地处理分块,并且多分块组装器从编码块组装聚合编码。编码验证器接收源的帧差数据和聚合编码。在对聚合编码进行解码之后,编码验证器生成聚合编码的帧差数据(即,针对解码的聚合编码的帧差数据)。

随后,编码验证器在源的帧差数据和聚合编码的帧差数据之间执行互相关操作。编码验证器实施各种算法,这些算法被设计用于识别归因于编码过程中的缺陷的错误,同时抑制编码的预期伪像的错误,例如由于低比特率编码导致的差的转换。通常,编码验证器可以以任何顺序实现任意数量的错误检测和/或伪错误抑制算法。作为这种区分错误检测的一部分,编码验证器识别低互相关块列表,然后修剪该列表,去除对可感知同步错误没有显著贡献的低互相关块。例如,紧接在场景切换之前的块不会导致持续的同步问题,因此,编码验证器考虑这些“假”错误。

有利地,与传统编码验证技术不同,本文公开的基于帧差的技术能够验证聚合编码而不访问原始源文件。通常,并行编码器在多个计算实例之间实现-不同的计算实例独立地对每个分块进行编码,并且最终的计算实例组装分块并验证编码。尽管在这种分治方法中执行编码减少了编码时间,但是与不分散源的常规技术相比,最终聚合编码可能包括非预期错误的可能性增加。这里概述的技术能够有效地检测可归因于编码过程中的缺陷的错误(例如,编码块到聚合编码的错误组装)。此外,由于编码验证器实现各种复杂的比较算法以识别用于进一步调试的错误而不标记“预期”错误,编码验证器减少了对聚合编码验错和调试源分块、并行分块编码器和多分块组装器所需的工作。

已经为了说明的目的呈现了各种实施例的描述,但并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。

本实施例的各方面可以体现为系统、方法或计算机程序产品。因此,本公开的各方面可以采取完全硬件实施例的形式、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例(他们可以在本文中都通常被称为“电路”、“模块”或“系统”)。此外,本公开的各方面可以采用体现在具有计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。

可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非详尽列表)将包括以下内容:具有一条或多条电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式致密盘只读存储器(cd-rom)、光学存储设备、磁存储设备或上述内容的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备使用的程序的任何有形介质。

以上参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本公开的各方面。应当理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以向通用计算机、专用计算机或其他可编程数据处理装置的处理器提供指令以产生机器,使得指令在经由计算机或其他可编程数据处理装置的处理器执行时使得能够执行流程图和/或一个或多个框图块中指定的功能/动作。这样的处理器可以是但不限于通用处理器、专用处理器、特定于应用的处理器或现场可编程的处理器。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个块可以表示代码模块、代码段或代码部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应当注意,在一些替代实施方式中,块中所述的功能可能不按照附图中所示的顺序进行。例如,依次示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图的每个块和方框图和/或流程图说明中的块的组合可以由执行指定功能或动作的基于硬件的专用系统或专用硬件和计算机指令的组合来实现。

虽然前面涉及本公开的实施例,但是可以设计本公开的其他和进一步的实施例而不脱离本发明的基本范围,并且其范围由随后的权利要求来确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1