CN1675933A - 视频编码和解码技术 - Google Patents

视频编码和解码技术 Download PDF

Info

Publication number
CN1675933A
CN1675933A CNA038193302A CN03819330A CN1675933A CN 1675933 A CN1675933 A CN 1675933A CN A038193302 A CNA038193302 A CN A038193302A CN 03819330 A CN03819330 A CN 03819330A CN 1675933 A CN1675933 A CN 1675933A
Authority
CN
China
Prior art keywords
video blocks
candidate
difference
memory
video
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
Application number
CNA038193302A
Other languages
English (en)
Inventor
K·C·赖
G·C·西
C·常
A·P·马罗二世
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN1675933A publication Critical patent/CN1675933A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/134Methods 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria

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)

Abstract

该揭示描述了一些视频编码技术,所述技术减少了对视频序列编码需要的处理周期和存储器转移数目。这样,揭示的视频编码技术可以增加视频编码速度并减少功耗。总体而言,视频编码技术可以使用候选存储器,所述存储器按列存储对应于运动估计例程的搜索空间。存储器控制单元可以定址候选存储器以并行方式检取多个象素,用于与要编码的视频块象素的同时比较,例如使用绝对差值求和(SAD)或平方差值求和(SSD)技术。差值处理器可以并行地实现计算。另外,对于要编码的相继视频块,候选存储器可以通过载入新的视频块列而递增地经更新,而不是重新载入整个搜索空间。

Description

视频编码和解码技术
本申请受益于临时美国申请序列号60/390101,题为“Method to ReduceConsumption in a Video Motion Estimation System”,提交于2002年6月18日,转让给本发明的受让人,在此完全引入作为参考。
技术领域
本揭示涉及数字视频处理,尤其涉及视频序列的编码。
背景
数字视频能力被包括在大量设备中,包括数字电视、数字直接广播系统、无线通信设备、个人数字助手(PDA)、手提电脑、台式电脑、数字摄像机、数字记录设备、蜂窝或卫星无线电话等。数字视频设备相比常规模拟视频系统可以提供很大改善,包括建立、修改、发送、存储、记录和播放全活动视频序列。
已经为数字视频序列编码建立了多个不同的视频编码标准。活动图片专家组(MPEG)例如已经研发了多个标准,包括MPEG-1、MPEG-2和MPEG-4。其他标准包括ITU H.263、加利福尼亚州Cupertino的苹果计算机公司研发的QuickTimeTM技术、华盛顿Redmond的微软公司研发的WindowsTM的视频、英特尔公司研发的IndeoTM、华盛顿州西雅图RealNetworks公司的RealVideoTM以及SuperMac公司研发的CinepakTM
许多视频编码标准是通过以压缩的方式对数据编码而增加传输速率。压缩可以减少视频帧有效传输发送需要的总数据量。例如,MPEG标准利用了图形和视频压缩技术以方便在比没有压缩时更窄的带宽上传输视频和图像。
例如,MPEG标准支持利用连续视频帧间类似性的视频编码技术,该类似性被称为时间或帧间相关,用于提供帧间压缩。帧间压缩技术通过将基于象素的视频帧表示转换成运动表示而利用帧的数据冗余性。另外,视频编码技术可以利用帧内的类似性,这被称为空间或帧内相关,用于进一步压缩视频帧。帧内压缩一般是基于用于压缩静止图像的纹理编码,诸如离散余弦变换(DCT)编码。
为了支持压缩,数字视频设备一般包括用于对数字视频序列压缩的编码器以及用于对数字视频序列解压缩的解码器。在许多情况下,编码器和解码器形成集成的编码器/解码器(CODEC),它对定义视频图像序列的帧内的象素模块操作。在MPEG-4标准内,例如编码器一般将要发送的视频帧分割成包括16×16象素阵列的宏块。
对于视频帧内的每个宏块,编码器搜索在紧邻的前一视频帧(或相继帧)的宏块以标识最类似的宏块,并将宏块间的差异编码以用于传输,同时还传输指示先前帧的哪个宏块用于编码的运动向量。解码器接收运动向量以及编码后的差异,并实现运动压缩以生成视频序列。
视频编码过程是计算强度很高的,特别是当使用运动估计技术时。例如,将要编码的视频块与先前发送的帧的视频块相比较的过程需要大量计算。非常期望改善的编码技术,特别是用于无线设备或其他便携式视频设备,这些设备的计算资源更有限且功耗也是一重要考虑。同时,期望改善的压缩能减少视频序列的有效传输需要的带宽。改善这些因子的一个或多个会方便视频序列的实时编码,特别是在无线和其他带宽受限的设置中。
概述
该揭示描述了一些视频编码技术,所述技术减少了对视频序列编码需要的处理周期和存储器转移的数目。这样,揭示的视频编码技术可以增加视频编码速度并减少功耗。另外,该技术可以使用相同的计算集合以定义与要编码的宏块相关联的差异值,并定义与形成要编码的宏块的各个微块相关联的差异值。
在此描述的视频编码技术可以使用候选存储器,所述存储器按列存储运动估计例程的搜索空间。存储器控制单元可以定址候选存储器以并行方式检索多个象素,用于与要编码的视频块象素的同时比较,例如使用绝对差值求和(SAD)或平方差值求和(SSD)技术。差值处理器可以并行地实现计算。每个并行计算集合可以对应形成宏块的一个微块的一行。另外,对于要编码的相继视频块,候选存储器可以通过加载一新的视频块列而递增地经更新,而不是重新加载整个搜索空间。
在此描述的这些和其他技术可以实现在数字视频设备内的硬件、软件、固件或其任意组合内。如果实现在软件内,该技术可以是针对计算机可读媒质,包括当被执行时实现在此描述的一个或多个编码技术的程序代码。各个实施例的附加细节在所附附图和以下的描述中提出。通过附图和描述以及权利要求书,本发明的特征、性质和优点将变得更加明显。
附图的简要描述
图1是说明一示例系统的框图,其中源数字视频设备将编码后的视频数据序列发送到接收数字视频设备。
图2是说明对数字视频序列编码的视频编码器框图。
图3是说明视频数据的示例宏块概念说明。
图4是示例搜索空间的概念说明。
图5是要编码的宏块的概念说明,所述宏块概念性地(conceptually)位于被安排为宏块阵列的搜索空间上。
图6A是说明宏块象素索引图。
图6B是说明视频存储器内视频数据安排图。
图6C是说明编码存储器内视频数据安排图。
图7A是说明搜索空间象素索引图。
图7B是说明视频存储器内搜索空间安排图。
图7C是说明候选存储器内搜索空间安排图。
图8A是说明宏块列象素索引图。
图8B是说明视频存储器内宏块列安排图。
图9是说明为候选存储器内存储器组(bank)象素索引到基地址转换的转换框图。
图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和类似标准、Motion JPEG2000,加利福尼亚州Gupertino的苹果计算机公司研发的QuickTimeTM技术、华盛顿州Redmond的微软公司研发的WindowsTM的视频、英特尔公司研发的IndeoTM以及SuperMac公司研发的CinepakTM
通信链路15可以包括无线链路、物理传输线、诸如本地局域网的基于分组的网络、广域网或诸如因特网的全球网络、公共交换电话网络(PSTN)类似网络。因此,通信链路15表示任何合适的通信介质或可能的不同网络和链路集合,用于将视频数据从源设备12发送到接收设备14。
源设备12可以是任何能对视频数据编码并发送的数字视频设备。例如,源设备12可以包括视频存储器16以存储数字视频序列、视频编码器18以对序列编码以及发射机20以在通信链路15上将编码后序列发送到源设备14。视频编码器18可以包括例如数字信号处理器(DSP),它执行一个或多个可编程软件模块以控制视频编码技术。可以提供相关存储器和逻辑电路以支持DSP控制视频编码技术。如描述,视频编码器18可以被配置用于减少处理周期、存储器转移和功耗。另外,视频编码器18可以用于执行一组计算以为宏块生成差值以及为形成宏块的各个微块生成各个差值。
另外,源设备12可以包括视频捕获设备23,诸如视频摄像机,用以捕获视频序列和在存储器16内存储捕获的序列。特别是,视频捕获设备23可以包括电荷耦合设备(CCD)、电荷注入设备、光电二极管阵列、互补金属氧化物半导体(CMOS)设备或能捕获视频图像或数字视频序列的其他光感设备。
作为另一示例,视频捕获设备23可以是视频转换器,它从例如电视、视频磁带记录、可携式摄像机等将模拟视频数据转换成数字视频数据。在一些实施例中,源设备12可以用于在通信链路15上发送实时视频序列。在该情况下,接收设备14可以接收实时视频序列并向用户显示视频序列。或者,源设备12可以捕获并对视频序列编码,所述序列作为视频数据文件发送到接收设备14,即不是以实时方式。因此,源设备12和接收设备14可以在例如移动无线网络中支持诸如视频片断回播、视频邮件或视频会议等应用程序。
接收设备14可以采取能接收并对视频数据解码的任何数字视频设备形式。例如,接收设备14可以包括接收机22用以从发射机20接收编码后数字视频序列,例如通过中间链路、路由器、其他网络设备等。接收设备14还可以包括视频解码器24用于对序列解码,还包括显示设备26以向用户显示序列。在一些实施例中,接收设备14可能不包括集成显示设备14。而且,接收设备14可以作为接收机,它将接收到的视频数据解码以驱动分离的显示设备。例如电视或监视器。
源设备12和接收设备14的示例设备包括位于计算机网络、工作站或其他台式机计算设备上的服务器,还包括诸如手提电脑或个人数字助手(PDA)的移动计算设备。其他示例包括数字电视广播卫星和接收设备,诸如数字电视、数字摄像机、数字视频摄像机或其他数字记录设备、数字视频电话,诸如带有视频功能的移动电话、其他无线视频设备等。
在一些情况下,源设备12和接收设备14每个包括编码器/解码器(CODEC)(未示出),用于对数字视频数据编码和解码。在该情况下,源设备12和接收设备14可以包括发射机和接收机以及存储器和显示。以下示出的许多编码技术在包括编码器的数字视频设备环境中描述。然而可以理解编码器可以形成COCEC的一部分。在该情况下,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向用户显示。接收设备14的解码器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计算,以为给定视频帧计算要编码的块或宏块的运动向量。通过将编码算法的控制分配给DSP 28并在运动估计器29的硬件内分离计算强度高的运动估计计算,可以增强支持实时编码的能力。
差值处理器35如图2内进一步示出,包括编码存储器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间的存储器转移可以通过在DSP和总线33上的直接存储器交换(DME)端口完成。在该情况下,DSP接口单元30、差值处理器34、编码存储器36、候选存储器38和存储器控制单元39可以驻留在DSP 28控制的总运动估计器(ME)内。一般,DME用于将数据从视频存储器32中取出用于载入编码存储器36和候选存储器38。
在图2的示例中,DSP接口单元30作为从视频存储器32通过总线33和存储器控制单元39到编码存储器36以及候选存储器38的存储器转移的随从单元。开始时,DSP接口单元30可以将整个搜索空问载入候选存储器38。此后,DSP接口单元30可以递增地更新候选存储器38,例如因为给定帧内的下一块是要被编码的,因此向搜索空间加入一新列。DSP接口单元30可以具有数据和配置信道,用于转移视频数据和存储器控制单元39的配置。另外,DSP接口单元30可以具有配置信道,用于控制差值处理器34实现的搜索过程,且还具有结果信道,用于接收搜索结果。
在图2的示例中,视频编码器18向主源设备12提供压缩后数字视频序列用于发送到接收设备14。视频编码器18对视频序列编码并在传输前在视频存储器32内缓冲编码后的数字视频序列。视频存储器32以及差值处理器存储器35的形式可以是同步动态随机访问存储器(SDRAM)、闪存存储器、电可擦除可编程只读存储器(EEPROM)等。编码存储器36和候选存储器一般是视频编码器18的本地存储器,且可能包括被分开成“虚拟”存储器的公共存储器设备。
除了图2内说明的组件外,在一些实施例中,视频编码器18可以包括其他组件,诸如纹理编码器以实现一般用于处理静态图像的帧内或帧间压缩,诸如离散余弦变换(DCT)编码。在处理能力被认为对于有效运动估计过于受限情况下,例如除了运动估计外或取代运动估计,可以实现纹理编码。DSP 28可以基于任何给定时间的处理能力通过选择性地调用运动估计器(29)和纹理编码器(未示出)而引导编码例程。
图3说明示例视频块,其形式是可以用视频帧存储在视频存储器32内的宏块42。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计算。而且,象素方式比较的寻址和计算顺序可以以以下方式完成,即使得生成要编码每个宏块的差值以及形成宏块的微块的差值。
在揭示中,“任务”一词指用于将当前视频块与搜寻空间内不同视频块相比的公共计算集合。换而言之,一项任务指当前视频块和搜索空间内不同视频块间的单次比较。例如,任务可能涉及实现多次比较以将多个当前视频块象素与搜索空间内的候选视频块相比。如上所述,这些任务计算的各个子集可以并行地实现以加速编码过程。64次计算可以被视作微块任务(假设微块被定义为8乘8象素阵列),且256次计算可以被视为宏块任务(假设宏块被定义为16乘16象素阵列)。在每个任务期间,计算被累加以为任务定义当前差值(有时被称为差异度量)。
在该揭示中,“迭代”一词指在视频编码期间实现的公共任务集合。与要编码的当前视频块相关联的一完整任务序列是一次迭代。换而言之,迭代是比较集合,其中当前视频块与搜索空间内的先前视频块(或相继视频块)集合相比。每个单个比较是涉及多次计算的任务。因此,搜索空间定义了在迭代中与当前视频块比较的视频块集合。每次迭代的比较被称为任务,且每个任务即每个比较可以涉及多个计算。
在一些情况下,迭代可以包括在搜索空间上定义第一搜索,在搜索空间内标识第一匹配,基于第一匹配在搜索空间子集上定义第二搜索,并在子集内标识第二匹配。例如,较后的迭代搜索可以涉及搜索空间内轻微的偏移以更充分地指出最佳匹配。还可以使用其他搜索技术,诸如菱形搜索技术,其中搜索直到进行到以下情况才停止,即当标识产生最低差值的宏块的象素位置位于菱形搜索参数中心时。另外,也可以使用其他技术诸如圆形索技术,其中标识产生最低差值的宏块的象素位置在半径(R)定义的搜索参数中心处。半径(R)的圆可以比菱形搜索参数定义更大、更多包含的搜索参数。
如果在迭代期间使用菱形搜索技术或圆形搜索技术,还可以使用初始化技术用于加速标识在菱形搜索参数或圆形定义的搜索参数中心处产生最低差值的宏块的过程。例如,还可以使用利用空间冗余现象的初始化技术。空间冗余一般预测给定视频块的视频运动可能类似于空间相邻于给定视频块的另一视频块的视频运动。初始化技术还可以方便地利用该现象以初始化搜索空间内一位置处的运动估计,该处有很高的概率包括可以用于有效视频编码的视频块。
尤其是,初始化技术还可以利用为在要编码的视频块空间临近处的视频块计算的运动向量,以标识搜索空间内的位置,其中可以初始化运动估计例程,即搜索空间内运动估计例程开始的象素位置。例如,平均象素位置、中值象素位置或使用加权函数计算的象素位置可以基于先前为在当前要编码的视频块空间临近处的视频块确定的运动向量而经计算。还可以使用其他线性或非线性函数。在任何情况下,通过该方式初始化运动估计例程,视频编码可以通过在迭代中减少在搜索空间内定义视频块需要的任务的次数,在菱形搜索或圆形搜索情况中被加速,该定位的视频块是被编码的视频块的可接受匹配。
如果期望,用于生成差值的计算可以涉及SAD技术、SSD技术或其他比较。SAD技术涉及实现要编码的当前宏块象素值以及当前宏块与其比较的先前宏块象素值之间的绝对差值计算的任务。这些绝对差值计算的结果被求和即经累加以定义指示当前宏块和先前宏块间的差异的差值,当前宏块与先前宏块进行比较。对于8乘8象素图像模块,可以计算64个差值并求和,对于16乘16象素宏块,可以计算256个差值并进行求和。通过定址当前视频块并按特定顺序实现计算,可以计算256个差值,但还可以在四个分离的集合内求和,以为每个微块生成差值。四个集合的所有计算的总和然后可定义该宏块的差值。
较低的差值一般表明与当前宏块比较的宏块是更佳的匹配,且因此在运动估计编码中是优于产生较高差值的候选宏块的候选,较高差值意味着增加的失真。在一些情况下,当累加的差值超过定义阀值时可以中止计算。在该情况下,附加的计算可能不是必要的,因为与当前视频块比较的宏块对于有效用于运动估计编码将是不可接受的。
SSD技术还涉及实现要编码的当前宏块象素值以及当前宏块与之比较的先前宏块象素值之间的差值计算。然而,在SSD技术中,绝对差值计算的结果被平方,然后平方值被求和,即累加,以定义指示当前宏块和与之比较的先前宏块间差异的差值。或者还可以实现其他比较技术,诸如平均平方误差(MSE)、归一化互相关函数(NCCF)或其他合适的比较算法。
在一些情况下,可以在确定例如给定任务不会产生比先前任务更佳的匹配或标识给定任务产生可接受匹配之后提早中止各个任务和迭代。例如,可以使用一些技术以标识何时给定任务的附加计算不是必要的。尤其是,当第二任务计算子集一起产生大于与先前计算的第一任务相关的差值时,一般已知第二任务的附加计算不是必要的,因为第二任务的完成不会导致低于第一任务的差值。在该情况下,第二任务可以在不牺牲编码性能情况下被中止,且可以更快地开始执行第三任务。
中止技术还可以在迭代层被执行,或在任务层和迭代层一起被执行。在一示例中,迭代阀值定义可接受值,即足以进行有效视频编码。在该情况下,如果实现一任务,它在搜索空间内标识匹配当前要编码的视频块的候选视频块,后者以被认为由迭代阀值可接受的方式与前者匹配,且下一要编码的视频块可以与搜索空间相比。在该情况下,可以避免多次不必要的任务执行。
在此的许多技术可以在将要编码的视频块与先前视频帧的先前视频块比较的环境下描述。然而可以理解可以在将要编码的视频块与相继视频帧的候选视频块相比时使用相同技术。在一些情况下,可以使用双向运动估计,其中要编码的视频块与一个或多个先前视频帧的各个候选视频块和相继视频帧的各个视频块相比。简而言之,无论何时要编码的视频块与不同视频块相比时,诸如先前视频帧的候选视频块或相继视频帧的候选视频块,可以使用在此描述的许多技术。换而言之,搜索空间可以在该种不同的实现内被加载入各种不同候选。
图5是在被安排为候选宏块阵列的示例搜索空间52内要编码的当前宏块50的概念说明。特别是,如图5内示出,搜索空间52包括候选宏块的三行54A-54C以及三列56A-56C用于与要编码的宏块50比较。因此,在图5的示例中,搜索空间52包括九个16乘16象素宏块的阵列,形成了48乘48象素区域。要编码的当前宏块50使用差值处理器34与搜索空间52内的宏块比较。
为了减少视频存储器32和候选存储器38之间的存储器转移以及相关的处理开销,一旦搜索空间52在开始时被加载,如需要,相继的搜索空间更新可以在逐列基础上进行。例如,为了对给定帧的相继宏块编码,存储器控制单元39可以简单地替换搜索空间52的左手列56A内的候选宏块,而不是重新载入整个搜索空间52。
为了完成按列更新,并允许并行运动估计计算在多个象素上同时实现,存储器控制单元39用于执行地址映射方案以在维持在视频存储器32、编码存储器36和候选存储器38内的存储器地址间转换。编码存储器36和候选存储器38的数据更新通过总线33发生在视频存储器32之间,总线33直接访问视频存储器。为了初始化并控制在总线33上的该转移,DSP 28通过DME端口用作总线主控。
图6A是说明宏块象素索引图。如图6A内示出,宏块象素索引可以被分成四个微块(A,B,C,D)。宏块象素索引是16乘16,其中每个微块A,B,C,D是8乘8。整个宏块象素索引从左上角象素YO扩展到右下角象素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的象素索引访问视频存储器32,存储控制单元39需要将象素索引转换成视频存储器内的物理地址。
图6C是说明编码存储器34内的视频数据安排图。如图6C内示出,存储在编码存储器36内的宏块象素数据被安排在每行8个象素的32行内,即每行64比特。根据该揭示,编码存储器36内的存储器安排方便了差值处理器36同时对多个象素的绝对差值(AD)计算。特别是,图6C的示例是允许每次8个象素的并行AD计算的编码存储器36的物理安排。而且,当微块被定义为有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和候选存储器38为要编码的每个宏块的比较而安排,即为了方便每次8个象素的绝对差值并行计算。另外,编码存储器36和候选存储器38被安排为在宏块差值计算期间对微块差值计算。
而且,除了允许对多个象素的并行AD计算外,候选存储器38被安排以允许在搜索空间内任何象素处开始的对宏块的寻址。而且,如将要描述的,候选存储器38的结构可以允许递增列更新,即每次加载宏块的一列,而不是为要编码的每个新宏块重新加载整个搜索空间。该种加载技术可以通过避免对冗余的存储器加负并减少总线33的使用而减少功率。同样,存储器控制单元39用于将搜索空间象素索引转换成视频存储器32内的物理存储器地址,然后将来自视频存储器的存储器地址转换成候选存储器38内对应的物理存储器地址。
图8A是说明宏块列象素索引图。对于两个相邻要编码的宏块,可应用搜索空间间差异只是宏块列中的一列。作为结果,只需要更新一个宏块列。候选存储器38被安排以利用该方面,从而减少视频存储器32和候选存储器间的转移需要的数据带宽。如图8A示出,由DSP 28维持的宏块列象素索引可以安排在16个象素的行内,且可为搜索空间内的单列长度扩展,即48行。因此,图8A内示出的宏块象素索引对应三个宏块的列,且因此是图7A的搜索空间象素索引的三分之一。
宏块列象素索引的视频存储器32内的物理存储器安排还不同于整个搜索空间象素索引的存储器安排。图8B是说明视频存储器32内宏块列安排图。对于宏块列,视频存储器32提供192行每行4个象素。因此,视频存储器32用32比特宽度安排宏块列。一旦搜索空间为初始宏块被载入候选存储器38,搜索相继、相邻要编码宏块可以通过简单地载入新列完成。
在列更新过程中,存储器控制单元39用新宏块列替换先前左手侧的宏块列。新载入宏块列然后被指定为当前右手侧宏块列。另外,先前中间宏块列被指定为新左手侧宏块列,而先前右手侧宏块列被指定为新中间宏块列。
因此,搜索空间可以被视为在更大的视频帧内被偏移到右边以去除先前左手侧宏块列,从而为新右手侧宏块列留出空间。接着该列更新操作,候选存储器38内的搜索空间就适用于在编码存储器36内考虑下一宏块。
通过将DSP 28提供的象素索引转换到视频存储器32以及存储器控制单元39内的候选存储器38内的物理地址,不需要DSP跟踪列偏移操作。结果是,DSP 28只需要为新右手侧宏块列提供象素索引。
图9是说明形成存储器控制单元39部分的示例电路框图,用于为候选存储器38内的存储器组将象素索引转换成基地址。如图9内示出,存储器控制单元39包括用于获得该存储器地址转换的合适逻辑电路。存储器控制单元39跟踪当前迭代,诸如编码存储器36的更新,候选存储器38的更新或全加载或搜索任务,其中差值处理器34为编码存储器和候选存储器的内容实现并行AD计算。如将描述的,存储器控制单元39还可以在搜索期间跟踪块边界,管理候选存储器38内的宏块列偏移,并实现象素到地址转换。
一般为了搜索,存储器控制单元39根据以下等式在候选存储器38内确定对应的象素开始组,即八个象素行内的位置:
开始象素组=模8(象素索引)
(1)
另外,存储器控制单元39根据以下等式确定开始象素行:
开始象素行=int(象素索引/8)
(2)
因此,根据模函数(1),开始组是象素索引除8的余数。根据整除函数(2),开始行是可除象素索引的最高整数。
给出上述等式(1)和(2),相应组x的开始即“基”地址可以表示为:
组x基地址=开始象素行,如果x大于等于开始象素组
(3)
开始象素行+1,如果x小于开始象素组
如图9示出,存储器控制单元39内的比较器58将象素索引指示的行(象素索引模8)与组索引相比,且如果象素索引x小于组索引,则生成为1的输出,如果象素索引大于或等于组索引,则输出为零。存储器控制单元39内的加法器60然后向象素索引[int(象素索引/8)]指明的组加入比较器58的输出(1或0)以生成组x的基地址。
图10是说明视频块计数器电路62框图,用于通过形成宏块的一系列微块(A,B,C,D)跟踪搜索过程,如图3示出。一旦确定了相应组的基地址,则存储器控制单元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之后,累加器为模块C和模块D的计算重新加载基地址+1。
如图11示出,映射电路68可以包括加法器70,它在完成模块B计算时(block_b_done)向基地址(mb_base_addr)加1,从而在候选存储器38内生成列基地址(col_base_addr)。如果或是完成模块B或是开始搜索任务(task_start)时,OR门72将逻辑高输出传递到多路复用器74。
响应于来自OR门72的逻辑高输出,多路复用器74将列基地址输出到累加器76。响应于来自OR门72的逻辑低输出,多路复用器将加法器78输出传递到累加器76。加法器78将来自累加器76的当前候选存储器地址(logical_cram_addr)加入值6。如果没有搜索任务开始或模块B完成,则多路复用器74和累加器78将当前候选存储器地址超前六行,即8个组上的48个象素。这样,存储器控制单元39循环通过候选存储器38内的8个组的每行用于每次向差值处理器34呈现一个微块行,这受到模块B完成或开始新搜索任务的限制。相应地,计算以一行一行的方式进行,直到生成每个微块的差值,且计算以微块接着微块的方式进行直到计算了一宏块的差值。过程然后在其他行和微块中按行和按微块的方式对搜索空间的下一宏块进行,如此类推。
图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(addr4/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确定两个条件:候选存储器列基地址的模3输出(col_bas_addr模3)以及宏块列偏移状态,即是否请求完全更新或列更新。
如图12示出,映射电路80包括一模3操作器82,它生成当前基列地址除2的模3(cram_addr[8:1]),并向临时存储设备84(有时被称为双稳态触发器)应用模3输出。模3输出对于列基地址总是0、1或2。例如,第一列的列基地址(Y0)会产生0,第二列的列基地址(Y16)会生成1,且第三列的列基地址会生成2。
当开始新搜索任务(task_start)或模块B的计算完成时(block_b_done)时,OR门86使得双稳态触发器84输出来自模3操作器82的模3输出以应用到多路复用器88。模3输出指明列基地址当前驻留的列,即第一列(0),第二列(1)或第三列(2)。
作为响应,多路复用器88将多路复用器90、92、94输出的一个输出传递到加法器96。多路复用器90、92、94的输出由2比特计数器98的输出确定。计数器98响应于接收到的full_update信号用值0重设,指明将重新载入候选存储器38内的整个搜索空间。响应于在使能输入处的col_update信号,计数器98计数递增1(或可以对于其他实现进行向下计数)。
Col_update信号指明候选存储器38内的搜索空间可由加载一个新列而递增地更新。计数器98可以为每个列更新而递增,或可以为两个列更新递增,并接着第三个列更新返回值0。例如,计数器98可以从0递增到1,到2,回到0,到1,到2,到0,到1,到2等。在计数器等于0×11时,计数器98还可以被重设,该重设可以不考虑使能状态而发生。
在任何情况下,计数器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,它将信号提供给OR门97。因此,计数器98的重设可以响应于或是full_update信号或是来自比较器95的信号而发生,两者都是OR门97的输入。
多路复用器90、92、94的操作反应了先前中间列到左边列的偏移以及先前右边列到中间列的偏移,即在每个情况下左移两行(+2)。需要注意的是宏块列内的每行用候选存储器38内的两行表示(见图7C)。该操作还反应了先前左列偏移到右列,即左移四行(-4))。在三次列更新之后,地址再次匹配物理存储器,因此多路复用器90、92和94的输出值分别回到0、0和0。
多路复用器90、92和94的输出反应了序列中的下一偏移。在第二偏移后,原始中间列已经被偏移到左边列且现在被偏移到右边列,原始右边列现在被偏移到左边列且原始左边列现在被偏移到中间列。在该情况下,当前左边列是从其原先右列偏移+4行,当前中间列是从其原先左列偏移-2行,且当前右列是从其原先中间列偏移-2行。
如果双稳态触发器84的输出为零,第一列多路复用器90的输出通过多路复用器88被传递。如果双稳态触发器84输出为1或2,则第二或第三列多路复用器92、94的输出分别地通过多路复用器88。在每种情况下,多路复用器88的输出被施加到加法器96,它将到逻辑候选存储器地址(logical_cram_addr)的输出相加。
这样,加法器96将逻辑候选存储器地址偏移相当于列更新偏移状态的量以为宏块获得物理候选存储器地址。如果逻辑地址对应于偏移操作后的右列,但物理地址实际对应于中间列,则映射电路80提供必要的地址转换。存储器控制单元39然后使差值处理器34将候选存储器38内合适定址的数据与编码存储器36内对应的数据相比较,例如对8个输出组进行并行AD计算。
图13是更详细说明差值处理器34的框图。特别是,图13描述由编码存储器36和候选存储器38安排提供的同时生成8个组输出的并行计算能力。如图13内示出,差值处理器可以包括多个绝对差值(AD)计算信道100A-100H(一起是100)。每个AD计算信道100从编码存储器36为要编码的宏块接收相应的组输出(a0-a7)。
对于比较和绝对差值计算,每个AD计算信号100还从候选存储器38接收对应的组输出(b0-b7)。AD结果由一组8比特加法器102A-102D、一对9比特加法器104A、104B以及一10比特加法器106以级联形式求和。如果可以使用更大的比特值用于表示象素,则可以实现更大的加法器。在任何情况下,加法器106的输出被应用于加法器108。加法器108通过双稳态触发器对其本身输出以及加法器106的输出求和以生成绝对差值(SAD)结果之和。每八个输入的集合(a0-a7)可以对应微块的八象素行。例如,可以为微块A的每行(图6A)将输入提供给差值处理器,然后是微块B的每行,而后是微块C,而后是微块D。累加可以在为每个宏块计算了差值度量之后被锁存,然后为对应该宏块的差值度量总累加再次被锁存。
而且,在每次相应的锁存之后,确定是否中止任务。换而言之,每次微块行锁存可以提供最优时间以确定是否超过任务阀值。如果是,则因为已知搜索不会产生最低差值,中止该特定任务的附加计算。
图14是说明在此描述的视频编码计数流图。如图14中示出,在搜索开始时,即任务开始时(112),DSP 28生成要被编码的宏块象素索引(114)。存储器控制单元39将宏块象素索引转换成视频存储器地址以及编码存储器地址(116),且宏块从视频存储器32通过总线33加载到编码存储器36以及存储器控制单元(118)。DSP 28还为搜索空间生成象素索引(120)。在将搜索空间象素索引转换成视频存储器地址和候选存储器地址之后(122),存储器控制单元39用搜索空间宏块加载候选存储器38。
差值处理器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加载到候选存储器38之后(142),差值处理器34实现在候选存储器38和编码存储器36的8个输出组上的并行AD计算(144),并在多次并行AD计算之后生成最佳SAD结果(或可接受SAD结果)。
图16是说明候选存储器内存储组的基地址映射流图。图16示出的过程对应图9内的电路操作,虽然可以使用电路的其他变体。为了从象素索引获得基地址,存储器控制单元39对象素索引计算模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对列基地址应用模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可以累加宏块的当前差值,且可以输出每个微块的差值。第一微块的差值可以是直到该点的差值累加。第二微块的差值可以对应到该点的总累加减去第一微块的差值。第三微块的差值可以对应到该点的总累加减去第一和第二微块的差值,如此类推。
视频块计数器电路62还确定何时累加了最后微块的计算(197的是分支)。在该点,差值处理器34输出宏块的差值(198),这是直到该点的AD计算的总累加。DSP 28或可能的DSPO接口单元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)、FLASH存储器等。
程序代码可以以计算机可读指令形式存储在存储器内。在该情况下,诸如DSP的处理器可以执行存储在存储器内的指令以执行上述的一个或多个技术。在一些情况下,这些技术可以由DSP执行,它调用各种硬件组件,诸如运动估计器以加速编码过程。在其他情况下,视频编码器可以被实现为微处理器、一个或多个应用专用集成电路(ASIC)、一个或多个场可编程门阵列(FPGA)或一些其他硬件软件组合。这些和其他实施例在以下权利要求书的范围内。

Claims (31)

1.一方法,其特征在于包括:
并行地进行差值计算,所述差值是要编码的视频块的多个象素相对于搜索空间内一个或多个候选视频块象素的差异;以及
生成差值,所述差值至少部分基于计算的差值计算定义要编码的视频块和候选视频块间的类似程度。
2.如权利要求1所述的方法,其特征在于还包括从候选存储器的多个输出组(bank)中获取每个候选视频块内的多个象素。
3.如权利要求2所述的方法,其特征在于还包括:
接收标识一个候选视频块的象素索引;
将象素索引转换成候选存储器内的物理地址;以及
基于物理地址从多个输出组中检取候选视频块内的多个象素。
4.如权利要求3所述的方法,其特征在于还包括将象素索引转换成候选存储器内的逻辑地址,并将逻辑地址转换成候选存储器内的物理地址。
5.如权利要求3所述的方法,其特征在于要编码的视频块和每个候选视频块定义符合MPEG-4标准的象素的16乘16宏块。
6.如权利要求1所述的方法,其特征在于还包括并行地计算以下两者间的差值,即少于要编码的视频块行内所有象素以及搜索空间的候选视频块象素间差值。
7.如权利要求1所述的方法,其特征在于所述搜索空间定义了按列安排的多个候选视频块阵列。
8.如权利要求7所述的方法,其特征在于还包括:
用搜索空间中的候选视频块加载候选存储器;
并行地计算要编码的第一视频块内的多个象素以及候选存储器内的候选视频块间的差值计算;
重新用候选视频块加载候选存储器的一个子集,所述候选视频块对应于搜索空间内的一个新列;以及
并行地计算要被编码的第二视频块内多个象素以及候选存储器内候选视频块间的差值。
9.如权利要求1所述的方法,其特征在于还包括根据MPEG标准对要被编码的视频块进行编码。
10.如权利要求1所述的方法,其特征在于还包括生成差值,所述差值至少部分基于计算的差值计算定义了要被编码的视频块子集和候选视频块子集间的类似程度。
11.一种设备,其特征在于包括:
差值处理器,用于并行地计算差值,所述差值是要被编码的视频块的多个象素相对搜索空间内的一个或多个候选视频块的象素间的差值;以及
视频编码控制器,所述控制器生成差值,所述差值至少部分基于计算的差值计算定义了要被编码的视频块和候选视频块间的类似程度,所述控制器标识产生可接受差值的特定候选,并使用特定候选的运动向量对要编码的视频块编码。
12.如权利要求11所述的设备,其特征在于还包括候选存储器,所述存储器存储候选视频块,所述差值处理器从候选存储器内的多个输出组检取每个候选视频块内的多个象素。
13.如权利要求12所述的设备,其特征在于所述视频编码控制器生成标识一个候选视频块的象素索引,所述设备进一步包括:
存储器控制单元,以将象素索引转换成候选存储器内的物理地址,所述差值处理器基于物理地址从多个输出组检取候选视频块内的多个象素。
14.如权利要求13所述的设备,其特征在于所述存储器控制单元将象素索引转换成候选存储器内的逻辑地址,并将逻辑地址转换成候选存储器内的物理地址。
15.如权利要求13所述的设备,其特征在于要编码的视频块以及每个候选视频块定义符合MPEG-4标准的16乘16象素阵列。
16.如权利要求11所述的设备,其特征在于所述差值处理器并行计算差值,所述差值是小于要编码的视频块行内所有象素和搜索空间内候选视频块象素间的差值。
17.如权利要求11所述的设备,其特征在于所述搜索空间定义了按列安排的多个候选视频块阵列。
18.如权利要求17所述的设备,其特征在于还包括存储器控制单元,该控制单元用搜索空间内的候选视频块加载候选存储器用于并行地计算差值计算。
19.如权利要求11所述的设备,其特征在于所述视频编码控制器根据MPEG标准的一个对要编码的视频块编码。
20.如权利要求11所述的设备,其特征在于计算差值计算包括计算绝对差值计算。
21.一设备,其特征在于:
并行地计算差值的装置,所述差值是要编码的视频块的多个象素相对于搜索空间内一个或多个候选视频块的象素的差值;
生成差值的装置,所述差值至少部分基于计算的差值计算定义了要被编码的视频块和候选视频块间的类似程度;
标识产生可接受差值的特定候选的装置;以及
使用特定候选的运动向量对要编码的视频块编码的装置。
22.如权利要求21所述的设备,其特征在于还包括用于从候选存储器内多个输出组检取每个候选视频块内多个象素的装置。
23.如权利要求22所述的设备,其特征在于还包括:
用于接收标识一个候选视频块的象素索引的装置;
将象素索引转换成候选存储器内物理地址的装置;以及
基于物理地址从多个输出组检取候选视频块内的多个象素的装置。
24.如权利要求23所述的设备,其特征在于还包括:
将象素索引转换成候选存储器内的逻辑地址的装置;以及
将逻辑地址转换成候选存储器内的物理地址的装置。
25.如权利要求23所述的设备,其特征在于要编码的视频块和每个候选视频块定义了符合MPEG-4标准的一个16乘16象素宏块阵列。
26.如权利要求21所述的设备,其特征在于还包括用于并行计算少于要编码的视频块行内所有象素和搜索空间内候选视频块间的差值。
27.如权利要求21所述的设备,其特征在于所述搜索空间定义了按列安排的多个候选视频块的一个阵列。
28.如权利要求27所述的设备,其特征在于还包括:
用于将搜索空间内的候选视频块加载候选存储器的装置;
用于并行地计算要被编码的第一视频块内的多个象素以及候选存储器内的候选视频块间的差值计算的装置;
用所述候选视频块重新加载候选存储器子集的装置,所述候选视频块对应于搜索空间内的新列;以及
并行地计算要被编码的第二视频块内多个象素以及候选存储器内候选视频块间的差值的装置。
29.如权利要求21所述的设备,其特征在于还包括根据MPEG标准的一个对要被编码的视频块进行编码的装置。
30.如权利要求21所述的设备,其特征在于还包括生成差值的装置,所述差值至少部分基于计算的差值计算定义了要被编码的视频块子集和候选视频块子集间的类似程度。
31.一无线通信设备,其特征在于包括:
视频捕获设备,以捕获包括视频块的视频帧;
视频编码器,并行地计算差值,所述差值是要编码的视频块的多个象素相对搜索空间内的一个或多个候选视频块的象素间的差值;并生成差值,所述差值至少部分基于计算的差值计算定义了要被编码的视频块和候选视频块间的类似程度,标识产生可接受差值的特定候选,并使用特定候选的运动向量对要编码的视频块编码;以及
无线发射机,将编码后的视频块发送到另一设备。
CNA038193302A 2002-06-18 2003-06-18 视频编码和解码技术 Pending CN1675933A (zh)

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,768 2003-02-21
US10/371,768 US20040008779A1 (en) 2002-06-18 2003-02-21 Techniques for video encoding and decoding

Publications (1)

Publication Number Publication Date
CN1675933A true CN1675933A (zh) 2005-09-28

Family

ID=29739644

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA038193302A Pending CN1675933A (zh) 2002-06-18 2003-06-18 视频编码和解码技术

Country Status (7)

Country Link
US (1) US20040008779A1 (zh)
EP (1) EP1514426A2 (zh)
JP (1) JP2005530420A (zh)
KR (1) KR20050012815A (zh)
CN (1) CN1675933A (zh)
AU (1) AU2003251575A1 (zh)
WO (1) WO2003107679A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081778A (zh) * 2012-01-31 2014-10-01 高通股份有限公司 并行运动估计范围大小的隐含推导

Families Citing this family (17)

* Cited by examiner, † Cited by third party
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
US7940844B2 (en) * 2002-06-18 2011-05-10 Qualcomm Incorporated Video encoding and decoding techniques
US9171577B1 (en) * 2003-04-25 2015-10-27 Gopro, Inc. Encoding and decoding selectively retrievable representations of video content
US7386651B2 (en) * 2003-07-03 2008-06-10 Broadcom Corporation System, method, and apparatus for efficiently storing macroblocks
US20060146933A1 (en) * 2004-12-30 2006-07-06 Paul Lu Method and system for video motion processing in a microprocessor
US20060256864A1 (en) * 2005-05-13 2006-11-16 Mediatek Incorporation Motion estimation methods and systems in video encoding for battery-powered appliances
KR100723861B1 (ko) 2005-11-04 2007-05-31 한국전자통신연구원 고속 움직임 예측을 위한 고속 모드 검색 장치 및 방법
US8014597B1 (en) 2006-03-22 2011-09-06 Woodman Labs Method for efficient compression and decoding of single sensor color image data
JP4793070B2 (ja) * 2006-04-12 2011-10-12 ソニー株式会社 動きベクトル探索方法及び装置
JP4182442B2 (ja) 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
CN100471275C (zh) * 2006-09-08 2009-03-18 清华大学 用于h.264/avc编码器的运动估计方法
US8675730B2 (en) * 2009-07-13 2014-03-18 Nvidia Corporation Macroblock grouping in a destination video frame to improve video reconstruction performance
CN101778288B (zh) * 2010-03-02 2012-04-04 青岛海信信芯科技有限公司 数字视频解码方法和装置
CN104717510B (zh) * 2013-12-13 2018-08-17 华为技术有限公司 用于图像处理的方法和装置
CN108369751B (zh) * 2015-12-14 2023-09-08 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、编码装置、解码装置
KR20180047763A (ko) * 2016-11-01 2018-05-10 삼성전자주식회사 처리 장치들 및 그 제어 방법들
US10747659B2 (en) * 2018-02-06 2020-08-18 Western Digital Technologies, Inc. Flash fast program mode for high definition video recording and high resolution camera burst mode recording

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5598514A (en) * 1993-08-09 1997-01-28 C-Cube Microsystems Structure and method for a multistandard video encoder/decoder
KR100580158B1 (ko) * 1999-06-12 2006-05-15 삼성전자주식회사 화상 패킷 전송을 위한 무선통신 시스템
US7034849B1 (en) * 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081778A (zh) * 2012-01-31 2014-10-01 高通股份有限公司 并行运动估计范围大小的隐含推导
CN104081778B (zh) * 2012-01-31 2017-10-03 高通股份有限公司 并行运动估计范围大小的隐含推导

Also Published As

Publication number Publication date
EP1514426A2 (en) 2005-03-16
WO2003107679A3 (en) 2004-04-01
US20040008779A1 (en) 2004-01-15
WO2003107679A2 (en) 2003-12-24
AU2003251575A8 (en) 2003-12-31
JP2005530420A (ja) 2005-10-06
KR20050012815A (ko) 2005-02-02
AU2003251575A1 (en) 2003-12-31

Similar Documents

Publication Publication Date Title
CN1663278A (zh) 视频编码和解码技术
CN1675933A (zh) 视频编码和解码技术
CN1767644A (zh) 用于视频编码的非整数像素共享
CN1290342C (zh) 可执行区块比对移动补偿与全域移动补偿的装置与方法
CN1209933A (zh) 数字图像编码解码方法及使用它的数字图像编码解码装置
CN1201332A (zh) 活动图象编码译码装置和方法以及活动图象编码记录媒体
CN1933601A (zh) 用于无损视频编码和解码的方法及设备
CN103327325A (zh) 基于hevc标准的帧内预测模式快速自适应选择方法
CN1495674A (zh) 运动向量补偿的内插装置和方法
CN1642285A (zh) 图像编码方法和装置以及图像编码程序
CN1144469C (zh) 编码和解码图像中的像素的运动向量的方法
CN1825964A (zh) 片上处理视频数据的方法和系统
CN1666529A (zh) 计算受限的视频编码
CN1186943C (zh) 块间预测编码/译码的装置和方法
CN1813478A (zh) 用于手持设备的编码的方法
WO2020180449A1 (en) Method and device for picture encoding and decoding
CN1791220A (zh) 视频解码器、以及相关联的操作方法
CN109672895A (zh) 一种hevc帧内预测方法及系统
CN1295933C (zh) 数据处理方法
CN1399472A (zh) 多信道图像编码装置及其编码方法
CN1684519A (zh) 运动图像编码装置及方法、运动图像译码装置及方法
CN1299510C (zh) 压缩运动图像信息的方法和系统
CN101035284A (zh) 一种流式视频像素域转码的方法
CN1741612A (zh) 一种用于视频图像编码过程中的量化方法
CN1871859A (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: 1080656

Country of ref document: HK

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1080656

Country of ref document: HK