CN102369522B - 计算引擎的并行流水线式集成电路实现 - Google Patents

计算引擎的并行流水线式集成电路实现 Download PDF

Info

Publication number
CN102369522B
CN102369522B CN200980158022.8A CN200980158022A CN102369522B CN 102369522 B CN102369522 B CN 102369522B CN 200980158022 A CN200980158022 A CN 200980158022A CN 102369522 B CN102369522 B CN 102369522B
Authority
CN
China
Prior art keywords
treatment element
integrated circuit
video
assembly line
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200980158022.8A
Other languages
English (en)
Other versions
CN102369522A (zh
Inventor
J·鲁宾斯坦
A·鲁亚科斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Burui Technology Co., Ltd.
Original Assignee
Burui Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Burui Technology Co Ltd filed Critical Burui Technology Co Ltd
Publication of CN102369522A publication Critical patent/CN102369522A/zh
Application granted granted Critical
Publication of CN102369522B publication Critical patent/CN102369522B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

本发明的实施方案涉及被设计来解决复杂计算问题的计算引擎的并行流水线式集成电路实现。本发明的一个实施方案是可以被合并在摄像机、蜂窝电话和其他电子装置内的一族视频编码器和解码器(“编解码器”),用于将原始视频信号编码为压缩视频信号以进行储存和发送,并且用于将压缩视频信号解码为原始视频信号以输出到显示装置。根据本发明的实施方案,特定的视频编解码器的高度并行流水线式专用集成电路实现提供具有成本效益的视频编解码器计算引擎,所述视频编解码器计算引擎提供极其大的计算带宽、相对低的功耗以及分别对于压缩视频信号和原始视频信号的解压缩和压缩的低延迟。

Description

计算引擎的并行流水线式集成电路实现
相关申请的交叉引用:本申请是2009年1月12日递交的美国申请No.12/319,750的部分继续申请。
技术领域
本发明涉及用于执行复杂计算的效率高的方法和计算装置,并且具体地,涉及以效率高的问题分解为导向的高度并行流水线式集成电路计算引擎的设计和实现,包括集成电路视频编解码器。
背景技术
计算机器正经历快速发展。早期的电子计算机通常是逐个执行指令流的完全顺序处理机器,所述指令一起构成计算机程序。多年来,电子计算机通常包括单个主处理器,所述主处理器能够快速执行相对小的一组简单指令,所述简单指令包括存储器提取、存储器储存、运算和逻辑指令。通过将计算任务的解决方案编程为一组指令、然后在单处理器计算机系统上执行程序来解决该任务。
在电子计算机发展的相对早期,各种附属和支持任务开始从主处理器被移到专用的辅助处理部件。作为一个实施例,开发了分离的I/O控制器,以卸载与在主存储器和各种外部装置之间的交换信息相关联的许多重复性的并且消耗计算带宽的任务,所述外部装置包括大容量储存装置、通信装置、显示装置和用户输入装置。这种将多个处理器元件合并到单主处理器计算机系统中是提高计算并行性的趋势的开始。
并行计算目前是现代计算机器设计的主要趋势。在一个极端,各个处理器核心通常提供多个指令流的同时并行执行,并且提供多个指令的组装线式同时执行。大多数计算机,包括个人计算机,现在在每个单片集成电路内合并至少两个处理器核心,并且经常是许多个处理器核心。每个处理器核心可以相对独立地执行多个指令流。电子计算机系统可以包含多个多核处理器,并且可以被一起聚集到大型分布式计算网络中,所述大型分布式计算网络包括彼此互相通信的数十到数千到数十万个分离的计算机系统,并且每个计算机系统执行大型分布式计算任务的一个或更多个可分部分。
随着计算机已朝向并行和大规模并行计算系统发展,与并行计算相关联的许多最困难的并且最令人烦恼的问题已被发现与将大型计算任务分解为相对独立的子任务相关联,每个子任务可以由不同的处理实体来执行。当问题没有被适当地分解时,或者当问题不能被分解时,对于并行执行,则利用并行计算机机器通常提供很少的益处或者不提供益处,并且在最糟糕的情况下,实际上将会导致比可以通过在单处理器计算机系统上执行的传统软件实现而获得的执行更慢的执行。当多个计算实体竞争共享资源时,或者根据由其他处理实体共同产生的计算结果,将会耗费极大的计算和通信资源来管理多个计算实体的并行操作。常常,通信开销和计算开销可能比在多个处理器或其他计算实体上执行的并行计算方法的益处重要得多。此外,并行计算可以涉及大量财务成本,并且还有大量功耗和散热成本。
因此,虽然从生物系统判断,并行计算看起来是有效率地计算许多计算任务的逻辑方法,并且发展趋势已经在电子计算机发展的短时间段内出现,但是并行计算还与许多复杂性、成本和缺点相关联。尽管许多问题在理论上可以从并行计算方法中受益,但是目前可用的用于并行计算的技术和硬件通常不能为许多计算问题提供有成本效益的方案,特别是对于需要在受限于尺寸约束、散热约束、功耗约束和成本约束的装置内实时地执行的复杂计算。出于这个原因,许多计算主导的领域中的计算机科学家、电气工程师、研究员和开发者、电子装置和电子计算机的制造商和卖主以及最后电子装置和电子计算机的用户都认识到需要继续开发有效率地实现用于解决实际问题的并行计算引擎的新方法。
发明内容
本发明的实施方案涉及被设计来解决复杂计算问题的计算引擎的并行流水线式集成电路实现。本发明的一个实施方案是可以被合并在摄像机、蜂窝电话和其他电子装置内的一族视频编码器和解码器(“编解码器”),用于将原始视频信号编码为压缩视频信号以进行储存和发送,并且用于将压缩视频信号解码为原始视频信号以输出到显示装置。根据本发明的实施方案,特定的视频编解码器的高度并行流水线式专用集成电路实现提供具有成本效益的视频编解码器计算引擎,所述计算引擎提供极其大的计算带宽、相对低的功耗以及分别对于压缩视频信号和原始视频信号的解压缩和压缩的低延迟(latency)。
根据本发明的一个方面,提供了一种集成电路计算引擎,所述集成电路计算引擎包括:多个处理元件,所述多个处理元件中的每一个执行逐步计算过程的高级计算步骤,所述多个处理元件布置成同时对不同的计算对象进行操作的一个或更多个组装线式系列;对象高速缓冲存储器,所述对象高速缓冲存储器储存计算对象,所述计算对象包括在每个高级计算步骤之前输入到处理元件的数据结构值和在每个高级计算步骤期间从处理元件输出的数据结构值;对象总线,所述对象总线提供计算对象级传输事务,并且计算对象通过所述对象总线在所述多个处理元件与所述对象高速缓冲存储器之间进行交换;以及时钟部件,所述时钟部件提供高级处理时钟周期,并且提供一个或更多个更高频时钟周期,根据所述高级处理时钟周期使计算对象沿着一个或更多个组装线式处理元件系列的逐步处理同步,所述一个或更多个更高频时钟周期中的每一个控制所述多个处理元件中的一个或更多个的内部处理步骤。
根据本发明的另一个方面,提供了一种集成电路视频编解码器,所述集成解码器包括:多个处理元件,所述多个处理元件中的每一个执行逐步计算过程的高级计算步骤,所述多个处理元件布置成同时对不同的计算对象进行操作的一个或更多个组装线式系列;对象高速缓冲存储器,所述对象高速缓冲存储器储存计算对象,所述计算对象包括在每个高级计算步骤之前输入到处理元件的数据结构值和在每个高级计算步骤期间从处理元件输出的数据结构值;对象总线,所述对象总线提供计算对象级传输事务,并且计算对象通过所述对象总线在所述多个处理元件与所述对象高速缓冲存储器之间进行交换;以及时钟部件,所述时钟部件提供高级处理时钟周期,并且提供一个或更多个更高频时钟周期,根据所述高级处理时钟周期使计算对象沿着一个或更多个组装线式处理元件系列的逐步处理同步,所述一个或更多个更高频时钟周期中的每一个控制所述多个处理元件中的一个或更多个的内部处理步骤。
附图说明
图1图示说明数字编码的图像。
图2图示说明根据两种不同的颜色和亮度模型的两种不同的像素值编码方法。
图3图示说明使用Y'CrCb颜色模型的数字编码。
图4图示说明视频摄像机(videocamera)的输出。
图5图示说明视频编解码器的功能。
图6图示说明在视频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象。
图7图示说明将视频帧分割为两个片组(slicegroup)。
图8图示说明第二级别的视频帧分割。
图9图示说明帧内预测的一般概念。
图10A-I图示说明九种4×4亮度块帧内预测模式。
图11A-11D使用如图10A-I中所用的图示惯例类似的图示惯例图示说明用于16×16亮度块的帧内预测的四种模式。
图12图示说明帧间预测的概念。
图13A-D图示说明用于在参考帧的搜索空间内计算块的像素值的插值过程,所述插值过程可以被认为是在分数坐标处发生。
图14A-C图示说明不同类型的帧和对于这些帧可行的一些不同类型的帧间预测。
图15图示说明差宏块(differencemacroblock)的产生。
图16图示说明运动矢量和帧内预测模式预测。
图17图示说明差宏块的分解、整数变换和量化。
图18分别提供H.264视频压缩和视频解压缩中所用的整数变换和逆整数变换的推导。
图19图示说明量化过程。
图20提供熵编码的数字实施例。
图21A-B提供算术编码的实施例。
图22A-B图示说明一种普遍出现的伪像(artifact)和作为解压缩的最后步骤用于改善伪像的滤波方法。
图23概括H.264视频数据流编码。
图24以与图23中所用的框图方式类似的框图方式图示说明H.264视频数据流解码过程。
图25是通用计算机的非常高级的示图。
图26图示说明视频压缩和解压缩过程的许多方面,当考虑这些方面时,这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。
图27图示说明根据本发明方法的视频编解码器的集成电路实现的基本特征。
图28图示说明本发明的实施方案,在该实施方案中,集成电路2802包括存储器2804,存储器2804在图27所图示说明的实施方案中是外部的。
图29图示说明本发明的可替换实施方案,在该实施方案中,数码视频摄像机被包括在组合视频摄像机和视频编解码器的集成电路实现中。
图30-32图示说明根据本发明的视频编解码器的集成电路实施方式内的总体时序和数据流。
图33A-B提供根据本发明的视频编解码器的单集成电路实施方式的框图图示。
图34图示说明根据本发明的视频编解码器的单集成电路实施方式的总体系统时序和同步。
图35提供各种类型的对象的表格,所述对象在根据本发明的视频编解码器的单集成电路实施方式中沿着数据对象总线从视频高速缓冲存储器被传送到处理元件。
图36A-B在抽象层次图示说明表征本发明的一个实施方案的视频编解码器单集成电路实施方式内的处理元件的操作。
图37图示说明表征本发明的一个实施方案的运动估计处理元件。
图38图示说明表征本发明的一个实施方案的帧内预测和帧间预测处理元件,该处理元件包括一对处理元件。
图39示出表征本发明的一个实施方案的熵编码处理元件的框图。
图40图示说明对于图33A中所图示说明的视频编解码器实施方式中的视频高速缓冲存储器的储存要求。
图41图示说明在九个高级处理周期期间的亮度宏块循环队列(图40中的4002)的操作。
图42图示说明表征本发明的一个实施方案的视频编解码器的视频高速缓冲存储器控制器的实施方式。
图43提供表格,该表格指示由表征本发明的一个实施方案的视频编解码器的某些处理元件中的每个执行的总体计算处理的实施例。
图44A-E提供如图33A中所示的根据本发明的一个实施方案的视频编解码器的单集成电路实施方式中的各个处理元件的高级VHDL定义。
具体实施方式
本发明的实施方案涉及提供具有成本效益的计算引擎,来以低功耗、低散热要求、大计算带宽和低任务执行延迟执行复杂计算任务。计算引擎被实现为各个集成电路或芯片,所述集成电路或芯片的特征是由根据本发明的许多同时操作的处理元件提供高度并行计算。通过下述方式使得可有效地使用当前执行的处理元件,所述方式即适当地分解复杂计算任务,有效率地访问集成电路内的共享信息和数据对象,并且有效率地、分层次地控制处理任务和子任务。
处理元件通过对象总线存取它们所操作的计算对象,所述对象总线将处理元件与板上对象高速缓存互连。板上对象高速缓存又通过对象存储器控制器连接至或耦合至更大容量对象存储器,在本发明的某些实施方案中,更大容量对象存储器可以被实现为外部部件。在本发明的某些实施方案中,由本发明的计算引擎实现的计算控制由微处理器控制器根据相对低频时钟来提供,其中一个或更多个高频时钟信号控制处理元件内的处理。在本发明的某些实施方案中,处理元件在逻辑上被布置到组装线式流水线中,其中计算对象通常由处理元件沿着流水线顺序地处理,并且在处理元件之间移动和/或从对象高速缓存来回移动。以计算对象,而不是任意大小的数据单位(例如字节或字)为中心组织处理元件计算、高速缓存存取、存储器存取和数据传输。
大量不同的计算任务可以通过根据本发明实施方案的计算引擎的高度并行集成电路实施方式的设计和开发来解决。以下,对作为本发明的一个特定实施方案的视频编解码器的并行流水线式集成电路实施方式进行论述。在各种各样的电子装置中可以利用视频编解码器的集成电路实施方式的各种可替换实施方案,所述电子装置包括配备有视频摄像机的移动电话、数码视频摄像机、个人计算机、监视设备、遥感器、飞行器和航天器以及多种其他类型的设备。这里强调的是,在以下整个论述中,视频编解码器实施方式是表征本发明实施方案的许多不同的并行流水线式集成电路计算引擎的特定实施例。
所描述的视频编解码器的并行集成电路实施方式是被设计为执行复杂计算任务的相对复杂的装置。以下的论述被组织为三个小节:(1)H.264压缩的视频信号解压缩标准;(2)用于根据本发明解决复杂计算任务的并行集成电路设计的原理;以及(3)根据本发明被实现为单集成电路的H.264视频编解码器。应该注意的是,尽管主要使用H.264标准提供这里的实施例,但是应该理解,这些仅仅是实施例,并且本发明绝不限于H.264实施方式。在以下的第一小节中,对由并行流水线式集成电路计算引擎的特定实施例执行的计算任务进行概括描述。特定的所描述的实施方案是视频编解码器,该视频编解码器根据H.264或MPEG-4AVC、压缩的视频信号解压缩标准对原始视频信号进行压缩并且对压缩的视频信号进行解压缩。对于已经熟悉H.264压缩的视频信号解压缩标准的读者,可跳过第一小节。在论述的第二部分中,对根据本发明实施方案的并行集成电路设计的原理进行描述,所述并行集成电路设计可以被应用于许多复杂计算任务中的任意一个。最后,在第三章节中,对表征本发明的一个特定实施方案的被实现为单个集成电路的H.264视频编解码器进行详细描述。
第一小节:H.264压缩的视频信号解压缩标准
本第一小节提供了H.264压缩的视频信号解压缩标准的概述。本小节提供了由表征本发明实施方案的并行流水线式集成电路计算引擎的特定实施方案解决的计算问题的描述。熟悉H.264的那些读者可以跳过本第一小节,并且继续以下的第二小节。
图1图示说明数字编码的图像。数字编码的图像可以是静止照片、视频帧或各种图形对象中的任意一个。一般地,数字编码的图像包括一起描述矩形图像101的数字编码的数字序列。矩形图像具有水平维度102和垂直维度104,水平维度102和垂直维度104的比率被称为图像的“纵横比”。
数字编码的图像被分解为极小的显示单元,这些极小的显示单元被称为“像素”。在图1中,以放大两次的方式示出了所显示的图像的左上角的细小部分106。每个放大步骤是12倍放大,生成数字编码的图像108的左上角的极小部分的最终144倍放大。在放大144倍时,看到所显示的图像的细小部分被直线坐标网格划分为细小的正方形,每个细小的正方形(例如正方形110)与像素对应或者表征像素。视频图像被数字编码为一系列数据单位,每个数据单位描述所显示的图像内的一个像素的发光特性。像素可以被认为是矩阵内的单元,每个像素位置由水平坐标和垂直坐标来描述。可替换地,像素可以被认为是按光栅扫描顺序或者一些其他预定义的顺序生成的一个长的线性的像素序列。通常,数字编码的图像中的逻辑像素被相对直接地转换为从显示装置的一个或几个极小显示元件发出的光。对每个像素的值进行数字编码的数字被转换为一个或更多个电子电压信号,以控制显示单元发射具有适合色调和强度的光,从而当根据在数字编码的图像中被编码的像素值来控制所有显示单元时,显示装置忠实地再现编码的图像,来供人类观众观看。数字编码的图像可以显示在电视机、计算机显示监控器内具有的阴极射线管、LCD或等离子显示装置以及其他这样的发光显示装置上,可以被计算机打印机打印到纸张或合成胶片上,可以通过数字通信媒介发送到远程装置,可以被储存在大容量储存装置上和计算机存储器中,并且可以被各种图像处理应用程序处理。
存在用于将颜色和发射强度信息编码到数据单元中的各种不同的方法和标准。图2图示说明根据两种不同的颜色和亮度模型的两种不同的像素值编码方法。第一种颜色模型202用立方体表征。立方体内的体积由三个正交轴索引,所述三个正交轴为R'轴204、B'轴206和G'轴208。在该实施例中,每个轴按256个增量增长,所述256个增量对应于8位字节的所有可能的数值,其中可替换的R'G'B'模型使用更少或更多数目的增量。立方体的体积表征可以由显示装置的像素显示的所有可能的颜色和亮度组合。R'轴、G'轴和B'轴对应于由像素发射的彩色光的红色分量、蓝色分量和绿色分量。显示单元的发光强度通常是供给至数据单元的电压的非线性函数。在RGB颜色模型中,字节编码的G分量中的G分量值127将引导可以施加于显示单元的最大电压的一半来施加于特定的显示单元。然而,当最大电压的一半被施加于显示单元时,发射亮度可以显著地超过满电压时发射的最大亮度的一半。出于这个原因,将非线性变换应用于RGB颜色模型的增量,以生成R'G'B'颜色模型的增量,从而缩放相对于感知的亮度是线性的。当对像素发射的光的红色分量、蓝色分量和绿色分量中的每个可以指定多达256个亮度级别时,对于特定像素210的编码可以包括三个8位字节,总共24位。当可以指定更多数目的亮度级别时,使用更多数目的比特来表征每个像素,并且当指定更少数目的亮度级别时,可以使用更少数目的比特来对每个像素进行编码。
虽然R'G'B'颜色模型相对容易理解,特别是考虑到CRT屏幕中的显示单元的红色发射荧光体、绿色发射荧光体和蓝色发射荧光体构造,但是对于视频信号压缩和解压缩而言,各种相关的、但是不同的颜色模型更有用。一种这样的可替换颜色模型是Y'CrCb颜色模型。Y'CrCb颜色模型可以被抽象地表征为双椎体体积212,双椎体体积212具有包含正交Cb轴和Cr轴的中心水平平面214,并且具有双椎体的与Y'轴对应的长的垂直轴216。在这种颜色模型中,Cr轴和Cb轴是颜色指定轴,其中水平中间平面214表征可以被显示的所有可能的色调,并且Y'轴表征显示的色调的亮度或强度。指定R'G'B'颜色模型中的红色分量、蓝色分量和绿色分量的数值可以通过简单的矩阵变换220直接被变换为等同的Y'CrCb值。因此,当8比特数目被用于根据Y'CrCb颜色模型对显示单元发射的Y'分量、Cr分量和Cb分量进行编码时,24比特数据单元222可以被用于对单个像素的值进行编码。
对于图像处理,当利用Y'CrCb颜色模型时,数字编码的图像可以被认为是彼此叠加的三个分离的像素化平面(pixilatedplane)。图3图示说明使用Y'CrCb颜色模型的数字编码。如图3所示的数字编码的图像可以被认为是Y'图像302与两个色度图像304和306。Y'平面302基本上对图像的亮度值进行编码,并且等同于数字编码的图像的单色表征。两个色度平面304和306一起表征数字编码的图像中的每个点处的色调或颜色。出于许多视频处理和视频图像储存的目的,方便的是,抽取Cr平面和Cb平面来生成具有一半分辨率的Cr平面308和Cb平面310。换句话讲,不是储存每个像素的强度值和两个色度值,而是对每个像素储存强度值,而对包含四个像素的每个2×2正方形储存一对色度值。因此,图像312的左上角中的所有四个像素被编码为具有相同的Cr值和Cb值。对于图像320的每个2×2区域,可以通过四个强度值322和两个色度值324(总共48个比特,或者换句话讲,每个像素使用12个比特)来对该区域进行数字编码。
图4图示说明视频摄像机的输出。视频摄像机402被表征为透镜404和电子输出产生传感器406。视频摄像机生成时钟信号408,时钟信号408的每个脉冲的上升沿对应于下一个数据包(例如数据包410)的开头。在图4中所示的实施例中,每个数据包包含8比特的强度值或色度值。数码摄像机还生成线信号或行信号412,该信号在与数字编码的图像的整行的输出对应的时间段期间为高。数码摄像机另外输出帧信号414,该信号在输出一个数字图像或一个帧的时间段期间为高。时钟信号、行信号和帧输出信号一起指定用于输出每个强度值或色度值、输出帧的每行和输出视频信号中的每帧的时间。视频摄像机的数据输出416在图4的底部被更详细地显示为包序列420。参照图3中所示的2×2像素区域(图3中的320)并且使用与图3中对于该区域用于编码的强度值322和色度值324的索引惯例相同的索引惯例,图4中的数据流420的内容可以被理解。像素422-426的2×2正方形区域的两个强度值被作为第一行像素值的一部分与像素的2×2正方形区域的第一组两个色度值428-429一起被发送,其中两个色度值428-429在第一两个强度值422-423之间被发送。随后,在第二对强度值424和426之间重复色度值430-431,作为下一行像素强度的一部分。色度值的重复便利于某些类型的实时视频数据流处理。然而,第二对色度值430-431是冗余的。如参照图3所论述的,抽取色度平面,以使得仅两个色度值与包含四个像素的每个2×2区域相关联。
图5图示说明视频编解码器的功能。如以上参照图1-4所论述的,视频摄像机502生成数字编码的视频帧的流504。以每秒30帧,假设1920×1080像素的帧,并且假设每个像素使用12比特的编码,则视频摄像机每秒生成93兆字节的数据。一分钟的持续视频捕获将生成5.5千兆字节的数据。根据目前可用的设计和技术制造的小型手持电子装置不能以这个速率处理、储存和/或发送数据。为了生成可管理的数据传输速率,利用视频编解码器506来对从摄像机输出的数据流进行压缩。H.264标准提供了大约30:1的视频压缩比。由此,视频编解码器506对从摄像机进入的93MB/s数据流进行压缩,以生成大约3MB/s的压缩的视频数据流508。与由摄像机生成的原始视频数据流相反,视频编解码器以可以被处理来供手持装置储存或发送的数据速率输出压缩的视频数据流。视频编解码器还可以接收压缩的视频数据流510,并且对压缩的数据进行解压缩,以生成输出原始视频数据流512,来供视频显示装置使用。
由于视频信号通常包含相对大量的冗余信息,所以视频编解码器可以实现30:1的压缩比。作为一个实施例,通过拍摄两个小孩来回扔球而产生的视频信号包含相对少量的快速变化的信息和相对大量的静态或缓慢变化的对象,所述快速变化的信息即小孩和球的图像,所述静态或缓慢变化的对象包括背景景色和小孩在其上玩耍的草坪。在小孩的人影和球的图像在拍摄过程期间可以从帧到帧地显著变化的同时,背景对象可以在整个拍摄期间或者至少在相对长的时间段内保持相对恒定。在这种情况下,在第一帧后面的帧中编码的大部分信息可以是完全冗余的。视频压缩技术被用于识别冗余信息,并且有效率地对该冗余信息进行编码,因此,极大地减少了压缩的视频信号中所包括的信息的总量。
在图5的下部分更详细地显示了压缩的视频流508(520)。根据H.264标准,压缩的视频流包括网络抽象层(“NAL”)包序列,例如NAL包522。每个NAL包包括8位的头,例如NAL包522的头524。第一位526必须总是零,接着的两位528指示包中所包含的数据是否与参考帧相关联,并且最后的5位530一起构成类型字段,所述类型字段指示包的类型和其数据载荷(payload)的性质。包类型包括包含编码的像素数据和编码的元数据的包,并且还包括表征各种类型的分隔符的包,所述编码的元数据描述数据的部分已经如何被编码,所述分隔符包括序列结束分隔符和流结束分隔符。NAL包的主体(body)532通常包含编码的数据。
图6图示说明在视频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象。从视频处理的观点来讲,视频帧602被认为是由宏块604的二维阵列构成,每个宏块包括16×16数据值阵列。如上所论述的,视频压缩和解压缩通常独立地对包含强度值的Y'帧和包含色度值的色度帧进行操作。人的眼睛通常对亮度变化比对颜色的空间变化敏感得多。因此,如上所论述的,简单地通过抽取两个色度平面来获得最初的有用压缩。假设强度值和色度值的8比特表征,则在抽取之前,2×2正方形像素可以用12个字节的编码数据来表征。在抽取之后,相同的2×2正方形的四个像素可以仅用6个字节的数据来表征。因此,通过降低颜色信号的空间分辨率,实现2:1的压缩比。尽管宏块是对其执行压缩和解压缩操作的基本单元,但是对于某些压缩和解压缩操作,宏块可以被进一步分割。强度宏块或亮度宏块每个包含256个像素606,但是可以被分割生成16×8个分区608、8×16个分区、8×8个分区612、8×4个分区614、4×8个分区616和4×4个分区618。类似地,色度宏块每个包含64个编码的色度值620,但是可以被进一步分割生成8×4个分区622、4×8个分区624、4×4个分区626、4×2个分区628、2×4个分区630和2×2个分区632。另外,在某些操作中可以利用1×4、1×8和1×16像素矢量。
根据H.264标准,每个视频帧可以在逻辑上被分割为片组,其中分割由片组映射(slice-groupmap)来指定。许多不同类型的片组分割可以由适合的片组映射来指定。图7图示说明将视频帧分割为两个片组。视频帧702被分割为第一棋盘格状片组704和补充的棋盘格状片组706。第一片组和第二片组二者含有相等数目的像素值,并且每个包含帧中的像素值的总数的一半。根据基本上任意的映射功能,帧可以被分割为基本上任意数目的片组,每个片组包括全部像素的基本上任意的部分。
图8图示说明第二级别的视频帧分割。每个片组(例如片组802)可以被分割为若干片804-806。每片包含按光栅扫描顺序的若干相邻像素(在片组内相邻,但是不必在一帧内相邻)。片组802可以是整个视频帧,或者可以是根据任意片组分割功能的帧的分区。可以逐片地执行压缩和解压缩操作中的某些操作。
总而言之,对视频帧和视频帧的各种子集执行视频压缩和解压缩技术,所述子集包括片、宏块和宏块分区。通常,与色度平面对象无关地对强度平面对象或亮度平面对象进行操作。由于在每个维度中色度平面被抽取一半,总体4:1压缩,所以色度宏块和宏块分区的大小通常是亮度宏块和亮度宏块分区的大小的一半。
如由H.264标准所暗示的,视频压缩中的第一步是利用两种不同的普通的预测技术之一,以在一种情况下,从同一帧中相邻宏块或宏块分区预测当前考虑的宏块或宏块分区的像素值,并且在另一种情况下,从在空间上相邻的宏块或宏块分区预测当前考虑的宏块或宏块分区的像素值,所述在空间上相邻的宏块或宏块分区出现在正在被预测的宏块或宏块分区的帧之前或之后的帧中。第一类型的预测是空间预测,被称为“帧内预测”。第二类型的预测是时间预测,被称为“帧间预测”。帧内预测是可以被用于某些帧的唯一类型的预测,所述某些帧被称为“参考帧”。帧内预测还是当对宏块进行编码时所使用的默认预测。对于非参考帧的宏块,首先尝试帧间预测。当帧间预测成功时,则不将帧内预测用于宏块。然而,当帧间预测失败时,则可以将帧内预测用作默认预测方法。
图9图示说明帧内预测的一般概念。考虑在视频帧的逐个宏块压缩期间出现的宏块C902。如上所论述的,可以使用256个字节对16×16亮度宏块904进行编码。然而,如果可以从图像中的相邻宏块计算宏块的内容,则在理论上相当大量的压缩是可能的。例如,考虑当前考虑的宏块C902的四个相邻宏块。这四个宏块包括左宏块904、左上对角宏块906、上宏块908和右上对角宏块910。如果可以使用一些数目的不同的预测函数fc之一912,根据这些相邻宏块中的一个或更多个来计算C中的像素值,则宏块的内容可以被简单地编码为用于预测函数的数字指定符或指示符。如果预测函数的数目小于或等于例如256,则用于所选择的预测函数的指定符或指示符可以被编码在单字节信息中。因此,如果可以使用256个可能的预测函数中的被选定的一个从宏块的邻域计算该宏块的内容,则可以实现相当惊人的256:1的压缩比。不幸的是,由于存在太多可能的宏块而不能仅通过256个预测函数进行精确预测,所以用于H.264压缩的空间预测方法通常没有实现这种幅度的压缩比。例如,当每个像素用12个比特编码时,存在212=4096个不同的可能的像素值和4096256个不同的可能的宏块。然而,对于H.264视频压缩,特别是对于具有不快速变化的以及强度和颜色相对均匀的大的图像区域的相对静态的视频信号,帧内预测可以显著地有利于总体压缩比。
可以根据用于4×4亮度宏块的九种不同模式或者根据用于16×16亮度宏块的四种不同模式来执行H.264帧内预测。图10A-I图示说明九种4×4亮度块帧内预测模式。在所有这些图中所使用的图示惯例是类似的,并且参照图10A进行描述。正被预测的4×4亮度宏块在图中通过图右下方的4×4矩阵1002来表征。如此,在图10A中正被预测的4×4矩阵中的最上左侧的像素值1004包含值“A”。与4×4亮度块相邻的单元表征图像内相邻4×4亮度块中的像素值。例如,在图10A中,值“A”1006、“B”1007、“C”1008和“D”1009是正被预测的4×4亮度块1002正上方的4×4亮度块中所包含的数据值。类似地,单元1010-1013表征正被预测的4×4亮度块左方的4×4亮度块的最后垂直列内的像素值。在图10A中所图示说明的模式0预测的情况下,上方相邻的4×4亮度块的最后一行中的值被向下垂直地复制到当前考虑的4×4亮度块1002的列中。因此,在图10A中,模式0预测构成由图10A中所示的指向向下的箭头1020所表征的向下垂直预测。在图10B-10I中使用与图10A中所使用的图示惯例相同的图示惯例示出用于预测4×4亮度块的其余八种帧内预测模式,并且因此,这八种帧内预测模式是完全独立且不言自明的。除了模式2以外的每种模式都可以被认为是空间矢量,所述空间矢量指示相邻4×4块中的像素值被转换为正被预测的块的方向。
图11A-11D使用与图10A-I中所使用的图示惯例类似的图示惯例图示说明用于16×16亮度块的帧内预测的四种模式。在图11A-D中,正被预测的块是矩阵1102的右下侧部分中的16×16块,最左垂直列1104是左毗连16×16亮度块的最右垂直列,并且顶部水平行1106是上毗连16×16亮度块的底行。最左上单元1110是上左对角16×16亮度块的右下侧角单元。16×16预测模式与4×4帧内预测模式的子集类似,除了图11D中所示的模式4之外,模式4是相对复杂的平面预测模式,该模式从上方相邻的16×16亮度块的下一行和左方相邻的16×16亮度块的最右侧垂直列中的所有像素计算每个像素的预测值。通常,将生成正被帧内预测的当前块的最接近近似的模式选择为应用于当前考虑的块的帧内预测模式。可以将预测像素值与实际像素值进行比较;像素值使用各种比较度量中的任意一种,所述度量包括在预测的块和考虑的块之间的平均像素值差、像素值的均方差、方差和以及其他这样的度量。
图12图示说明帧间预测的概念。如上所论述的,帧间预测是时间预测,并且可以被认为是基于运动的预测。出于图示说明的目的,考虑当前帧1202和视频信号中在当前帧之前或之后出现的参考帧1204。在视频压缩的当前时刻,需要从参考帧的内容预测当前宏块1206。图12中图示说明所述过程的实施例。在参考帧中,对于当前帧,参考点1210被选为当前考虑的块1206的应用于参考帧的坐标。换句话讲,所述过程在当前帧中的当前考虑的块在参考帧中的等同位置处开始。然后,在图12中由粗实线1212正方形所指示的有界搜索空间内,将搜索区域内的每个块与当前帧中的当前考虑的块进行比较,以识别参考帧1204的搜索区域1212中与当前考虑的块最相似的块。如果搜索区域内像素值最接近的块与当前考虑的块的内容之间的差低于阈值,则从搜索区域选择的最接近的块预测当前考虑的块的内容。从搜索区域选择的块可以是实际的块,或者可以是相对于直线像素格栅的分数坐标处的估计块,其中所述估计块中的像素值从参考帧中的实际像素值插值。因此,使用帧间预测,而不是将当前考虑的宏块1206编码为256个像素值,可以将当前考虑的宏块1206编码为参考帧的标识符和矢量的数字表征,所述矢量从参考点1210指向从搜索区域1212选择的宏块。例如,如果发现所选择的插值块1214与当前考虑的块1206最紧密匹配,则可以将当前考虑的块编码为参考帧1204的标识符和矢量1216的数字表征,所述标识符例如视频信号内的帧与当前帧的偏移,矢量1216表征所选择的块1214距参考点1210的空间位移。
各种不同的度量可以被用于将参考帧1212的搜索区域内的实际块或插值块的内容与当前考虑的帧1206的内容进行比较,所述度量包括像素值之间的平均绝对像素值差或均方差。图12中提供作为上述帧间预测过程的可替换描述的类C++式的伪代码1220。编码的位移矢量被称为运动矢量。所选择的块距参考帧中的参考点的空间位移对应于视频流中的当前考虑的宏块的时间位移,所述时间位移通常对应于视频图像中的对象的实际运动。
图13A-D图示说明用于计算参考帧的搜索区域内的块的像素值的插值过程,所述插值过程可以被认为是发生在分数坐标处的。H.264标准允许相对于整数像素坐标的0.25的分辨率。考虑图13A的左边的像素1302的6×6块。插值过程可以被认为是实际像素在两个维度中的平移扩展和在扩展像素之间插入的插值的计算。图13A-D图示说明实际像素值的6×6块中的中间四个像素1304-1307之间的更高分辨率的插入值的计算。图13A的右边图示说明扩展1310。在本实施例中,在两个维度中对像素值1304-1307已经进行了空间上的扩展,并且已经添加了21个新的单元,以形成在拐角处具有原始像素值1304-1307的4×4矩阵。也已经对像素1302的6×6矩阵的其余像素进行了平移扩展。图13B图示说明在实际像素值1304和1306之间生成插值1312的插值过程。如图13B中虚线1314所示,沿着一列像素值应用垂直滤波器,所述像素值包括原始像素值1304和1306。根据公式1316计算插值Y1312。在本实施例中,根据公式1322,通过两个垂直相邻值的线性插值来对值Y'1320进行插值。可以通过值1312和1306之间的线性插值来类似地计算插值1324。可以类似地应用垂直滤波器1314来计算包含原始值1305和1307的列中的插值。图13C图示说明原始值1304和1305之间的水平行中的插值的计算。在该实施例中,与图13B中垂直滤波器的应用类似,将水平滤波器1326应用于实际像素值。通过公式1328计算中间点插值,并且可以通过根据公式1330和用于中间点与原始值1305之间的右侧插值的类似公式的线性插值来获得中间点的任一侧的四分之一点值。可以将相同的水平滤波器应用于包含原始值1306和1307的最后一行。图13D图示说明中间插值点1340和插值的中间点值1342与1344之间相邻的四分之一点的计算。可以通过线性插值获得所有其余的值。
图14A-C图示说明不同类型的帧和相对于这些不同类型的帧可行的不同类型的帧间预测的实施例。如图14A所示,视频信号包括线性视频帧序列。在图14A中,序列以帧1402开始,并且以帧1408结束。视频信号中的第一类型的帧被称为“I”帧。I帧的宏块的像素值不能通过帧间预测来预测。I帧是解压缩的视频信号内的一种类型的参考点。编码的I帧的内容仅取决于原始信号I帧的内容。因此,当系统误差发生在涉及与帧间预测相关联的问题的解压缩中时,可以通过向前跳到下一个I参考帧并且从该帧重新开始解码来恢复视频信号解压缩。这样的误差不越过I帧栅栏(barrier)传播。在图14A中,第一帧1402和最后帧1404是I帧。
图14B中图示说明下一类型的帧。P帧1410可以包含已经从I帧帧间预测的块。在图14B中,块1412已被编码为运动矢量和参考帧1402的标识符。运动矢量表征参考帧1402中的块1414到P帧1410中的块1412的位置的时间移动。P帧表征一种类型的预测约束帧,该帧包含已经可以通过帧间预测从参考帧预测的块。P帧表征编码的视频信号内的另一种类型的栅栏帧。图14C图示说明第三类型的帧。B帧1416-1419可以包含通过帧间预测从一个或两个其他B帧、P帧或I帧预测的块。在图14C中,B帧1418包含从P帧1410中的块1422被帧间预测的块1420。B帧1416包含从B帧1417中的块1428和参考帧1402中的块1430这二者被预测的块1426。B帧可以最佳地利用帧间预测,并且因此,实现由于帧间预测而导致的最高压缩,但是也具有可以在解码过程中引起各种误差和异常的更高的可能性。当块(例如块1426)是从两个其他块被预测时,该块被编码为两个不同的参考帧标识符和运动矢量,并且该预测块被生成为从其被预测的两个预测块中的像素值的可能的加权平均。
如以上所提及的,如果帧内预测和/或帧间预测完全精确,则可以获得极其高的压缩比。将块表征为一个或两个运动矢量和帧偏移肯定比表示为256个不同的像素值简明得多。将块表征为13种不同的帧内预测模式之一甚至更有效率。然而,如通过大量不同的可能的宏块值可意识到的,就作为256字节编码的数值的宏块值而论,帧内预测和帧间预测均不可能生成视频帧内的块的内容的精确预测,除非其中包含视频帧的视频信号不包含噪声,并且几乎不包含信息,所述视频信号例如均匀的、无变化的、纯色背景的视频。然而,即使帧内预测和帧间预测不能精确地预测宏块的内容,一般来讲,它们常常也可以相对接近地估算宏块的内容。这种估计可以被用于产生差宏块,所述差宏块表征实际宏块与对于该宏块通过帧内预测或帧间预测而获得的预测值之间的差。当预测令人满意时,结果得到的差块通常仅包含少量或者甚至零个像素值。
图15图示说明差宏块的产生的实施例。在图15的实施例中,宏块被示为三维图表,在所述三维图表中,宏块的二维表面上方的柱的高度表征宏块内的像素值的幅度。在图15中,当前考虑的帧内的实际宏块被示为顶部的三维图表1502。中间的三维图表表征通过帧内预测或帧间预测而获得的预测宏块。注意的是,预测宏块1504的三维图表与实际宏块1502完全相似。图15表征帧内预测或帧间预测已经产生实际宏块的非常接近的估算的情况。从实际宏块减去预测宏块产生差宏块,所述差宏块在图15中被示为较下面的三维图表1506。尽管图15是最佳情况预测的夸大,但是它图示说明与实际的最终预测的宏块相比,差宏块通常不仅包含幅度更小的值,而且还常常包含更少的非零值。还要注意的是,可以通过将差宏块加到预测宏块来完全恢复实际宏块。当然,预测的像素值可以超过或者低于实际像素值,从而差宏块可以包含正值和负值这二者。然而,作为实施例,原点的移位可以被用于生成全部正值的差宏块。
正如可以从与宏块空间上相邻和/或时间上相邻的块中的值被预测的该宏块内的像素值一样,也可以预测通过帧间预测产生的运动矢量和通过帧内预测产生的模式。图16图示说明运动矢量和帧内预测模式预测的实施例。在图16中,当前考虑的块1602在帧的一部分的块网格内被示出。已通过帧内预测或帧间预测对相邻块1604-1606进行了压缩。因此,存在与这些相邻的、已经被压缩的块相关联的帧内预测模式或帧间预测运动矢量,所述帧内预测模式是一种类型的位移矢量。因此,合理的假设是,根据使用的是帧内预测还是帧间预测而与当前考虑的块1602相关联的空间矢量或时间矢量将与和相邻的、已经被压缩的块1604-1606相关联的空间矢量或时间矢量相似。事实上,与当前考虑的块1602相关联的空间矢量或时间矢量可以被预测为如图16右边的矢量加法1610所示的相邻块的空间矢量或时间矢量的平均。因此,不是直接对运动矢量或帧间预测模式进行编码,H.264标准是基于矢量预测以从实际计算的矢量1622减去预测矢量1622的方式计算差矢量。帧之间的块的时间运动和帧内的空间一致性将被预期为是大致上相关的,并且因此,预测矢量将被预期为接近地近似实际计算的矢量。因此,差矢量的大小通常比实际计算的矢量小,并且因而,可以使用更少的比特来对差矢量进行编码。再者,与差宏块一样,可以通过将差矢量加到预测矢量来精确地重构实际计算的矢量。
一旦通过帧间预测或帧内预测生成差宏块,就根据预定的顺序将差宏块分解为4×4差块,通过整数变换对每个4×4差块进行变换,以生成对应的系数块,然后对所述系数块的系数进行量化,以生成最终的量化系数序列。帧内预测和帧间预测的优点是,差块的变换通常生成大量尾随零系数(trailingzerocoefficient),这些尾随零系数完全可以通过随后的熵编码步骤而被有效率地压缩。
图17图示说明差宏块的分解、整数变换和量化的一个实施例。在该实施例中,按图17中的差宏块的单元的数字标示所描述的顺序将差宏块1702分解为4×4差块1704-1706。对每个4×4差块执行整数变换1708计算,以生成对应的4×4系数块1709。根据z字形序列化模式1710将变换的4×4块中的系数序列化,以生成线性的系数序列,然后通过量化计算1712对所述系数序列进行量化,以生成量化系数序列1714。视频信号压缩中的已经论述的步骤中的许多步骤是无损的。宏块可以从帧内预测方法或帧间预测方法以及对应的差宏块来无损地重新产生。还存在整数变换的精确逆变换。然而,由于一旦被量化,原始系数的近似值可以通过量化方法的近似逆(被称为“重缩放”)来重新产生,所以量化步骤1712是一种有损压缩的形式。由于不能从低分辨率色度数据恢复高分辨率色度数据,所以色度平面抽取是另一个有损压缩步骤。量化和色度平面抽取事实上是H.264视频压缩技术中的两个有损压缩步骤。
图18分别提供H.264视频压缩和视频解压缩中所使用的整数变换和逆整数变换的推导。符号“X”1802表征4×4差块或残余块(比如,图17中的1704-1706)。由图18中的第一组表达式1804定义离散余弦变换,离散余弦变换是一种公知的类似于离散傅里叶的变换。如表达式1806所示,离散余弦变换是基于矩阵乘法的运算。可以如图18中的表达式1808中所示的那样对离散余弦变换进行因子分解。矩阵C1810的元素包括有理数“d”1812。为了有效率地估算离散余弦变换,可以将该数近似为1/2,从而得到图18中的近似矩阵元素1814。为了生成全整数元素而乘以矩阵C的两行的这种估算生成图18中的整数变换1818和对应的逆整数变换1820。
图19图示说明量化过程。可以假设任何整数值在范围0-255中,作为简单的实施例,认为用8个比特编码的数1902因此可以在0(图19中的1904)和255(图19中的1906)之间的值范围中。如图19所示,量化过程可以被用于通过范围0-255中的整数到范围0-7中的整数的逆线性插值来仅用三个比特1908对8比特数1902进行编码。在这种情况下,用8比特编码的数表征的整数值0-31全部被映射到值0(图19中的1912)。连续范围的32个整数值被映射到值1-7。因此,例如,整数200(图19中的1916)的量化生成量化值6(图19中的1918)。可以通过简单的乘法从3比特的量化值重新生成8比特的值。可以将3比特的量化值乘以32,以生成原始的8比特数的近似。然而,近似数1920可以仅具有值0、32、64、…、224中的一个。换句话讲,量化是一种数值抽取或者精度损失的形式。重缩放过程或者乘法可以被用于重新产生估算被量化的原始值的数,但是不能恢复在量化过程中损失的精度。通常,量化由公式1922表达,并且量化的逆或者重缩放由公式1924表达。这些公式中的值“Qstep”控制在量化过程中损失的精度。在图19的左侧图示说明的实施例中,Qstep具有值“32”。更小的Qstep值提供更小的精度损失,但也提供更少的压缩,而更大的值提供更大的压缩,但也提供更大的精度损失。例如,在图19中所示的实施例中,如果Qstep是128,而不是32,则可以用一个比特对8比特数进行编码,但是重缩放将仅会生成两个值0和128。还要注意的是,可以通过重缩放之后的另外的加法步骤如箭头1926和1928所指示的那样对缩放值进行垂直移位。例如,在图19中所示的实施例中,不是产生值0、32、64、…、224,而是将16加到缩放值产生对应的值16、48、…、240,使得在缩放的垂直数轴的顶部的间隙不是那么大。
在对残余块或差块进行量化并且收集从熵编码上游的步骤生成为数据流的差矢量和其他对象之后,将熵编码器应用于部分压缩的数据流,以生成熵编码的数据流,所述熵编码的数据流包括以上参照图5所描述的NAL包的载荷。熵编码是无损编码技术,该技术利用部分编码的数据流中的统计上的非均匀性。熵编码的一种公知的实施例是Morse代码,Morse代码使用常常出现的字母(例如“E”和“T”)的单脉冲编码和不频繁遇到的字母(例如“Q”和“Z”)的四脉冲或五脉冲编码。
图20提供熵编码的数字实施例。考虑包括28个符号的四符号字符串2002,每个字符选自字母“A”、“B”、“C”和“D”之一。如编码表格2004所示,该个28符号串的简单并且直观的编码将会是将四个不同的2比特代码之一分配给四个字母中的每个。使用这种2比特编码,生成等同于符号串2002的56比特编码的符号串2006。然而,符号串2002的分析揭示了表格2010中所示的每个符号的百分比发生率。“A”是到目前为止最频繁出现的符号,并且“D”是到目前为止最不频繁出现的符号。通过编码表格2012表征更好的编码,编码表格2012使用每个符号的可变长度的表征。作为最频繁出现的符号的“A”被分配代码“0”。最不频繁出现的符号“B”和“D”分别被分配代码“110”和“111”。使用这种编码生成仅使用47个比特的编码符号串2014。通常,对于出现概率为P的符号,二进制熵编码应该生成-log2P个比特的编码符号。尽管在图20中所示的实施例中对于明确具有不均匀的符号出现分布的长符号序列,编码长度的改进并不大,但是熵编码生成相对高的压缩比。
一种类型的熵编码被称为“算术编码”。图21A-B中提供简单的实施例。图21A-B中图示说明的算术编码是一种上下文自适应编码方法的版本。在该实施例中,8符号序列2102被编码为小数点后位数为5位的小数值.04016(图21A中的2104),可以通过各种已知的二进制数字编码中的任何一种对小数值.04016进行编码,以生成二进制编码符号串。在该简单实施例中,在编码过程期间不断更新符号出现概率表格2106。由于当根据在编码期间观察到的符号出现频率调整符号出现概率时,编码方法随时间动态地改变,所以这提供上下文自适应。一开始,由于缺乏更佳的一组初始概率,所以将所有符号的概率设置为0.25。在每个步骤,利用区间。每个步骤的区间用数轴(例如数轴2108)来表征。一开始,区间在0-1范围内变化。在每个步骤,根据当前的符号出现频率表格中的概率将区间划分为四个分区。由于初始表格包含相等的概率0.25,所以在第一步中,区间被划分为四个相等部分。在第一步中,对符号序列2102中的第一个符号“A”2110进行编码。将与这个第一符号对应的区间分区2112选择为用于下一步的区间2114。此外,由于遇到符号“A”,所以通过将符号“A”的出现概率增加0.03并且将其余符号的出现概率降低0.01来在下一版本的表格2116中调整符号出现概率。下一个符号还是“A”2118,而所以再次选择第一区间分区2119为用于第三步的后一区间2120。该过程继续,直到符号串中的所有符号已经被使用为止。最后的符号“A”2126选择在所述过程中计算的最后区间中的第一区间2128。注意的是,区间的大小在每个步骤减小,并且通常需要指定更多数目的小数点位数。可以通过选择最后区间2128内的任何值来对符号串进行编码。值.04016落在该区间内,并且因此,表征符号串的编码。如图21B所示,可以通过使用初始的等值符号出现频率概率表格2140和初始间隔0-12142再次开始所述过程来重新产生原始符号串。编码.04016被用于选择与符号“A”对应的第一分区2144。然而,在与图21A中所示的正向过程中的步骤类似的步骤中,编码.04016被用于选择每个后一区间的每个后一分区,直到重新产生最后的符号串2148。
尽管该实施例图示说明算术编码的一般概念,但是由于该实施例假设无限精度算术,并且由于符号出现频率概率表格调整算法将快速导致不可工作的值,所以它是假象的实施例。实际的算术编码不假设无限精度算术,而是利用技术来调整区间,以给予在由任何特定计算机系统提供的精度内的区间指定和选择。H.264标准指定几种不同的编码方案,这些编码方案之一是上下文自适应算术编码方案。查表过程被用于对由上游编码技术生成的频繁出现的符号串进行编码,以便利于随后的解压缩,所述频繁出现的符号串包括部分压缩的数据流中所包括的各个元数据和参数。
当根据H.264技术对视频数据流进行压缩时,随后的解压缩可以得到某些类型的伪像。作为实施例,图22A-B图示说明一种普遍出现的伪像和被用作解压缩的最后步骤以改善伪像的滤波方法。如图22A所示,在没有滤波的情况下,解压缩的视频图像可以表现出成块状。由于逐块地执行解压缩和压缩,所以各个块边界可以表征压缩/解压缩处理中的显著的不连续,这些不连续导致所显示的解压缩的视频图像的视觉上可感知的成块。图22B图示说明H.264解压缩中用于改善成块伪像的去块滤波器方法。在这种技术中,为了使跨块边界上的像素值梯度的不连续平滑,沿着所有的块边界移动与以上参照图13A-D所论述的用于像素值插值的滤波器类似的垂直滤波器2210和水平滤波器2212。边界每侧的三个像素值可以受去块滤波器方法的影响。在图22B的右边,示出了去块滤波器应用的实施例。在该实施例中,滤波器2214被表征为包含块边界2216的任一侧的四个像素值的垂直列。滤波器的应用为块边界的任一侧的第一三个像素值生成滤波像素值。作为一个实施例,从像素2218、2220、2221、2222和2223的预滤波值计算像素2218的滤波值x*。为了重新建立跨边界的连续梯度,滤波器趋向于对像素值进行平均或者使像素值变得模糊。
图23概括了H.264视频数据流编码。图23提供框图,并且因此,提供编码过程的高级别的描述。然而,该示图与前面的论述和前面所参照的图一起提供H.264编码的基本概述。必要时,揭示另外的细节,以描述本发明的特定视频编解码器实施方案。应该注意的是,在视频编码和视频解码中存在众多在本文档的概述部分不能解决的细微要点、细节和特殊情况。为了易于交流和简化,这里的实施例大部分基于H.264标准,然而,绝不应该被理解为这里呈现的本发明限于H.264应用。官方H.264说明书超过500页长。这些许多细节包括,例如,由各种边界状况引起的特殊情况、特定细节和在各种上下文相关情况下可以应用的可选的可替换方法。考虑例如帧内预测。帧内预测模式取决于特定的相邻块中的像素值的可利用性。对于没有邻域的边界块,不能使用所述模式中的许多种模式。在某些情况下,为了使得可以使用特定的帧内预测模式,可以对不可利用的相邻像素值进行插值或估算。编码过程中的许多令人感兴趣的细节与以下操作相关:选择最佳预测方法、量化参数,以及进行其他这样的参数选择,以优化视频数据流的压缩。H.264标准不指定如何执行压缩,而是相反地,指定编码的视频数据流的格式和内容以及将如何对编码的视频数据流进行解压缩。H.264标准还提供各种不同级别的不同计算复杂性,其中高端级别支持计算上更昂贵的、但是更有效率的另外的步骤和方法。目前的概述意在提供理解后面提供的本发明的各种实施方案的描述的充分背景,但是绝不意在构成H.264视频编码和解码的完整描述。
在图23中,提供帧2302-2304的流作为编码方法的输入。在该实施例中,如上所论述的,帧被分解为宏块或宏块分区,以用于随后的处理。在第一处理步骤中,尝试从一个或更多个参考帧对当前考虑的宏块或宏块分区进行帧间预测。当如步骤2308中所确定的那样,帧内预测成功并且产生一个或更多个运动矢量时,则在求差步骤2310中从实际的原始宏块减去通过运动估计和补偿步骤2306产生的预测宏块,以生成对应的残余宏块,所述残余宏块通过求差步骤被输出到数据路径2312上。然而,如果还是如步骤2308中所确定的那样帧间预测失败,则开始帧内预测步骤2314来对宏块或宏块分区执行帧内预测,然后在步骤2310中从实际的原始宏块或宏块分区减去所述宏块或宏块分区,以生成被输出到数据路径2312的残余宏块或残余宏块分区。然后通过变换步骤2316对残余宏块或残余宏块分区进行变换,通过量化步骤2318进行量化,可能在步骤2320中进行重新排序以更有效率地编码,并且然后在步骤2322中进行熵编码,以生成输出NAL包2324的流。通常,压缩实施方式在平衡各种预测方法的成本、及时性和存储器使用的同时,寻求利用提供考虑的宏块的最接近的预测的预测方法。可以使用用于应用预测方法的各种不同的排序和选择标准中的任意一种。
继续跟随图23的实施例,在步骤2318中进行量化之后,量化系数被输入到重排序阶段2320和熵编码阶段2322,并且还被输入到逆量化器2326和逆变换步骤2328,以重新产生残余宏块或残余宏块分区,所述残余宏块或残余宏块分区通过逆变换步骤被输出到数据路径2330上。通过逆变换步骤输出的残余宏块或宏块分区通常与通过求差步骤2310输出到数据路径2312上的残余宏块或残余宏块分区不相同。回想,量化是有损压缩技术。因此,逆量化步骤2326生成原始变换系数的估算,而不是精确地再现原始变换系数。因此,虽然逆整数变换将生成残余宏块或宏块分区的精确副本,但是如果将它应用于通过整数变换步骤2316生成的原始系数,则由于逆整数变换步骤2328被应用于重缩放系数,所以在步骤2328中仅生成原始残余宏块或宏块分区的估算。然后在加法步骤2332中将估算的残余宏块或宏块分区加到对应的预测宏块或宏块分区,以产生宏块的解压缩版本。解压缩的、但是没有滤波的宏块版本通过数据路径2334被输入到帧内预测步骤2312,以用于随后处理的块的帧内预测。对解压缩的宏块执行去块滤波器2336的步骤,以生成滤波的、解压缩的宏块,然后对所述宏块进行组合,以生成解压缩的图像2338-2340,解压缩的图像2338-2340然后可以被输入到运动估计和补偿步骤2306。一个巧妙之处涉及解压缩的帧输入到运动估计和补偿步骤2306,并且解压缩的、但是没有滤波的宏块和宏块分区输入到帧内预测步骤2314。回想,为了预测当前考虑的宏块或宏块分区中的值,帧内预测与大部分的运动估计和补偿这二者都使用相邻块,在空间预测的情况下,使用当前帧中的相邻块,或者在时间帧间预测的情况下使用前帧和/或后帧中的相邻块。但是,考虑压缩的数据流的接收者。接收者将不可以访问最初的原始视频帧2302和2304。因此,在解压缩期间,编码的视频数据流的接收者将使用先前解码的或解压缩的宏块来用于预测随后解码的宏块的内容。如果编码过程使用原始视频帧进行预测,则编码器将使用与解码器随后可用的数据不同的数据进行预测。这将在解码过程中引起显著的误差和伪像。为了防止这种情况,编码过程产生用于在帧间预测步骤和帧内预测步骤中的解压缩的宏块和宏块分区以及解压缩的且经过滤波的视频帧,从而帧内预测和帧间预测使用相同的数据对任何解压缩过程将会可用的宏块和宏块分区的内容进行预测,所述任何解压缩过程可以仅依赖于编码的视频数据流进行解压缩。因此,通过数据路径2334被输入到帧内预测步骤2314的解压缩的、但是没有经过滤波的宏块和宏块分区是随后从其预测当前宏块或宏块分区的相邻块,并且运动估计和补偿步骤2306将解压缩的且经过滤波的视频帧2338-2340用作参考帧,以用于处理其他帧。
图24以与图23中所用的框图方式类似的框图方式图示说明示例性的H.264视频数据流解码过程。解压缩比压缩简单得多。NAL包流2402输入到熵解码步骤2404中,熵解码步骤2404应用逆熵编码来产生量化系数,重排序步骤2406将所述量化系数重新排序为与通过图23中的重排序步骤2320执行的重排序互补。熵解码流中的信息可以被用于确定最初用其对数据进行编码的参数,所述参数包括在每个块的压缩期间是利用帧内预测还是利用帧间预测的情况。通过步骤2408,该数据允许在步骤2410中选择帧间预测或者在步骤2412中选择帧内预测,以生成沿着数据路径2414提供给加法步骤2416的宏块和宏块分区的预测值。在步骤2418中逆量化器对重新排序的系数进行重新缩放,并且在步骤2420中应用逆整数变换来生成残差或者残余宏块或宏块分区的估算,在加法步骤2416中将所述估算加到基于先前解压缩的宏块或宏块分区而产生的预测宏块或宏块分区。加法步骤生成解压缩的宏块或宏块分区,以生成解压缩的视频帧2424-2426,在步骤2422中对这些解压缩的宏块或宏块分区应用去块滤波器,以生成最后解压缩的视频帧。解压缩过程基本上与图23中所示的压缩过程的下部分等同。
第二小节:根据本发明的用于解决复杂计算任务的并行集成电路设计的原理
实现执行H.264压缩和解压缩的计算引擎的问题是图示说明本发明的示例性问题域。在本小节中,用于开发用于执行H.264压缩和解压缩的并行流水线式集成电路计算引擎的原理被描述为表征本发明实施方案的计算引擎设计的整体方法的实施例。本发明绝不限于H.264实施方式。
实现执行在第一小节中所论述的H.264视频压缩和解压缩的视频编解码器的一种方式是用软件对编码和解码过程进行编程,并且在通用计算机上执行程序。图25是通用计算机的非常高级的示图。计算机包括处理器2502、存储器2504、存储器/处理器总线2506和桥2508,存储器/处理器总线2506互连处理器、存储器。桥将处理器/存储器总线2506与高速数据输入总线2510和内部总线2512互连,内部总线2512连接第一桥2508与第二桥2514。第二桥又通过高速通信媒介2520连接至各个装置2516-2518。这些装置之一是控制大容量储存装置2521的I/O控制器2516。
考虑实现视频编解码器的软件程序的执行。在该实施例中,软件程序储存在大容量储存装置2521上,并且根据需要被分页到存储器2504中。处理器2502必须从存储器提取软件程序的指令,以用于执行。因此,每个指令的执行涉及至少一个存储器提取,并且还可以涉及处理器存取存储器中(并且最终在大容量储存装置2521中)的储存数据。通用计算机系统中的实际计算行为的很大一部分致力于在大容量储存装置、存储器和处理器之间传输数据和程序指令。此外,关于以高数据传输速率生成大容量数据的视频摄像机或其他数据输入装置,在视频摄像机和处理器之间可能存在对于存储器和大容量储存装置这二者的大量竞争。这种竞争可以持续达到一般计算机系统内的各个总线和桥的饱和。为了使用视频编解码器的软件实施方式来实现实时视频压缩和解压缩,计算机所消耗的可用计算资源和功率的非常大的一部分致力于数据传输和指令传输,而不是实际上执行压缩和解压缩。并行处理方法可以被预期为提高软件实现的视频编解码器的计算吞吐量的可行方法。然而,在一般计算系统中,适当地分解问题以充分利用多个处理部件远非微不足道的任务,并且可能不会解决计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽,或者可能甚至使计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽恶化。
可被考虑的下一种实施方式将是使用各种片上系统(system-on-a-chip)设计方法中的任意一种将软件实施方式移到硬件上。片上系统实现的视频编解码器将提供优于执行视频编解码器的软件实现的通用计算机系统的某些优点。具体地,程序指令可以储存在板上、闪存中,并且各种计算步骤可以在逻辑电路中实现,而不是被实现为由处理器顺序执行指令。然而,视频编解码器的片上系统实现本质上一般仍然是按顺序的,并且不提供高吞吐量的并行计算方法。
图26图示说明视频压缩和解压缩过程的许多方面,当考虑这些方面时,这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。首先,H.264标准已经提供服从并行处理解决方案的高级问题分解。如上所论述的,每个视频帧2602被分解为宏块2604-2613,并且为了在前向方向上对视频帧进行压缩,对宏块和宏块分区执行基于宏块的或者基于宏块分区的操作,并且反向地对宏块进行解压缩,以重构解压缩的帧。如上所论述的,在编码过程期间和解码过程期间帧之间和宏块之间肯定存在相关性。然而,如图26所示,宏块与宏块相关性和宏块分区与宏块分区相关性通常是前向相关性。序列2613的开始帧中的开始宏块不取决于后面的宏块,并且可以完全基于其自己的内容进行压缩。当通过宏块的光栅扫描处理,压缩逐帧地继续时,后面的宏块可以取决于先前压缩的帧中的宏块,特别是对于帧间预测,并且可以取决于同一帧内的先前压缩的宏块,特别是对于帧内预测。然而,相关性受到很好的约束。首先,相关性受限于序列、空间和时间中的最大距离2620。换句话讲,只有当前帧内的相邻宏块和相对少量参考帧中以当前帧的位置为中心的搜索区域内的宏块可能对压缩任何给定的宏块有贡献。如果相关性在时间、空间和序列中没有受到很好的约束,则将需要非常大的存储器容量来容纳压缩连续宏块所需的中间结果。这样的存储器是昂贵的,并且随着存储器管理任务的复杂性和大小增大,快速开始消耗可用的计算带宽。另一种类型的约束是,对于给定的宏块2622,可能仅存在相对少的、最多数目的相关性。这种约束也有助于限制存储器的必要大小,并且有助于对计算复杂性的限制。随着相关性数目增长,计算复杂性可以成几何地或者成指数地增长。此外,当处理实体之间的必要通信被很好地限制时,对于复杂计算问题的并行处理解决方案才是可行的和可管理的。否则,结果在分离的处理实体之间的通信快速压垮可用的计算带宽。视频编解码器问题的另一个特点是,前向压缩方向或者反向解压缩方向的每个宏块的处理是逐步过程2624。如上所论述的,这些按顺序的步骤包括帧间和帧内预测、残余宏块的产生、主变换、量化、对象重排序和熵编码。这些步骤是分离的,并且一般来讲,一个步骤的结果被直接进给到后面的步骤。因此,正如可以以沿着组装线逐步制造汽车或电器的方式一样,可以按组装线方式处理宏块。
在许多不同的问题域内,可以存在参照图26所论述的视频编解码器实现的激励根据本发明的视频编解码器的大规模并行处理实施方式的特点。在许多情况下,可以以以许多不同的方式分解计算问题。为了将本发明的方法应用于任何特定问题,作为所述方法的第一步,需要选择产生以上参照图26所论述的特点中的一些或全部的问题分解。例如,可以以可替换的、不利的方式分解视频数据流压缩问题。例如,可替换的分解将是分析整个视频数据流或者帧的大部分块,以在宏块处理之前进行运动检测。在某些方面,这种较大粒度方法可以对运动检测和基于运动检测的压缩提供显著的优点。然而,这种可替换的问题分解需要容量很大的内部存储器,并且运动检测步骤将会太复杂且计算效率太低,以至于不能容易地在易计算的和可管理的数据对象的逐步处理内适应。
再次,强调的是,尽管在实现视频编解码器的背景下描述本发明,但是本发明的方法适用于宽泛范围的效率高的被设计来解决多种不同计算问题的计算引擎。对于可以被分解和用公式表示以提供参照图26所论述的特点的那些问题,本发明的方法提供计算带宽、成本、功耗的效率以及激励和约束计算引擎、装置和系统开发的其他重要效率。
图27图示说明根据本发明的方法的视频编解码器的单集成电路实现的基本特征。单集成电路内实现的那些部件在大的虚线块2702内被示出。视频编解码器实施方式另外使用外部存储器2704和视频摄像机2706的外部光学器件和电子器件。视频摄像机系统的另外的外部部件包括电源、各种另外的机电部件、壳体、用于外部装置的互连部件和其他这样的部件。
如以上参照图4所论述的,视频摄像机将数据流和电子时序信号输入2708提供给视频编解码器。数据流被引导到存储器2704和集成电路内的微处理器控制器部件2710,微处理器控制器部件2710可以访问视频摄像机的时序信号输出,以协调视频编解码器的行为。存储器2704是双端口的,以使得当视频数据流从数码视频摄像机2706进入时,可以将先前储存的原始视频数据从外部存储器提取到内部高速缓冲存储器2712中,以提供给若干处理元件2714-2719中的每个。在图27中,示出了六个处理元件2714-2719,但是在以下所论述的特定实施方案中,事实上存在更多数目的处理元件。处理元件的数目是问题域确定的且设计选择的参数。一种实施方式的完全分开的处理元件可以可替换地在另一种实施方式中被组合在一起。
在图27的实施例中,微处理器控制器2710执行储存在闪存2720中的指令。微处理器控制器通过各个信号路径与存储器2722、高速缓冲存储器2724、系统时钟2726和多个处理元件2728通信。在集成电路内,大量数据流动通过对象总线2730发生。对象总线将视频数据相关的对象(主要是宏块和宏块分区)传递到处理元件。另外,对象总线还可以传递共享的参数和元数据,包括描述宏块和宏块分区对象以及当前帧和视频数据流内的更高级结构的对象。
在该实施例中,每个处理元件执行视频数据对象的逐步处理的一个步骤,所述视频数据对象主要是宏块和宏块分区。输入到处理元件的视频对象的类型和通过处理元件输出的视频和数据对象的类型取决于处理元件所实现的压缩过程中的特定步骤。处理元件执行被执行来压缩视频数据的大量计算。处理方法是非常流水线式、组装线式的方法,在该方法中,给定的原始数据宏块进入第一处理元件2714,并且沿着处理元件流水线中的后面的处理元件序列以逐步的方式被变换。总体组装线处理由相对低频时钟信号实现的计算步骤时序信号控制。每个处理元件内的处理步骤由相对高频时钟信号控制。视频编解码器的单集成电路实施方式的一个重要方面是低频计算步骤时序信号提供用于微处理器控制器的时序信号,但是不提供组装线过程的绝对控制。一般来讲,应该在单个低频计算步骤时序信号间隔内执行逐步的高级处理中的每个步骤。然而,可能存在处理元件不能在一个时间间隔内完成其任务的情况。这些情况通过由微处理器控制器2710提供的高级控制逻辑来检测,在这种情况下,微处理器控制器可以延迟开始后面的计算步骤,使得即使处理元件的任务已经超过低频时序间隔,处理元件也可以完成其任务。因而,微处理器控制器控制提供视频压缩和视频解压缩过程的总控制的重要级别的灵活性。如果没有提供这种灵活性,则需要将低频间隔至少设置为系统内的任何处理元件所需的最大可能的时间间隔,以完成处理元件可能会遇到的计算上最复杂的任务。在最复杂任务只是不频繁发生(例如每1,000个宏块中发生一次)的情况下,则在处理其余的999个计算需求较小的宏块期间,处理元件将在低频时间间隔内的大部分时间段内处于空闲。通过提供总体组装线过程的更灵活的微处理器控制器控制,可以将低频时序信号间隔设置为合理值,所述合理值指定在其期间大部分宏块可以被处理的时间间隔,并且可以实时地以上下文相关方式调整低频时序信号间隔,以适应相对不频繁的计算密集的宏块。
在该实施例中,板上对象高速缓冲存储器2712提供不同类型的灵活性。高速缓冲存储器提供用于数据对象的动态缓冲,所述动态缓冲可以容纳在视频压缩中的特定点所需的不同量的数据。像由微处理器控制器控制提供的时序弹性一样,灵活的高速缓冲存储器允许在有效率地处理存储器密集存取程度较小的一般处理任务的同时适应特定的上下文相关的存储器需求。由时钟2726提供的更高频时序间隔允许在处理元件内进行时钟控制的处理,所述处理元件被实现为逻辑电路,而不是被实现为微处理器控制器执行的指令。正是这种时钟控制的、基于逻辑电路的实施方式提供了视频编解码器的总体单集成电路实现的大的计算带宽。如果视频压缩和视频解压缩过程的大部分通过处理器上的指令执行来执行,则总体计算开销的大部分将被指令提取周期消耗。对象存储器控制器负责在板上对象高速缓冲存储器和对象存储器之间交换对象。
最后,对象总线2730便利基于对象流水线的实施方式。如果宏块和宏块分区作为比特流或字节流在集成电路内被传输,则对于将宏块和宏块分区传送到处理元件和从处理元件传送宏块和宏块分区,将需要甚高频通信处理。通过提供宽的高容量对象总线,可以以计算和时间效率高的方式从高速缓冲存储器传递被发送到每个处理元件的数据。
总而言之,根据本发明的复杂计算任务的实施方式涉及实施问题特定的计算引擎的单集成电路的设计和制作。计算引擎包括微处理器控制器,所述微处理器控制器提供集成电路内的处理的高级控制,而且还提供执行大量计算过程的大量并行流水线式处理元件。处理元件并行操作,以提供非常高的计算带宽,并且通过对象总线和中间处理元件数据路径被提供以对象为单位的数据,所述对象例如宏块和宏块分区,是处理元件对其操作的自然对象。处理元件中的高频时序由系统时钟提供,而低频高级计算步骤控制由微处理器控制器提供,进而提供计算任务的组装式处理的总时序的灵活性,以提高计算引擎的效率和吞吐量。
图28和29中示出了视频编解码器的可替换实施方案。图28图示说明本发明的实施方案,在该实施方案中,集成电路2802包括存储器2804,存储器2804在图27中所图示说明的实施例中是外部的。图29图示说明本发明的可替换实施方案,在该实施方案中,数码视频摄像机被包括在组合的视频摄像机和视频编解码器的单集成电路实施方式中。
图30-32图示说明根据本发明的视频编解码器的单集成电路实施方式内的总时序和数据流动。在完成前一步骤时,微处理器控制器检查处理实体、高速缓冲存储器,并且如果需要的话,还检查存储器,以确保执行下一个高级计算步骤所需的所有数据对象可用于传输到需要这些数据对象的处理元件。因此,微处理器控制器检查以确保数据对象可获得,并且当需要时,便利高速缓冲存储器中数据对象3001-3005的编组,以供处理元件在下一个高级计算步骤中进行存取,并且检查每个处理元件已生成需要提供给另一个处理元件以用于下一个高级计算步骤的任何数据,并且当前正在存储这些数据。
这里再次注意的是,微处理器控制器控制提供集成电路的总控制的灵活性。在许多情况下,是一个特定数据对象还是多个特定数据对象需要被准备来在下一个步骤中进行传输取决于该步骤在总视频编码任务中的步骤序列中的位置。作为一个实施例,视频流的开始参考帧的开始宏块首先被第一处理元件处理,第一处理元件没有结果提供给后面的处理元件。作为另一个实施例,对于帧间预测,不对视频流内的参考帧进行处理。因此,在任何给定的低频时序间隔中,处理后面的高级计算步骤所需的数据对象可以以上下文相关方式改变。而且,在某些高级计算步骤中,处理元件中的一个或更多个可以不是工作状态的。处理元件自身内的上下文相关的且随时间改变的控制的实施复杂性将不期望地需要复杂处理元件实现。然而,通过用指令执行的微处理器控制器提供更高级别的控制,许多级别的决策和时间相关的且上下文相关的控制上的变化可以用固件,而不是用高度复杂的逻辑电路来实现。
在该实施例中,一旦所有的数据对象可用于下一个处理步骤,并且所有的处理元件准备好开始执行下一个步骤,如图31中所示的微处理器控制器就产生使所有处理元件开始处理下一个步骤的启动信号。如图31所示,在下一个步骤开始时,数据对象被传送给需要它们的处理元件。然后,如图32所示,处理元件执行它们各自的任务,产生用于后面的步骤的输出,并且向高速缓冲存储器请求在后面的步骤中将会需要的数据对象。在图32中图示说明的当前高级计算步骤的处理完成时,达到图30中所示的状态,并且然后使处理元件准备好开始后面的处理步骤。再次,应该强调的是,在每个低频时间间隔期间,每个处理元件对与正被其他处理元件处理的数据对象不同的数据对象执行其计算任务。例如,在正通过整数变换对一个残余宏块进行变换的同时,对另一个宏块进行分析以进行帧间预测或帧内预测。
总而言之,表征本发明的一个实施方案的计算引擎的高级概念部件包括:(1)问题分解,所述问题分解导致合理大小的计算对象(每个计算对象具有对另外的数据的有界相关性)、已经处理的计算对象和后面处理的计算对象的逐步处理,并且每个计算对象基本上包括数据结构值,例如一维、二维或更高维阵列的元素的值或者多字段记录或结构中的字段的值;(2)组装线式处理元件系列,所述处理元件每个执行计算对象的逐步处理的高级步骤,所述高级步骤并行地对不同的计算对象执行;(3)板上对象高速缓冲存储器,所述板上对象高速缓冲存储器缓冲足够的计算对象,以使得一开始可以将用于沿着处理元件系列处理计算对象的相关数据和对象从存储器加载到对象高速缓冲存储器中,而在计算对象的逐步处理期间对存储器不进行重复存取;(4)对象总线,所述对象总线使得处理元件可以在对象级存取事务中存取储存在对象高速缓冲存储器中的对象;(5)低频时钟周期和一个或更多个高频时钟周期,所述低频时钟周期用于控制逐步处理,所述高频时钟周期用于处理元件对于步骤计算的小粒度控制;(6)微处理器控制器或其他控制子部件,用于协调处理元件的高级步骤执行,并且使处理元件的高级步骤执行同步;以及(7)对象存储器控制器,用于将对象从存储器加载到对象高速缓冲存储器,并且用于将对象高速缓冲存储器中的对象储存到存储器中。
对于某些问题域,计算引擎的单集成电路实施方式提供制造、芯片封装、装置占用空间、功耗、计算延迟方面的优点和其他这样的优点。对于其他问题域,总体计算引擎可以被实现为两个或更多个分离的计算引擎,其中问题域被分割为更高级别的子域,每个子域由分离的计算引擎执行。子域进一步被分割为任务,每个任务由计算引擎内的处理元件执行。该方法还可以提供制造优点以及提高的模块性。对于某些另外类型的问题域,为了例如利用已经开发的集成电路,可以将计算引擎的单集成电路实施方式与另外的集成电路组合,以实现一个装置。
在表征本发明的一个实施方案的H.264压缩和解压缩计算引擎的特定实施例中,计算对象包括如以上参照图6所论述的宏块和宏块分区、如以上参照图12所论述的运动矢量和描述宏块和宏块分区的视频流上下文的各种数据和参数对象。处理元件包括帧间预测处理元件、帧内预测处理元件、运动估计处理元件、直接整数变换处理元件、逆整数变换处理元件、量化和缩放处理元件、去量化和去缩放处理元件、熵编码处理元件和熵解码处理元件。对象高速缓冲存储器储存以上提及的类型的对象,包括宏块和宏块分区。对象总线在处理元件和对象高速缓冲存储器之间传输宏块和宏块分区,减少处理元件执行面向字节的或者面向字的通信协议来存取计算对象的需要。低频时钟周期通常控制由组装线式处理元件系列进行的逐步宏块处理,并且更高频率的时钟周期控制由处理元件进行的计算处理。微处理器控制器执行逐步宏块处理的总控制和同步,确保在处理元件中开始下一个处理步骤之前,执行所述下一个处理步骤的每个所述处理元件可获得需要的对象。最后,存储器控制器操作来在大容量随机存取存储器和对象高速缓冲存储器之间交换计算对象(包括宏块和宏块分区)。
第三小节:根据本发明的一个实施方案的被实现为单集成电路的H.264视频编解码器
在这个结论性的小节中,对表征本发明的一个实施方案的计算引擎的特定实施例进行描述。再次,强调的是,本发明的实施方案可以被设计和实现来执行大量不同计算任务中的任何一个,包括图像处理任务、3维媒体压缩和解压缩、各种类型的计算滤波、模式匹配和神经网络实施方式。以下的H.264视频编解码器计算引擎的论述的意图是提供本发明的一个实施例的详细说明,而并不意图将所附的权利要求的范围限于被设计来执行H.264视频压缩和/或解压缩的计算引擎、一般的视频应用或者任何其他特定问题域。这个特定实施方式是视频编解码器的单集成电路实施方式。可替换的实施方案可以利用多计算引擎方法,或者可以将单集成电路计算引擎与另外的集成电路组合。
图33A-B提供根据本发明的视频编解码器的单集成电路实施方式的框图图示说明。鉴于参照图27-32和图23-24的以上论述,图33A中提供的示图的大部分基本上是自描述的。视频编解码器的单集成电路实施方式包括分离的用于运动估计的处理元件3302、用于帧内和帧间预测的处理元件3304、用于残余块计算的处理元件3306、用于直接整数变换的处理元件3308、用于量化和缩放的处理元件3310、用于熵编码的处理元件3312、用于熵解码的处理元件3313、用于反量化和反缩放的处理元件3314、用于逆整数变换的处理元件3316和用于去块滤波器的处理元件3318。处理元件3302对应于图23中的块2306,处理元件3304对应于图23中的块2306和2314,处理元件3306对应于图23中的操作2310,处理元件3308对应于图23中的块2316,处理元件3310对应于图23中的块2318,处理元件3312和3313对应于图23中的块2322,处理元件3314对应于图23中的块2326,处理元件3316对应于图23中的块2328,并且处理元件3318对应于图23中的块2336。注意的是,如参照图5所描述的视频编解码器可以从视频摄像机接收原始视频数据3320,并且生成作为输出的压缩的视频数据3322,或者可以接收作为输入的压缩的视频数据3324,并且生成作为输出的原始视频数据3326。可以将图23中的重排序器块2320合并在视频编解码器实施方式的处理元件3310和3314中或者处理元件3312和3313中。还要注意的是,视频存储器控制器3330在单集成电路实施方式中负责将输入视频数据引导到外部存储器3332和在视频高速缓冲存储器、外部存储器和对象总线3340之间交换数据对象。图33B提供图33A的关键。注意的是,对象总线3340可以被认为包括分离的亮度对象总线、色度对象总线、运动矢量对象总线、参数/数据对象总线和内部微处理器控制器总线。
图33A提供关于本发明的一个实施方案中的每个处理元件的输入和输出的细节,并且由此提供每个处理元件与对象总线、视频高速缓冲存储器和视频存储器控制器的交互。视频存储器控制器3330将视频数据从摄像机路由到外部存储器。微处理器控制器3342代表处理元件向视频存储器控制器发起存储器请求,所述请求由视频存储器控制器从外部存储器存取请求的数据对象并且将请求的数据对象储存在视频高速缓冲存储器中来满足。因此,在视频存储器控制器内执行与将视频数据信号分割为帧、宏块和宏块分区相关联的计算开销中的大部分,大规模并行处理的另一个方面由视频编解码器的单集成电路实施方式提供。
复用器3344在视频压缩期间提供从量化处理元件3310到去量化和去缩放处理元件3314的路径,并且在视频解压缩期间提供从熵解码器3313到去量化和去缩放处理元件3314的路径。运动估计处理元件3302对亮度宏块和宏块分区进行操作,同时其余的处理元件对亮度和色度宏块和/或宏块分区这二者进行操作。图33A中的SPI端口3350是允许通过SPI接口信号对闪存进行写和/或读的串并行接口。
图34图示说明根据本发明的一个实施方案的视频编解码器的单集成电路实施方式的总系统时序和同步。如上所论述的,短间隔时钟脉冲信号3402在宏块和宏块分区的组装线式处理中的每个总步骤的处理期间控制处理元件内的执行步骤。如上所论述的,处理元件在从微处理器控制器接收到启动信号3404时开始执行下一个高级计算步骤,并且在完成每个高级计算步骤时生成完成信号脉冲3406。如上所论述的,长间隔时钟脉冲信号3410通常通过微处理器控制器沿着处理元件的组装线控制宏块和宏块分区的高级逐步流水线式处理。一般来讲,在每个低频间隔3412期间,每个处理元件执行处理中的下一个总步骤。然而,还是如上所论述的,在某些情况下,由于处理元件在从处理器接收到启动信号时开始处理每个高级计算步骤,所以在处理元件未能完成其任务的情况下,下一个处理步骤可能不会在低频时钟信号从低转变到高时开始。
图35提供示出各种类型的对象的实施例的表格,所述对象在根据本发明的视频编解码器的单集成电路实施方式中可以沿着数据对象总线从视频高速缓冲存储器被传送到处理元件。该表格示出两个主要类别的对象:(1)视频对象3502;和(2)数据对象3504。视频对象包括如以上参照图3所论述的来自亮度平面和色度平面这二者的宏块和宏块分区以及如以上参照图12所论述的运动矢量对象。数据对象包括各种类型的信息,所述信息关于当前处理的宏块或宏块分区的当前上下文、宏块或宏块分区所属的片、其中包括宏块或宏块分区的帧的性质和其他这样的信息。对象还可以包含以上参照图19所论述的参数信息,例如量化参数。通过利用对象总线3340使计算带宽显著增大,而不是要求处理元件执行基于字节的或者基于字的协议以从存储器高速缓存和存储器存取数据对象,所述对象总线3340被定制来提供作为分离对象的处理元件所需的对象。宽的数据对象总线在集成电路内提供极其高的内部数据传输速率。
图36A-B在抽象层次图示说明表征本发明的一个实施方案的视频编解码器集成电路实施方式内的处理元件的操作。如上所论述的,为了低频高级步骤处理周期的总体同步,处理元件从微处理器控制器接收启动脉冲3602,并且将完成脉冲3604输出到微处理器控制器。处理元件从流水线中的前面的处理元件和/或对象总线接收一个或更多个对象和其他数据3606,并且将一个或更多个对象和/或其他数据3608输出到处理元件流水线中的下一个处理元件和/或对象总线。当然,流水线中的第一处理元件不从前面的处理元件接收对象,并且流水线中的最后的处理元件从视频编解码器的集成电路实施方式生成输出,而不是将对象或其他数据输出到处理元件。如上所论述的,处理元件接收用于控制处理元件内的逻辑电路的高频时钟脉冲信号,以执行复杂计算任务。注意的是,处理元件通过流水线存储器沿着流水线传递数据和结果,流水线存储器与对象总线完全不同。
图36B图示说明处理元件的同步和时序控制。如上所论述的,处理元件根据高频时钟信号3620执行计算任务。当接收到启动信号脉冲3622时,任务开始,并且处理元件通过完成信号脉冲3624宣告任务完成。
图37图示说明表征本发明的一个实施方案的运动估计处理元件。运动估计处理元件接收作为输入的与当前宏块对应的亮度对象,外加表征来自储存在存储器中的参考帧的参考宏块的一个或更多个亮度对象。运动估计处理元件生成作为输出的运动矢量对象。
图38图示说明表征本发明的一个实施方案并且包括一对处理元件的帧内预测和帧间预测处理元件。帧内预测处理元件3802从相邻块接收亮度和色度水平和垂直像素矢量以及描述最相邻块的数据,并且生成作为输出的分别用于整个宏块或16个4×4宏块分区的四种16×16帧内预测模式或九种4×4帧内预测模式之一。对每个色度宏块,生成四种色度帧内预测模式之一。与帧间预测一样,帧内预测处理元件选择提供当前考虑的宏块的最佳估计的模式。为了找到提供最有效预测的特定分割,根据视频编解码器所实现的压缩复杂性的水平,如参照图6所论述的,可以以许多不同的方式分割宏块。帧间预测处理元件3804接收参考宏块、亮度宏块和色度宏块这二者以及运动矢量,并且产生作为输出的预测宏块或宏块分区。
帧内和帧间预测处理元件(图33A中的3304)的两处理元件实施方式图示说明一个设计参数。处理元件的数目和复杂性可以根据许多不同设计考虑以及由处理元件执行的任务的复杂性而变化。例如,当需要甚高带宽实施方式时,可能必须在处理元件流水线内将任何特定任务实现为若干并行处理元件。在较低带宽实施方式中,可以将这些并行处理元件一起组合在单个处理元件中。在帧内和帧间预测处理元件的实施方式中揭示另一个重要的要点。如上所论述的,整个H.264标准包括各种级别的压缩和解压缩。较高级别提供更好的压缩,但是代价是计算复杂性更大。视频编解码器的特定单集成电路实施方式可以实现较高级别的标准以及中间和较低级别的标准,并且实际操作可以通过输入到单集成电路且储存在闪存中的参数来控制。因此,单集成电路实施方式可以提供根据多个参数的灵活操作。
图39示出表征本发明的一个实施方案的熵编码的处理元件的框图。该处理元件接收亮度对象、色度对象和运动矢量对象以及各种类型的数据对象,并且应用如上所论述的各种不同的熵编码方案来生成被打包到NAL数据单元中的最后的编码输出。
图40图示说明对于图33A中图示说明的视频编解码器实施方式中的视频高速缓冲存储器的储存要求的一个实施例。在一个实施方案中,视频高速缓冲存储器包含足够的宏块、宏块分区和运动矢量对象,以使得在操作序列期间不必在视频高速缓冲存储器和外部存储器之间交换给定的对象,所述操作序列被执行为从第一处理元件开始并且进行到最后的处理元件的顺序步骤。各种类型的对象储存在视频高速缓冲存储器内的循环队列中,其中许多队列被分割来在一个分区中包含当前考虑的宏块信息,并且在另一个分区中包含相邻宏块信息。因此,例如,视频高速缓冲存储器包括循环队列4002,循环队列4002包含16个亮度宏块,所述16个亮度宏块被分割为两个分割部分(twopartitions),每个分割部分有8个宏块。
图41图示说明亮度宏块循环队列(图40中的4002)在九个高级计算步骤间隔期间的操作。在时间间隔t04102期间,下一个原始视频数据亮度宏块被输入到槽(slot)04104,并且来自重构帧的对应的相邻参考宏块被放置到槽84106中。在每个连续的时间间隔期间,另外的原始数据宏块和参考宏块被输入到循环队列内的连续槽中。当槽04104中的宏块被后面的处理元件存取和修改时,该宏块的内容在时间间隔期间渐进地改变。最后,在间隔t74108期间,最后的处理元件对宏块的内容进行编码并且输出,以使得在间隔t84110期间,新的原始数据宏块可以被放置到槽04112中。因此,循环队列包含用于供所有的处理元件进行组装式处理的宏块数据视频高速缓冲存储器,并且然后在最后的处理元件已经使用宏块之后,用新的原始数据宏块和参考宏块替换该宏块。在每个低频时序信号时间间隔期间,执行所有的编码或解码步骤,但是每个处理元件在低频时序信号时间间隔期间对不同的宏块或宏块分区执行其任务。
图42图示说明表征本发明的一个实施方案的视频编解码器的视频高速缓冲存储器控制器的实施方式。通过由循环缓冲读写地址指针控制的复用器4204-4206对视频高速缓冲存储器4202进行存取。因此,每个处理元件可以在给定时刻储存来自其他处理元件的不同的读写地址指针,以使得每个处理元件对循环队列中的合适的槽进行存取。当块前进通过处理元件的流水线时,与块相关联的读地址指针和写地址指针从处理元件到处理元件地增加,以确保处理元件对循环队列内的合适的槽进行存取,而无需在视频高速缓冲存储器内内部地传输数据,以在视频高速缓冲存储器和外部存储器之间进行传输。
图43提供表格,该表格指示由表征本发明的一个实施方案的视频编解码器的某些处理元件中的每个执行的总计算处理。从该表格可以理解,由根据本发明的一个实施方案的视频编解码器的单集成电路实施方式内的大规模并行处理提供的计算带宽的大小。为了实现将会提供相同计算带宽的计算引擎和软件,执行软件的处理器将需要以远大于当前可用的处理器所支持的时钟速度的惊人的速度工作。
一种流行的集成电路设计语言是超高速集成电路硬件描述语言(“VHDL”)。图44A-E提供如图33A中所示的根据本发明的一个实施方案的视频编解码器的单集成电路实施方式中的各个处理元件的高级VHDL定义。在图44A中,首先提供各种对象的定义4402。然后,在各个处理元件的粗体名称下方,提供处理元件的输入和输出的VHDL定义。例如,在图44A的下面部分,提供运动估计处理元件的输入和输出4404。运动估计处理元件接收四个逻辑信号输入4406、亮度宏块4408和亮度参考宏块4410,并且生成作为输出的三个逻辑信号4412-4414和运动矢量对象4416。
虽然已经就特定实施方案对本发明进行了描述,但是意图并不是使本发明限于这些实施方案。对于本领域技术人员,在本发明的精神内的修改将是明显的。例如,如上所论述的,可以根据本发明的方法来设计针对处理和解决各种不同计算问题的各种不同计算引擎的大规模并行流水线式集成电路实现。可以以各种集成电路设计规范语言(包括VHDL和Versilog)中的任何一种来对集成电路的实现进行编码。如上所论述的,可以以各种不同的方式分解任何特定的计算问题,除了各种约束和要求之外,分解包括总体上指导处理元件的数量和顺序的选择的必要的计算带宽、输出和输入数据传输速率、成本、最大功耗。许多各种不同类型的元件可以被包括在根据本发明的方法的集成电路的设计中。例如标准的微处理器控制器可以被合并到设计中。作为另一个实施例,数据对象总线可以具有带宽,并且可以由组件对象总线构成,所述组件对象总线取决于各处理元件的对象输入和对象输出要求。另外,集成电路可以实现各种不同级别的处理和各种不同级别的功能、由输入到集成电路内的内部参数储存器的参数选择的任何特定级别和功能。
为了说明的目的,前面的描述使用特定的术语来提供本发明的充分理解。然而,本领域技术人员将明白的是,实施本发明不需要特定细节。为了图示说明和描述的目的,呈现本发明的特定实施方案的前面的描述。它们的意图不是穷举或者将本发明限于所公开的精确形式。鉴于以上教导,许多修改和改动是可以的。为了最佳地说明本发明的原理及其实践应用,示出并描述了实施方案,从而使得本领域技术人员能够最佳地利用本发明和具有适合于所考虑的特定用途的各种修改的各种实施方案。意图的是,本发明的范围由所附的权利要求及其等同形式限定。

Claims (31)

1.一种集成电路计算装置,所述集成电路计算装置包括:
多个处理元件,所述多个处理元件中的每一个执行逐步计算过程的高级计算步骤,所述多个处理元件布置成同时对不同的计算对象进行操作的一个或更多个组装线式系列,其中,由时钟提供的更高频时序间隔允许在这些处理元件内进行时钟控制的处理,这些处理元件中的每一个被实现为逻辑电路,而不是被实现为执行指令的处理器;
对象高速缓冲存储器,所述对象高速缓冲存储器储存计算对象,所述计算对象包括在每个高级计算步骤之前输入到处理元件的数据结构值和在每个高级计算步骤期间从处理元件输出的数据结构值;以及
对象总线,所述对象总线提供计算对象级传输事务,并且计算对象通过所述对象总线在所述多个处理元件与所述对象高速缓冲存储器之间进行交换。
2.如权利要求1所述的集成电路计算装置,被实现为单个集成电路。
3.如权利要求1所述的集成电路计算装置,被实现为两个或更多个单集成电路计算引擎。
4.如权利要求1所述的集成电路计算装置,被实现为一个或更多个单集成电路计算引擎和一个或更多个附加的集成电路。
5.如权利要求1所述的集成电路计算装置,其中计算对象和数据通过一个或更多个流水线式存储器在所述一个或更多个组装线式处理元件系列中的相邻处理元件之间进行传递。
6.如权利要求5所述的集成电路计算装置,其中计算对象被输入到组装线式处理元件系列中的第一处理元件,被所述第一处理元件在第一高级计算步骤中操作,并且从所述第一处理元件输出到所述组装线式处理元件系列中的下一处理元件,以供所述下一处理元件在下一高级处理步骤中进行操作。
7.如权利要求6所述的集成电路计算装置,其中所述计算对象依次被所述组装线式处理元件系列中的每个连续处理元件在随后的高级计算步骤中操作。
8.如权利要求1所述的集成电路计算装置,还包括:
时钟部件,所述时钟部件提供高级处理时钟周期,并且提供一个或更多个更高频时钟周期,根据所述高级处理时钟周期使计算对象沿着一个或更多个组装线式处理元件系列的逐步处理同步,所述一个或更多个更高频时钟周期中的每一个控制所述多个处理元件中的一个或更多个的内部处理步骤。
9.如权利要求8所述的集成电路计算装置,还包括:
控制器,所述控制器根据所述高级处理时钟周期控制每个处理元件中下一高级处理步骤的开始,所述控制器确保当前的高级处理步骤完成,并且确保在每个处理元件中开始所述下一高级处理步骤之前每个处理元件对于所述下一高级处理步骤所需的计算对象和其他输入数据对于该处理元件来说是可获得的。
10.如权利要求9所述的集成电路计算装置,其中所述控制器将启动信号发送给组装线式处理元件系列的所有处理元件,以开始所述下一高级处理步骤。
11.如权利要求9所述的集成电路计算装置,其中当所述处理元件完成高级处理步骤时,所述控制器从组装线式处理元件系列的每个处理元件接收完成信号。
12.如权利要求1所述的集成电路计算装置,还包括:
对象存储器控制器,所述对象存储器控制器控制所述对象高速缓冲存储器与大容量随机存取存储器之间的计算对象的交换。
13.如权利要求12所述的集成电路计算装置,其中所述对象存储器控制器将计算对象映射到所述大容量随机存取存储器中的数据单元,所述数据单元为字节或多字节字之一。
14.一种集成电路视频编解码器,所述集成电路视频编解码器包括:
多个处理元件,所述多个处理元件中的每一个执行逐步计算过程的高级计算步骤,所述多个处理元件布置成同时对不同的计算对象进行操作的一个或更多个组装线式系列,其中,由时钟提供的更高频时序间隔允许在这些处理元件内进行时钟控制的处理,这些处理元件中的每一个被实现为逻辑电路,而不是被实现为执行指令的处理器;
对象高速缓冲存储器,所述对象高速缓冲存储器储存计算对象,所述计算对象包括在每个高级计算步骤之前输入到处理元件的数据结构值和在每个高级计算步骤期间从处理元件输出的数据结构值;
对象总线,所述对象总线提供计算对象级传输事务,并且计算对象通过所述对象总线在所述多个处理元件与所述对象高速缓冲存储器之间进行交换。
15.如权利要求14所述的集成电路视频编解码器,被实现为单个集成电路。
16.如权利要求14所述的集成电路视频编解码器,被实现为两个或更多个单集成电路计算引擎。
17.如权利要求14所述的集成电路视频编解码器,被实现为一个或更多个单集成电路计算引擎和一个或更多个附加的集成电路。
18.如权利要求14所述的集成电路视频编解码器,其中计算对象和数据通过一个或更多个流水线式存储器在所述一个或更多个组装线式处理元件系列中的相邻处理元件之间进行传递。
19.如权利要求18所述的集成电路视频编解码器,其中计算对象被输入到组装线式处理元件系列中的第一处理元件,被所述第一处理元件在第一高级计算步骤中操作,并且从所述第一处理元件输出到所述组装线式处理元件系列中的下一处理元件,以供所述下一处理元件在下一高级处理步骤中进行操作。
20.如权利要求19所述的集成电路视频编解码器,其中所述计算对象依次被所述组装线式处理元件系列中的每个连续处理元件在随后的高级计算步骤中操作。
21.如权利要求14所述的集成电路视频编解码器,包括两个组装线式处理元件系列,第一组装线式处理元件系列执行原始视频信号的视频帧序列的逐步压缩,以生成输出的压缩视频信号,以及第二组装线式处理元件系列执行压缩视频信号的逐步解压缩,以生成原始视频信号的帧序列。
22.如权利要求21所述的集成电路视频编解码器,其中所述第一组装线式处理元件系列包括:
运动估计处理元件;
帧内预测和帧间预测处理元件;
残余块计算处理元件;
直接整数变换处理元件;
量化和缩放处理元件;以及
熵编码处理元件。
23.如权利要求21所述的集成电路视频编解码器,其中所述第二组装线式处理元件系列包括:
熵解码处理元件;
去量化和去缩放处理元件;
逆整数变换处理元件;
运动补偿处理元件;
帧内预测和帧间预测处理元件;以及
去块滤波器处理元件。
24.如权利要求14所述的集成电路视频编解码器,其中计算对象包括:
宏块;
宏块分区;
运动矢量;以及
包含数据和参数的对象。
25.如权利要求14所述的集成电路视频编解码器,还包括:
时钟部件,所述时钟部件提供高级处理时钟周期,并且提供一个或更多个更高频时钟周期,根据所述高级处理时钟周期使计算对象沿着一个或更多个组装线式处理元件系列的逐步处理同步,所述一个或更多个更高频时钟周期中的每一个控制所述多个处理元件中的一个或更多个的内部处理步骤。
26.如权利要求25所述的集成电路视频编解码器,还包括:
控制器,所述控制器根据所述高级处理时钟周期控制每个处理元件中下一高级处理步骤的开始,所述控制器确保当前的高级处理步骤完成,并且确保在每个处理元件中开始所述下一高级处理步骤之前每个处理元件对于所述下一高级处理步骤所需的计算对象和其他输入数据对于该处理元件来说是可获得的。
27.如权利要求26所述的集成电路视频编解码器,其中所述控制器将启动信号发送给组装线式处理元件系列的所有处理元件,以开始所述下一高级处理步骤。
28.如权利要求26所述的集成电路视频编解码器,其中当所述处理元件完成高级处理步骤时,所述控制器从组装线式处理元件系列的每个处理元件接收完成信号。
29.如权利要求14所述的集成电路视频编解码器,还包括:
对象存储器控制器,所述对象存储器控制器控制所述对象高速缓冲存储器与大容量随机存取存储器之间的计算对象的交换。
30.如权利要求29所述的集成电路视频编解码器,其中所述对象存储器控制器将计算对象映射到所述大容量随机存取存储器中的数据单元,所述数据单元为字节或多字节字之一。
31.如权利要求14所述的集成电路视频编解码器,其中所述集成电路视频编解码器根据H.264视频解压缩标准对原始视频信号进行压缩并且对压缩视频信号进行解压缩。
CN200980158022.8A 2009-01-12 2009-12-21 计算引擎的并行流水线式集成电路实现 Expired - Fee Related CN102369522B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US31975009A 2009-01-12 2009-01-12
US12/319,750 2009-01-12
US12/322,571 US8660193B2 (en) 2009-01-12 2009-02-04 Parallel, pipelined, integrated-circuit implementation of a computational engine
US12/322,571 2009-02-04
PCT/US2009/068960 WO2010080644A2 (en) 2009-01-12 2009-12-21 Parallel, pipelined, integrated-circuit implementation of a computational engine

Publications (2)

Publication Number Publication Date
CN102369522A CN102369522A (zh) 2012-03-07
CN102369522B true CN102369522B (zh) 2016-04-20

Family

ID=46208218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980158022.8A Expired - Fee Related CN102369522B (zh) 2009-01-12 2009-12-21 计算引擎的并行流水线式集成电路实现

Country Status (4)

Country Link
US (1) US8660193B2 (zh)
CN (1) CN102369522B (zh)
DE (1) DE112009004344T8 (zh)
WO (1) WO2010080644A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
EP2312854A1 (de) * 2009-10-15 2011-04-20 Siemens Aktiengesellschaft Verfahren zur Codierung von Symbolen aus einer Folge digitalisierter Bilder
JP5914962B2 (ja) 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
US8503534B2 (en) * 2010-04-22 2013-08-06 Maxim Integrated Products, Inc. Multi-bus architecture for a video codec
KR20120066305A (ko) * 2010-12-14 2012-06-22 한국전자통신연구원 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법
EP2675161B1 (en) 2011-02-10 2018-11-14 Velos Media International Limited Image processing device and image processing method
CN105812807B (zh) * 2011-06-23 2018-01-16 Jvc 建伍株式会社 图像编码装置和图像编码方法
US9392301B2 (en) * 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
US9948938B2 (en) 2011-07-21 2018-04-17 Texas Instruments Incorporated Methods and systems for chroma residual data prediction
TWI523497B (zh) * 2011-11-10 2016-02-21 Sony Corp Image processing apparatus and method
EP2811742A4 (en) * 2012-02-04 2015-09-02 Lg Electronics Inc VIDEO CODING METHOD, VIDEO DECODING METHOD AND DEVICE THEREFOR
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US9218639B2 (en) * 2013-09-27 2015-12-22 Apple Inc. Processing order in block processing pipelines
CN104699219B (zh) * 2013-12-10 2020-06-23 联想(北京)有限公司 一种电子设备及信息处理方法
US20150206596A1 (en) * 2014-01-21 2015-07-23 Nvidia Corporation Managing a ring buffer shared by multiple processing engines
EP3155585A1 (en) * 2014-06-12 2017-04-19 A2Zlogix, Inc. Transmission and restoration of decimated image data
US8837826B1 (en) * 2014-06-12 2014-09-16 Spinella Ip Holdings, Inc. System and method for transmission, reception, and restoration of decimated color channels in image data
FR3029381A1 (fr) * 2014-11-27 2016-06-03 Orange Procede de composition d’une representation video intermediaire
US10019775B2 (en) 2015-04-30 2018-07-10 Honeywell International Inc. Method and system for scalable, radiation-tolerant, space-rated, high integrity graphics processing unit
CN105120194A (zh) * 2015-08-06 2015-12-02 佛山六滴电子科技有限公司 一种录制全景视频的方法及装置
GB2608575B (en) * 2018-01-03 2023-03-15 Displaylink Uk Ltd Encoding image data for transmission to a display device
CN109032125B (zh) * 2018-05-31 2021-09-10 上海工程技术大学 一种视觉agv的导航方法
CN109005409B (zh) * 2018-07-27 2021-04-09 浙江工业大学 一种基于目标检测与跟踪的智能视频编码方法
CN112416053B (zh) * 2019-08-23 2023-11-17 北京希姆计算科技有限公司 多核架构的同步信号产生电路、芯片和同步方法及装置
CN114339249B (zh) * 2021-12-27 2023-12-05 安谋科技(中国)有限公司 视频解码方法、可读介质及其电子设备
CN114371391B (zh) * 2022-03-22 2022-06-21 南京中旭电子科技有限公司 多参数霍尔集成电路高低温测试方法、装置及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499060B1 (en) * 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
JP4996626B2 (ja) * 2006-12-25 2012-08-08 パナソニック株式会社 メモリ制御装置、およびメモリ制御方法
US8775544B2 (en) * 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HD video encoding with DSP and FPGA partitioning;cheng peng ET AL;《Texas Instruments》;20070426;第2页第5段,第3页第3-5段,第5页第5段,第7页第1-3段、图1-2,3a,3b,4a,4b,5a,5b *
Implementing high definition video codec on TI DM6467 SOC;Jian Wang,Gang Hua;《2008 IEEE International SOC Conference》;20080920;第196页第C部分,第IV部分、图5、表2,3 *

Also Published As

Publication number Publication date
US20100177828A1 (en) 2010-07-15
DE112009004344T8 (de) 2012-08-23
WO2010080644A2 (en) 2010-07-15
CN102369522A (zh) 2012-03-07
DE112009004344T5 (de) 2012-06-21
US8660193B2 (en) 2014-02-25
WO2010080644A3 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
CN102369522B (zh) 计算引擎的并行流水线式集成电路实现
CN102369552B (zh) 存储器子系统
CN102356635A (zh) 视频获取和处理系统
WO2015078422A1 (zh) 图像编码、解码方法及装置
CN104581177B (zh) 一种结合块匹配和串匹配的图像压缩方法和装置
CN104885471A (zh) 用于下一代视频的编码/未编码的数据的内容自适应熵编码
CN105100814B (zh) 图像编码、解码方法及装置
CN109451308A (zh) 视频压缩处理方法及装置、电子设备及存储介质
CN107105208A (zh) 一种Bayer图像的无损编码与解码方法
CN107027025A (zh) 一种基于宏像素块自适应预测的光场图像压缩方法
WO2018120019A1 (zh) 用于神经网络数据的压缩/解压缩的装置和系统
WO2014094369A1 (zh) 一种虚拟全息输入输出控制方法及系统
Mital et al. Neural distributed image compression with cross-attention feature alignment
CN101951524B (zh) 彩色数字图像的jpeg压缩方法和装置
CN109474825B (zh) 一种脉冲序列压缩方法及系统
CN103179391A (zh) 图像处理设备以及图像处理方法
CN110087085A (zh) 图像处理装置
CN114501031B (zh) 一种压缩编码、解压缩方法以及装置
Al-Jammas et al. FPGA implementation of intra frame for H. 264/AVC based DC mode
CN100499819C (zh) 一种用于降低多媒体数据编码比特率的方法
Brand et al. Generalized difference coder: a novel conditional autoencoder structure for video compression
CN116916033B (zh) 一种基于随机自适应傅里叶分解的联合时空视频压缩方法
CN103179392A (zh) 图像处理设备以及图像处理方法
TWI795480B (zh) 用於執行資料解壓縮的影像處理裝置及用於執行資料壓縮的影像處理裝置
Deng et al. The FPGA design of JPEG-LS image lossless decompression IP core

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: American California

Applicant after: Maxim Integrated Products Inc.

Address before: American California

Applicant before: Maxim Integrated Products, Inc.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: MAXIM INTEGRATED PRODUCTS, INC. TO: MAXIM INTEGRATED PRODUCTS INC.

ASS Succession or assignment of patent right

Owner name: BURUI TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS INC.

Effective date: 20140317

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140317

Address after: Columbia, Canada

Applicant after: Burui Technology Co., Ltd.

Address before: American California

Applicant before: Maxim Integrated Products Inc.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160420

Termination date: 20191221

CF01 Termination of patent right due to non-payment of annual fee