CN102547280B - 用于提高图像或视频解码中的操作效率的方法 - Google Patents

用于提高图像或视频解码中的操作效率的方法 Download PDF

Info

Publication number
CN102547280B
CN102547280B CN201110441018.1A CN201110441018A CN102547280B CN 102547280 B CN102547280 B CN 102547280B CN 201110441018 A CN201110441018 A CN 201110441018A CN 102547280 B CN102547280 B CN 102547280B
Authority
CN
China
Prior art keywords
bit
symbol
decoding
picture
ups
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.)
Active
Application number
CN201110441018.1A
Other languages
English (en)
Other versions
CN102547280A (zh
Inventor
吴勇军
S.萨赫瓦尼
D.特迪纳
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102547280A publication Critical patent/CN102547280A/zh
Application granted granted Critical
Publication of CN102547280B publication Critical patent/CN102547280B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/127Prioritisation of hardware or computational resources
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/46Embedding additional information in the video signal during the compression process

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

图像或视频解码中的高效操作。例如,诸如图像或视频解码器之类的工具接收和解码比特流中用于图片的已编码数据。作为解码的一部分,该工具适配多符号查找表以用于解码符号,然后使用多符号查找表来将符号解码,产生完全正确的结果。该工具还可以执行选择性地截短的逆频率变换。对于给定块而言,该工具识别用于块的非零系数中的上水平和垂直频率,并且基于上频率值,在不损害解码质量的情况下对用于块的变换系数选择性地应用简化逆频率变换。通过使用比特流中的重新开始标记,该工具可以将图片的多个块组织为分区。该工具使用多个处理核心逐个分区地并行解码至少一些分区。

Description

用于提高图像或视频解码中的操作效率的方法
背景技术
工程师使用压缩(也称为信源编码)以降低数字视频的比特率。压缩通过将信息转换成较低比特率的形式来降低存储和传送视频信息的成本。解压缩(也称为解码)从压缩形式重构原始信息的版本。“编解码器”是编码器/解码器系统。 
压缩可以是无损耗的,其中,视频的质量不受损害,但比特率的降低受到输入视频数据的固有可变量(有时称为源熵)的限制。或者,压缩可能是有损的,其中,视频的质量受损害,并且不能完全地恢复所损失的质量,但是可实现的比特率的降低更加显著。常常将有损压缩与无损压缩相结合地使用—有损压缩确定信息的近似,并且无损压缩用来表示该近似。 
通常,视频压缩技术包括“图片内(intra-picture)”压缩和“图片间(inter-picture)”压缩。图片内压缩技术参考图片内的信息来压缩图片,图片间压缩技术参考先前和/或随后的一个或多个图片(常常称为参考或锚定图片)来压缩图片。 
对于图片内压缩而言,例如,编码器将图片分成8×8的采样块,其中,采样是表示用于图片的小的基本像域(elementary region)的明亮强度(或色彩分量的强度)的数字,并且图片的采样被组织成阵列或平面。编码器对个别的块应用频率变换。频率变换将一块采样转换成一块变换系数。编码器将变换系数量化,这可以导致有损压缩。对于无损压缩而言,编码器对量化变换系数进行熵编码。 
图片间压缩技术常常通过利用视频序列中的时间冗余使用运动估计和运动补偿来降低比特率。运动估计是用于估计图片之间的运动的过程。例如,对于采样块或当前图片的其它单元而言,编码器尝试在另一图片中的搜索区域中找到相同大小的匹配,另一图片即参考图片。在搜索区域内,编码器将当前单元与各种候选相比较以便找到作为良好匹配的候选。当编码器已找到精确或“足够接近”的匹配时,编码器将当前与候选单元之间的位置变化参数化为运动数据(诸如运动矢量)。通常,运动补偿是使用运动数据从参考图片重构图片的过程。通常,编码器还计算原始当前单元与其运动补偿预测之间的逐个采样的差以确定残余(residual)(也称为预测残余或误差信号)。编码器然后对该残余应用频率变换,作为结果产生变换系数。编码器将变换系数量化并对量化的变换系数进行熵编码。 
如果使用已图片内压缩的图片或运动预测的图片作为用于后续运动补偿的参考图片,则编码器重构该图片。解码器还在解码期间重构图片,并且其使用一些重构图片作为运动补偿中的参考图片。例如,对于图片内压缩的图片的一块采样而言,解码器重构一块量化变换系数。解码器和编码器执行逆量化和逆频率变换以产生原始采样块的重构版本。 
或者,对于使用图片间预测编码的块而言,解码器或编码器从用于块的预测残余重构该块。解码器将表示预测残余的熵编码信息解码。解码器/编码器对数据进行逆量化和逆频率变换,得到重构残余。在单独的运动补偿路径中,解码器/编码器使用用于从参考图片的移位的运动矢量信息来计算预测块。解码器/编码器然后将预测块与重构残余组合以形成重构块。 
在过去的二十年内,已经采用了各种视频编解码标准,包括H.261、H.262(MPEG-2)和H.263标准及MPEG-1和MPEG-4标准。最近,已经采用H.264标准(有时称为14496-10或AVC标准)和VC-1标准。对于另外的细节,参见各标准的代表性版本。视频编解码标准通常定义用于编码视频比特流的语法的选项,详述在编码和解码中使用特定特征时的用于视频序列的比特流中的参数。在许多情况下,视频编解码标准还提供关于解码器应执行以在解码时实现正确结果的解码操作的细节。然而,操作的等级低级实现细节常常是未指定的,或者解码器能够改变某些实现细节以改善性能,只要仍能实现正确的解码结果。 
图像和视频解码是计算密集的。考虑在解码期间执行多少次操作,诸如熵解码和逆频率变换之类的任务可能要求密集的计算。此计算成本在各种场景中可能是有问题的,诸如高质量、高比特率视频(例如,压缩的高清晰度视频)的解码。特别地,根据诸如H.264和VC-1之类更新标准的解码任务可能是计算密集的且消耗显著的存储器资源。 
发明内容
总而言之,本详细说明提出了用于改善图像或视频解码中的操作效率的技术和工具。本文所述的一些技术和工具降低了图像或视频解码的计算成本,而不损害解码后图像或视频内容的质量。本文所述的其它技术和工具帮助解码器在可用计算资源之间分配解码任务。用更高效的解码,图像或视频解码器能够加速解码,使用其可用计算资源来解码更高比特率/更高质量的内容,或者将其节省的计算资源用于其它任务。 
根据本文所述的技术和工具的一个方面,诸如图像或视频解码器之类的工具接收比特流中图片的已编码数据并解码用于该图片的已编码数据。作为解码的一部分,该工具适配多符号查找表以用于解码用于图片的已编码数据中的符号,其中,在已编码数据中用可变长度代码(VLC)或固定长度代码(FLC)来表示每个符号。已解码符号可以表示用于变换系数的游程-等级对信息、位平面值、用于变换系数的等级信息、用于变换系数的游程信息或已编码数据中的另一类型的语法元素。该工具然后使用多符号查找表来解码符号。通过使用多符号查找表,该工具在产生与常规解码相同的已解码符号的同时降低图像或视频解码的计算成本。 
例如,多符号查找表具有分别用x比特值的可能组合编索引的多达2 x 个条目。多符号查找表的至少一个条目将在用于该条目的x比特值中处于前列(lead)的一系列VLC关联到一系列的多个符号,使得该系列的VLC消耗来自x比特值的尽可能多的比特,但是留下指示部分符号(partial symbol)的x比特值的任何比特没有定义。在一些实现中,对于多符号查找表的至少一个其它条目而言,该其它条目表示部分符号。 
通常,根据用来对用于每个图片、每组图片、每个序列或的某个其它组织单位的一种数据或语法元素的符号进行编码的VLC表来适配多符号查找表。可以逐个图片地提供新的VLC表,或者可以使用比特流中的语法元素或在解码期间跟踪的上下文信息来选择多个可用VLC表中的一个。例如,工具重构用于图片的VLC表,并且然后使用重构VLC表格来构建多符号查找表。或者,工具将指示多个VLC表中的一个的语法元素解码,并且因此指示将使用多个多符号查找表中的哪一个。 
使用多符号查找表解码的细节取决于实现。通常,工具反复地:(a)从缓冲器加载比特流的x个比特;(b)在多符号查找表中搜索加载的x个比特;以及(c)如果加载的x个比特根据多符号查找表中的条目中的一个指示一个或多个完整符号,则确定表示所指示的一个或多个完整符号的y个比特,并从缓冲器刷新(flush)该y个比特(如果y<x,则加载的x个比特中的最后x-y个比特仍在缓冲器中以用于其它符号的解码)。在一些实现中,符号的解码还包括:(d)如果加载的x个比特指示多符号查找表中的部分符号,则从缓冲器加载比特流的z个附加比特以确定由加载的x+z个比特中w个比特指示的完整符号(其中,x < w <=x+z),并从缓冲器刷新w个比特。 
根据本文所述的技术和工具的另一方面,诸如图像或视频解码器之类的工具接收比特流中用于图片的编码数据并解码图片的多个块。对于给定块而言,该工具识别用于该块的非零系数之中的上水平频率(upper horizontal frequency)和上垂直频率(upper vertical frequency)。该工具然后基于上水平频率和上垂直频率来选择多个可用逆频率变换中的一个。(该工具还可以基于上垂直频率在多个可用的解量化模式之间进行选择,其中,一些解量化模式在计算上比其它的简单,然后将所选的解量化模式应用于变换系数。) 该工具将所选的变换应用于该块的至少一些变换系数以重构用于该块的采样值或预测残余值。通过选择性地使用更简单的逆频率变换(以及可选地使用更简单的解量化模式),该工具根据接收到的编码数据的特性降低了图像或视频解码的计算成本,同时产生仍与常规解码的结果匹配的结果。例如,如果接收到的编码数据是高度压缩的且在高频率下包括零值系数,则可以将上水平频率和上垂直频率识别为处于非常低的频率,定义块的较低频率系数的1×1、1×2、2×1、2×2等段。在这种情况下,可以在不损害解码质量的情况下避免逆频率变换高达90%的计算。另一方面,如果接收到的编码数据几乎被无损地压缩且甚至在高频率下包括非零系数,则可以将上水平频率和上垂直频率识别为处于非常高的频率,定义块的5×6、7×7、8×8等段。在这种情况下,可以在不损害解码质量的情况下避免较小比例的计算(诸如10%)。 
通常,多个可用逆频率变换具有不同的大小(例如,8×8、4×4、2×2、1×1、1×8、2×8)。对于给定大小的块而言(例如8×8),可用逆频率变换中的一个是全逆频率变换。此全逆频率变换具有比其它可用变换更高的计算复杂性。然而,其它可用变换的正确选择和应用产生与全逆频率变换相比完全逐比特匹配的结果。 
如何选择逆频率变换的细节取决于实现。例如,作为熵解码和变换系数到逻辑二维排列中的扫描的一部分,工具跟踪非零系数之中的上水平频率和上垂直频率。可以在不要求控制流分支的情况下实现上水平和上垂直频率的这种跟踪。这提供识别将应用哪个逆频率变换的高效方式。 
根据本文所述的技术和工具的另一方面,诸如图像或视频解码器之类的工具接收比特流中用于图片的编码数据。使用比特流中的重新开始标记,该工具将图片的多个块组织为分区(partition)。该工具使用多个处理核心逐个分区地并行地解码至少一些分区,其中,不同的线程被分配给被并行地解码的不同分区。(相应的编码器在编码期间在适当位置处插入重新开始标记。) 编码器还可以进行编码判定,例如以避免与图片内的分区的并行解码一致的编码依赖关系。) 这样,该工具能够在可用的计算资源之间分配用于不同分区的解码任务以更高效地使用那些资源和/或减少其解码图片所花费的时间。 
除促进并行解码之外,重新开始标记可以以其它方式使得解码更加高效。例如,该工具确定每个分区的基本比特量(对于具有规则间隔的分区而言),并使用该基本比特量来跳过比特流中的至少一些已编码数据的扫描。或者,当对用于分区的结尾处的块的变换系数进行熵解码时,该工具可以通过消除用于条件检查的一个或多个分支来简化熵解码。 
通过参考附图进行的以下详细说明,本发明的前述及其它目的、特征和优点将变得更加明显。 
附图说明
图1是其中能够实现一些所描述的实施例的示例性计算环境的图。 
图2是与之相结合能够实现一些所描述的实施例的示例性解码器的图。 
图3是示出示例性实现中的VLC表和相应多符号查找表的图。
图4是示出用于使用自适应地变化的多符号查找表进行熵解码的示例性技术的流程图。 
图5是示出另一示例性实现中的VLC表和相应多符号查找表的图。 
图6是示出另一示例性实现中的VLC表和相应多符号查找表的图。
图7是示出另一示例性实现中的VLC表和相应多符号查找表的图。
图8是示出用于选择性地执行截短(truncated)逆频率变换的示例性技术的流程图。 
图9提供伪代码列表,其示出用于确定用于块的非零系数的总体定义频率的示例性技术。 
图10是示出遵循图9的伪代码列表确定用于示例性块的非零系数的总体定义频率的结果的图。 
图11是示出用于编码的示例性技术的流程图,其中,重新开始标记指示块的分区。 
图12是示出用于解码的示例性技术的流程图,其中,重新开始标记指示块的分区。
具体实施方式
本详细说明提出了用于改善图像或视频解码的效率的技术和工具。该技术和工具能够帮助改善解码效率,从而加速解码或更有效地使用可用计算资源。 
在图像和视频解码中,某些操作由于用来执行操作的频率而具有高计算成本。用本文所述的技术和工具,通过降低与一般解码操作相关联的计算成本和/或通过向可用计算资源高效地分配解码任务,解码效率得以改善。例如,通过使用以下各项中的一个或多个来改善解码:。 
用多符号查找表的熵解码。当针对几个符号隔离地考虑时,熵解码操作可能是简单的。通常,从缓冲器加载编码数据的比特,使用VLC表查找操作或算术解码操作从加载比特解码符号,并从缓冲器刷新表示该符号的比特。然而,当每个图片执行几千次时,熵解码操作具有高的总成本。在许多情况下,熵解码消耗总解码周期(cycle)的40~50%。为了使解码不那么计算密集,作为使用常规VLC表的替代,解码器可以使用所构造的多符号查找表来从常规VLC表反映VLC及其长度。在许多情况下,解码器可以使用一个加载操作、多符号查找表中的一个查找操作和一个刷新操作来解码多个符号。这能够显著地降低熵解码的计算成本(在一些实现中将解码时间减少超过30%)同时产生与常规熵解码的结果完全匹配的结果。为了实现压缩,常规VLC表被设计为使得使用较短长度的VLC来编码更可能的符号,并使用更长长度的VLC来编码不那么可能的符号。统计上,预期最有可能的符号以非常高的概率出现,这意味着预期最短的VLC以非常高的概率在比特流中出现。因此,当在熵解码期间加载一定数目的比特时(例如8、10或12比特),加载的比特包含用于多个符号的VLC的概率可能是非常高的,通过在一些情况下使用多符号查找表这将导致熵解码性能的30%的改善。 
选择性截短逆频率变换。逆频率变换是另一计算密集的任务。甚至对于单个块而言,逆频率变换也可能是复杂的,因为其通常涉及对于每个块16、64或更多的值的多轮计算。并且当每个图片执行几百次时,逆频率变换具有高的总计算成本。在常规解码中,即使当许多变换系数具有零值时,情况也可能如此。为了降低执行逆频率变换的计算成本,解码器可以通过选择性地去除或简化将仅仅涉及零值系数的逆频率变换的操作来利用非零变换系数的相对稀少性。这种截短逆频率变换在产生与来自全逆频率变换的结果完全匹配的结果的同时具有较低的计算成本。解码器还可以选择性地简化在执行逆频率变换之前执行的解量化操作,使解量化操作局限于影响非零系数的那些操作,并从而进一步降低解码的计算成本。 
用重新开始标记指示的分区。在一些解码场景中,计算设备具有设备由于解码中的瓶颈而不能用于解码的资源。例如,编码数据可能在缓冲器中是可用的,但是当前是不可解码的,因为已编码数据可能依赖于尚未被解码的周围内容。为了处理这种情形,解码器可以使用比特流中的语法元素来识别图片内块的分区,其中,可以并行地解码分区。这样,解码器可以更高效地使用可用计算资源,并且在一些情况下,通过更快地完成解码来减少解码等待时间。 
本文所述的一些创新(例如利用多符号查找表的熵解码、选择性截短的逆频率变换)在解码之前不需要来自编码器或其它处理工具的协作—在解码器中实现所述创新,使得解码器单独地适应于给定比特流。对于本文所述的其它创新而言(例如用重新开始标记指示的分区),编码器在比特流中插入语法元素以促进高效的解码。可替换地,另一处理工具可以插入这种语法元素。 
通常,独立于标准特定细节来描述本文提出的创新。例如,以标准独立的方式来描述逆频率变换的选择性截短和利用多符号查找表的熵解码。然而,参考JPEG标准、MJPEG标准、VC-1标准或JPEG XR标准特定的语法元素和操作举例说明了本文发明所述的某些示例性实现。例如,针对JPEG、MJPEG和JPEG XR标准中的变换系数并针对VC-1标准中的位平面编码详述了利用多符号查找表的熵解码的实现。针对MJPEG标准描述了使用重新开始标记分区的示例。还可以针对其它标准或格式来实现这种创新。 
本文所述的许多示例涉及图像或视频内容。可替换地,解码器可以实现创新中的一个或多个以解码音频内容或其它媒体内容。更一般地,可以有对本文所述的示例的各种替换方案。可以通过改变流程图中所示的阶段的排序、通过将某些阶段分裂、重复或省略等来修改参考流程图所述的某些技术。可以组合地或单独地使用本文所述的解码创新的各种方面。不同的实施例使用所述技术和工具中的一个或多个。本文所述的一些技术和工具解决在背景技术中所述的问题中的一个或多个。通常,给定技术/工具未解决所有这种问题。 
示例性计算环境
图1举例说明其中可以实现多个所描述的技术和工具的适当计算环境(100)的一般化示例。计算环境(100)并不意图暗示关于使用或功能范围的任何限制,因为可以在多种通用或专用计算环境中实现该技术和工具。
参考图1,计算环境(100)包括一个或多个处理单元(110、115)和存储器(120、125)。在图1中,将这个最基本配置(130)包括在虚线内。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或任何其它类型的处理器。在多处理系统中,多处理单元执行计算机可执行指令以增加处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(co-processing unit)(115)。存储器(120、125)可以是可被处理单元访问的易失性存储器(例如寄存器、高速缓冲存储器、RAM)、非易失性存储器(例如ROM、EEPROM、闪速存储器等)或两者的组合。存储器(120、125)存储实现一个或多个创新以进行解码的软件(180),其采取适合于由处理单元执行的计算机可执行指令的形式。 
计算环境可以具有附加特征。例如,计算环境(100)包括储存器(140)、一个或多个输入设备(150)、一个或多个输出设备(160)和一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算环境(100)的组件互连。通常,操作系统软件(未示出)提供用于在计算环境(100)中执行的其它软件的操作环境,并协调计算环境(100)的组件的活动。 
有形储存器(140)可以是可移动或不可移动的,并包括磁盘、磁带和磁带盒、CD-ROM、DVD或能够用来以非暂时性方式存储信息且能够在计算环境(100)内访问的任何其它介质。储存器(140)存储用于实现一个或多个创新以进行解码的软件(180)的指令。 
输入设备(150)可以是触摸输入设备,诸如键盘、鼠标、笔或“轨迹球”、语音输入设备、扫描设备或向计算环境(100)提供输入的另一设备。对于图像或视频编码而言,输入设备(150)可以是视频卡、TV调谐器卡、照相机或以数字或模拟形式接受视频输入的类似设备或将采样读入计算环境(100)中的CD-ROM或CD-RW。输出设备(160)可以是显示器、打印机、扬声器、CD写入器或从计算环境(100)提供输出的另一设备。 
通信连接(170)使得能够实现通过通信介质到另一计算实体的通信。通信介质在已调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出或其它数据的信息。已调制数据信号是其特性中的一个或多个以将信息编码到信号中的方式被设置或改变的信号。以示例且非限制的方式,通信介质包括用电、光学、RF或其它载体实现的有线或无线介质。 
可以在计算机可读介质的一般上下文中描述所述技术和工具。计算机可读介质是能够在计算环境内访问的任何可用有形介质。以示例且非限制的方式,就计算环境(100)而言,计算机可读介质包括存储器(120)、储存器(140)和上述任何的组合。 
可以在计算机可执行指令的一般上下文中描述所述技术和工具,所述计算机可执行指令例如是包括在程序模块中的那些,它在目标真实或虚拟处理器上的计算环境中执行。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中,根据期望,可以将程序模块的功能组合或在程序模块之间分离。可以在本地或分布式计算环境内执行用于程序模块的计算机可执行指令。 
在本文中可互换地使用术语“系统”和“设备”。除非上下文另外明确地指明,术语不暗示对一种计算机系统或计算设备的任何限制。通常,计算系统或计算设备可以是本地或分布式的,并且可以包括专用硬件和/或通用硬件与实现本文所述功能的软件的任何组合。 
为了介绍,详细说明使用类似于“确定”和“选择”的术语来描述计算环境中的计算机操作。这些术语是用于由计算机执行的操作的高级抽象概念,并且不应与由人执行的动作混淆。对应于这些术语的实际计算机操作根据实现而变。 
示例解码器
图2是与之相结合可以实现多个所述实施例的一般化解码器(200)的方框图。解码器(200)接收用于压缩图片或图片序列的已编码数据(295)并产生包括重构图片(205)的输出。解码器(200)处理一个或多个图片,其可以是帧、视频场或帧与场的组合。为了介绍,图2示出了通过解码器(200)的关键图片的“图内(intra)路径”和用于预测图片的“图间(inter)路径”。对于视频解码而言,解码器(200)将预测图片和关键图片解压缩。对于图像解码而言,解码器包括图内路径的组件。解码器(200)的许多组件被用于将关键图片和预测图片解压缩。由那些组件执行的准确操作可以根据被解压缩的信息的类型而变。
缓冲器(290)接收用于压缩图片的已编码数据(295)并使得接收到的已编码数据可用于熵解码器(280)。熵解码器(280)对经熵编码的量化数据以及经熵编码的辅助信息(side information)熵解码,通常应用在编码器中执行的熵编码的逆。第III节详述使用多符号查找表进行熵解码的示例。 
运动补偿器(230)对一个或多个参考图片(225)应用运动信息(215)以形成正被重构的图片(205)的子块、块和/或宏块(一般是块)的运动补偿预测(235)。一个或多个图片存储先前重构的图片以便用作参考图片。图内路径可以包括图内预测模块(未示出),其根据相邻的先前重构的采样值在空间上预测当前块的采样值。 
解码器(200)还重构预测残余。逆量化器(270)对经熵解码的数据进行逆量化。逆频率变换器(260)将量化的频域数据转换成空间域信息。例如,逆频率变换器(260)对频率变换系数的块应用逆块变换,产生采样数据或预测残余数据。逆频率变换可以是逆离散余弦变换(DCT)、其整数近似(integer approximation)或另一类型的逆频率变换。第IV节描述选择性截短的逆频率变换的示例。 
针对预测图片,解码器(200)将重构D的预测残余(245)与经运动补偿的预测(235)组合以形成重构图片(205)。(虽然图2中未示出,但在图内路径中,解码器(200)可以将预测残余与来自图内预测的空间预测组合。)视频解码器(200)中的运动补偿环路包括自适应去块滤波器(223)。解码器(200)将环路内滤波(223)应用于重构图片以跨越图片中的块边界行和/或列自适应地使不连续平滑化。解码器将重构图片存储在图片缓冲器(220)中以便用作可能的参考图片。 
根据期望的解压缩的实现和类型,可以添加、省略解码器的模块,将模块分裂成多个模块、将模块与其它模块组合和/或类似模块来替换该模块。在可替换实施例中,具有不同模块和/或其它模块配置的解码器执行所述技术中的一个或多个。解码器的特定实施例通常使用解码器(200)的变体或补充版本。解码器(200)内的模块之间示出的关系指示解码器中的一般信息流;为了简单起见,未示出其它关系。 
使用多符号查找表的可变长度解码
为了将符号可变长度解码,解码器从缓冲器加载已编码数据的比特,使用VLC表查找操作在加载的比特内搜索符号,并从缓冲器刷新表示该符号的比特。虽然这对于单个符号而言可能是相对简单的,但当每个图片执行几千次时,熵解码操作具有高的总成本。
构造常规VLC表,使得表格中的VLC的长度至少粗略地与各VLC表示的符号的预期出现概率相反地改变。更可能的符号(根据预期概率分布)具有较短长度的VLC,并且不那么可能的符号具有较长长度的VLC。 
作为使用常规VLC表的替代,解码器可以使用已被构造为从VLC表反映VLC及其长度的多符号查找表。用多符号查找表,在许多情况下,解码器可以使用加载x个比特的一个操作、将找到加载的x个比特内的符号的多符号查找表中的一个查找操作以及一个刷新操作来解码多个符号。这能够显著地降低熵解码的计算成本并从而增加熵解码的吞吐量。 
图3示出具有五个VLC的示例性VLC表(301)。VLC表(301)的给定条目将VLC与符号相关联。例如,VLC 11具有VCL长度2且与表示值1的符号SYM1相关联。VLC的长度(3、2、2、3和2)以相反的方式粗略地对应于符号的预期概率分布。 
图3还示出已经使用来自VLC表(301)的VLC构造的多符号查找表(311)。多符号查找表(311)的条目使得8个加载比特与加载的8个比特内的一个或多个符号和那一个或多个符号所消耗的许多比特相关联。表格(311)的第一条目使8比特值00000000与两个符号SYM0、SYM0和消耗比特长度6(对于SYM0的每次出现有三个比特)相关联。(为了图示,本文所示的表格(311)及其它多符号查找表还示出用于表示的符号和符号计数的VLC,但是这种信息不必是实际表格实现的一部分。) 对于第一条目而言,加载的8比特的最后两比特是未定义的,因为其仅表示比特流中的符号的一部分。表(311)的第二条目使8比特值00000001与三个符号SYM0、SYM0、SYM2和消耗比特长度8相关联。表(311)持续至最后一个条目,其使8比特值11111111与四个符号SYM1、SYM1、SYM1、SYM1和消耗比特长度8相关联。 
当将来自VLC表(301)的一系列符号解码时,解码器从缓冲器加载8个比特,在查找表(311)中查找8个比特以找到在加载的比特内表示的符号,确定符号消耗了多少比特,并从缓冲器刷新消耗的比特。解码器通过从缓冲器加载接下来的8个比特继续解码。这样,解码器可以使用一个加载操作、一个查找操作和一个刷新操作解码多个符号。 
服从用来组织比特流的规则并服从在表格中表示的符号的类型,多符号查找表中的每个条目包括用于该条目的x比特值内的尽可能多的符号。VLC表(301)中的符号表示用于相同类型的语法元素的不同值,并且比特流可以包括系列中的符号中的三个或更多,因此,多符号查找表中的条目可以按照任何顺序包括符号中的两个、三个或四个。在一些实现中,使用多符号查找表来解码一系列不同类型的语法元素,并且查找表中的条目可以包括用于不同类型的语法元素的多个符号。例如,比特流可以包含用于一个语法元素的符号的VLC,其被与(a)用于不同语法元素的符号的其它(可能是可选的)VLC(b)用于其它符号的FLC和/或(c)其它未压缩信息混合。可以使用多符号查找表来用单个查找操作将包含在加载的x比特值中的所有完整符号(甚至对于不同的语法元素等而言)解码,解码器状态被相应地修改。 
查找表(311)中的每个条目包括多个完整符号,因为VLC表(301)中的所有VLC是相对短的。查找表(311)中的一些条目还包括部分符号。在许多实现中,VLC是更长的,并且查找表中的条目可以包括单个完整符号,或者根本不包括完整符号。当加载的x个比特不包含完整的符号时,不将用于部分符号的比特从缓冲器刷新。相反,解码器通过从缓冲器加载附加比特来后退至符号的常规解码。当加载的x个比特包含完整符号,但是也包含部分符号时,解码器刷新对于完整符号消耗的比特,并且再加载现在从指示部分符号的比特开始的x个比特。 
通常,多符号查找表具有以加载的x个比特的可能置换(permutation)编索引的多达2x个条目。多符号查找表的至少一个条目使在用于该条目的x比特值中处于前列的一系列VLC与一系列的多个符号相关联,使得该系列的VLC消耗来自x比特值的尽可能多的比特,但是留下指示部分符号的x比特值的任何比特没有定义。当VLC可以比x个比特长时,多符号查找表的至少一个其它条目通常指示用于该其它条目的x比特值表示部分符号。 
在图3中,x是8,并且表格(311)具有28个条目。可替换地,x是10、12或某个其它数目。比特的数目x可以取决于在熵解码中使用的高速缓冲存储器大小。例如,如果系列中的多个符号的可能组合的数目高于2x,则高速缓冲存储器大小可以使查找操作局限于每次x个比特。比特的数目x还可以取决于查找表中的条目的数目。例如,如果系列中的多个符号的可能组合的数目小于或等于2x,则仅需要2x个条目。 
统计上,当x是8、10、12或14时,对于大多数VLC表而言,相应的查找表包括具有多个符号的许多条目,并且这种条目被频繁地用于解码,这使解码速度增加。如果查找表中的条目包括单个完整符号,则性能相当于常规熵解码。即使查找表中的条目仅包括部分符号,性能损失也是微小的,因为解码器简单地回复至用于符号的后退可变长度解码过程,其也相当于常规熵解码。 
本节描述用于对用于根据JPEG标准或MJPEG标准的变换系数的游程-等级信息、根据VC-1标准的位平面编码值和用于根据JPEG XR标准的变换系数的游程信息和等级信息进行的可变长度解码的多符号查找表的实现。可替换地,多符号查找表被用于符合这些标准中的一个的另一类型的信息的可变长度解码(例如,符合VC-1标准的变换系数信息的解码)。或者,多符号查找表被用于符合另一标准的另一类型的信息的可变长度解码(例如,符合H.264标准的用上下文自适应VLC编码的变换系数信息的解码)。通常,可以在霍夫曼解码或不具有上下文切换或具有相对不频繁的上下文切换的其它形式的可变长度解码中使用多符号查找表,从而使得用于一个符号的VLC不具有对先前解码的一个符号或多个符号的串行依赖性。 
用于用多符号查找表进行解码的示例性技术
图4示出了用于使用多符号查找表来执行可变长度解码的示例性技术(400)。实现图像或视频解码器(诸如图2所示的解码器(200))或其它工具的计算设备可以执行该技术(400)。
该工具接收(410)比特流中用于图片的已编码数据,并将用于该图片的已编码数据解码。作为解码的一部分,该工具适配(420)多符号查找表以用于解码用于图片的已编码数据中的一些符号。通常,该工具适配多符号查找表的方式取决于实现。例如,可以逐个图片地提供新的VLC表,在这种情况下,多符号查找表也逐个图片地改变。或者,使用比特流中的语法元素或在解码期间跟踪的上下文信息来选择多个可用VLC表中的一个,并且还选择相应的多符号查找表。下面描述用于适配多符号查找表的各种机制。 
该工具然后使用多符号查找表将已编码数据中的符号解码(430)。将使用多符号查找表来解码的符号可以包括VLC和FLC。例如,作为解码(430)的一部分,该工具反复地从缓冲器加载比特流的x个比特并在多符号查找表中搜索加载的x个比特。如果加载的x个比特根据多符号查找表中的条目中的一个指示一个或多个完整符号,则该工具确定表示用加载的x个比特指示的一个或多个完整符号的y个比特并从缓冲器刷新该y个比特。如果y < x,则加载的x个比特中的最后x-y个比特保持在缓冲器中。在一些实现中,加载的x个比特可以指示多符号查找表中的部分符号。如果是这样,则作为使用多符号查找表解码符号的一部分,该工具从缓冲器加载比特流的z个附加比特以确定由加载的x+z个比特中的w个比特指示的完整符号(其中x < w <= x+z)并从缓冲器刷新w个比特。下面描述使用多符号查找表来执行解码的各种方式。为了使用查找表将符号解码,可以用多符号查找表中的查找操作来确定符号,然后输出符号到解码器的其它模块。可替换地,为了使用查找表将符号解码,如果语法或语义规定使用符号之前的已解码符号的变换,则查找表可以直接包含已变换值以进一步减少处理的量。 
该工具检查(440)是继续下一个图片还是结束。为了介绍,图4示出逐个图片地重复技术(400)。可替换地,以某个其它方式来重复该技术。为了简化起见,图4未示出可以将用多符号查找表进行的可变长度解码与本文所述的其它创新集成的方式。 
示例性实现—解码游程—等级对信息
根据JPEG标准和MJPEG标准,使用频率变换将用于块的采样值转换成变换系数。用于块的变换系数包括DC系数和AC系数。AC系数被编码为游程—等级对,其中,游程—等级对是:(a)自从DC系数或前一非零AC系数以来的零值系数的游程d,以及(b)非零系数值l。非零系数值l具有1至1023(1至210-1)的幅值。可以用符号比特s(对于负的而言为0,对于正的而言为1)来表示给定非零系数值l、等级种类值k(对于包括l的范围2 k-1 <= l <= 2 k -1)和偏移值t(其中,l = 2 k-1+t)。值k具有1至10的范围,并且可以用k-1个比特来表示值t。对于具有63个AC系数的8×8块而言,值d具有1至63的范围。在用于图片的已编码数据中,用于游程—等级对的值d、k、s和t被表示为符号H、S和M,其中,H是用于(d,k)的霍夫曼代码,并且M是指示偏移值t的k-1个额外比特。对于关于根据JPEG标准或MJPEG标准的语法元素和变换系数的解码的附加细节,参见用于标准的文件。
为了将图片解码,解码器重构将被用于对用于AC系数的已编码数据的可变长度解码的VLC表。解码器可以逐个图片地或以某个其它方式(例如逐个剪辑地)修改VLC表。VLC表包括用于(d,k)对值的VLC。VLC表还包括用于块结束(EOB)符号的VLC,其指示块中非零系数的结束。每个VLC为至多16比特长。图5示出了具有用于(d,k)对值的VLC的示例性VLC表(501)。 
通过使用针对图片生成的VLC表(501)来构建查找表来适配多符号查找表。图5示出了多符号查找表(511)。该多符号查找表具有256个条目。对于一些条目而言,用于条目的8比特索引值与符号H(d,k)、用于非零系数的符号值S和用于t的k-1个比特(显示为M(k-1))相关联。对于其它条目而言,用于条目的8比特索引值与用于两个游程—等级对(H(d,k)、S、H(d,k)、S)的符号相关联,其中,第一游程—等级对不具有针对M(k-1)用信号发送的比特,因为k是1。对于再其它条目而言,用于该条目的8比特索引值与符号H(d,k)和用于非零系数的符号值S相关联,但是仅部分地指示了下一个符号。对于以8比特索引值开始的较长VLC而言,用于条目的8比特索引值指示部分符号。 
为了使用图5所示的多符号查找表(511)将用于给定块的AC变换系数解码,解码器从缓冲器加载比特流的x个比特并在多符号查找表中搜索加载的x个比特。如果加载的x个比特指示用于游程—等级对中的一个或多个的一个或多个完整符号,解码器确定y个比特,其表示由加载的x个比特指示的一个或多个完整符号,并从缓冲器刷新y个比特。另一方面,如果用加载的x个比特指示的一个或多个完整符号仅部分地指示游程—等级对中的给定的一个(例如指示H(d,k)但没有指示S或M(k-1),或指示H(d,k)和S但没有指示M(k-1)),则解码器从缓冲器加载比特流的z个附加比特以确定用于给定游程—等级对的任何其余符号,然后从缓冲器刷新z个比特。否则(加载的x个比特仅指示部分符号),则解码器从缓冲器加载比特流的z个附加比特以确定游程—等级对符号H(d,k)、符号值符号S和(取决于游程—等级对符号)偏移值符号M(k-1),则从缓冲器刷新w个比特。(游程等级对符号、符号值符号和(如果存在的话)偏移值符号消耗加载的x+z个比特中的w个比特,其中x < w <= x+z。)。 
在许多JPEG和MJPEG解码场景中,AC系数解码是熵解码的最计算密集部分。大部分计算努力被花费在解码最常见的VLC。由于VLC表被构造为使得被预期为最可能的符号具有最短长度,所以还预期H(d,k)、S和M(k-1)的组合长度是相对短的。在一个示例性MJPEG剪辑中,对于解码的游程—等级对值的约95%而言,H(d,k)、S和M(k-1)的组合长度是8比特或更少。用256条目的多符号查找表,可以用单个查找操作来解码用于游程—等级对的这种H(d,k)、S和M(k-1)符号。当用于H(d,k)、S和M(k-1)符号的组合长度多于8比特,但H(d,k)是8比特或更少时,只有H(d,k)符号在查找表中,并且其余符号是通过退回到正常的、每次一个符号的解码过程而从比特流提取的。当甚至H(d,k)大于8比特时,使用正常解码过程解码H(d,k)、S和M(k-1)符号。使用正常解码过程不那么高效,但正常解码过程被相对不频繁地使用。 
对于解码的游程—等级对值的约97%而言,H(d,k)、S和M(k-1)的长度为10比特或以下。使用1024条目的多符号查找表能够进一步改善解码速度,但是表格大致上变大为四倍。虽然使用多符号查找表的性能益处取决于所使用的VLC表和实际符号分配,但在大多数情况下,256条目或1024条目的多符号查找表用单个查找操作得到H(d,k)、S和M(k-1)符号。平均起来,对于典型MJPEG剪辑的解码而言,这将花费在熵解码的时间减少31%并将总处理器使用减少12%~13%。通常,更大的查找表导致在更多的情况下每个查找操作解码多个AC系数。 
示例性实现—位平面解码
根据VC-1标准,可以在图片级将指示用于图片的宏块的状态信息的比特一起编码作为位平面。例如,给定比特表示相应的宏块是(a)被跳过或未被跳过,(b)使用一个运动矢量还是四个运动矢量编码,(c)帧编码还是场编码或(d)某个其它二元判定的二元指示。在图片级,可以在多个模式中的任何一个下将位平面的比特编码,其包括跳行模式、跳列模式、用于2×3比特区段(section)的“正常-6编码模式”、用于2×1比特区段的“正常-2编码模式”和三个其它模式。对于关于根据VC-1标准的位平面语法元素和位平面解码的附加细节,参见用于标准的文件。
为了将位平面解码,解码器根据用于位平面的比特流中的语法元素指示的位平面编码模式来选择要使用的VCL表。在VLC表中表示的符号取决于位平面编码模式,并且一般地根据位平面编码模式对应于比特的不同的可能组合。每个符号表示用于图片的位平面的一个或多个比特。可以针对用于图片的编码数据中的不同语法元素用信号发送不同的位平面。图6示出了VC-1标准中的被用于正常-2编码模式的VLC表(601)。VLC表(601)中的每个VLC与位平面中的一对比特B(2n,2n+1)相关联。其它位平面编码模式使用不同的VLC表。 
在一些解码方案中,位平面的常规解码在CPU执行解码时消耗很大一部分的处理周期。通常,为了根据常规解码将位平面解码,解码器选择适当的VLC表用于位平面编码模式,然后反复地将来自VLC表的符号解码直至位平面的所有比特已被解码。 
为了加速解码,可以使用多符号查找表。通过从多个可用多符号查找表之中选择多符号查找表来适配多符号解码表,其中,每个可用查找表适合于不同的位平面编码模式。为了将用于位平面的比特的符号解码,解码器从缓冲器加载比特流的x个比特并在多符号查找表中搜索加载的x个比特。解码器确定表示由加载的x个比特指示的一个或多个符号的y个比特,并且解码器从缓冲器刷新y个比特。 
在图6中,多符号查找表(611)适合于用于正常-2模式的VLC表(601)。查找表(611)具有256个条目。解码器从缓冲器加载8个比特,在查找表(611)中搜索8比特索引值以将指示的符号解码,并从缓冲器刷新所消耗的比特。在一些情况下,朝着位平面的末尾,可以从缓冲器加载少于8个比特,在这种情况下,可以将常规VLC表(601)用于位平面的其余符号。这样,多符号查找表的使用能够显著地加速位平面解码。 
示例性实现—解码游程或等级信息
根据JPEG XR标准,用游程值信息(对于零值系数的游程而言)和等级值信息(对于非零系数而言)编码AC变换系数。用例程DECODE_ABS_LEVEL()将用于非零系数的等级值解码,并且用例程DECODE_RUN()将用于零值系数的游程的游程值解码。对于关于根据JPEG XR标准的游程值和等级值的语法元素和解码的细节,参见用于标准的文件。
图7示出了根据JPEG XR标准的用于非零AC系数的等级值信息的两个可能VLC表(701、702)。每个表(701、702)包括用于表示用于ABSOLUTE_LEVEL_INDEX语法元素的值的符号A的VLC。两个表(701、702)向符号A分配不同的VLC以反映用于ABSOLUTE_LEVEL_INDEX的值的不同预期概率分布。将给定的非零系数值解码还可以使用比特流中的iLevel比特。iLevel比特可以是0、1或2个比特,取决于ABSOLUTE_LEVEL_INDEX的值。对于值A0至A5而言, iLevel比特的数目分别是0、0、1、2、2或2。用于ABSOLUTE_LEVEL_INDEX的值A6指示其中利用甚至更多的附加比特来用信号发送用于非零值的比特的溢出编码模式(escape coding mode)。 
图7还示出了用于第一VLC表(701)的多符号查找表(711)。每个行将8比特索引值与用于ABSOLUTE_LEVEL_INDEX的符号A和在某些情况下用于iLevel的1或2个额外比特的符号F(x)相关联。通过适配例程DECODE_ABS_LEVEL(),解码器可以用一个加载操作、一个查找操作和一个刷新操作将用于ABS_LEVEL_INDEX和iLevel的符号解码(并且仅用一个条件转移来检查用于值A6的溢出模式)。对于第一VLC表(701)中示出的VLC而言,用于ABS_LEVEL_INDEX和iLevel的符号的最高可能组合长度是7个比特,因此,在256条目查找表(711)内符号的每个有效组合被表示至少一次。查找表(711)不包括在表格(711)的相应条目中的iLevel之后的符号。 
不同的多符号查找表(未示出)包括来自用于8比特索引值的第二VLC表(702)的符号。对于第二VLC表(702)中示出的VLC而言,用于ABS_LEVEL_INDEX和iLevel的符号的最高可能组合长度是8个比特,因此,在256条目查找表(711)内仍表示符号的每个有效组合。 
为了将非零系数值解码,解码器更新取决于图片的内容的跟踪变量,如在JPEG XR标准中详述的。为了适配多符号查找表,解码器使用跟踪变量来从两个可用多符号查找表之中选择多符号查找表。为了将非零值系数解码,解码器从缓冲器加载比特流的x个比特并在多符号查找表中搜索加载的x个比特,其中x是8。解码器确定表示绝对等级值符号和(根据绝对等级值符号)由加载的x个比特指示的等级比特符号的y个比特,然后从缓冲器刷新y个比特。 
对于游程值而言,对于零值系数的游程的一些值,解码器将用于RUN_INDEX语法元素的VLC解码并且还将用于RUN_REF语法元素的0、1、2或3个额外比特解码。用于符号RUN_INDEX和RUN_REF的最高组合长度是7个比特。用于RUN_REF语法元素的额外比特的数目取决于RUN_INDEX的值和当前可能的最大游程(imaxrun)。存在用于iMaxRun的九个可能值。 
在用于RUN_INDEX和RUN_REF的多符号查找表中,每行使7比特索引值与用于RUN_INDEX的符号和(在一些情况下)用于RUN_REF的1、2或3个额外比特的符号相关联。由于用于RUN_REF的比特数部分取决于iMaxRun的值(在表格的条目内未表示),所以九个不同的多符号查找表被用于iMaxRun的九个不同值。九个可用查找表中的每一个具有128个条目。通过适配例程DECODE_RUN()并选择九个查找表中的适当的一个,解码器可以用一个加载操作、一个查找操作和一个刷新操作将用于RUN_INDEX和RUN_REF的符号解码。 
因此,为了将游程值解码,解码器确定最大游程值。为了适配多符号查找表,解码器使用最大游程值来从多个可用多符号查找表之中选择多符号查找表(iMaxRun的每个可能值一个)。然后,为了将游程值解码,解码器从缓冲器加载比特流的x个比特并在多符号查找表中搜索加载的x个比特。解码器确定y个比特(表示由加载的x个比特指示的游程索引符号和(根据游程索引符号)游程参考符号),然后从缓冲器刷新y个比特。 
截短逆频率变换
当将图像或视频内容的图片编码时,通常将图片划分成块(例如8×8块)。编码器向用于块中的给定的一个的值应用频率变换以产生用于块的变换系数。用于块的全逆频率变换可能是计算密集的,尤其是如果变换的实现使用浮点乘法的话。
考虑例如8×8块的采样值或预测残余值。用典型的基于块的变换,将块的值转换成64个变换系数,其是以逻辑二维(2D)排列组织的。按照惯例,水平频率从逻辑2D排列的左侧到右侧是增加的,并且垂直频率从逻辑2D排列的上侧到下侧是增加的。具有最低水平频率和最低垂直频率的系数(标记为DC系数)被分配给逻辑2D排列的左上角。其它系数被标记为AC系数。具有最高水平频率但具有最低垂直频率的AC系数被分配给逻辑2D排列的右上角,具有最高垂直频率但具有最低等级低级频率的AC系数被分配给逻辑2D排列的左下角,并且具有最高水平频率和最高垂直频率的AC系数被分配给逻辑2D排列的右下角。在解码期间,AC系数被熵解码并根据扫描模式被分配给逻辑2D排列中的位置,该扫描模式将系数从逻辑一维(1D)排列(其趋向于将零值系数集群以促进游程长度或游程—等级编码)映射到逻辑2D排列中。逻辑2D排列的实际实现可以使用其中索引i、j指示系数位置的2D数组、其中数组索引h(其中h=8i+j)指示系数位置的1D数组或某个其它数据结构。 
频率变换趋向于引起块的值的能量的压缩,使得较低频率系数具有较高幅值且较高频率系数具有较低幅值。当为了压缩而将变换系数量化时,许多变换系数具有零值。常常只有几个变换系数(通常为较低频率系数)在量化之后具有非零值。对于8×8块而言,例如,在许多情况下,非零系数位于较低频率系数的4×4区段、较低频率系数的2×2区段或者甚至1×1区段内(DC系数)。 
为了降低执行逆频率变换的计算成本,解码器可以选择性地将逆频率变换截短以利用非零系数的相对稀少性。对于许多块而言,解码器不需要执行全逆频率变换。选择性地使用截短逆频率变换能够加速解码和/或节省计算周期,同时仍然产生对于来自全逆频率变换的结果而言比特完全匹配的结果。 
特别地,考虑到该变换系数是零值系数,可以通过去除将会涉及乘以零或加上零的操作来简化截短逆频率变换。这种零值系数实际上对于由逆频率变换重构的值没有贡献。当变换系数被解量化时,可以使用相同的逻辑来避免用于零值系数的不相关解量化操作,如下文所解释的。 
例如,对于8×8块而言,可以将全逆频率变换实现为 8×8的2D变换或应用到用于块的变换系数的行和列的两个可分离的8×1 1D变换。如果用于块的非零系数在 4×4区段或2×2区段中,则可以通过排除涉及乘以零或者加上零的操作来将全变换截短,然后使用截短的变换。或者,可以通过用针对包括非零系数的区段的诸如4×4或2×2之类的较小变换来替换全变换(或通过用诸如4×1或2×1之类的较小变换来替换全变换的可分离部分)并适当地重复中间和最终结果值以达到用于块的适当全尺寸来将全变换截短。如果仅仅用于块的非零系数是DC系数(1×1区段),则逆频率可以简单地使用DC系数来重构并重复用于块的平均值。无论解码器使用全逆频率变换还是截短逆频率变换,变换都产生相同的结果。 
解码器还可以根据用于块的非零系数之中的上垂直频率来调整用于块的变换系数的解量化。例如,如果非零系数之中的上垂直频率是0(仅指示第一行中的非零系数),则将该行的变换系数解量化等价于将用于所有行的变换系数解量化。利用经调整的解量化,解码器仅部分地将变换系数解量化,但是解量化仍产生与完全解量化相同的结果。 
可以在任何实现中将选择性地截短的逆频率变换用于逆DCT或其整数近似。例如,可以根据JPEG标准、MJPEG标准、MPEG-2标准、MPEG-4标准或VC-1标准在解码中使用选择性地截短的逆频率变换。 
用于选择性截短的逆频率变换的示例性技术
图8示出了用于选择性地执行截短逆频率变换的示例性技术(800)。实现图像或视频解码器(诸如图2所示的解码器(200))或其它工具的计算设备可以执行技术(800)。
该工具接收(810)比特流中用于图片的已编码数据,并将用于该图片的多个块解码。本文所使用的术语“块”可以指示16×16宏块、8×8块、较小子块或用于媒体内容的值的任何其它排列。 
对于多个块中的给定块而言,该工具识别(820)用于块的变换系数中的非零系数之中的上水平频率和上垂直频率。例如,上水平频率是用于块的变换系数的逻辑2D排列中具有非零值的位置的最大水平坐标,并且上垂直频率是用于块的变换系数的逻辑2D排列中具有非零值的位置的最大垂直坐标。可替换地,针对在解码期间具有不同表示的变换系数来识别非零系数之中的上水平频率和上垂直频率。 
该工具可以在对用于块的变换系数进行熵解码并根据扫描模式将变换系数从逻辑1D排列扫描到逻辑2D排列的同时跟踪上水平频率和上垂直频率。图9示出了用于示例性方法跟踪用于块的非零系数之中的上水平频率和上垂直频率的伪代码列表(901、902)。可替换地,该工具使用另一方法来识别非零系数之中的上水平频率和上垂直频率,例如,用单个值来跟踪,其为上水平频率或上垂直频率中的较高的一个。 
该工具基于用于非零系数的上水平频率和上垂直频率来选择(830)具有不同大小的多个可用逆频率变换中的一个。例如,对于8×8块而言,逆频率变换的不同大小可以包括m×m正方形或m×n矩形,其中,m是1、2、4和8中的任何一个且n是1、2、4和8中的任何一个。该工具选择具有包括非零系数的大小的逆频率变换。当这比全变换小时,可以避免不必要的操作以便加速解码。 
接下来,该工具对用于给定块的变换系数中的至少一些应用(840)所选逆频率变换以重构用于块的采样值或预测残余值。该工具然后检查(850)是继续下一个块还是结束。 
为了介绍,图8示出了对于图片或图片的一部分(例如分区、切片)逐块地重复技术(800)。可替换地,以某个其它方式来重复该技术。为了简化起见,图8未示出可以将选择性截短的逆变换与本文所述的其它创新集成的方式。 
用于非零系数的上频率的示例性跟踪
图9示出了用于确定定义块的非零系数周围的区段的上频率的示例性技术。图10举例说明了遵循图9的伪代码列表确定定义用于示例性块的非零系数周围的区段的上频率的结果。在图9和10中,示例性块是8×8块。可替换地,块可以具有另一大小。
第一伪代码列表(901)示出用于8×8块的AC系数的熵解码/扫描环路。将索引变量初始化成第一AC系数(索引=1),将非零系数索引初始化为零(NonZeroIndices=0)并将AC系数初始化成零(未示出)。使用霍夫曼解码,解码器将用于游程—等级对或块结尾的符号H解码,然后使索引变量前进以跳过由符号H指示的零值系数的游程。省略了霍夫曼编码的细节,但霍夫曼解码可以使用多符号查找表或另一可变长度解码方法。如果符号H指示游程—等级对中的非零系数,则解码器使用扫描模式(Z=ZigZag[Index])来确定逻辑2D排列中非零系数的位置Z,将非零系数的值解码并将该值分配给位置(AC[Z]=…)。针对下一个索引继续熵解码/扫描环路,直至对于该块达到最后一个索引。 
在熵解码/扫描环路中,使用非零系数索引(NonZeroIndices)来跟踪用于块的非零系数之中的上水平频率和上垂直频率。非零系数索引的三个比特指示上垂直频率,并且非零系数索引的另外三个比特指示上水平频率。如黑体字的语句中所示,跟踪使用逐位OR操作来更新非零系数索引(NonZeroIndices |=Z)。与使用跟踪上水平频率和上垂直频率的两个不同分支相比,用于非零系数的位置的逐位OR提供跟踪上水平频率和上垂直频率的高效方式。 
基于所跟踪的上水平频率和上垂直频率,解码器可以选择全逆频率变换或适当地截短的逆频率变换,其仍包括块的非零系数。例如,对于8×8块而言,解码器在8×8、4×4、2×2或1×1逆频率变换之间进行选择。或者,解码器在还包括诸如8×1、4×1和2×1的非正方形大小的可用逆频率变换的更宽集合之间进行选择。使用逆频率变换的矩形大小能够提供更多降低计算复杂性的机会。例如,如果上垂直频率是0(在0至7范围内)且上水平频率是4(在0至7范围内),则4×4逆频率变换不涵盖所有非零系数。然而,作为使用8×8逆频率变换的替代,可以使用1×8逆频率变换在将解码加速的同时提供正确的结果。 
图10示出了其中以二进制形式来指示逻辑2D排列中的位置的8×8块(1001)。位置0、1、3、8和11具有非零系数,并且用于这些位置的二进制值以黑体字示出。逻辑2D排列中的其余位置具有零值系数。块(1001)示出用于可用逆频率变换的不同大小(1×1、2×2、4×4和8×8)。在图9的第一伪代码列表(901)中所示的环路的连续迭代中,常规Z字形扫描模式返回非零系数的位置Z:000 001、001 000、000 011和001 011。在返回位置之后,用逐位OR操作来更新非零系数索引:000 000   000 001  001 001  001 011  001 011。在用于非零系数索引的最终值中,前三个比特指示上垂直频率(1,在0至7的范围内),并且后三个比特指示上水平频率(3,在0至7的范围内)。对于示例性块(1001)而言,解码器选择4×4逆频率变换,其涵盖用于块(1001)的非零系数。 
在第一伪代码列表(901)所示的跟踪之后,非零系数索引(NonZeroIndices)包括上水平频率和上垂直频率。如果解码器仅以二重增量(dyadic increment)在正方形逆频率变换之间切换,则解码器可以通过计算非零系数索引的前三个有效位和最后三个有效位的逐位OR来进一步简化选择,如第二伪代码列表(902)所示。然后,非零系数索引的最后三个有效位b2b1b0指示总上频率种类;000(1×1)、001(2×2)、01x(4×4)或1xx(8×8)。如果未设置位,则选择1×1变换,因为不存在非零AC系数。如果仅设置了比特位置0(并且比特位置1和2是清除的),则选择2×2变换,因为非零系数在2×2区段内,并且在2×2区段外面的AC系数是零值系数。如果设置了比特位置1(并且比特位置2是清除的),则选择4×4变换,因为在4×4象限外面的AC系数是零值系数。最后,如果设置了比特位置2,则选择8×8变换,因为在4×4区段外面存在至少一个非零系数。在图10中,NonZeroIndices的前三个比特001和最后三个比特011的逐位OR提供011。总上频率种类不是简单地是上水平频率和上垂直频率中的较高的一个(例如,001 | 010=011而非010),但仍提供基于上水平频率和上垂直频率在1×1、2×2、4×4和8×8大小之间切换的高效方式。 
为了简化起见,图9未示出可以将选择性截短的逆变换与本文所述的其它创新集成的方式。 
使用重新开始标记来促进并行解码
有时,解码器具有其可用的解码器不能有效地用于解码的处理器单元(处理核心)。例如,解码器可能不能以促进任务到不同处理核心的分配的方式来将解码任务分离。
为了增强解码器能够将多个核心用于解码时的性能,并且同时降低等待时间,解码器可以基于比特流中的重新开始标记来将图片分区。解码器然后能够使用不同的线程来并行地将不同的分区解码。为了促进并行解码,编码器输出比特流中的已编码数据中的重新开始标记。例如,编码器以单行内每8块、一行内每16块的方式或以某个其它间隔引入重新开始标记。编码器可以在编码期间进行与并行解码一致的判定,从而避免分区之间的块间的某些编码/解码依赖性。例如,编码器在编码DC变换系数时避免跨越分区边界的DC预测。 
特别地,使用重新开始标记来标记分区以用于并行解码对根据MJPEG标准的编码/解码是有用的。许多网络照相机设备在MJPEG比特流中输出视频。当将被编码为MJPEG比特流的高清晰度视频解码时,使用重新开始标记来确定分区以用于并行解码能够改善性能。可替换地,另一格式和/或另一重放场景中的已编码数据包括解码器能够用来确定分区以用于并行解码的重新开始标记。 
重新开始标记的语法取决于实现。例如,在一些实现中,重新开始标记是具有已定义模式的16个比特。可替换地,重新开始标记具有另一比特数。重新开始标记的使用增加总比特率,这损害速率失真性能,并且还可能在编码被限制为避免分区之间的依赖性时损害编码效率。 
当重新开始标记以规则间隔出现在比特流中时,解码器可以在扫描期间跳过比特流中的一定量的比特。例如,根据规则间隔,解码器确定用于分区的每个分区的基本比特量(例如,每个分区的最小比特量)。解码器然后使用该基本比特量来跳过比特流中的至少一些编码数据的扫描。 
当重新开始标记的检测在熵解码之前时,解码器可以通过从熵解码去除某些有条件检查分支来简化熵解码。例如,去除检查重新开始标记的熵解码的分支。通过去除昂贵的特殊情况检查,解码器加速了并行的用于不同分区的熵解码。 
图11示出了用于插入重新开始标记以识别比特流中的分区的示例性技术(1100)。实现图像或视频编码器的计算设备能够执行该技术(1100)。可替换地,另一工具执行该技术(1100)。 
该工具接收(1110)图片并设置(1120)图片的块之间的分区以进行编码。例如,该工具以规则间隔设置分区。该工具然后将图片的块编码(1130),在比特流中插入重新开始标记以指示分区。 
该工具检查(1140)是继续下一个图片还是结束。为了介绍,图11示出了逐个图片地重复技术(1100)。可替换地,以某个其它方式来重复该技术。 
图12示出了用于使用重新开始标记来识别分区以用于并行解码的示例性技术(1200)。实现图像或视频解码器(诸如图2所示的解码器(200))或其它工具的计算设备可以执行该技术(1200)。 
为了开始,该工具接收(1210)比特流中用于图片的已编码数据。该工具使用(1220)比特流中的重新开始标记来将图片的块组织为多个分区。重新开始标记可以以规则间隔出现在比特流中(例如,每8块、每16块)。可替换地,重新开始标记可以出现在比特流中的不规则位置处。 
该工具然后使用多个处理核心逐个分区并行地将多个分区中的至少一些解码(1230)。在解码中,解码器向被并行地解码的不同分区分配不同线程。 
该工具检查(1240)是继续下一个图片还是结束。为了介绍,图12示出了逐个图片地重复该技术(1200)。可替换地,以某个其它方式来重复该技术。为了简化起见,图12未示出可以将分区的并行解码与本文所述的其它创新集成的方式。 
鉴于其中可以应用公开发明的原理的许多可能实施例,应认识到所示的实施例仅仅是本发明的优选示例且不应将其用来限制本发明的范围。相反,由以下权利要求来限定本发明的范围。因此我们要求保护落在这些权利要求的范围和精神内的所有方案作为我们的发明。 

Claims (5)

1.一种用于在实现图像或视频解码器的计算设备中提高操作效率的方法,该方法包括:
接收(410)比特流中用于图片的已编码数据;以及
利用实现图像或视频解码器的计算设备解码用于图片的已编码数据,包括:
适配(420)多符号查找表以用于解码用于图片的已编码数据中的多个符号,在已编码数据中用可变长度码(VLC)或固定长度码(FLC)来表示多个符号中的每一个,其中,多符号查找表具有分别用x比特值的可能组合编索引的多达2x个条目,其中,多符号查找表的至少一个条目使在用于该条目的x比特值中处于前列的一系列VLC与一系列的多个符号相关联,使得一系列的VLC消耗来自x比特值的尽可能多的比特,但是留下指示部分符号的x比特值中的任何比特没有定义;以及
使用多符号查找表来解码(430)多个符号。
2.权利要求1的方法,其中,使用多符号查找表来解码多个符号包括反复地:
从缓冲器加载比特流的x个比特;
在多符号查找表中搜索加载的x个比特;
如果加载的x个比特根据多符号查找表中的2x个条目中的一个指示一个或多个完整符号:
确定表示由加载的x个比特指示的一个或多个完整符号的y个比特;以及
从缓冲器刷新y个比特,其中,如果y<x,则加载的x个比特的最后x-y个比特仍保留在缓冲器中。
3.权利要求2的方法,其中,如果加载的x个比特指示多符号查找表中的部分符号,则使用多符号查找表来解码多个符号还包括:
从缓冲器加载比特流的z个附加比特以确定由加载的x+z个比特中的w个比特指示的完整符号,其中,x < w <= x+z;以及
从缓冲器刷新w个比特。
4.权利要求1的方法,其中,对于用于图片的块的一个或多个游程-等级对中的每一个,所述多个符号包括:
游程-等级对符号,其指示零值系数的游程长度和用于游程-等级对的非零系数的等级种类;
符号值符号,其指示用于非零系数的符号;以及
偏移值符号,根据用于非零系数的等级种类的值,指示用于非零系数的额外比特;以及
其中,解码用于图片的已编码数据包括重构用于图片的VLC表,其中VLC表是可逐个图片地修改的,并且其中,适配多符号查找表包括使用用于图片的VLC表来构建多符号查找表;以及
其中,使用多符号查找表来解码多个符号包括:
从缓冲器加载比特流的x个比特;
在多符号查找表中搜索加载的x个比特;
如果加载的x个比特指示用于游程-等级对中的一个或多个的一个或多个完整符号:
确定表示由加载的x个比特指示的一个或多个完整符号的y个比特;
从缓冲器刷新y个比特;以及
如果由加载的x个比特指示的一个或多个完整符号仅部分地指示游程-等级对中的给定的一个,则:
从缓冲器加载比特流的z个附加比特以确定用于给定游程—等级对的任何剩余符号;以及
从缓冲器刷新z个比特;
否则,如果加载的x个比特指示部分符号:
从缓冲器加载比特流的z个附加比特以确定游程-等级对符号、符号值符号和根据游程-等级对符号确定偏移值符号,其中,游程-等级对符号、符号值符号和偏移值符号,如果存在的话,消耗加载的x+z个比特中的w个比特,并且其中,x < w <= x+z;以及
从缓冲器刷新w个比特。
5.权利要求1的方法,其中,解码用于图片的已编码数据包括: 
解码用于图片的已编码数据中的语法元素,其指示用于图片的位平面的位平面编码模式,其中,适配多符号查找表包括从多个可用多符号查找表中选择多符号查找表,多个可用多符号查找表中的每一个适合于不同的位平面编码模式;以及 
作为使用多符号查找表来解码多个符号的一部分: 
从缓冲器加载比特流的x个比特; 
在多符号查找表中搜索加载的x个比特; 
确定表示由加载的x个比特指示的一个或多个符号的y个比特,所述一个或多个符号中的每一个表示用于图片的位平面的一个或多个比特;以及 
从缓冲器刷新y个比特。
CN201110441018.1A 2010-12-24 2011-12-26 用于提高图像或视频解码中的操作效率的方法 Active CN102547280B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/978,501 US9706214B2 (en) 2010-12-24 2010-12-24 Image and video decoding implementations
US12/978501 2010-12-24

Publications (2)

Publication Number Publication Date
CN102547280A CN102547280A (zh) 2012-07-04
CN102547280B true CN102547280B (zh) 2015-02-11

Family

ID=46316780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110441018.1A Active CN102547280B (zh) 2010-12-24 2011-12-26 用于提高图像或视频解码中的操作效率的方法

Country Status (3)

Country Link
US (1) US9706214B2 (zh)
CN (1) CN102547280B (zh)
HK (1) HK1170351A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI463878B (zh) * 2009-02-19 2014-12-01 Sony Corp Image processing apparatus and method
DK2485488T3 (en) * 2011-02-02 2017-07-31 Nagravision Sa Media decoder and a decoding method which allows for the tracking of the media decoder
CN107426575B (zh) * 2011-02-16 2021-02-19 太阳专利托管公司 影像编码方法、装置及影像解码方法、装置
US8743967B2 (en) * 2011-03-09 2014-06-03 Vixs Systems, Inc. Multi-format video decoder with vector processing instructions and methods for use therewith
US20120314775A1 (en) * 2011-06-08 2012-12-13 Vixs Systems, Inc. Video decoder with transposing vector processor and methods for use therewith
US9699457B2 (en) 2011-10-11 2017-07-04 Qualcomm Incorporated Most probable transform for intra prediction coding
EP2930936A4 (en) * 2012-12-10 2016-11-02 Lg Electronics Inc IMAGE DECODING METHOD AND APPARATUS USING THE SAME
GB2518823A (en) * 2013-09-25 2015-04-08 Sony Corp Data encoding and decoding
US9800898B2 (en) 2014-10-06 2017-10-24 Microsoft Technology Licensing, Llc Syntax structures indicating completion of coded regions
US9854261B2 (en) 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
US9998746B2 (en) * 2016-02-10 2018-06-12 Amazon Technologies, Inc. Video decoder memory optimization
US9712830B1 (en) 2016-09-15 2017-07-18 Dropbox, Inc. Techniques for image recompression
EP4216554A1 (en) * 2018-06-03 2023-07-26 LG Electronics Inc. Method and device for processing video signal by using reduced transform
US10645396B2 (en) * 2018-06-04 2020-05-05 Tencent America LLC Method and apparatus for implicit transform splitting
US10812819B2 (en) * 2018-10-07 2020-10-20 Tencent America LLC Method and apparatus for video coding
KR20230154085A (ko) * 2018-12-17 2023-11-07 엘지전자 주식회사 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치
CN113228627B (zh) * 2018-12-25 2023-04-25 浙江大华技术股份有限公司 图像处理系统和方法
US11310504B2 (en) * 2020-07-30 2022-04-19 Tencent America LLC Complexity reduction for 32-p and 64-p LGT

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0909094A1 (en) * 1997-10-07 1999-04-14 CANAL+ Société Anonyme Multithread data processor
CN1366775A (zh) * 2000-04-11 2002-08-28 三菱电机株式会社 压缩视频的代码转换方法
CN101313585A (zh) * 2005-10-03 2008-11-26 诺基亚公司 针对独立变量的自适应可变长度码

Family Cites Families (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309754A (en) 1979-07-30 1982-01-05 International Business Machines Corp. Data interface mechanism for interfacing bit-parallel data buses of different bit width
US4642756A (en) 1985-03-15 1987-02-10 S & H Computer Systems, Inc. Method and apparatus for scheduling the execution of multiple processing tasks in a computer system
EP0537721B1 (en) 1991-10-15 1998-11-25 Hewlett-Packard Company Hardware-configured operating system kernel for a multitasking processor
EP0562845B1 (en) 1992-03-24 1999-02-03 Kabushiki Kaisha Toshiba Variable length code recording/playback apparatus for a video recorder
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
US5694179A (en) 1994-12-23 1997-12-02 Electronics And Telecommunications Research Institute Apparatus for estimating a half-pel motion in a video compression method
US6002801A (en) 1995-04-18 1999-12-14 Advanced Micro Devices, Inc. Method and apparatus for improved video decompression by selection of IDCT method based on image characteristics
DE19530483A1 (de) 1995-08-18 1997-02-20 Siemens Ag Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks
JPH10229420A (ja) 1997-02-17 1998-08-25 Matsushita Electric Ind Co Ltd 通信システム
US5909559A (en) 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6006303A (en) 1997-08-28 1999-12-21 Oki Electric Industry Co., Inc. Priority encoding and decoding for memory architecture
EP0919953B1 (en) 1997-11-28 2004-08-18 Matsushita Electric Industrial Co., Ltd Audio-video decoding system
JP3935252B2 (ja) 1997-12-26 2007-06-20 キヤノン株式会社 画像形成装置及びジョブ処理方法
US6823016B1 (en) 1998-02-20 2004-11-23 Intel Corporation Method and system for data management in a video decoder
JPH11252552A (ja) 1998-03-05 1999-09-17 Sony Corp ビデオ信号の圧縮符号化方法及び圧縮符号化装置、並びに、圧縮符号化データの多重化方法及び多重化装置
US6298166B1 (en) 1998-03-30 2001-10-02 Seiko Epson Corporation Image transformations in the compressed domain
US6859496B1 (en) 1998-05-29 2005-02-22 International Business Machines Corporation Adaptively encoding multiple streams of video data in parallel for multiplexing onto a constant bit rate channel
JP4146950B2 (ja) 1998-11-04 2008-09-10 キヤノン株式会社 画像形成装置、画像形成装置における表示制御方法及び記憶媒体
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6249288B1 (en) 1998-12-14 2001-06-19 Ati International Srl Multi thread display controller
US7370325B1 (en) 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
US6771824B1 (en) 1999-12-28 2004-08-03 Lucent Technologies Inc. Adaptive variable length decoding method
US6445314B1 (en) * 2000-03-01 2002-09-03 Cisco Technology Inc. System and method for the decoding of variable length codes
JP2002010216A (ja) 2000-04-20 2002-01-11 Canon Inc 復号化装置及びその制御方法並びに記憶媒体
US7206016B2 (en) 2000-05-01 2007-04-17 Polycom, Inc. Filtering artifacts from multi-threaded video
EP1156674A1 (en) 2000-05-19 2001-11-21 THOMSON multimedia Method and device for decoding a video data stream in special reproduction modes
US6963347B1 (en) 2000-08-04 2005-11-08 Ati International, Srl Vertex data processing with multiple threads of execution
GB2366464A (en) 2000-08-14 2002-03-06 Nokia Mobile Phones Ltd Video coding using intra and inter coding on the same data
US6757439B2 (en) 2000-12-15 2004-06-29 International Business Machines Corporation JPEG packed block structure
US20040117427A1 (en) 2001-03-16 2004-06-17 Anystream, Inc. System and method for distributing streaming media
US7366236B1 (en) 2001-06-04 2008-04-29 Cisco Sytems Canada Co. Source adaptive system and method for 2D iDCT
US7499960B2 (en) 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
US7206448B2 (en) 2002-02-28 2007-04-17 At&T Corp. System and method for using pattern vectors for video and image coding and decoding
US7920624B2 (en) 2002-04-01 2011-04-05 Broadcom Corporation Inverse quantizer supporting multiple decoding processes
US6963613B2 (en) 2002-04-01 2005-11-08 Broadcom Corporation Method of communicating between modules in a decoding system
US8401084B2 (en) 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
US7034897B2 (en) 2002-04-01 2006-04-25 Broadcom Corporation Method of operating a video decoding system
CN101018329B (zh) 2002-04-19 2014-05-14 松下电器产业株式会社 图像解码方法及图像解码装置
US6653955B1 (en) * 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
US7376280B2 (en) 2002-07-14 2008-05-20 Apple Inc Video encoding and decoding
US7099389B1 (en) 2002-12-10 2006-08-29 Tut Systems, Inc. Rate control with picture-based lookahead window
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US7646817B2 (en) 2003-03-28 2010-01-12 Microsoft Corporation Accelerating video decoding using a graphics processing unit
JP2004336451A (ja) 2003-05-08 2004-11-25 Matsushita Electric Ind Co Ltd 画像復号ユニットとそれを用いた画像符号化装置及び符号化方法並びに画像復号装置及び復号方法
US7440500B2 (en) 2003-07-15 2008-10-21 Lsi Logic Corporation Supporting motion vectors outside picture boundaries in motion estimation process
US7254272B2 (en) 2003-08-21 2007-08-07 International Business Machines Corporation Browsing JPEG images using MPEG hardware chips
US7627039B2 (en) 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
US7317839B2 (en) 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7782954B2 (en) 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
EP1536647A1 (en) 2003-11-26 2005-06-01 STMicroelectronics Limited A video decoding device
US7379608B2 (en) 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
CN1910553A (zh) 2004-01-08 2007-02-07 皇家飞利浦电子股份有限公司 基于存储器要求在多处理器系统中进行任务调度的方法和设备
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7869503B2 (en) 2004-02-06 2011-01-11 Apple Inc. Rate and quality controller for H.264/AVC video coder and scene analyzer therefor
US6989773B2 (en) 2004-02-13 2006-01-24 Hewlett-Packard Development Company, L.P. Media data encoding device
JP4095559B2 (ja) 2004-02-13 2008-06-04 株式会社東芝 H.264コーデックic、dvd再生装置、h.264コーデック方法
JP2007526687A (ja) 2004-02-19 2007-09-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変ブロック長信号の復号化スキーム
KR100631777B1 (ko) 2004-03-31 2006-10-12 삼성전자주식회사 다 계층의 모션 벡터를 효율적으로 압축하는 방법 및 장치
CN101686364B (zh) 2004-04-28 2013-03-13 松下电器产业株式会社 流产生装置,流产生方法,编码装置,编码方法,记录介质及其程序
US20060002479A1 (en) 2004-06-22 2006-01-05 Fernandes Felix C A Decoder for H.264/AVC video
US20050289505A1 (en) 2004-06-25 2005-12-29 Williams Stanley N Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology
EP1779673A1 (en) 2004-07-15 2007-05-02 Qualcomm Incorporated H.264 spatial error concealment based on the intra-prediction direction
US7558428B2 (en) 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
WO2006031925A2 (en) 2004-09-15 2006-03-23 Nokia Corporation Providing zapping streams to broadcast receivers
JP4867235B2 (ja) 2004-10-26 2012-02-01 ソニー株式会社 情報処理装置および情報処理方法、記録媒体、並びに、プログラム
JP4375305B2 (ja) 2004-10-26 2009-12-02 ソニー株式会社 情報処理装置および情報処理方法、記録媒体、並びに、プログラム
KR100647295B1 (ko) 2004-11-10 2006-11-23 삼성전자주식회사 비디오 디코더에서의 인접 정보 처리 장치 및 방법과 그방법을 수행하기 위한 프로그램이 저장된 기록 매체
US20060114995A1 (en) 2004-12-01 2006-06-01 Joshua Robey Method and system for high speed video encoding using parallel encoders
US20060133507A1 (en) 2004-12-06 2006-06-22 Matsushita Electric Industrial Co., Ltd. Picture information decoding method and picture information encoding method
US20060126726A1 (en) 2004-12-10 2006-06-15 Lin Teng C Digital signal processing structure for decoding multiple video standards
US7430238B2 (en) 2004-12-10 2008-09-30 Micronas Usa, Inc. Shared pipeline architecture for motion vector prediction and residual decoding
US20060126744A1 (en) 2004-12-10 2006-06-15 Liang Peng Two pass architecture for H.264 CABAC decoding process
US7817723B2 (en) 2004-12-14 2010-10-19 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E. V. Apparatus and method of optimizing motion estimation parameters for encoding a video signal
EP1675402A1 (en) 2004-12-22 2006-06-28 Thomson Licensing Optimisation of a quantisation matrix for image and video coding
EP1839446A1 (en) 2005-01-19 2007-10-03 THOMSON Licensing Method and apparatus for real time parallel encoding
US7565021B2 (en) 2005-03-01 2009-07-21 Microsoft Corporation Efficient implementation of block-based transform on graphics processing unit
WO2006096612A2 (en) 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
US7995656B2 (en) 2005-03-10 2011-08-09 Qualcomm Incorporated Scalable video coding with two layer encoding and single layer decoding
US20060215754A1 (en) 2005-03-24 2006-09-28 Intel Corporation Method and apparatus for performing video decoding in a multi-thread environment
JP4261508B2 (ja) 2005-04-11 2009-04-30 株式会社東芝 動画像復号装置
JP4374548B2 (ja) 2005-04-15 2009-12-02 ソニー株式会社 復号装置および方法、記録媒体、並びに、プログラム
US7920633B2 (en) 2005-04-22 2011-04-05 Broadcom Corporation Method and system for parallel processing video data
US8902989B2 (en) 2005-04-27 2014-12-02 Broadcom Corporation Decoder system for decoding multi-standard encoded video
KR100763182B1 (ko) 2005-05-02 2007-10-05 삼성전자주식회사 다계층 기반의 가중 예측을 이용한 비디오 코딩 방법 및장치
US20070121728A1 (en) 2005-05-12 2007-05-31 Kylintv, Inc. Codec for IPTV
EP1773063A1 (en) 2005-06-14 2007-04-11 Thomson Licensing Method and apparatus for encoding video data, and method and apparatus for decoding video data
US7119723B1 (en) 2005-07-28 2006-10-10 Texas Instruments Incorporated Decoding variable length codes while using optimal resources
US7617436B2 (en) 2005-08-02 2009-11-10 Nokia Corporation Method, device, and system for forward channel error recovery in video sequence transmission over packet-based network
KR100770704B1 (ko) 2005-08-04 2007-10-29 삼성전자주식회사 픽쳐 스킵 방법 및 장치
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US8306112B2 (en) 2005-09-20 2012-11-06 Mitsubishi Electric Corporation Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium
US8537903B2 (en) 2005-09-23 2013-09-17 Entropic Communications, Inc. De-blocking and de-ringing systems and methods
EP1952638B1 (en) 2005-10-12 2020-05-13 InterDigital VC Holdings, Inc. Region of interest h.264 scalable video coding
US7778494B2 (en) 2005-10-13 2010-08-17 Texas Instruments Incorporated FIR-based interpolation in advanced video codecs on VLIW processor
JP4927753B2 (ja) 2005-11-08 2012-05-09 パナソニック株式会社 動画像符号化方法、動画像復号化方法、動画像符号化装置、動画像復号化装置、および半導体装置
US7245242B2 (en) 2005-11-28 2007-07-17 Conexant Systems, Inc. Decoding systems and methods
US7983343B2 (en) 2006-01-12 2011-07-19 Lsi Corporation Context adaptive binary arithmetic decoding for high definition video
KR100739790B1 (ko) 2006-02-02 2007-07-13 삼성전자주식회사 인트라 예측 모드 결정 방법 및 장치
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US8767836B2 (en) 2006-03-27 2014-07-01 Nokia Corporation Picture delimiter in scalable video coding
US7694102B2 (en) 2006-03-30 2010-04-06 International Business Machines Corporation Systems and methods for self-tuning memory
EP1841072B1 (de) 2006-03-30 2016-06-01 Unify GmbH & Co. KG Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten
US8787465B2 (en) 2006-03-31 2014-07-22 Intel Corporation Method for neighboring block data management of advanced video decoder
US7626518B2 (en) 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding systems and methods in computational core of programmable graphics processing unit
US8369419B2 (en) 2006-06-16 2013-02-05 Via Technologies, Inc. Systems and methods of video compression deblocking
US7965767B2 (en) 2006-06-30 2011-06-21 Intel Corporation Two-dimensional filtering architecture
US8699583B2 (en) 2006-07-11 2014-04-15 Nokia Corporation Scalable video coding and decoding
US7586425B2 (en) 2006-07-11 2009-09-08 Nokia Corporation Scalable video coding and decoding
CN1960472A (zh) 2006-08-14 2007-05-09 中兴通讯股份有限公司 一种多媒体移动终端及其接收多媒体数据的处理方法
US8213518B1 (en) 2006-10-31 2012-07-03 Sony Computer Entertainment Inc. Multi-threaded streaming data decoding
US8218640B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture decoding using same-picture reference for pixel reconstruction
US8218641B2 (en) 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture encoding using same-picture reference for pixel reconstruction
US8121196B2 (en) 2006-11-02 2012-02-21 Corel Corporation Method and apparatus for multi-threaded video decoding
US7573407B2 (en) 2006-11-14 2009-08-11 Qualcomm Incorporated Memory efficient adaptive block coding
KR101307050B1 (ko) 2006-12-14 2013-09-11 톰슨 라이센싱 비트 심도 스케일러빌리티를 위하여 인핸스먼트 계층 레시듀얼 예측을 이용하여 비디오 데이터를 인코딩 및/또는 디코딩하기 위한 방법 및 장치
CN101584216A (zh) 2006-12-27 2009-11-18 英特尔公司 解码和编码视频信息的方法和装置
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US8503809B2 (en) 2007-05-17 2013-08-06 Sony Corporation Information processing apparatus and method to entropy code upon processing of predetermined number of precincts
US8396082B2 (en) 2007-06-05 2013-03-12 Core Wireless Licensing S.A.R.L. Time-interleaved simulcast for tune-in reduction
US8265144B2 (en) * 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US20090109988A1 (en) 2007-10-26 2009-04-30 Chowdhary Musunuri Video Decoder with an Adjustable Video Clock
US8121187B2 (en) 2007-12-05 2012-02-21 Alcatel Lucent Method and apparatus for performing multiple bit rate video encoding and video stream switching
US8015220B1 (en) 2008-08-05 2011-09-06 Smith Micro Software, Inc. Block-based differencing algorithm
EP2392138A4 (en) 2009-01-28 2012-08-29 Nokia Corp METHOD AND APPARATUS FOR VIDEO ENCODING AND DECODING
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
US9819358B2 (en) * 2010-02-19 2017-11-14 Skype Entropy encoding based on observed frequency
US9256468B2 (en) 2010-08-24 2016-02-09 Red Hat, Inc. Dynamic incremental memory allocation on program stack

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0909094A1 (en) * 1997-10-07 1999-04-14 CANAL+ Société Anonyme Multithread data processor
CN1366775A (zh) * 2000-04-11 2002-08-28 三菱电机株式会社 压缩视频的代码转换方法
CN101313585A (zh) * 2005-10-03 2008-11-26 诺基亚公司 针对独立变量的自适应可变长度码

Also Published As

Publication number Publication date
US20120163470A1 (en) 2012-06-28
HK1170351A1 (zh) 2013-02-22
CN102547280A (zh) 2012-07-04
US9706214B2 (en) 2017-07-11

Similar Documents

Publication Publication Date Title
CN102547280B (zh) 用于提高图像或视频解码中的操作效率的方法
JP5733590B2 (ja) 変換係数レベルを符号化するコンテキストモデリング技法
CN100452883C (zh) 处理视频图像的方法
KR101907043B1 (ko) 이미지들을 인코딩 및 디코딩하기 위한 방법, 인코딩 및 디코딩 디바이스, 및 압축 컴퓨터 프로그램들
KR102658291B1 (ko) 이미지들을 코딩 및 디코딩하는 방법, 코딩 및 디코딩 디바이스 및 그에 대응하는 컴퓨터 프로그램들
CN103597838B (zh) 对末位有效系数的位置进行编码和解码的方法和设备
US9001882B2 (en) System for entropy decoding of H.264 video for real time HDTV applications
KR20040045842A (ko) 개선된 가변 길이 디코더
CN104737542A (zh) 用于下一代视频的内容自适应熵编码
CN103262534A (zh) 改进熵编码和解码的方法及装置
CN104106264A (zh) 元数据辅助的视频解码
JP2021520087A (ja) Cabacのニューラルネットワーク実装に基づくビデオの符号化及び復号のための方法及び機器
US20160241854A1 (en) Method and Apparatus for Arithmetic Decoding
KR20070028404A (ko) 픽처를 저장하는 방법, 비디오 복호기, 비디오 부호기,휴대 장치 및 컴퓨터 프로그램 제품
Silveira et al. Efficient reference frame compression scheme for video coding systems: algorithm and VLSI design
KR102125601B1 (ko) 비변환 코딩을 위한 스캐닝 순서 조정 기법
CN101790096B (zh) 基于二重预测的编解码方法及装置
Li et al. Lossless image compression algorithm and hardware architecture for bandwidth reduction of external memory
US10728578B2 (en) Bias minimization for successive image reconstruction based on embedded codec circuitry
US20120147972A1 (en) Image decoding apparatus, image decoding method, image encoding apparatus, image encoding method, and program
WO2010095181A1 (ja) 可変長復号化装置
CN105007486A (zh) 编码和解码图像的方法、编码和解码设备、计算机程序
CN102148971A (zh) 一种高性能低功耗cavlc解码器设计方法
Li et al. A hardware architecture of cabac encoding and decoding with dynamic pipeline for h. 264/avc
JP2010268094A (ja) 画像復号化装置および画像復号化方法

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: 1170351

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150618

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

Effective date of registration: 20150618

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1170351

Country of ref document: HK