CN1663278A - 视频编码和解码技术 - Google Patents
视频编码和解码技术 Download PDFInfo
- Publication number
- CN1663278A CN1663278A CN038140551A CN03814055A CN1663278A CN 1663278 A CN1663278 A CN 1663278A CN 038140551 A CN038140551 A CN 038140551A CN 03814055 A CN03814055 A CN 03814055A CN 1663278 A CN1663278 A CN 1663278A
- Authority
- CN
- China
- Prior art keywords
- video blocks
- search volume
- encoded
- macro block
- candidate
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods 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)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明描述了能够减少编码视频序列所必须的处理周期和存储传递数目的视频编码技术。在该方式中,所揭示的视频编码技术可以提高视频编码速度并减小功耗。通常,视频编码技术使用候选存储器,用于存储对应于运动估计程序的搜索空间的列状视频块。存储器控制单元对候选存储器寻址,以并行地检索多个像素,用于同时与待编码的视频块中的像素比较,如采用绝对差总和(SAD)或平方差总和(SSD)技术。一个差值处理器可以执行并行计算。另外,对于待编码的后续视频块,候选存储器能通过载入一列新的视频块而被逐渐更新,而不是重新载入整个搜索空间。
Description
本申请要求2002年6月18日提出的美国临时申请序号60/390,101,题为“视频运动估计系统中减少功耗的方法”的申请的优先权,该申请已转让给本申请的受让人并为各种目的通过引用其全文结合于此。
相关申请
本申请涉及同一日提出的序号10/371,768(档案号020127),题为“视频编码和解码技术”的共同待批专利申请。本申请进一步涉及2002年5月3日提出的序号10/139,772(档案号020086),题为“视频编码技术”的共同待批专利申请。以上两个申请均被转让给本申请的受让人。
技术领域
本发明涉及数字视频处理,具体而言,涉及视频序列的编码。
背景
数字视频功能可以与范围宽广的各种装置相结合,这些装置包括数字电视,数字直接广播系统,无线通信装置,个人数字助理(PDA),手提电脑,台式电脑,数码相机,数字记录装置,蜂窝或和卫星无线电电话等诸如此类。数字视频装置在制作、更正、传送、存储、记录以及播放完整的运动视频序列方面相比传统的模拟视频系统作了重要的改进。
目前为了对数字视频序列编码已经建立了许多不同的视频编码标准。例如,运动图像专家组(MPEG)研发了许多标准,包括MPEG-1,MPEG-2和MPEG-4。其他的标准包括ITU H.263,加利福尼亚库珀蒂诺的苹果计算机公司研发的QuicktimeTM技术,华盛顿雷德蒙的微软公司研发的WindowsTM视频,英特尔公司研发的IndeoTM,华盛顿西雅图的RealNetworks公司的RealvideoTM和SuperMac公司研发的CinepakTM。
许多视频编码标准通过以压缩形式对数据编码而提高了传送速率。压缩能够减少为了有效传送视频帧而需要传送的数据的总量。例如,MPEG标准使用图形和视频压缩技术,以便在比未经压缩的更窄的带宽上进行视频和图形传送。
例如,MPEG标准支持视频编码技术,该技术利用连续视频帧之间的相似性(称为时间或帧间相关)来完成帧间压缩。帧间压缩技术通过将视频帧基于像素的显示转换成运动显示来利用贯穿多个帧的数据冗余。另外,视频编码技术可以采用帧内的相似性(称为空间或帧内相关)来进一步压缩视频帧。帧内压缩通常基于对静止图像进行压缩的纹理(texture)编码,比如离散余弦变换(DCT)编码。
为支持压缩,数字视频装置通常包括一个压缩数字视频序列的编码器和一个解压缩数字视频序列的解码器。在很多情况下,编码器和解码器组成一个集成的编解码器(CODEC),该编解码器在定义视频图像序列的帧内对像素块进行操作。例如,在MPEG-4标准里,编码器将要传送的视频帧分割成包括16×16像素阵列的宏块。
对于视频帧内的每一宏块,编码器搜索最接近的前一视频帧(或后一帧)的宏块以识别最相似的宏块,对这些宏块之间的差值进行编码并加以传送,同时传送运动矢量,该运动矢量指示前一帧中的哪个宏块被用于编码。解码器接收运动矢量和经编码的差值,并执行运动补偿以创建视频序列。
视频编码过程有相当的计算强度,特别是使用运动估计技术时。例如,将一个待编码的视频块和先前被传送帧的视频块进行比较的过程需要大量的计算。迫切需要一种改良的编码技术,尤其是用于无线装置或计算资源更受限制、功耗成问题的其它便携式视频装置。同时,需要改良的压缩,用于减少要求有效传送视频序列所需的带宽。改进这些因素中的一个或多个可以促进或改良视频序列的实时编码,尤其在无线和其他有限带宽的设置中。
发明内容
本申请描述了能够减少对视频序列编码所必须的处理周期和存储传递数目的视频编码技术。如此,所揭示的视频编码技术可以加快视频编码速度和减少功耗。另外,这项技术可使用相同的计算组来定义与待编码的宏块相关的差值,以及定义与形成待编码的宏块中的各种宏块相关的差值。
这里描述的视频编码技术可以使用候选存储器,该候选存储器以列状形式储存运动估计程序的搜索空间。存储器控制单元能对候选存储器进行寻址以并行检索多个像素,用于同时和待编码的视频块的像素作比较,例如,采用绝对差总和(SAD)或平方差总和(SSD)技术。一个差值处理器可以执行并行计算。每组并行计算可以和形成一个宏块的微块中的一行相对应。另外,对于待编码的后续视频块,候选存储器能通过载入一列新的视频块而被逐渐更新,而不是重新载入整个搜索空间。
这里描述的这些或其他技术可以在硬件、软件、固件或其任何组合的数字视频装置中实施。如在软件中实施,则这项技术可被引用在包括程序码的计算机可读媒介上,在执行时,执行在此描述的一个或多个编码技术。各种实施例的其他细节在附图和以下描述中给出。其他特征、目的和优点将从描述,附图和权利要求书中显示出来。
附图说明
图1是说明示例系统的框图,该系统中,源数字视频装置传送一个被编码的视频数据序列到一个接收数字视频装置。
图2是说明视频编码器的框图,该视频编码器对数字视频序列编码。
图3是对示例的视频数据宏块的概念说明。
图4是对示例的搜索空间的概念说明。
图5是对待编码宏块的概念说明,该宏块概念上置于一个被排列成一宏块阵列的搜索空间上。
图6A是说明宏块像素索引的图。
图6B是说明在视频存储器中的视频数据排列的图。
图6C是说明在编码存储器中的视频数据排列的图。
图7A是说明搜索空间像素索引的图。
图7B是说明在视频存储器中的搜索空间排列的图。
图7C是说明在候选存储器中的搜索空间排列的图。
图8A是说明宏块列像素索引的图。
图8B是说明在视频存储器中的宏块列排列的图。
图9是说明为候选存储器中存储堆将像素索引转换为基本地址转换的框图。
图10是说明块计数器的框图,该块计数器跟踪通过一系列块组成一个宏块的搜索过程。
图11是说明候选存储器中的存储堆的物理地址映射的框图。
图12是说明候选存储器中的宏块列更新的物理地址映射的框图。
图13是说明差值处理器的框图。
图14是说明视频编码技术的流程图。
图15是说明用列更新逐步载入搜索空间的视频编码技术的流程图。
图16是说明候选存储器中的存储堆的基本地址映射的流程图。
图17是说明候选存储器中的存储堆的物理地址映射的流程图。
图18是说明候选存储器中的宏块列更新的物理地址映射的流程图。
图19是说明用相同的计算为一宏块和组成该宏块的许多微块产生差值的流程图。
详细描述
通常,本发明针对可用于改进数字视频数据的编码的视频编码技术。视频编码技术可减少对视频序列编码所必需的处理周期和存储传递数目,从而提高视频编码速度并减小功耗。例如,视频编码技术可以提高计算效率,尤其对于视频编码过程中计算强度最大的运动估计过程。另外,视频编码技术可以与解码标准(如MPEG-4解码标准)兼容。
视频编码技术可以在各种数字视频装置中实现,如数字广播系统,个人数字助理(PDA),手提电脑,台式电脑,数码相机,数字记录装置,移动电话等。根据诸如MPEG-4之类的标准,视频编码技术可以提高视频编码的效率,并更好地促进视频编码在如移动电话之类的无线通信装置中的实施,这类无线通信装置中计算资源更为有限且功耗成问题。
视频编码技术可以采用候选存储器,该候选存储器以列状形式在搜索空间中存储视频块。存储器控制单元对候选存储器进行寻址以并行检索多个像素,用于同时和待编码的视频块中的像素作比较,例如,采用绝对差总和(SAD)或平方差总和(SSD)技术。一个差值处理器可以执行并行计算。在多个并行比较周期之后,差值处理器可产生差值形式(有时称为差值度量)的搜索结果,该搜索结果与和待编码的视频块比较的搜索空间的候选视频块相关。另外,对于待编码的后续视频块,候选存储器能通过载入一列新的视频块而被逐渐更新,而不是重新载入整个搜索空间。这种列更新可以减少功耗和系统总线的使用,并可以减少载入新搜索空间的时间。
图1是说明示例系统10的框图,其中源装置12通过通信链路15将经编码的视频数据序列发送到接收装置14。源装置12和接收装置14都是数字视频装置。特别的是,源装置12使用各种视频压缩标准中的任何一种,如运动图像专家组研发的MPEG-4,编码并发送视频数据。其他标准可以包括MPEG-1、MPEG-2或运动图像专家组研发的其他MPEG标准,ITU H.263和类似的标准,运动JPEG 2000,加利福尼亚库珀蒂诺的苹果计算机公司研发的QuicktimeTM技术,华盛顿雷德蒙的微软公司研发的WindowsTM视频,英特尔公司研发的IndeoTM和SuperMac公司研发的CinepakTM。
通信链路15可以包括无线链路,物理传输,基于分组的网络,如局域网、广域网或全球网,如因特网、公共交换电话网(PSTN)等。因此,通信链路15表示任何合适的通信媒介或可能的不同网络和链路的集合,用于将视频数据从源装置12发送到接收装置14。
源装置12可以是能够编码并发送视频数据的任何数字视频装置。例如,源装置12可以包括用于存储数字视频序列的视频存储器16、用于对序列编码的视频编码器18和用于将经编码的序列经通信链路15发送到接收装置14的发射机20。例如,视频编码器18可以包括数字信号处理器(DSP),它执行一个或多个可编程软件模块以控制视频编码技术。提供相关的存储器和逻辑电路用于在控制视频编码技术中支持DSP。如下所述,可以配置视频编码器18以减少处理周期、存储传递和功耗。另外,可以配置视频编码器18以执行一组计算,以产生宏块的差值以及构成宏块的微块的各种差值。
另外,源装置12可以包括视频捕获装置23(如摄像机),用于捕获视频序列并将捕获的序列存储在存储器16中。特别的是,视频捕获装置23可以包括电荷耦合装置(CCD)、电荷注入装置、光电二极管阵列、互补金属氧化物半导体(CMOS)装置或能够捕获视频图像或数字视频序列的其他光敏装置。
在其他实例中,视频捕获装置23可以是用于将来自诸如电视、录像机、摄像机等的模拟视频数据转换成数字视频数据的视频转换器。在一些实施例中,可以构造源装置12以在通信链路15上发送实时视频序列。在这种情况下,接收装置14可以接收实时视频序列并为用户显示该视频序列。或者,源装置12可以捕获并编码发送到接收装置14的视频序列,作为视频数据文件,即非实时地。因此,源装置12和接收装置可以支持例如移动无线网络中的各种应用,如视频片断回放(video clip playback),视频邮件,或视频会议。
接收装置14可以采用能够接收并解码视频数据的任何数字视频装置。例如,接收装置14可以包括接收机22,用于通过例如中间链路、路由器、其他网络设备等从发射机20接收经编码的数字视频序列。接收装置14还可以包括对序列解码的视频解码器24和向用户显示序列的显示装置26。在一些实施例中,接收装置14可以不包括集成的显示装置14。而是,接收装置14可以用作接收机,用于对接收到的视频数据解码以驱动分离的显示装置,如电视机或监视器。
源装置12和接收装置14的示例装置包括设在计算机网络上的服务器、工作站或其他台式计算装置、和诸如手提电脑或个人数字助理(PDA)等的移动计算装置。其他实例包括诸如数字电视的数字电视广播卫星和接收装置、数码相机、数码摄像机或其他数字记录装置、诸如带有视频功能的移动电话之类的数字视频电话,或其他无线视频装置等。
在某些情况下,源装置12和接收装置14各自包括编解码器(CODEC)(未图示),用于编码并解码数字视频数据。在这种情况下,源装置12和接收装置14可以包括发射机和接收机以及存储器和显示器。在包括编码器的数字视频装置的上下文中描述以下概述的多种编码技术。然而,可以理解编码器能够组成CODEC的一部分。如此,CODEC可以用DSP,微处理器,专用集成电路(ASIC),分离的硬件部件,或它们的各种组合加以实施。
源装置12内的视频编码器18对一个视频帧序列内的像素块进行操作以便对视频数据编码。例如,视频解码器18可执行运动估计编码技术,该技术将一个待发送的视频帧分成像素块(称为视频块)。为了说明的目的,视频块可以包括微块和宏块。举例讲,一个微块可以是8×8的像素阵列。一个宏块可以是16×16的像素阵列。因此,一个宏块可以包含四个微块。这种格式通常用于适应MPEG-4的编码技术。然而,还能使用其它大小的微块和宏块。通常,在本申请里,术语微块和宏块是指包括多个像素的视频块。一个宏块进一步定义为多个微块。定义宏块的微块数目,定义微块的像素数目,和定义宏块的像素数目由广泛的各种特殊实施格式而定。
有时,计算微块而不是宏块的运动估计能够获得改进的分辨率。而且,如以下将更详细描述的,宏块的像素可以被存储或寻址,以一种允许对并行的较小微块进行差值计算(也称差值度量)以及对宏块进行差值计算的方法。换句话说,宏块的差值度量计算可以被看作是组成宏块的四个微块的差值度量的一系列四项计算。相应地,宏块以及形成宏块的微块的差值度量可从相同的计算中产生。特殊的是,可以简化这种技术,即通过不增加SAD或SSD计算。而是,可以对寻址和计算方案进行设计,从而编码器可以将相同的计算译成解释成微块差值计算和宏块差值计算。
微块或宏块中的每个像素可以由n位值表示,如8位,它定义像素的视觉特征,如颜色和强度,例如色度和亮度。然而,通常只根据亮度分量执行运动估计,因为人类视觉对亮度的变化比对颜色的变化更敏感。因此,为了进行运动估计,全部n位值可以是一个给定像素的量化亮度。然而,本发明的原理不限于像素的格式,而是可以延伸到使用更简单的较少位的像素格式或更复杂的较多位的像素格式。
对于视频帧中的每个视频块,源装置12的视频编码器18搜索存储在存储器16中的已发送的先前视频帧(或后续视频帧)的视频块以识别类似的视频块,并编码视频块之间的差值,以及识别来自先前帧(或后续帧)的视频块被用于编码的运动矢量。如此,取代将每个帧作为独立的图像编码,视频编码器18对相邻帧之间的差值编码。运动估计包括识别先前或后续帧中的微块或宏块,它最好与待编码的当前帧中的微块或宏块匹配。
运动矢量可以定义与视频块的左上角相关的像素位置,虽然也可以使用其它格式的运动矢量。在任何情况下,通过对使用运动矢量的视频块编码,传输视频数据流所需的带宽能被显著地减小。在某些情况下,源装置12可以支持可编程阈值,该可编程阈值能够导致编码过程期间各种比较或计算的终止,以减少计算次数并保存功率。
接收装置14的接收机22可以以运动矢量和经编码的差值形式接收经编码的视频数据。解码器24执行运动补偿技术以产生用于通过显示装置26为用户显示的视频序列。接收装置24的解码器24也可以用编解码器(CODEC)实现。在这种情况下,源装置12和接收装置14都可以进行编码、发送、接收和解码数字视频序列。
图2是说明根据这里描述的技术对数字视频序列进行编码的视频编码器18的框图。图2表示一种示例性实施,而不应该被视为对本发明的限制。如图2所示,视频编码器18可以包括数字信号处理器(DSP)28和运动估计器29。DSP 28控制运动估计器29的操作,并用作视频编码控制器。或者,视频编码控制器能用处理器、硬件部件、固件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等实现。
在图2的实例中,DSP 28执行一个或多个可编程软件模块以控制视频编码技术。运动估计器29可以包括一个DSP接口30。DSP 28、DSP接口30和视频存储器32通过总线33通信。视频存储器32可以看成是视频编码器18的外部组件或作为视频编码器18的一部分加以集成。DSP接口30和差值处理器34交互作用,该差值处理器执行和运动估计程序相关的计算。差值处理器34可执行SAD或SSD计算,例如,用于计算给定视频帧的待编码的块或宏块的运动矢量。通过将编码算法的控制告知DSP28,并分离运动估计器29的硬件内的计算强度大的运动估计,以增强支持实时编码的能力。
图2中进一步显示差值处理器存储器35,它包括一个编码存储器36和一个候选存储器38。编码存储器36用运动估计程序存储待编码的当前宏块。当前宏块与待编码的视频帧内的宏块阵列中的一个相对应。候选存储器38存储来自组成搜索空间的不同帧的宏块阵列。差值处理器34将候选存储器38中的宏块和编码存储器36中的当前宏块进行比较以识别最佳匹配用作运动矢量。比方说,可以使用一个48×48像素的搜索空间。在此情况下,搜索空间将包含九个宏块,即三列三个宏块,每个宏块包含16×16的像素阵列。在48×48像素的搜索空间中也可以定义其它宏块,以包括来自定义搜索空间的九个宏块中的两个或更多个的像素。
存储器控制单元39控制候选存储器38和编码存储器36的寻址以驱动对运动估计程序的搜索过程。特别的是,存储器控制单元39控制像素数据从视频存储器32通过总线33载入到候选存储器38以形成搜索空间。为了该目的,存储器控制单元39可被配置成提供存储器地址转换。直接将整个48×48像素搜索空间载入候选存储器38,而不受DSP 28的干涉可减少DSP 28和DSP接口单元30之间的总线动作,并减少了DSP 28中用于移动视频数据所需的指令数目。差值处理器34确定每个宏块的SAD或SSD结果并将最佳匹配的结果返回到DSP接口30。DSP接口30反过来向DSP 28提供经编码的宏块和运动矢量,用于通过总线33存储在视频存储器32中。
在操作中,DSP 28可以控制DSP接口单元30,以通过控制信道40驱动搜索过程。一般,控制信道40用于存储器载入命令,它可以包括将被载入候选存储器38的搜索空间的像素索引。每个像素索引可以指示左上角的地址或候选宏块,虽然也可以使用其它格式。另外,DSP 28可以通过数据信道41接收差值处理器34产生的搜索结果。数据信道41还用于硬件构造和模式切换。DSP 28和视频存储器32之间的存储传递可以通过DPS上的直接存储交换(DME)端口和总线33实现。在这种情况下,DSP接口单元30、差值处理器34、编码存储器36、候选存储器38和存储器控制单元39可以驻留在DSP 28控制的整个运动估计器(ME)中。一般,DME用于从视频存储器32存取数据,以载入编码存储器36和候选存储器38。
在图2的实例中,视频编码器18为主机源装置12提供压缩的数字视频序列,用于传输到接收装置14。视频编码器18对视频序列编码并在传输前缓冲视频存储器32中的经编码的数字视频序列。视频存储器32以及差值处理器存储器35可以采用同步动态随机存取存储器(SDRAM)、闪存、电可擦除可编程只读存储器(EEPROM)等形式。编码存储器36和候选存储器通常是视频编码器18的本地存储器,并可包括被分区成几个虚拟存储器的公共存储器装置。
除了图2所示的部件,在一些实施例中,视频编码器18可以包括其它部件,如纹理(texture)编码器,用于执行通常用于压缩静态图像的帧内或帧间压缩,如离散余弦变换(DCT)编码。例如,纹理编码可以在运动估计之外另外执行,或者在处理能力看上去对于有效的运动估计非常有限的情况下可以代替运动估计执行。DSP 28可以根据任何给定时刻的处理能力选择性地调用运动估计器(29)和纹理编码器(未图示)来引导编码程序。
图3示出一个具有宏块42形式的示例视频块,它可以用视频帧存储在视频存储器32中。MPEG标准和其它视频编码方案在运动估计视频编码期间使用具有宏块形式的视频块。如上所述,在适用MPEG-4的系统中,术语“宏块”是指形成视频帧子集的16×16像素值的集合。每个像素值可以表示为一个字节的数据,虽然还可以采用更多或更少的位数来定义每个像素,以获得所需的图像质量。宏块可以包括多个更小的8×8像素的微块44A-44D。然而,一般如果需要,这里描述的编码技术可以使用任何大小的块进行操作,如16字节×16字节的宏块,8字节×8字节的微块,或不同大小的视频块。
图4示出示例的部分搜索空间46,它可以存储在候选存储器38中。搜索空间46是对应于先前发送的视频帧(或帧序列中的后续视频帧)的像素的集合。如果需要,则搜索空间可以包括整个先前或后续的视频帧,或视频帧的子集,如果需要。如图所示,搜索空间可以是矩形的,或者可以假设任何各种形状和大小。
在视频编码期间,待编码的当前宏块与搜索空间46中的视频块比较,以识别适当的匹配,从而可以发送当前宏块和搜索空间中类似宏块之间的差值,以及识别类似视频块的运动矢量。如上所述,搜索空间46中定义的宏块48可以存储在候选存储器38中,而待编码的当前宏块可以存储在编码存储器36中。
在运动估计视频编码期间,差值处理器34可以利用比较技术,如SAD和SSD技术,将待编码的当前宏块与先前或后续帧的宏块比较。如图4中所示,搜索空间46中的宏块48可用各个宏块的左上角像素地址48识别。也可以使用其它比较技术。特别的是,根据本发明的原理,SAD和SSD计算可对于多个像素并行进行。另外,像素状比较的寻址和计算次序可以采用一种方式完成,该方式导致产生每个待编码的宏块的差值,以及形成该宏块的微块的差值。
在本发明中,术语“任务(task)”是指一组通用的计算,用于将当前视频块与搜索空间中的不同视频块比较。换句话说,任务是指当前视频块和搜索空间中的不同视频块之间的单个比较。例如,任务可以涉及执行多个计算,以比较当前视频块多个像素和搜索空间中候选视频块的多个像素。如这里所述,这些任务计算的各种子集可以并行执行,以加快编码过程。64个计算可被看作是一个微块任务(假设微块为8×8像素阵列),而256个计算可被看作是一个宏块任务(假设宏块为16×16像素阵列)。在每个任务期间,累加这些计算以定义该任务正在进行的(ongoing)差值(有时称为差值度量)。
在本发明中,术语“迭代(iteration)”是指在视频编码期间执行的一组通用的任务。与一个待编码的当前视频块关联的完整的一系列任务为一个迭代。换句话说,一个迭代是一组比较,其中当前视频块与搜索空间中的一组先前视频块(或后续视频块)比较。每个单独的比较是一个包含多个计算的任务。因此,搜索空间定义一组视频块,它们在一个迭代期间与当前视频块比较。一个迭代的每个比较称为一个任务,而每个任务,即每次比较,可以包含多个计算。
在一些情况下,迭代可以包括定义对搜索空间的第一搜索,识别搜索空间中的第一匹配,根据第一匹配定义对搜索空间的子集的第二搜索,并识别子集中的第二匹配。例如,迭代中较后的搜索可以包含搜索空间中的细微移动,以更精确地对最佳匹配定点。也可以使用其它搜索技术,如菱形(diamond)搜索技术,其中不断进行搜索,直到识别产生最小差值的宏块的像素位置位于菱形搜索参数的中心。另外,可以使用其它技术,如圆形搜索技术,其中识别产生最小差值的宏块的像素位置位于半径(R)定义的搜索参数的中心。与菱形搜索参数相比,半径(R)的圆可以定义一个更大的、范围更广的搜索参数。
如果在迭代期间使用菱形搜索技术或圆形搜索技术,还可以使用初始化技术以加快识别位于菱形搜索参数或圆形搜索参数的中心的产生最小差值的宏块的过程。例如,可以使用利用空间冗余现象的初始化技术。空间冗余一般预示给定视频块的视频运动可能与与之在空间上相近的另一视频块的视频运动类似。初始化技术可以更容易地采用该现象来初始化搜索空间中一位置的运动估计,搜索空间很可能包含可用于有效视频编码的视频块。
具体而言,初始化技术可以使用为与待编码视频块在空间上相近的视频块计算的运动矢量,以识别搜索空间中运动估计程序可被初始化的位置,即搜索空间中运动估计程序开始的像素位置。例如,可以根据先前为与待编码视频块在空间上相近的视频块确定的运动矢量计算平均像素位置、中间像素位置或使用加权函数计算的像素位置。也可以使用其它线性或非线性函数。在任何情况下,通过用这种方式对运动估计程序进行初始化,在菱形搜索或圆形搜索情况中可以加快视频编码,这是因为减少了迭代中对搜索空间中的视频块定位所需的任务数目,该视频块是待编码视频块的可接受匹配。
如果需要,用于产生差值的计算可以包括SAD技术、SSD技术或其它比较技术。SAD技术包括执行待编码的当前宏块的像素值与和当前宏块比较的先前宏块的像素值之间的绝对差计算的任务。对这些绝对差计算的结果求和,即累加,以定义表示当前宏块与和当前宏块比较的先前宏块之间差别的差值。对于8×8像素图像块,计算64个差值并求和,对于16×16像素宏块,计算256个差值并求和。通过对当前视频块寻址并按特定次序执行计算,可以计算256个差值,并按四个独立的组求和,从而可以为每个微块产生差值。然后,所有四组计算的总和可以定义宏块的差值。
较小的差值通常表示与当前宏块比较的宏块是较佳的匹配,因此与产生较大差值(即提高了失真)的候选宏块相比,它是用于运动估计编码的较佳候选。在一些情况下,在累加的差值超过一个预定阈值时可以结束计算。在这种情况下,附加的计算是不必要的,因为与当前宏块比较的宏块对于有效地进行运动估计编码是不可接受的。
SSD技术也可以包括执行待编码的当前宏块的像素值与和当前宏块比较的先前宏块的像素值之间的差值计算的任务。然而,在SSD技术中,绝对差计算的结果被平方,然后这些平方值被求和,即累加,以定义表示当前宏块与和当前宏块比较的先前宏块之间差别的差值。或者,可以执行其它比较技术,如均方误差(MSE),归一化交叉相关函数(NCCF)或其它合适的比较算法。
在一些情况下,例如,一旦确定了给定的任务不会产生比之前任务更佳的匹配,或识别到给定的任务产生可接受的匹配,则提早终止各种任务或迭代。例如,可用各种技术来识别何时给定任务的额外计算是不必要的。具体而言,当第二任务计算的一个子集共同产生的差值大于与之前计算的第一任务相关的差值时,众所周知第二任务的额外计算是不必要的,因为完成第二任务不会产生比第一任务更小的差值。在这种情况下,可以终止第二任务,而不会牺牲编码性能,并且可以更快地开始执行第三任务。
终止技术也可以在迭代级别执行,或在任务级别和迭代级别同时执行。在一个实例中,迭代阈值定义一个可接受的值,即适于有效视频编码。在这种情况下,如果执行识别搜索空间中的候选视频块的任务,该候选视频块以被认为可被迭代阈值接受方式与待编码的当前视频块匹配,则可以终止该迭代,并将待编码的下一视频块与搜索空间比较。在这种情况下,可以避免执行多个不必要的任务。
在比较待编码的视频块与先前视频帧中的先前视频块的上下文中描述这里的多种技术。然而,可以理解在比较待编码的视频块与后续视频帧中的候选视频块时可使用同样的技术。在一些情况下,使用双向运动估计,其中待编码的视频块与一个或多个先前视频帧的各种视频块以及后续视频帧的各种视频块比较。总而言之,这里描述的多种技术可以在进行待编码的视频块与不同视频块比较的任何时候使用,不同的视频块如先前视频帧的候选视频块或后续视频帧的候选视频块。换句话说,搜索空间可以载入各种不同实施中的各种不同候选。
图5是对待编码的当前宏块50的概念说明,该宏块位于被排列成一候选宏块阵列的示例搜索空间52中。具体而言,如图5所示,搜索空间包括三行54A-54C和三列56A-56C候选宏块,用于与待编码的宏块50比较。因此,在图5的实例中,搜索空间52包括九个16×16像素的宏块的阵列,以形成一个48×48像素区域。使用差值处理器34将待编码的当前宏块50与搜索空间52中的宏块比较。
为了减少视频存储器32和候选存储器38之间的存储传递和相关的处理开销,一旦搜索空间52被最初载入,根据需要对搜索空间的后续更新可以在一个列一个列的基础上进行。例如,为了对给定帧的后续宏块编码,存储器控制单元39可以仅替换搜索空间52的左列56A中的候选宏块,而不是重新载入整个搜索空间52。
为了实现列状更新并允许对多个像素同时执行并行的运动估计计算,存储器控制单元39被构造成执行地址映射方案,用于在保存在视频存储器32、编码存储器36和候选存储器38中的存储器地址之间进行转换。编码存储器36和候选存储器38的数据更新通过直接访问视频存储器的总线33发生在它们与视频存储器32之间。为了初始化并控制该经总线33的传递,DSP 28用作经DME端口的总线控制器。
图6A是说明一个宏块像素索引的图。如图6A所示,宏块像素索引可以被分成四个微块(A、B、C、D)。宏块像素索引为16×16,其中每个微块A、B、C、D为8×8。整个宏块像素索引从左上角像素Y0延伸到右下角像素Y255(未图示)。DSP 28保存像素索引以跟踪搜索空间中的宏块。根据应用,存储器控制单元39用于将DSP 28提供的像素索引转换为视频存储器32、编码存储器36或候选存储器38中的物理存储器地址。例如,存储器控制单元39将经转换的地址提供给候选存储器38,用于搜索空间更新,或提供给编码存储器36用于由SAD引擎34进行SAD计算。
图6B是说明在视频存储器32中的视频数据排列的图。具体而言,图6B示出DSP 28保存的宏块像素索引与宏块像素数据在视频存储器32中的物理排列之间的差别。如图6B所示,视频存储器32在被排列成四个像素的行的64个地址处存储宏块像素数据,为每个宏块产生64行。每个像素为8位,每行包含32位数据。因此,为了访问视频存储器以响应来自DSP 28的像素索引,存储器控制单元39需要将像素索引转换成视频存储器中的物理地址。
图6C是说明在编码存储器34中的视频数据排列的图。如图6C所示,存储在编码存储器36中的宏块像素数据被排列成32行,每行8个像素,即每行64位。根据本发明,编码存储器36中的存储排列有利于差值处理器34为多个像素同时执行的并行绝对差(AD)计算。具体而言,图6的实例是编码存储器36的物理排列,它允许对8个像素同时进行并行AD计算。另外,当微块被定义为具有8像素宽度时,图6C的物理排列可以允许对微块以及宏块进行差值计算,因为微块通常具有8像素宽度。编码存储器36的宽度可以是64位。图6A-6C共同示出宏块像素索引如何被映射到视频存储器32,以及然后视频存储器如何被映射到差值处理器存储器35中的物理编码存储器36。
图7A是说明DSP 28保存的搜索空间像素索引的图。DSP 28用搜索空间中的像素索引来指定搜索任务,如由差值处理器34产生结果(差值)的一组计算。图7A的搜索空间像素索引对应于一个3宏块×3宏块搜索空间,因此包含2304个像素(3×3×16×16)。如图7A所示,搜索空间像素索引包含48行,每行包含48个像素。
图7B是说明在视频存储器32中的搜索空间排列的图。如图7B所示,搜索空间像素的物理排列包括每行4个像素,如图6B的宏块存储器排列。另外,像素被排列成576行。每个像素为8位,每行4个像素包含32位。
图7C是说明在候选存储器38中的搜索空间排列的图。特别的是,与编码存储器36类似,候选存储器38被排列成每行8个像素。为了存储整个搜索空间,候选存储器38包括288行。换句话说,候选存储器38被排列成8堆288×8位的存储器。每行宽64位。虽然编码存储器36只存储宏块,而候选存储器38存储三个宏块宽并总共含九个微块的搜索空间,但每个存储器36、38都具有8像素宽的输出。这样,安排编码存储器36和候选存储器,以便于每个待编码的宏块的比较,即便于同时并行计算8个像素的绝对差值。另外,安排编码存储器36和候选存储器38,以在计算宏块差值期间计算微块差值。
除了允许对多个像素进行并行AD计算,候选存储器38被安排成允许对在搜索空间中的任何像素处开始的宏块进行寻址。另外,如下所述,候选存储器38的结构可允许逐步列更新,即一次载入一列宏块,而非为每个待编码的新宏块重新载入整个搜索空间。这种载入技术可通过避免多余的存储器载入和减少总线33的使用来减小功率。存储器控制单元39再次被配置成将搜索空间像素索引转换成视频存储器32中的物理存储器地址,然后将来自视频存储器的存储器地址转换成候选存储器38中对应的物理存储器地址。
图8A是说明宏块列像素索引的图。对于待编码的两个相邻宏块,可适用的搜索空间之间的差别只是一个宏块列。结果,只有一个宏块列需要被更新。候选存储器被安排成采用该特征,从而减小视频存储器32和候选存储器之间的传递所需的数据带宽。如图8A所示,DSP 28保存的宏块列像素索引可以被排列成16个像素的行,并在搜索空间中单个列的长度上延伸48行。因此,图8A所示的宏块像素索引对应于一列三个宏块,即图7A的搜索空间像素索引的三分之一。
宏块列像素索引在视频存储器32中的物理存储器排列也不同于整个搜索空间像素索引的存储器排列。图8B是说明在视频存储器中的宏块列排列的图。对于一个宏块列,视频存储器32提供192行,每行4个像素。因此视频存储器32排列的宏块列为32位宽。一旦为最初宏块将搜索空间载入候选存储器38,对待编码的后续、相邻宏块的搜索可以通过只载入一个新列来实现。
在列更新期间,存储器控制单元39用新的宏块列替换先前的左侧宏块列。然后,将新载入的宏块列指定为当前右侧宏块列。另外,将先前的中间宏块指定为新的左侧宏块列,并将先前的右侧宏块列指定为新的中间宏块列。
因此,搜索空间可以被视为在一个较大的帧中被向右移,以消除先前的左侧宏块列,从而为新的右侧宏块列腾出空间。在该列更新操作之后,候选存储器38中的搜索空间适用于编码存储器36中的下一宏块。
通过将DSP 28提供的像素索引转换为存储器控制单元39中的视频存储器32和候选存储器38的物理地址,从而不需要DSP跟踪列移动操作。结果,DSP 28只需要提供新的右侧宏块列的像素索引。
图9是说明构成部分存储器控制单元39的示例电路的框图,该电路用于为候选存储器38中的存储堆将像素索引转换为基本地址转换。如图9所示,存储器控制单元39包括合适的逻辑电路,用于实现该存储器地址转换。存储器控制单元39跟踪当前迭代,如编码存储器36的更新,候选存储器38的更新或全部载入,或差值处理器34为编码存储器和候选存储器的内容执行并行AD计算的搜索任务。如下所述,存储器控制单元39还可以在搜索期间跟踪块边界,管理候选存储器28中的宏块列移动,并执行像素到地址的转换。
一般,对于一个搜索,存储器控制单元39根据以下公式确定候选存储器38中对应的开始像素堆,即含8个像素的行中的位置:
开始像素的堆=mod 8(像素索引) (1)
另外,存储器控制单元39根据以下公式确定开始像素的行:
开始像素的行=int(像素索引/8) (2)
因此,根据mod函数(1),开始堆是像素索引除以8的余数。根据整数除法函数(2),开始行是用像素索引可除的最大整数。
根据以上公式(1)和(2),各个堆x的开始或“基本”地址可表示为:
堆x基本地址=开始像素的行,如果x>=开始像素的堆
=开始像素的行+1,如果x<开始像素的堆 (3)
如图9所示,存储器控制单元39中的比较器58将像素索引所指示的行(像素索引mod 8)与堆索引比较,并且如果像素索引小于堆索引就产生输出1,如果像素索引大于或等于堆索引就产生输出0。然后存储器控制单元39中的加法器60将比较器58的输出1或0加到像素索引所指示的堆〔int(像素索引/8)〕,以产生堆x的基本地址。
图10是说明一个视频块计数器电路62的框图,该块计数器电路跟踪对图3所示的一系列微块(A、B、C、D)组成一个宏块的搜索过程。一旦确定了各个堆的基本地址,存储器控制单元39根据块边界跟踪地址产生计数器的逐步更新和重新载入。在图10的实例中,块计数器电路62可以包括5位的计数器64,它最初被载入一个值31,以提供32个计数。在初始化之后(task_start),计数器64在每个时钟周期执行一次正计数。然而,也可以适于减法计数的计数器。当计数达到0b11000时,判断逻辑66指示差值处理器34控制的搜索已完成了对微块A的AD计算。类似的,计数0b10000、0b01000和0b00000指示微块B、C和D已完成。当达到计数0b00000时,完成给定宏块的搜索(task_done)。这样,块计数器电路62跟踪差值处理器34控制的计算当前宏块差值的过程。另外,块计数器电路62可以确定与每个宏块相关的差值何时被计算出。
在越过每个微块边界时,判断逻辑66产生block_done信号,用于命令差值处理器34锁存各个微块结果。因此,视频编码器18产生每个微块的差值以及宏块的差值结果。另外,使用相同的各个计算产生这些差值结果。换句话说,计算的四个独立的子集产生微块的每个差值,而所有计算的总和产生宏块的差值。
如上所述,可以加入终止技术,以终止各种任务或迭代,以避免某些情况下的计算。在一个实施中,在执行了每组并行AD计算后,可以确定是否要终止任务。换句话说,微块行的每次锁存可提供一个合适的时间,用于确定是否已超过任务阈值。如果超过,则可以终止该特定任务的额外计算,因为可以得知该搜索将不会产生最小差值。具体而言,如果任务阈值被超过,候选宏块的子集的差值已经超过为搜索空间中先前的候选宏块计算的差值。
图11是说明候选存储器38中存储堆的物理地址映射电路68的框图。产生候选存储器38中的物理地址包括将像素索引产生的基本地址载入累加器,如图9所示的转换寻址。对于每个时钟周期,地址递增48个像素到宏块中像素的下一行,这被转换为6行(48像素÷8堆)。在完成了块B后,累加器重新载入基本地址+1,用于块C和块D的计算。
如图11所示,映射电路68可以包括加法器70,它在完成块B的计算(block_b_done)时将基本地址(mb_base_addr)加1,从而产生候选存储器38中的列基本地址(col_base_addr)。如果块B已完成或搜索任务被启动(task_start),或门72将逻辑高输出传递到多路复用器74。
响应于来自或门72的逻辑高输出,多路复用器74向累加器76输出列基本地址。响应于来自或门72的逻辑低输出,多路复用器将加法器78的输出传递到累加器76。加法器78将来自累加器76的当前候选存储器地址(logical_cram_addr)与一个值6相加。如果没有搜索任务的开始或块B的完成,多路复用器74和累加器78将当前候选存储器地址推进6行,即8个堆上的48像素。这样,在遇到完成块B或开始新的搜索任务时,存储器控制单元39循环通过候选存储器38中8个堆的每行,用于向差值存储器34一次表示一个微块行。因此,计算以一行接一行的方式执行,直到产生微块的每个差值,并以一个微块接一个微块的方式进行,直到计算出宏块的差值。然后,对于搜索空间的下一宏块,又以一行接一行、一个微块接一个微块的方式继续该过程,依此类推。
图12是说明候选存储器中的宏块列更新的物理地址映射电路80的框图。图11所示的地址映射电路68不处理宏块列更新发生时的宏块列移动。而是,映射电路68适用于完全重新载入搜索空间的宏块列。当应用列更新特征时,图12的地址映射电路80通过另一种范围的地址映射。
在物理候选存储器38中,把宏块列的每行映射成两行数据。例如在复位时,地址0和地址1(addr 0/1)表示左侧宏块列的第一行。特别的是,地址0表示候选存储器38中8堆的行,它对应于左侧宏块列的像素索引行中第一组8个像素。地址1表示候选存储器38中8堆的行,它对应于左侧宏块列的像素索引行中第二组8个像素。
然后,地址2和地址3(addr 2/3)表示中间宏块列的第一行,地址4和地址5(addr 4/5)表示右侧宏块列的第一行。因此,如图7C所示,候选存储器38中8堆的行依次存储跨越左侧、中间和右侧宏块列的每个整行的像素数据(如对于第一行为Y0-Y47)。
在一个宏块列更新之后,addr 0/1(先前表示左侧宏块列)用于表示右侧宏块列,addr 2/3(先前表示中间宏块列)用于表示左侧宏块列,addr 4/5(先前表示右侧宏块列)用于表示中间宏块列。
这样,左侧和右侧宏块列分别存储与先前中间和右侧宏块列相同的数据,而不需要重新载入新的数据。然而现在把地址(addr 2/3和addr 4/5)映射到左侧和中间宏块列。然而,先前左侧宏块列地址(addr 0/1)被映射到右侧宏块列并被重新载入来自视频存储器32的新数据。
为了执行列更新模式的地址映射,图12中的映射电路80确定两个条件:候选存储器列基本地址的mod 3输出(col_base_addr mod 3)和宏块列移动状态,即请求完全更新还是列更新。
如图12所示,映射电路80包括mod 3运算器82,它产生当前基本列地址除以2(cram_addr[8:1])的mod 3输出,并将mod 3输出施加到临时存储装置84(有时称为触发器)。列基本地址的mod 3输出总是为0、1或2。例如,第一列的列基本地址(Y0)将产生0,第二列的列基本地址(Y16)将产生1,第三列的列基本地址(Y32)将产生2。
当新的搜索任务开始(task_start)或计算块B完成(block_b_done)时,或门86启动触发器84从mod 3运算器输出mod 3输出,以施加到多路复用器88。mod 3输出表示列基本地址当前所在的列,即第一列(0)、第二列(1)或第三列(2)。
作为响应,多路复用器88将多路复用器90、92、94的输出中的一个传递到加法器96。多路复用器90、92、94的输出由2位计数器98的输出确定。计数器98用0值复位,以响应接收到的完全更新(full_update)信号,它指示候选存储器38中的整个搜索空间将被重新载入。响应于启动输入端的列更新(col_update)信号,计数器98加1计数,或在其它实施中采用减法计数。
列更新信号指示候选存储器38中的搜索空间将通过载入一个新列而被逐步更新。计数器98可以对于每个列更新进行递增,或对于两个列更新进行递增,并在第三列更新之后返回一个值0。例如,计数器98可以从0递增到1,到2,返回到0,到1,到2,到0,到1,到2等。计数器98还可以在计数对于0x11时进行复位,该复位可不考虑启动状态而发生。
在各种情况下,计数器98的计数输出跟踪在逐步列更新程序过程中已经执行了多少列移动。计数器98的计数输出可以提供对多路复用器90、92、94的逻辑输入,以便于地址映射判断。多路复用器90、92、94分别对应于搜索空间的左侧、中间和右侧列。如果计数输出是0,多路复用器90、92、94输出值0、0和0。如果计数输出是1,多路复用器90、92、94分别输出值+2、+2和-4。如果计数输出是2,多路复用器90、92、94分别输出值0、-4和+2。另外,计数输出提供给0b11比较器95,0b11比较器95提供一信号给或门97。因此,计数器98的复位可响应于完全更新信号或来自比较器95的信号而发生,这两个信号都输入到或门97。
多路复用器90、92、94的操作反映了先前中间列向左侧列的移动,先前右侧列向中间列的移动,即在每种情况下向左两行(+2)。调用宏块列中的每个行用候选存储器38中的两个行表示(见图7C)。该操作还可以反映先前左侧列向右侧列的移动,即向左四行(-4)。在三个列更新之后,地址再次与物理存储器匹配,因此多路复用器90、92、94的输出值分别返回为0、0和0。
多路复用器90、92、94的输出反映顺序地下一移动。在第二移动之后,原中间列已经被移动到左侧列,现在被移动到右侧列,原右侧列现在被移动到左侧列,而原左侧列现在被移动到中间列。在这种情况下,当前的左侧列偏离其原位置右侧列+4行,当前的中间列偏离其原位置左侧列-2行,当前的右侧列偏离其原位置中间列-2行。
如果触发器84的输出为0,第一列多路复用器90的输出通过多路复用器88。如果触发器84的输出为1或2,第二或第三列多路复用器92、94的输出分别通过多路复用器88。在每种情况下,多路复用器88的输出被施加到加法器96,加法器96将该输出与逻辑候选存储器地址(logical_cram_addr)相加。
这样,加法器96将逻辑候选存储器地址移动一个与列更新移动状态相当的量,以获得适当宏块的物理候选存储器地址。如果逻辑地址对应于作为移动操作结果的右侧列,而物理地址实际上对应于中间列,则映射电路80提供必要的地址转换。然后,存储器控制单元39使差值处理器34将候选存储器38中适当寻址的数据与编码存储器6中对应的数据比较,如对8个输出堆进行并行的AD计算。
图13是更详细地说明差值处理器34的框图。特别的是,图13示出了通过安排编码存储器36和候选存储器38提供的并行计算功能,以产生8个同时的堆输出。如图13所示,差值处理器可以包括多个绝对差(AD)计算通道100A-100H,统称为100。每个AD计算通道100为待编码的宏块从编码存储器36接收各自的堆输出(a0-a7)。
为了比较和计算绝对差,每个AD计算通道100还从候选存储器38接收相应的堆输出(b0-b7)。一组8位的加法器102A-102D、一对9位的加法器104A和104B、以及一个10位的加法器106以级联形式对AD结果求和。如果用更多位的值来表示像素,则可以实现更大的加法器。在任何情况下,加法器106的输出施加到加法器108。加法器108通过触发器110对其本身的输出和加法器106的输出求和,以产生绝对差之和(SAD)的结果。每组八个输入(a0-a7)可对应于微块的八个像素的行。例如,对于微块A的每一行(图6A),然后是微块B的每一行,之后是微块C和微块D,可以将输入提供给差值处理器。累加可以在计算了每个微块的差值度量之后被锁存,然后再次锁存对应于宏块的差值度量的总累加。
另外,在各个锁存步骤之后,可以判断是否终止任务。换句话说,微块行的每次锁存可提供一个合适的时间,用于确定是否已超过任务阈值。如果超过,则可以终止该特定任务的额外计算,因为可以得知该搜索将不会产生最小差值。
图14是说明这里描述的视频编码技术的流程图。如图14所示,一旦开始搜索,即开始任务(112),DSP 28就为待编码的宏块产生像素索引(114)。存储器控制单元39将宏块像素索引转换为视频存储器地址和编码存储器地址(116),并且通过总线33和存储器控制单元将宏块从视频存储器32载入编码存储器36(118)。DSP 28还为搜索空间产生像素索引(120)。一旦将搜索空间像素索引转换为视频存储器地址和候选存储器地址(122),存储器控制单元39就将搜索空间宏块载入候选存储器28(124)。
差值处理器34在候选存储器38和编码存储器36的多个堆输出之间执行并行的AD计算(126),以比较待编码的宏块与搜索空间中的宏块。根据并行的AD计算,差值处理器34产生整个搜索空间上的最佳SAD结果(128)(或者可能产生可接受的结果,而不考虑整个搜索空间)。在另一情况下,结果与待编码的宏块的像素索引相关。如上所述,差值处理器34可以为形成宏块的每个微块产生SAD结果,而不需要额外的SAD计算。在为宏块产生SAD结果之后,DSP 28可以确定是否识别到可接受的匹配,如果识别到,则可以根据MPEG-4压缩标准存储运动矢量以识别待编码的宏块。
图15是说明用列更新逐步载入搜索空间的视频编码技术的流程图。一旦由DSP 28产生下一像素索引(130,132)以驱动另一搜索任务,存储器控制单元39就将宏块像素索引转换为视频存储器地址和编码存储器地址(134)。然后,将相关的宏块从视频存储器32载入编码存储器36(136)。然而,在这种情况下,搜索空间通过加入一个新的列被逐步更新,而不是重新载入整个搜索空间。
相应地,DSP 28为搜索空间列更新产生像素索引(138),然后存储器控制单元39转换列更新像素索引,以产生相关的视频存储器地址和候选存储器地址(140)。一旦将新的宏块列从视频存储器32载入候选存储器28(142),差值处理器34执行候选存储器38和编码存储器36的八个输出堆的并行AD计算(144),并在多个并行AD计算后产生最佳SAD结果(或可接受的SAD结果)(146)。
图16是说明候选存储器中的存储堆的基本地址映射的流程图。图16所示的过程对应于图9中电路的操作,虽然也可以使用其它各种电路。为了从像素索引获得基本地址,存储器控制单元39计算像素索引mod 8操作的结果(150)。如果结果大于或等于当前堆索引(152),则基本地址等于像素索引除以8的整数商(154)。如果结果小于当前堆索引(152),则基本地址等于像素索引除以8的整数商加上1(156)。
图17是说明候选存储器中的存储堆的物理地址映射的流程图。图17所示的过程对应于图11中电路68的操作,虽然也可以使用其它各种电路。如果宏块中块B的AD计算已经完成(160),候选存储器38中的列基本地址等于宏块基本地址+1(162)。如果块B未完成(160),候选存储器38中的列基本地址等于宏块基本地址(164)。然后,如果块B已经完成或开始新的搜索任务(166),候选存储器38中的逻辑存储器地址等于基本地址(168)。如果块B未完成且没有新的搜索开始(166),将逻辑候选存储器地址移动六行(170)。
图18是说明候选存储器中的宏块列更新的物理地址映射的流程图。图18所示的过程对应于图12中电路80的操作,虽然也可以使用其它各种电路。如图18所示,确定由列基本地址所指定的列,存储器控制单元39对列基本地址施加mod 3运算(174)。如果列更新特征未启动(176),则逻辑候选存储器地址不移动(178)。这对应于图12中多路复用器90、92、94的输出(0,0,0),并对应于计数器98的计数器输出0,因此,多路复用器88传递0。
如果列更新为启动(176),存储器控制单元39参考计数器98的输出确定已经发生的列更新移动的数目(180)。根据识别出的列和列更新移动的数目,存储器控制单元39确定逻辑候选存储器地址应该移动的量,以产生正确的物理候选存储器地址(182)。然后存储器控制单元39将逻辑候选存储器地址加上地址移动转换为物理候选存储器地址(184)。
图19是说明用相同的计算为一宏块和组成该宏块的许多微块产生差值的流程图。如图所示,当运动估计器29开始宏块搜索迭代时(191),差值处理器34-个微块行接一个微块行地执行并行的绝对差(AD)计算。例如,可以初始化值X(192),差值处理器34可以对被编码的宏块中第一微块的第X行执行并行的AD计算(193)。只要微块中还存在其它行(194的是分支),值X就递增(195)并对微块的下一行执行并行的AD计算。
视频块计数器电路62可确定微块中是否存在其它行(194)。例如,视频块计数器电路62可以作为差值处理器34的一部分加以集成,或可以形成DSP接口单元30的一部分。一旦确定了已经对第一微块的每一行执行了AD计算,差值处理器34就输出第一微块的差值(196)。为宏块的每一微块连续执行该步骤,直到没有其它微块(197)。在该过程的这一阶段也可以使用任务终止技术,例如,在总累加差值超过任务阈值时终止任务,如阈值对应于已经为当前迭代计算出的最小差值。
差值处理器34可以为宏块累加正在进行的(ongoing)差值,并可以输出每个微块的差值,因为执行了每个微块的计算。第一微块的差值可以是在这以前的差值的累加值。第二微块的差值可以对应于在这以前的总累加值减去第一微块的差值。第三微块的差值可以对应于在这以前的总累加值减去第一和第二微块的差值,等等。
视频块计数器电路62还可以确定何时已经完成了最后微块的计算的累加(197的是分支)。这时,差值处理器34输出宏块的差值(198),它是在这以前的AD计算的总累加值。DSP 28或DSP接口单元30可以确定是否要执行微块中有其它的行的待编码的当前宏块的其它任务(194)。再次说明,任务是指用于将待编码的当前视频块与搜索空间中的视频块进行比较的一组计算,迭代是指对应于搜索空间中各种不同视频块与待编码的当前视频块的比较的一组任务。
迭代可以简化成将搜索空间中视频块的一个预定组与待编码的视频块比较,或者可以更复杂以包括定位搜索空间中位置的初始化技术、嵌套搜索、和/或预定的和重定义的搜索参数,以尽快定位最佳匹配。在任何情况下,在运动估计器29执行了迭代的所有任务之后(199的否分支),视频编码器18对当前宏块编码(200)。有利的是,视频编码器在编码过程中具有各种选项,这时产生搜索空间各种候选宏块的差值,还产生形成候选的微块的差值。
使用对应于最佳候选微块的四个独立的运动矢量可用于对宏块编码,以改进压缩。由于其它原因,使用对应于最佳候选宏块的单个运动矢量是较佳的,如为了保持与只能识别宏块运动矢量的解码器相适应。还可以加入纹理编码,如通过对定义待编码的当前宏块与运动矢量定义的视频块之间差值的矩阵执行离散余弦变换(DCT)编码。
在当前宏块被编码之后,视频编码器18可以确定当前视频帧中是否还有其它待编码的宏块,即是否还要执行其它迭代(201)。如果没有,给定视频帧的编码过程结束(201的否分支),帧的经编码的视频块可以由发射机20经通信媒介15发送(图1)。然而,如果当前视频帧中还有其它待编码的宏块,搜索空间可以被重新载入(202),并开始下一迭代(191)。另外,重新载入搜索空间的过程(202)可以使用上述列更新技术,其中存储器控制单元重新载入候选存储器38的诸列的一个子集,并通过如上所述的寻址方案跟踪候选存储器。这里描述的这些和其它技术,不管是否采用单机技术来改进各种传统的编码过程,或者何时组合使用,都可以提高按照诸如MPEG-4标准的视频编码的效率,而且更加便于在计算资源更受限制、功耗成问题的无线通信装置,如移动电话,中实现视频编码。
已经描述了多个不同的实施例。这些技术能够通过减少存储传递、计算周期和功耗来改进视频编码,从而加快编码过程并可能延长电池供电的视频装置的寿命。另外,这些技术通过产生宏块和微块的差值,而不需要额外的AD计算,可以在编码过程提供选项。在这些或可能的其它方法中,这些技术可以改进按照诸如MPEG-4标准或其它视频编码标准的视频编码。
这些技术可以在硬件、软件、固件或任何组合中实现。如果在软件中实现,这些技术可涉及包括程序代码的计算机可读媒体,当程序代码在一个按照MPEG-4标准对视频序列编码的装置中执行时,它执行一个或多个上述方法。在这种情况下,计算机可读媒体可以包括随机存取存储器(RAM),如同步动态随机存取存储器(SDRAM),只读存储器(ROM),非易失性随机存取存储器(NVRAM),电可擦除可编程只读存储器(EEPROM),闪存等。
程序代码可以以计算机可读指令的形式存储在存储器中。在这种情况下,处理器,如DSP,可以执行存储在存储器中的指令,以实现这里所述的一个或多个技术。在一些情况下,DSP执行这些技术,DSP调用各种硬件部件,如运动估计器以加快编码过程。在其它实施例中,视频编码器可以用微处理器、一个或多个专用集成电路(ASIC)、一个或多个现场可编程门阵列(FPGA)或一些其它硬件-软件组合来实现。这些或其它实施例在以下权利要求的范围内。
Claims (35)
1.一种方法,其特征在于,包括以下步骤:
将一组像素值载入存储器以定义第一搜索空间,第一搜索空间定义第一多列候选视频块,第一多列候选视频块在运动估计程序的第一迭代期间与待编码的第一视频块比较;
执行第一迭代,将第一视频块与第一搜索空间中的候选视频块比较;和
重新载入多列的一个子集以定义第二搜索空间,第二搜索空间定义第二多列候选视频块,第二多列候选视频块在运动估计程序的第二迭代期间与待编码的第二视频块比较。
2.如权利要求1所述的方法,其特征在于,还包括执行第二迭代,将第二视频块与第二搜索空间中的候选视频块比较。
3.如权利要求2所述的方法,其特征在于,还包括:
重新载入多列的另一个子集以定义第三搜索空间,第三搜索空间定义第三多列候选视频块,第三多列候选视频块在运动估计程序的第三迭代期间与待编码的第三视频块比较;和
执行第三迭代,将第三视频块与第三搜索空间中的候选视频块比较。
4.如权利要求3所述的方法,其特征在于,还包括:
重新载入多列的另一个子集以定义第四搜索空间,第四搜索空间定义第四多列候选视频块,第四多列候选视频块在运动估计程序的第四迭代期间与待编码的第四视频块比较;和
执行第四迭代,将第四视频块与第四搜索空间中的候选视频块比较。
5.如权利要求1所述的方法,其特征在于,执行第一迭代的步骤包括:在待编码的第一视频块的像素值和第一搜索空间中候选视频块之一的像素值之间并行地执行多个差值计算。
6.一种方法,其特征在于,包括以下步骤:
在待编码的宏块的像素和搜索空间中候选宏块的像素之间执行差值计算;
根据所述计算,产生一组微块差值,微块差值分别表示形成待编码宏块的多个微块中的每个与形成候选宏块的微块之间的差别;和
根据所述计算产生宏块差值,宏块差值表示待编码的宏块与候选宏块之间的差别。
7.如权利要求6所述的方法,其特征在于,执行差值计算的步骤包括:并行地执行多个差值计算。
8.如权利要求7所述的方法,其特征在于,并行地执行的多个差值计算对应于微块中之一的一行。
9.一种装置,其特征在于,包括:
根据运动估计程序对视频帧编码的编码器,编码器被构造成将一组像素值载入存储器以定义第一搜索空间,第一搜索空间定义第一多列候选视频块,第一多列候选视频块在运动估计程序的第一迭代期间与待编码的第一视频块比较,执行第一迭代将第一视频块与第一搜索空间中的候选视频块比较,和重新载入多列的一个子集以定义第二搜索空间,第二搜索空间定义第二多列候选视频块,第二多列候选视频块在运动估计程序的第二迭代期间与待编码的第二视频块比较;和
发射机,用于发送经编码的视频帧。
10.如权利要求9所述的装置,其特征在于,所述编码器还被构造成执行第二迭代,将第二视频块与第二搜索空间中的候选视频块比较。
11.如权利要求10所述的装置,其特征在于,所述编码器还被构造成重新载入多列的另一个子集以定义第三搜索空间,第三搜索空间定义第三多列候选视频块,第三多列候选视频块在运动估计程序的第三迭代期间与待编码的第三视频块比较,并执行第三迭代,将第三视频块与第三搜索空间中的候选视频块比较。
12.如权利要求11所述的装置,其特征在于,所述编码器还被构造成重新载入多列的另一个子集以定义第四搜索空间,第四搜索空间定义第四多列候选视频块,第四多列候选视频块在运动估计程序的第四迭代期间与待编码的第四视频块比较,并执行第四迭代,将第四视频块与第四搜索空间中的候选视频块比较。
13.如权利要求9所述的装置,其特征在于,所述编码器被构造成在待编码的第一视频块的像素值和第一搜索空间中候选视频块之一的像素值之间并行地执行多个差值计算。
14.如权利要求9所述的装置,其特征在于,所述装置选自以下装置:数字电视,无线通信装置,个人数字助理,手提电脑,台式电脑,数码相机,数字记录装置,具有视频功能的蜂窝无线电电话,和具有视频功能的卫星无线电电话。
15.如权利要求9所述的装置,其特征在于,还包括视频捕获装置,用于实时地捕获视频帧,所述编码器被构造成实时地对视频帧编码,发射机被构造成实时地发送经编码的视频帧。
16.一种装置,其特征在于,包括:
对视频帧编码的编码器,编码器被构造成在待编码的宏块的像素和搜索空间中候选宏块的像素之间执行差值计算,根据所述差值计算产生一组微块差值,微块差值分别表示形成待编码宏块的多个微块中的每个与形成候选宏块的微块之间的差别,并根据所述计算产生宏块差值,宏块差值表示待编码的宏块与候选宏块之间的差别;和
发射机,用于发送经编码的视频帧。
17.如权利要求16所述的装置,其特征在于,所述编码器被构造成并行地执行多个差值计算。
18.如权利要求16所述的装置,其特征在于,并行执行的多个差值计算对应于微块中之一的一行。
19.如权利要求16所述的装置,其特征在于,还包括视频捕获装置,用于实时地捕获视频帧,所述编码器被构造成实时地对视频帧编码,发射机被构造成实时地发送经编码的视频帧,其中根据运动图像专家组4(MPEG-4)标准对视频帧编码。
20.如权利要求16所述的装置,其特征在于,所述装置是电池供电的无线装置。
21.一种装置,其特征在于,包括:
存储器;
存储器控制单元,它将一组像素值载入存储器以定义第一搜索空间,第一搜索空间定义第一多列候选视频块,第一多列候选视频块在运动估计程序的第一迭代期间与待编码的第一视频块比较,并重新载入多列的一个子集以定义第二搜索空间,第二搜索空间定义第二多列候选视频块,第二多列候选视频块在运动估计程序的第二迭代期间与待编码的第二视频块比较;和
处理器,它执行第一迭代将第一视频块与第一搜索空间中的候选视频块比较并执行第二迭代将第二视频块与第二搜索空间中的候选视频块比较。
22.如权利要求21所述的装置,其特征在于,所述存储器控制单元重新载入多列的另一个子集以定义第三搜索空间,第三搜索空间定义第三多列候选视频块,第三多列候选视频块在运动估计程序的第三迭代期间与待编码的第三视频块比较;
所述处理器执行第三迭代,将第三视频块与第三搜索空间中的候选视频块比较。
23.如权利要求22所述的装置,其特征在于,所述存储器控制单元重新载入多列的另一个子集以定义第四搜索空间,第四搜索空间定义第四多列候选视频块,第四多列候选视频块在运动估计程序的第四迭代期间与待编码的第四视频块比较;
所述处理器执行第四迭代,将第四视频块与第四搜索空间中的候选视频块比较。
24.如权利要求21所述的装置,其特征在于,所述处理器被构造成在待编码的视频块之一和一个搜索空间中的候选视频块之一之间并行地执行多个差值计算。
25.一种装置,其特征在于,包括:
存储器,它存储计算机可读指令;和
处理器,用于执行所述指令以实现:
在待编码的宏块的像素和搜索空间中候选宏块的像素之间执行差值计算;
根据所述计算产生一组微块差值,微块差值分别表示形成待编码宏块的多个微块中的每个与形成候选宏块的微块之间的差别;和
根据所述计算产生宏块差值,宏块差值表示待编码的宏块与候选宏块之间的差别。
26.如权利要求25所述的装置,其特征在于,所述处理器被构造成并行地执行多个差值计算。
27.如权利要求26所述的装置,其特征在于,并行执行的多个差值计算对应于微块中之一的一行。
28.一种根据运动图像专家组(MPEG)标准对视频块进行编码的装置,其特征在于,所述装置被构造成:
将一组像素值载入存储器以定义第一搜索空间,第一搜索空间定义第一多列候选视频块,第一多列候选视频块在运动估计程序的第一迭代期间与待编码的第一视频块比较;
执行第一迭代将第一视频块与第一搜索空间中的候选视频块比较;和
重新载入多列的一个子集以定义第二搜索空间,第二搜索空间定义第二多列候选视频块,第二多列候选视频块在运动估计程序的第二迭代期间与待编码的第二视频块比较。
29.如权利要求28所述的装置,其特征在于,所述装置被构造成执行第二迭代将第二视频块与第二搜索空间中的候选视频块比较。
30.如权利要求29所述的装置,其特征在于,所述装置还被构造成:
重新载入多列的另一个子集以定义第三搜索空间,第三搜索空间定义第三多列候选视频块,第三多列候选视频块在运动估计程序的第三迭代期间与待编码的第三视频块比较;并
执行第三迭代,将第三视频块与第三搜索空间中的候选视频块比较。
31.如权利要求30所述的装置,其特征在于,所述装置还被构造成:
重新载入多列的另一个子集以定义第四搜索空间,第四搜索空间定义第四多列候选视频块,第四多列候选视频块在运动估计程序的第四迭代期间与待编码的第四视频块比较;并
执行第四迭代,将第四视频块与第四搜索空间中的候选视频块比较。
32.如权利要求28所述的装置,其特征在于,所述装置被构造成在待编码的第一视频块的像素值和第一搜索空间中候选视频块之一的像素值之间并行地执行多个差值计算。
33.一种根据运动图像专家组(MPEG)标准对视频块进行编码的装置,其特征在于,所述装置被构造成:
在待编码的宏块的像素和搜索空间中候选宏块的像素之间执行差值计算;
根据所述计算,产生一组微块差值,微块差值分别表示形成待编码宏块的多个微块中的每个与形成候选宏块的微块之间的差别;和
根据所述计算产生宏块差值,宏块差值表示待编码的宏块与候选宏块之间的差别。
34.如权利要求33所述的装置,其特征在于,所述装置被构造成并行地执行多个差值计算。
35.如权利要求34所述的装置,其特征在于,并行执行的多个差值计算对应于微块中之一的一行。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US39010102P | 2002-06-18 | 2002-06-18 | |
| US60/390,101 | 2002-06-18 | ||
| US10/371,793 US7940844B2 (en) | 2002-06-18 | 2003-02-21 | Video encoding and decoding techniques |
| US10/371,793 | 2003-02-21 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN1663278A true CN1663278A (zh) | 2005-08-31 |
Family
ID=29739645
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN038140551A Pending CN1663278A (zh) | 2002-06-18 | 2003-06-18 | 视频编码和解码技术 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US7940844B2 (zh) |
| EP (1) | EP1514425A2 (zh) |
| JP (1) | JP2005530422A (zh) |
| KR (1) | KR100967993B1 (zh) |
| CN (1) | CN1663278A (zh) |
| AU (1) | AU2003238295A1 (zh) |
| WO (1) | WO2003107681A2 (zh) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101068353B (zh) * | 2006-06-16 | 2010-08-25 | 威盛电子股份有限公司 | 图形处理单元与计算巨图块的绝对差值加总值的方法 |
| CN101212682B (zh) * | 2007-12-22 | 2011-06-15 | 深圳市同洲电子股份有限公司 | 一种运动搜索区域的数据加载装置和方法 |
| CN101149738B (zh) * | 2007-06-06 | 2011-09-21 | 中兴通讯股份有限公司 | 一种利用定长字段优化迭代查询的方法 |
| CN101335891B (zh) * | 2007-02-09 | 2012-03-14 | 泰德广播电视公司 | 视频速率控制方法及视频速率控制器 |
| US8275049B2 (en) | 2006-06-16 | 2012-09-25 | Via Technologies, Inc. | Systems and methods of improved motion estimation using a graphics processing unit |
| WO2015078422A1 (zh) * | 2013-11-30 | 2015-06-04 | 同济大学 | 图像编码、解码方法及装置 |
| CN111341413A (zh) * | 2020-02-27 | 2020-06-26 | 东北石油大学 | 应用上的运动频率调节处理方法和装置 |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FI110744B (fi) * | 2001-09-06 | 2003-03-14 | Nokia Corp | Menetelmä liike-estimoinnin suorittamiseksi videokoodauksessa, videokoodausjärjestelmä sekä videokoodauslaite |
| US20040252197A1 (en) * | 2003-05-05 | 2004-12-16 | News Iq Inc. | Mobile device management system |
| US10375641B2 (en) | 2003-05-05 | 2019-08-06 | Pluto Technologies, Inc. | Mobile device management system using network parameter resources |
| KR100621137B1 (ko) * | 2004-02-27 | 2006-09-13 | 세이코 엡슨 가부시키가이샤 | 동화상 부호화 장치 및 동화상 처리장치 |
| US7894526B2 (en) * | 2004-02-27 | 2011-02-22 | Panasonic Corporation | Motion estimation method and moving picture coding method |
| JP4190458B2 (ja) * | 2004-05-17 | 2008-12-03 | 三洋電機株式会社 | 画像処理装置 |
| EP1703513A1 (en) * | 2005-03-15 | 2006-09-20 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for encoding plural video signals as a single encoded video signal, method and and apparatus for decoding such an encoded video signal |
| US20070165106A1 (en) * | 2005-05-02 | 2007-07-19 | Groves Randall D | Distributed Videoconferencing Processing |
| US7864982B2 (en) | 2005-08-22 | 2011-01-04 | Samsung Electronics Co., Ltd. | Displacement and tilt detection method for a portable autonomous device having an integrated image sensor and a device therefor |
| CN101268434B (zh) * | 2005-08-22 | 2010-06-16 | 三星电子株式会社 | 自主手持设备及控制自主手持设备的操作的方法 |
| EP1761062A1 (en) | 2005-09-06 | 2007-03-07 | BRITISH TELECOMMUNICATIONS public limited company | Generating and storing image data |
| US8358695B2 (en) * | 2006-04-26 | 2013-01-22 | Altera Corporation | Methods and apparatus for providing a scalable motion estimation/compensation assist function within an array processor |
| FR2902906A1 (fr) * | 2006-06-21 | 2007-12-28 | St Microelectronics Sa | Gestion de donnes pour un traitement d'images |
| US7714873B2 (en) * | 2006-06-29 | 2010-05-11 | Microsoft Corporation | Strategies for compressing textures |
| US8213509B2 (en) * | 2006-10-06 | 2012-07-03 | Calos Fund Limited Liability Company | Video coding on parallel processing systems |
| US8077776B1 (en) * | 2006-12-15 | 2011-12-13 | Xilinx, Inc. | Motion estimation for video compression |
| KR100834443B1 (ko) * | 2007-02-27 | 2008-06-04 | 삼성전자주식회사 | 비디오 코덱을 위한 메모리 구조 및 메모리 액세스 방법 |
| US20080279281A1 (en) * | 2007-05-08 | 2008-11-13 | Draper Stark C | Method and System for Compound Conditional Source Coding |
| US8731062B2 (en) * | 2008-02-05 | 2014-05-20 | Ntt Docomo, Inc. | Noise and/or flicker reduction in video sequences using spatial and temporal processing |
| TWI475890B (zh) * | 2008-10-14 | 2015-03-01 | Univ Nat Taiwan | 用於需要善用電量之多媒體裝置的高效率區塊比對的大型積體電路架構及方法 |
| US8751990B2 (en) * | 2008-12-19 | 2014-06-10 | L3 Communications Integrated Systems, L.P. | System for determining median values of video data |
| TWI450590B (zh) * | 2009-04-16 | 2014-08-21 | Univ Nat Taiwan | 嵌入式系統及其中移動評估的資料讀取之方法 |
| TWI450591B (zh) * | 2009-04-16 | 2014-08-21 | Univ Nat Taiwan | 視訊處理晶片組及其中移動評估的資料讀取之方法 |
| US8213506B2 (en) * | 2009-09-08 | 2012-07-03 | Skype | Video coding |
| GB2476271B (en) * | 2009-12-17 | 2015-09-02 | Skype | Coding data streams |
| US20110194606A1 (en) * | 2010-02-09 | 2011-08-11 | Cheng-Yu Hsieh | Memory management method and related memory apparatus |
| US9313494B2 (en) | 2011-06-20 | 2016-04-12 | Qualcomm Incorporated | Parallelization friendly merge candidates for video coding |
| US9280386B1 (en) * | 2011-07-14 | 2016-03-08 | Google Inc. | Identifying task instance outliers based on metric data in a large scale parallel processing system |
| CN103167218B (zh) * | 2011-12-14 | 2016-04-06 | 北京大学 | 一种基于非局部性的超分辨率重建方法和设备 |
| US10536726B2 (en) * | 2012-02-24 | 2020-01-14 | Apple Inc. | Pixel patch collection for prediction in video coding system |
| US9451288B2 (en) | 2012-06-08 | 2016-09-20 | Apple Inc. | Inferred key frames for fast initiation of video coding sessions |
| US9271010B2 (en) * | 2012-10-02 | 2016-02-23 | Futurewei Technologies, Inc. | System and method for motion estimation for large-size block |
| CN104717510B (zh) | 2013-12-13 | 2018-08-17 | 华为技术有限公司 | 用于图像处理的方法和装置 |
| US9930357B2 (en) * | 2016-03-03 | 2018-03-27 | Uurmi Systems Pvt. Ltd. | Systems and methods for motion estimation for coding a video sequence |
| KR20190112723A (ko) * | 2017-02-03 | 2019-10-07 | 소니 주식회사 | 송신 장치, 송신 방법, 수신 장치 및 수신 방법 |
| WO2020173556A1 (en) * | 2019-02-26 | 2020-09-03 | Movidius Ltd. | Improving the efficiency of image difference calculations |
| US20240298041A1 (en) * | 2023-03-01 | 2024-09-05 | Comcast Cable Communications, Llc | Methods, systems, and apparatuses for detecting blockiness in content |
Family Cites Families (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1994018799A1 (en) * | 1993-02-03 | 1994-08-18 | Qualcomm Incorporated | Interframe video encoding and decoding system |
| US5598514A (en) | 1993-08-09 | 1997-01-28 | C-Cube Microsystems | Structure and method for a multistandard video encoder/decoder |
| US5610659A (en) * | 1995-05-08 | 1997-03-11 | Futuretel, Inc. | MPEG encoder that concurrently determines video data encoding format and rate control |
| US5987178A (en) * | 1996-02-22 | 1999-11-16 | Lucent Technologies, Inc. | Apparatus and method for a programmable video motion estimator |
| US6043846A (en) | 1996-11-15 | 2000-03-28 | Matsushita Electric Industrial Co., Ltd. | Prediction apparatus and method for improving coding efficiency in scalable video coding |
| US5864372A (en) * | 1996-12-10 | 1999-01-26 | United Microelectronics Corporation | Apparatus for implementing a block matching algorithm for motion estimation in video image processing |
| JP3631868B2 (ja) | 1996-12-20 | 2005-03-23 | 株式会社東芝 | 動きベクトル検出装置および方法 |
| TW361051B (en) | 1997-01-09 | 1999-06-11 | Matsushita Electric Industrial Co Ltd | Motion vector detection apparatus |
| US6014181A (en) * | 1997-10-13 | 2000-01-11 | Sharp Laboratories Of America, Inc. | Adaptive step-size motion estimation based on statistical sum of absolute differences |
| US6125149A (en) | 1997-11-05 | 2000-09-26 | At&T Corp. | Successively refinable trellis coded quantization |
| US6434196B1 (en) | 1998-04-03 | 2002-08-13 | Sarnoff Corporation | Method and apparatus for encoding video information |
| US6141641A (en) | 1998-04-15 | 2000-10-31 | Microsoft Corporation | Dynamically configurable acoustic model for speech recognition system |
| JP4027513B2 (ja) | 1998-09-29 | 2007-12-26 | 株式会社ルネサステクノロジ | 動き検出装置 |
| US6081554A (en) | 1998-10-02 | 2000-06-27 | The Trustees Of Columbia University In The City Of New York | Method to control the generated bit rate in MPEG-4 shape coding |
| US6233226B1 (en) | 1998-12-14 | 2001-05-15 | Verizon Laboratories Inc. | System and method for analyzing and transmitting video over a switched network |
| US6363117B1 (en) * | 1998-12-31 | 2002-03-26 | Sony Corporation | Video compression using fast block motion estimation |
| AUPP990199A0 (en) | 1999-04-22 | 1999-05-13 | Griffith University | Wireless video surveillance system |
| WO2000067487A1 (en) | 1999-04-30 | 2000-11-09 | Koninklijke Philips Electronics N.V. | Low bit rate video coding method and system |
| JP2000350216A (ja) | 1999-06-09 | 2000-12-15 | Matsushita Electric Ind Co Ltd | 動き係数探索装置、及び動き係数探索方法 |
| KR100580158B1 (ko) | 1999-06-12 | 2006-05-15 | 삼성전자주식회사 | 화상 패킷 전송을 위한 무선통신 시스템 |
| US6393154B1 (en) | 1999-11-18 | 2002-05-21 | Quikcat.Com, Inc. | Method and apparatus for digital image compression using a dynamical system |
| US6513004B1 (en) | 1999-11-24 | 2003-01-28 | Matsushita Electric Industrial Co., Ltd. | Optimized local feature extraction for automatic speech recognition |
| US6496538B1 (en) * | 1999-12-31 | 2002-12-17 | Intel Corporation | Method and apparatus for motion estimation for digital video encoding |
| KR100677082B1 (ko) | 2000-01-27 | 2007-02-01 | 삼성전자주식회사 | 움직임 추정기 |
| US6567469B1 (en) | 2000-03-23 | 2003-05-20 | Koninklijke Philips Electronics N.V. | Motion estimation algorithm suitable for H.261 videoconferencing applications |
| US6690727B1 (en) * | 2000-05-08 | 2004-02-10 | Intel Corporation | Image processing |
| WO2001095312A1 (en) | 2000-06-08 | 2001-12-13 | Nokia Corporation | Method and system for adaptive distributed speech recognition |
| US6510410B1 (en) | 2000-07-28 | 2003-01-21 | International Business Machines Corporation | Method and apparatus for recognizing tone languages using pitch information |
| US6934332B1 (en) * | 2001-04-24 | 2005-08-23 | Vweb Corporation | Motion estimation using predetermined pixel patterns and subpatterns |
| FI110744B (fi) | 2001-09-06 | 2003-03-14 | Nokia Corp | Menetelmä liike-estimoinnin suorittamiseksi videokoodauksessa, videokoodausjärjestelmä sekä videokoodauslaite |
| DE60141961D1 (de) | 2001-09-10 | 2010-06-10 | Texas Instruments Inc | Verfahren und Vorrichtung zur Bewegungsvektorenabschätzung |
| US6941265B2 (en) | 2001-12-14 | 2005-09-06 | Qualcomm Inc | Voice recognition system method and apparatus |
| US7034849B1 (en) | 2001-12-31 | 2006-04-25 | Apple Computer, Inc. | Method and apparatus for image blending |
| US7051356B2 (en) * | 2002-02-25 | 2006-05-23 | Sentrus, Inc. | Method and system for remote wireless video surveillance |
| TW526657B (en) * | 2002-04-12 | 2003-04-01 | Univ Nat Taiwan | Global elimination algorithm for motion estimation and the hardware structure |
| US7039246B2 (en) | 2002-05-03 | 2006-05-02 | Qualcomm Incorporated | Video encoding techniques |
| US20040008779A1 (en) | 2002-06-18 | 2004-01-15 | Lai King Chung | Techniques for video encoding and decoding |
-
2003
- 2003-02-21 US US10/371,793 patent/US7940844B2/en not_active Expired - Fee Related
- 2003-06-18 EP EP03737192A patent/EP1514425A2/en not_active Withdrawn
- 2003-06-18 JP JP2004514353A patent/JP2005530422A/ja active Pending
- 2003-06-18 WO PCT/US2003/019401 patent/WO2003107681A2/en not_active Ceased
- 2003-06-18 KR KR1020047020598A patent/KR100967993B1/ko not_active Expired - Fee Related
- 2003-06-18 AU AU2003238295A patent/AU2003238295A1/en not_active Abandoned
- 2003-06-18 CN CN038140551A patent/CN1663278A/zh active Pending
-
2011
- 2011-03-28 US US13/073,583 patent/US20110170611A1/en not_active Abandoned
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101068353B (zh) * | 2006-06-16 | 2010-08-25 | 威盛电子股份有限公司 | 图形处理单元与计算巨图块的绝对差值加总值的方法 |
| US8275049B2 (en) | 2006-06-16 | 2012-09-25 | Via Technologies, Inc. | Systems and methods of improved motion estimation using a graphics processing unit |
| TWI395488B (zh) * | 2006-06-16 | 2013-05-01 | Via Tech Inc | 具有可程式核心之視訊處理單元 |
| CN101335891B (zh) * | 2007-02-09 | 2012-03-14 | 泰德广播电视公司 | 视频速率控制方法及视频速率控制器 |
| CN101149738B (zh) * | 2007-06-06 | 2011-09-21 | 中兴通讯股份有限公司 | 一种利用定长字段优化迭代查询的方法 |
| CN101212682B (zh) * | 2007-12-22 | 2011-06-15 | 深圳市同洲电子股份有限公司 | 一种运动搜索区域的数据加载装置和方法 |
| WO2015078422A1 (zh) * | 2013-11-30 | 2015-06-04 | 同济大学 | 图像编码、解码方法及装置 |
| US11394970B2 (en) | 2013-11-30 | 2022-07-19 | Zte Corporation | Image encoding and decoding method and device |
| CN111341413A (zh) * | 2020-02-27 | 2020-06-26 | 东北石油大学 | 应用上的运动频率调节处理方法和装置 |
| CN111341413B (zh) * | 2020-02-27 | 2023-04-25 | 东北石油大学 | 应用上的运动频率调节处理方法和装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR100967993B1 (ko) | 2010-07-07 |
| EP1514425A2 (en) | 2005-03-16 |
| KR20050012806A (ko) | 2005-02-02 |
| US20110170611A1 (en) | 2011-07-14 |
| AU2003238295A8 (en) | 2003-12-31 |
| US7940844B2 (en) | 2011-05-10 |
| US20040008780A1 (en) | 2004-01-15 |
| JP2005530422A (ja) | 2005-10-06 |
| WO2003107681A2 (en) | 2003-12-24 |
| WO2003107681A3 (en) | 2004-08-05 |
| AU2003238295A1 (en) | 2003-12-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1663278A (zh) | 视频编码和解码技术 | |
| JP5415599B2 (ja) | レート制御されたビデオ符号化のための適応フレーム・スキップ技術 | |
| JP4700069B2 (ja) | 内部予測ビデオ符号化のためのモード選択技術 | |
| CN1662068A (zh) | 动态图像编码装置及动态图像处理装置 | |
| CN1813478A (zh) | 用于手持设备的编码的方法 | |
| CN1675933A (zh) | 视频编码和解码技术 | |
| CN1767644A (zh) | 用于视频编码的非整数像素共享 | |
| CN1295933C (zh) | 数据处理方法 | |
| CN1791219A (zh) | 用于片上系统的双层总线结构 | |
| CN1663280A (zh) | 用于视频编码的运动估计技术 | |
| CN1750659A (zh) | 插值图像内存组织、分数像素生成及预测误差指标计算方法 | |
| CN1750658A (zh) | 帧间预测模式的选择方法 | |
| CN1112654C (zh) | 图像处理装置 | |
| CN1905680A (zh) | 运动图像编码装置、方法及程序 | |
| CN1633184A (zh) | 基于有效区域的多参考帧快速运动估计方法 | |
| CN1825964A (zh) | 片上处理视频数据的方法和系统 | |
| CN1791220A (zh) | 视频解码器、以及相关联的操作方法 | |
| CN1614990A (zh) | 信号处理方法及信号处理装置 | |
| CN1520187A (zh) | 用于视频数据压缩的系统和方法 | |
| CN1284378C (zh) | 基于数学模型预测的运动估计快速半像素级搜索方法 | |
| CN100377597C (zh) | 面向移动设备的视频压缩方法 | |
| CN1946178A (zh) | 一种用于运动估计的vlsi装置及运动估计的方法 | |
| HK1079937A (zh) | 視頻編碼和解碼技術 | |
| HK1080656A (zh) | 視頻編碼和解碼技術 | |
| CN1878309A (zh) | 视频编码装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1079937 Country of ref document: HK |
|
| REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1079937 Country of ref document: HK |
|
| C12 | Rejection of a patent application after its publication | ||
| RJ01 | Rejection of invention patent application after publication |
Open date: 20050831 |