CN102845065A - 用于重排并行熵编码和解码的方法和设备 - Google Patents
用于重排并行熵编码和解码的方法和设备 Download PDFInfo
- Publication number
- CN102845065A CN102845065A CN2011800197029A CN201180019702A CN102845065A CN 102845065 A CN102845065 A CN 102845065A CN 2011800197029 A CN2011800197029 A CN 2011800197029A CN 201180019702 A CN201180019702 A CN 201180019702A CN 102845065 A CN102845065 A CN 102845065A
- Authority
- CN
- China
- Prior art keywords
- bit
- group
- context
- rearrangement
- scheduling
- 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
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Abstract
一种用于根据上下文模型特定的重排调度、通过对输入序列中的比特进行重排以形成比特组的并行上下文建模的方法。重排调度被开发为使得形成的比特组满足两个条件:第一,比特组中的每个比特的上下文与该组中的每个其他比特的上下文不同;以及独立于该组中的每个其他比特来确定该组中的每个比特的上下文。该并行上下文建模可以在编码或解码操作中使用。
Description
相关申请的交叉引用
本申请要求在2010年4月19日提交的并且与之共有的美国临时申请No.61/325,806的优先权。
技术领域
本申请总体涉及数据压缩,具体地涉及编码器、解码器和用于对有限字母表源进行熵编码的方法。
背景技术
不论有损还是无损,数据压缩通常使用熵编码来将解相关信号编码为比特序列,即比特流。高效数据压缩具有广泛应用,如图像、音频和视频编码。视频编码的当前最新技术是ITU-T H.264/MPEG AVC视频编码标准。该标准定义了针对不同应用的多个不同简档,包括主简档、基线简档等等。
存在用于编码/解码图像和视频的多个标准和行业格式(包括H.264),采用有损压缩过程来产生二进制数据。例如,H.264包括预测操作以获得残差数据,接着进行DCT变换和DCT系数的量化。然后,对得到的数据(包括量化系数,运动矢量、编码模式和其他相关数据)进行熵编码,以产生数据比特流,从而发送或存储在计算机可读介质上。
已经开发了多个编码方案来编码二进制数据。例如,可以使用Huffman码来编码JPEG。H.264标准允许两种可能的熵编码过程:上下文自适应可变长度编码(CAVLC)或上下文自适应二进制算术编码(CABAC)。CABAC得到比CAVLC更大的压缩,但是CABAC计算要求更高。一些行业格式包括上下文自适应算术熵编码方案。其他标准可以是HEVC、SVC、3DV标准。在任一这些情况下,编码方案对二进制数据操作,以产生编码数据的连续比特流。在解码器处,解码方案接收比特流,并对序列比特流进行熵解码,以重构二进制数据。
有利地,提供一种改进的编码器、解码器和熵编码方法。
附图说明
现在参照附图作为示例,附图示出了本申请的示例实施例,其中:
图1以框图形式示出了用于对视频进行编码的编码器;
图2以框图形式示出了用于对视频进行解码的解码器;
图3示出了编码过程的框图;
图4以框图形式示出了根据本申请一方面的示例编码器;
图5以框图形式示出了根据本申请一方面的示例解码器;
图6以流程图形式示出了使用并行熵编码器对输入符号序列进行编码的示例方法;
图7以流程图形式示出了使用并行熵解码器对编码数据的比特流进行解码的示例方法;
图8示出了编码器的示例实施例的简化框图;
图9示出了解码器的示例实施例的简化框图;
图10以流程图形式示出对输入序列进行重排并行编码的方法;以及
图11以流程图形式示出对编码比特流进行重排并行解码的方法。
在不同的附图中可能已经使用类似的参考标号来标记类似的组份。
具体实施方式
在一方面,本申请描述了一种用于对输入比特序列进行编码的方法。该方法包括:根据预定的重排调度将输入序列重排成输入比特组;针对每个输入比特组,并行确定所述输入比特组中的每个输入比特的上下文,并且基于每个输入比特的上下文将该比特与概率相关联,其中所述组中的每个输入比特的上下文与所述组中的每个其他输入比特的上下文不同,并且独立于所述组中的其他输入比特来确定所述组中的每个输入比特的上下文;以及对输入比特进行熵编码以生成编码序列。
在另一方面,本申请描述了一种用于对输入符号序列进行编码的编码器。该编码器包括处理器、存储器以及编码应用,该编码应用存储在存储器中,并且包含用于将所述处理器配置为根据上述方法对输入序列进行编码的指令。
在又一方面,本申请描述了一种用于对编码数据的比特流进行解码以重构比特序列的方法。该方法包括:对编码数据的比特流进行解码以产生解码比特组,其中,对于每个比特组,产生所述比特组的解码包括:确定针对所述比特组中的每个比特的上下文,并且基于该比特的上下文将该比特与概率相关联,以及其中所述比特组中的每个比特的上下文与所述组中的每个其他比特的上下文不同,并且独立于所述组中的每个其他比特来确定所述组中的每个比特的上下文;以及基于预定的重排调度重排比特组中的比特以产生重构的比特序列。
在又一方面,本申请描述了一种用于对编码数据的比特流进行解码以重构符号序列的解码器。该解码器包括处理器、存储器以及解码应用,该解码应用存储在存储器中,并且包含用于将所述处理器配置为根据上述方法对比特流进行解码的指令。
在另一方面,本申请描述了一种计算机可读介质,其包含计算机可执行指令,所述指令在执行时将处理器配置为执行此处描述的一种或多种方法。
结合附图,通过阅读以下示例的描述,本领域普通技术人员将理解本申请的其他方面和特征。
以下描述总体涉及数据压缩,具体地,涉及有限字母表源(如二进制源)的高效并行编码。在以下给出的许多示例中,给出这种编码和解码方案的特定应用。例如,以下许多示意参照视频编码。可以认识到,本申请不限于视频编码或图像编码。
在以下描述中,参照H.264标准来描述示例实施例。本领域技术人员将理解,本申请不限于H.264,而是可以适用于其他视频编码/解码标准。还可以认识到,本申请不必限于视频编码/解码,可以适用于任何二进制源的编码/解码。
在以下描述中,在视频应用的上下文中,在某种程度上可互换地使用术语帧和片(slice)。本领域技术人员将认识到,在H.264标准的情况下,帧可以包含一个或多个片。还将认识到,取决于适用的视频编码标准的特定要求,特定编码/解码操作是逐帧执行的,一些编码/解码操作是逐片执行的。在任何特定实施例中,适用的视频编码标准可以确定是否关于帧和/或片来执行以下描述的操作,视情况而定。相应地,根据本公开,本领域技术人员将理解,这里描述的特定操作或过程以及对帧、片或两者的特定引用对于给定实施例是否适用于帧、片或两者。
现在参照图1,图1以框图形式示出了用于对视频进行编码的编码器10。还参照图2,图2示出了用于对视频进行解码的解码器50的框图。可以认识到,这里描述的编码器10和解码器50均可以在专用或通用计算设备(包含一个或多个处理单元和存储器)上实现。编码器10或解码器50执行的操作可以通过例如专用集成电路或通过通用处理器可执行的存储程序指令来实现,视情况而定。设备可以包括附加软件,包括例如用于控制基本设备功能的操作系统。关于以下描述,本领域技术人员可以认识到在其中可以实现编码器10或解码器50的设备和平台的范围。
编码器10接收视频源12并产生编码比特流14。解码器50接收编码比特流14并输出解码视频帧16。编码器10和解码器50可以被配置为符合多个视频压缩标准来操作。例如,编码器10和解码器50可以符合H.264/AVC。在其他实施例中,编码器10和解码器50可以符合其他视频压缩标准,包括H.264/AVC标准的演进。
编码器10包括空间预测器21、编码模式选择器20、变换处理器22、量化器24和熵编码器24。本领域技术人员可以认识到,编码模式选择器20确定视频源的适合编码模式,例如对象帧/片是I、P还是B类型,帧/片内的特定宏块是帧间还是帧内编码。变换处理器22对空间域数据执行变换。具体地,变换处理器22应用基于块的变换来将空间域数据转换为频谱分量。例如,在许多实施例中,使用离散余弦变换(DCT)。在一些实例中,可以使用其他变换,如离散正弦变换等等。将基于块的变换应用于像素数据块得到变换域系数的集合。量化器24对变换域系数的集合进行量化。然后,熵编码器26对量化系数和关联信息(如运动矢量、量化参数等等)进行编码。
帧内编码的帧/片(即,类型I)不参照其他帧/片进行编码。换言之,它们不采用时间预测。然而,帧内编码的帧依赖于帧/片内的空间预测,如图1中通过空间预测器21进行说明。即,在对特定块编码时,可以将块中的数据与针对该帧/片已经编码的块内邻近像素的数据进行比较。使用预测算法,可以将块的源数据转换为残差数据。然后,变换处理器22对残差数据进行编码。例如,H.264规定了4x4变换块的9种空间预测模式。在一些实施例中,这9种模式中的每一种可以用于独立处理块,然后使用速率失真优化来选择最佳模式。
H.264标准还规定了使用运动预测/补偿来利用时间预测。相应地,编码器10具有反馈环路,反馈环路包括:解量化器28、反变换处理器30和解块处理器32。这些单元反映了解码器50实现以再现帧/片的解码过程。帧存储器34用于存储再现帧。按照这种方式,运动预测基于在解码器50处重构帧是什么,而不基于原始帧,由于编码/解码中涉及的有损压缩,原始帧可能不同于重构帧。运动预测器36使用帧存储器34中存储的帧/片作为源帧/片,来与当前帧进行比较,以识别相似块。相应地,对于应用运动预测的宏块,变换处理器22编码的“源数据”是出自运动预测过程的残差数据。残差数据是表示参考块与当前块之间的差异(如果存在)的像素数据。关于参考帧和/或运动矢量的信息可以不由变换处理器22和/或量化器24处理,而是可以提供给熵编码器26,作为比特流的一部分与量化系数一起编码。
本领域技术人员将认识到用于实现H.264编码器的细节和可能变型。
解码器50包括:熵解码器52、解量化器54、反变换处理器56、空间补偿器57和解块处理器60。帧缓冲器58提供重构帧以便应用运动补偿的运动补偿器62使用。空间补偿器57表示根据先前解码块来恢复特定帧内编码块的视频数据的操作。
熵解码器52接收并解码比特流14,以恢复量化系数。在熵解码过程中,还可以恢复辅助信息,如果适用,一些辅助信息可以提供给运动补偿环路,以用于运动补偿。例如,熵解码器52可以恢复运动矢量和/或针对帧间编码宏块的参考帧信息。
然后,解量化器54对量化系数进行解量化,以产生变换域系数,然后,反变换处理器56对变换域系数进行反变换,以重建“视频数据”。可以认识到,在一些情况下,如对于帧内编码宏块,重建的“视频数据”是相对于帧内先前解码块的、用于空间补偿的残差数据。空间补偿器57根据残差数据和来自先前解码块的像素数据来产生视频数据。在其他情况下,如对于帧间编码宏块,来自反变换处理器56的重建“视频数据”是相对于来自不同帧的参考块的、用于运动补偿的残差数据。这里,空间和运动补偿均可以称为“预测操作”。
运动补偿器62在帧缓冲器58内定位专用于特定帧间编码宏块的参考块。运动补偿器62基于专用于帧间编码宏块的参考帧信息和运动矢量来进行该操作。然后,运动补偿器62提供参考块像素数据,以与残差数据组合,得到针对该宏块的重建视频数据。
然后,可以对重构帧/片应用解块过程,如解块处理器60所示。在解块之后,输出帧/片作为解码视频帧16,例如以在显示设备上显示。可以理解,视频回放机(如计算机、机顶盒、DVD或蓝光播放器和/或移动手持设备)可以在输出设备上显示之前将解码帧缓冲在存储器中。
熵编码是所有无损和有损压缩方案(包括上述视频压缩)的基本部分。熵编码的目的是表示通常由独立但是不同分布过程建模为比特序列的假定解相关信号。用于实现该操作的技术必须不依赖于解相关信号如何产生,但是可以依赖于每个即将到来符号的相关概率估计。
实际中使用两种常见熵编码方法:第一种是可变长度编码,利用码字来标识输入符号或输入序列;第二种是范围(或算术)编码,对[0,1)区间的子区间序列进行封装,以得到单一区间,根据该单一区间,使用定义这些区间的概率分布,可以重构原始序列。典型地,范围编码方法往往提供更好的压缩,而VLC方法有可能更快。在任一情况下,输入序列的符号来自有限字母表。
熵编码的特殊情况是输入字母表限于二进制符号时。这里,VLC方案必须将输入符号组合在一起以具有任何压缩可能,但是由于概率分布可以在每个比特之后改变,难以进行高效的码重构。相应地,范围编码由于其更大的灵活性而被认为具有更大的压缩,但是算术码的较高计算要求妨碍了实际应用。
这些编码方法的共同挑战在于其固有本质是串行的。在一些重要的实际应用中,如高质量视频解码,熵解码器必须实现非常高的输出速度,对于具有有限处理能力或速度的设备而言这可能成为问题。
在一些熵编码方案(如CAVLC和CABAC,两者均在H.264/HAV中使用)中使用的技术之一是上下文建模。对于上下文建模,输入序列的每个比特具有上下文,其中上下文由该比特之前的比特给出。在一阶上下文模型中,上下文可以完全依赖于先前比特(符号)。在许多情况下,上下文模型可以是自适应的,使得在处理序列的其他比特时,可以改变与给定上下文的符号相关联的概率。
参照图3,图3示出了编码过程100的框图。编码过程100包括上下文建模组件104和熵编码器108。上下文建模组件104接收输入序列x 102,在本示例中,x是比特序列(b0,b1,...bn)。上下文建模组件104基于序列中的一个或多个先前比特来确定每个比特bi的上下文,并基于自适应上下文模型来确定与该比特bi相关联的概率pi,其中该概率是该比特将是最小可能符号(LPS)的概率。在二进制实施例中,根据习惯或应用,LPS可以是“0”或“1”。上下文建模组件输出输入序列(即,比特(b0,b1,...bn))以及其相应概率(p0,p1,...pn)。这些概率是利用上下文模型确定的估计概率。然后,将该数据输入熵编码器106,熵编码器106使用概率信息对输入序列进行编码。例如,熵编码器106可以是二进制算术编码器。熵编码器106输出编码数据的比特流108。
可以认识到,串行处理输入序列的每个比特以更新上下文模型,并且将串行比特和概率信息提供给熵编码器106,然后,熵编码器106对比特进行串行熵编码,以创建比特流108。本领域技术人员可以认识到,在一些实施例中,可以不从上下文建模组件104向熵编码器106传送显式概率信息;而是在一些实例中,对于每个比特,上下文建模组件104可以向熵编码器106发送反映上下文建模组件104基于上下文模型和输入序列102的当前上下文进行的概率估计的索引或其他指示符。该索引或其他指示符指示与其对应比特相关联的概率估计。
根据一方面,本申请提出具有用于熵编码和解码的并行处理架构的编码器和解码器。该架构包括:上下文建模组件,针对输入序列的每个比特,基于上下文模型来确定估计概率。上下文建模组件基于每个比特的估计概率向其分配N个“源”之一。按照这种方式,N个源中的每一个建立向其分配的比特子序列。然后,N个子序列中的每一个由其自身熵编码器进行并行熵编码,以产生比特流。然后,将N个比特流组合以形成单一比特流。向单一比特流添加索引数据,以使得解码器能够将单一比特流解复用为N个比特流。
在解码器处,对单一比特流进行解复用,以获得N个比特流,然后,对N个比特流进行并行熵解码,以恢复N个子序列。然后,根据上下文模型对N个子序列的比特进行交织,以重构输入序列。
现在参照图4,图4以框图形式示出了示例编码器200。编码器200接收输入序列x 102,在本示例中x为二进制序列。编码器200输出编码数据的比特流208。
编码器200包括上下文建模组件和解复用器204。上下文建模组件和解复用器204使用上下文模型来产生N个子序列(b1,b2,...bn)。具体地,对于输入序列x 102的每个比特,使用上下文模型来确定其上下文,并且基于其上下文来确定估计概率并将估计概率与该比特相关联。然后,基于每个比特的相关联估计概率,将每个比特分配给N个子序列之一。在一个示例实施例中,存在上下文模型定义的N个概率pi(i=0,1,...,N-1)和N个子序列;然而,在一些示例实施例中,存在比概率更小的子序列,这意味着与一些概率相关联的比特可以被分配给相同的子序列。在一些实施例中,可以存在比概率更多的子序列,这意味着具有相同关联概率的一些比特可以分到两个或更多子序列中。
N个子序列可以被认为是单独的“源”。相应地,这里可互换地使用术语“源”和“子序列”。在本申请所称比特“指派”或“分配”给源的程度上,其指示该比特被添加至或附加至与特定概率估计相关联的子序列。
上下文模型可以是静态的或者可以是自适应的。将理解,在一些序列的情况下,尤其是二进制序列,自适应上下文模型可能得到比静态模型更好的性能。
编码器200包括N个并行熵编码器206(分别标为206-1,206-2,...,206-N)。每个熵编码器206对子序列之一进行编码,以产生编码子序列比特流210(分别标为210-1,210-2,...,210-N)。然后,例如使用复用器207,将编码子序列比特流210组合为单一比特流208。在本示例中,通过将子序列比特流210连接,并向比特流208添加索引信息以使解码器能够识别单一比特流208中每个编码子序列比特流210的起始,来将编码子序列比特流210复用在一起,以创建比特流208。
熵编码器206可以使用任意熵编码方案来编码子序列。在一个示例中,熵编码器可以是0阶无损编码器。在另一示例中,熵编码器206可以采用二进制算术编码方案。在另一示例中,熵编码器206可以采用静态k比特Huffman码方案。本领域技术人员可以认识到其他可能性。
在其他示例实施例中,熵编码器206可以不都采用相同编码方案。例如,熵编码器206之一可以使用静态Huffman码,而另一熵编码器206可以使用二进制算术编码方案。在这一意义上,熵编码器206是独立的。在一些实例中,有利地,可以利用一个编码方案对与特定概率相关联的特定子序列进行编码,而利用不同的编码方案对与不同概率相关联的其他子序列进行编码。
现在参照图5,图5以框图形式示出了示例解码器300。解码器300接收编码数据的单一比特流208,并输出重构序列310。
解码器300包括:解复用器302,用于解析比特流208并提取编码子序列比特流304(分别标为304-1,304-2,...,304-N)。在比特流208被格式化为包括连接的所有子序列比特流304的实施例中,解复用器302可以使用比特流208内的索引来识别子序列比特流304的起始和结束位置。
解码器300还包括N个熵解码器306(分别标为306-1,306-2,...,306-N)。每个熵解码器306接收编码子序列比特流304之一,并对编码子序列比特流304进行熵解码,以输出子序列比特流bi,i=1,2,...,N。来自N个熵解码器306的N个子序列比特流输入上下文建模组件和复用器308。上下文建模组件和复用器308对N个子序列比特流的符号(比特)进行交织,以产生重构序列310。交织基于上下文模型(编码器200使用的相同上下文模型),并使用上下文模型来确定给定上下文的估计概率。基于估计概率,上下文建模组件和复用器308能够识别从哪个子序列选择下一比特以添加至重构序列310。基于此,创建与输入序列x 102匹配的重构序列310。
现在参照图6,图6以流程图形式示出了对输入序列x进行熵编码的示例方法400。方法400从接收输入序列x的步骤402开始。输入序列x是具有概率估计Pi(bi=0)和Pi(bi=1)=1-Pi(0)的二进制符号的二进制序列B=b1,b2,...。最小可能符号(LPS)的概率估计形成有限集合:
S={Pk|1≤k≤N,0<Pk≤0.5}
输入序列x可以被认为是以任意顺序使用二进制符号的相应概率来输出二进制符号的N个源。
在示例方法400中,初始化具有N个单元的阵列。该阵列可以是对具有针对N个源中每个源的单元(即,用于收集比特以建立N个子序列中的每个子序列的单元)的存储器或寄存器的分配。在一个实施例中,每个单元可以包括两个字段:第一字段收集与其源相关联的符号,第二字段包含指向相同源的下一个单元的指针。当第一字段填充有比特时,针对该源向阵列添加另一单元。在一个实施例中,第一字段是32比特寄存器,用于收集与源相关联的符号。
方法400的步骤406示意了上下文建模和解复用操作。在步骤406中,对于输入序列x的每个符号(比特),例如基于输入序列x中的一个或多个先前比特来确定其上下文,并基于其上下文和上下文模型来确定比特的估计概率。然后,基于比特的估计概率,将比特分配给N个源之一。换言之,将比特保存在与估计概率相关联的源/子序列相对应的元素中。
在步骤408,在步骤406中处理每个符号之后,如果上下文模型是自适应的,则可以更新上下文模型。
步骤406和408逐比特重复,以串行处理输入序列x,基于其比特的估计概率将其比特分配到N个子序列。在步骤410中,如果检测到刷新(flush)事件,则步骤406和408的循环结束。刷新事件可以是适于应用的任何触发事件。例如,在视频编码中,刷新事件可以是帧结束或片结束。在图像处理中,刷新事件可以是图像结束。在一个实施例中,刷新事件甚至可以是宏块结束。刷新事件还可以基于一个或多个子序列满足的阈值或准则。例如,如果至少一个子序列超过阈值符号数目,则可以发生刷新事件。本领域技术人员可以认识到其他可能的刷新事件。
在步骤410中发生刷新事件时,将子序列提供给其相应熵编码器,在相应熵编码器中,对子序列分别进行熵编码,以产生相应编码子序列,如步骤412所示。在一个示例实施例中,熵编码器被配置为使用静态8比特Huffman编码来编码子序列。备选地,可以使用其他编码方案,包括二进制算术编码。还可以使用编码方案的组合,例如针对每个子序列使用不同的编码方案。可以认识到,由于熵编码器的并行架构,步骤412中子序列的熵编码并行进行。
在步骤414,通过对N个编码子序列进行复用来构造单一比特流。在本实施例中,通过以已知顺序将比特流的有效载荷部分中的编码比特流连接,并向比特流提供前缀字段来构造单一比特流,该前缀字段包含用于标识每个编码子序列在比特流中的位置的索引信息。
将认识到,在视频编码的情况下,针对多个帧或片,可以重复步骤406、408、410、412和414,以产生编码多个帧的比特流。
将认识到,当刷新事件发生时,编码子序列可以具有不同长度。相应地,可以提供前缀字段中的索引信息,以精确定位每个编码子序列在比特流有效载荷部分中的位置。在一些实施例中,长度可以被编码并置于前缀字段中。例如,每个编码子序列k的长度(以字节为单位)可以由L(k)给出。前缀码可以定义为:
If n<128,then C(n)=n<<1;
Else if n<16512,then C(n)=((n-128)<<2)|1;
Else if n<2113664,then C(n)=((n-16512)<<3)|3;
Else C(n)=((n-2113664)<<3)|7;
其中“<<”是右移,“|”是按比特或。
可以认识到,可能存在“n”的上限,在本示例中为“L(k)”。在任何给定实施例中,该上限可以依赖于实施方式。该上限可以由可以用于给定子序列的最大字节数目或者由可以用于指定子序列长度的最大字节数目来设置。在一个实例中,L(k)的限制是其必须在4个字节之内表示,这意味着L(k)的大小限于大约216+2113664。
使用以上定义的前缀码,输出比特流的首部部分由C(L(k))给出。前缀码的上述结果确保字节对齐。可以理解,上述前缀码定义采用指数golomb码。可以认识到,可以使用其他合适的编码方案来将索引信息置于首部中,包括例如Elias码。在另一示例中,将索引信息置于前缀中而不进行编码。
在解码器处,首先对前缀码进行解码,以识别每个子序列的长度。可以认识到,通过知道子序列的长度,解码器能够识别有效载荷中每个子序列的起始和结尾。然后,解码器能够解析有效载荷字段以将有效载荷解复用为各个编码子序列。在不同的示例实施例中,首部中的索引信息可以指定每个子序列的起始比特的位置,尽管位置信息的表示可能导致大于长度信息从而需要首部中的更多比特。
现在参照图7,图7以流程图形式示出了用于对编码数据的比特流进行解码的方法500。
方法500包括在步骤502中接收编码数据的比特流。在一些实例中,比特流可以从计算机可读存储介质中读取,如例如致密光盘(CD)、数字视频光盘(DVD)、蓝光光盘等等。在一些实例中,可以在有线或无线连接上通过与一个或多个网络(可能包括因特网)的通信链路来接收比特流。
在步骤504中,解码器读取比特流的前缀字段,以提取索引信息。例如,在本实施例中,解码器提取N个编码子序列比特流的编码长度信息L(k)。基于提取和解码的长度信息,解码器识别比特流的有效载荷部分中N个编码子序列比特流的位置。相应地,在步骤506中,解码器从比特流的有效载荷字段中提取编码子序列。
在步骤508,利用N个并行熵解码器对编码子序列进行并行熵解码。每个熵解码器接收编码子序列之一,对其进行熵解码,并输出解码符号子序列。
在步骤510,对N个解码子序列进行交织,以形成重构符号序列。基于上下文模型对解码子序列进行交织。具体地,解码器基于上下文模型确定每个比特的估计概率,并基于估计概率从与该估计概率相关联的解码子序列中选择符号。
然后,在步骤512,输出重构符号序列。可以理解,步骤512可以包括向视频或图像解码器的其余部分提供重构符号序列,如这种解码器内的解量化和反变换过程。
在本实施例中,在步骤506/508,解码器能够基于以预定顺序置于有效载荷字段中的“源”来确定与有效载荷字段内的每个编码子序列比特流相关联的“源”。在这种示例实施例中,不具有符号的源在编码器处输出空(NULL)码;或者编码器确保前缀针对该源指定“0”长度编码子序列。
在另一实施例中,该顺序不是预定的。在一个示例中,编码器指定该顺序,并标识与每个编码子序列相关联的概率,例如通过将这种信息置于前缀字段中。在另一实施例中,可以将概率信息置于有效载荷字段内,作为编码子序列的前缀或后缀。在另一示例实施例中,可以使用索引方案来传送序列的顺序,而不发送显式概率。例如,每个编码器/解码器可以具有索引,子序列可以均具有指定其编码器/解码器索引的首部部分,这允许比特流全部避免首部部分。本领域技术人员可以认识到其他可能性。
在一些实例中,并行编码或解码处理单元的数目d,即并行熵编码器206(图4)或解码器306(图5)的数目,可以不同于不同估计概率的数目N。在一种情况下,解码器可以具有比N个概率更少的并行解码器306。解码器可以采用调度来使一个或多个解码器处理多个子序列,从而将并行度减少一定程度。然而,在一种情况下,如果编码器知道解码器具有d<N个解码器306,编码器可以将一些源/概率合并,使得编码器产生的子序列数目不大于d。
在另一场景中,如果解码器具有d>N个解码器306,则编码器可以对一些源/概率进行划分,以最大化可用并行解码器306的使用。
在另一场景中,编码器预先不知道在解码器中有多少并行解码器306可用。在这种情况下,如果解码器具有的并行解码器306少于编码器产生的子序列,则解码器不能并行处理所有子序列,解码器可以调度解码器306在子序列中的使用。
对于并行解码处理单元的数目d不同于N的实例,有利地,具有用于对源输出进行组合(对于d<N)或划分(对于d>N)的机制。对于该示例机制,编码器在编码时知道值d。然而,如果解码器不具有d个解码单元,仍能够实现无损解码。
在本示例中,令p为源k的LPS概率。输出序列k的开销被认为是OH(k)=8*|C(L(k))|-4*log(1-p)+4,其中C|(v)是使用上述前缀码表示值v的字节数目。如果存在具有LPS概率q的源m,对于序列m,OH(k)>N(k)*[p*log(p/q)+(1-p)log((1-p)/(1-q))],其中N(k)是源k的输出中的二进制符号的数目,则将源k的输出与源m的输出合并,并对于合并序列使用LPS=q。只要OH(k)/N(k)大于一些源k和m之间的相对熵,可以重复该过程。
具有重排的上下文建模
根据上面对子序列的并行编码和解码的描述,本领域普通技术人员将明白这种编码器或解码器中的瓶颈可能是上下文建模。在编码器和解码器中,上下文建模处理都一次消耗一个比特。例如,在图4示出的编码器200处,由上下文建模组件和解复用器204逐比特地处理输入序列x102。特别地,针对输入序列x 102中的每个连续比特,首先基于在编码器200内实现的预定模型确定其上下文。然后,基于具有相同上下文的比特的历史来确定与该比特关联的概率。换言之,在许多上下文建模方案中,对概率的评估基于上下文特定的比特历史。具有不同上下文的其他比特具有不同的比特历史。
以这种方式,上下文建模组件和解复用器204依次针对每个比特找出其上下文,然后找出其概率。应该理解,与每个概率关联的序列(b1,b2,...,bn)可以包括具有不同上下文的比特。解码器300(图5)使用相同的上下文建模将解码出的比特重组并交织成重构序列310(图5)。上下文建模组件和复用器308(图5)确定下一个比特的上下文,并且基于该上下文的比特历史确定与该下一个比特关联的概率。根据对概率的确定,上下文建模组件和复用器308选择与该概率关联的下一个解码出的比特。在此基础上,其逐比特地对比特进行交织以创建重构的序列310。
根据本申请的一个方面,修改上下文建模以并入重排处理,其允许上下文建模在某种程度上并行地发生。输入序列被重排成比特组,任何组都不大于M个比特,其中可以由上下文建模组件并行地处理每个组,即并行地处理多达M个比特。
重排是在编码器和解码器处执行的。该重排取决于上下文模型,而不依赖于输入序列的内容,因此可以离线地确定重排调度。
存在两个强加于每个比特组上的条件。首先,比特组中的每个比特具有与该组中的每个其他比特不同的上下文。换言之,按重排调度形成比特组,使得没有任何组包含具有相同上下文的两个比特。该条件防止了下述循环问题:其中来自相同上下文的两个比特不能被并行评估,因为分配给那两个比特的概率将取决于该上下文的比特历史。如果在该组中存在来自相同上下文的不止一个比特,则不能并行地向它们分配概率,因为它们中的至少一个将改变另一个的比特历史。因此,按重排调度形成比特组,使得没有任何比特组包含具有相同上下文的两个比特。
第二个条件是独立于该组中的每个其他比特来确定比特组中的每个比特的上下文。换言之,该组中的每个比特的上下文必须在不参考该组中的其他比特的情况下是可确定的。如果该组中的某个比特的上下文取决于该组中的任意其他比特的内容/值,则不满足第二条件。
重排调度是离线创建的,以避免违反这两个条件。在该上下文中,离线意味着在编码或解码处理之前的任何时间,而不是在编码或解码处理期间。
重排调度还可被描述如下。为了方便起见,可以将输入序列Xi写为X[i]以及将每个比特ci的上下文写为c[i]。对于序列X=X0X1...Xn-1,替代使用自然顺序0,1,2,3,...n-1,重排调度旨在找出新的编码顺序j0,j1,...jn-1,使得满足下述条件:存在整数K,0<=K<n/M,使得对于所有的k<=K:
(1)X[jkM]X[jkM+1]...X[j(k+1)M-1]都具有不同的上下文c[jkM]c[jkM+ 1]...c[j(k+1)M-1],以及
(2)c[jkM]c[jkM+1]...c[j(k+1)M-1]的导数不取决于X [jkM]X[jkM+1]...X [j(k+1)M-1]。
这样,本申请提供在给定上下文模型中发现固有的并行性的方法。
下面的内容是对用于针对给定上下文模型开发重排调度以遵照这两个条件的至少一个示例方法或过程的描述。
该过程开始于给定上下文模型,因为重排调度对于上下文模型是特定的。令X=X0X1...Xn-1表示要编码的随机序列。假定希望在解码器中的上下文建模中同时处理M个比特。该解决方案确定针对X的编码顺序。令F表示长度为M的有序缓冲器,令ci表示由给定上下文模型确定的Xi的上下文,并且令z表示长度为n的整数序列。可以使用下面的示例过程来生成重排调度:
步骤1:设j=0,j’=0,并且初始化z,使得对于所有的0<=i<n,zi=-1。
步骤2:设i=j,k=0,并且j=n。将F初始化为空。
步骤3:如果zi>0,则跳到步骤5;否则继续进行步骤4。
步骤4:如果cj不依赖于F中的任何符号,则执行下述操作:
将Xi插入F;
设k=k+1;
设Zi=j’以及j’=j’+1;
如果cj依赖于F中的任何符号,则执行下述操作:
如果i<j;设j=i。
步骤5:设i=i+1;
步骤6:重复步骤3-5,直到k=M或者i=n。
步骤7:如果k=M以及j<n,则清空F,并且跳到步骤2;否则继续进行步骤8。
步骤8:令i=j;
步骤9:如果zi>0,则跳到步骤11;否则继续进行步骤10。
步骤10:令zi=j’并且j’=j’+1;
步骤11:设i=i+1;
步骤12:重复步骤9-11,直到j’=n。
应该理解,前述过程是用于实现针对给定上下文模型的满足上面陈述的用于实现并行上下文建模的两个条件的重排调度的过程的一个示例实施例。
应该理解,可以改进上面描述的过程,使得编码顺序可被分割为具有各种并行性的连续的分段。例如,第一分段允许并行地处理M个比特,第二分段允许并行地处理M-1个比特,依此类推。
在一个示例实现中,该过程可以开始于比特组的最大期望的比特数目M。可以分析具有给定上下文模型的序列X,以找出满足那两个条件的长度为M的所有可能的组。然后,可以缩短比特组长度,直到序列X的所有比特是组的成员,以及组可以具有从1到M变化的长度。示例过程可以如下:
步骤1:设M=16。
步骤2:根据输入序列的比特形成长度为M的所有可能的比特组,其中每个组都满足那两个条件。
步骤3:设M=M-1。
步骤4:重复步骤2和3,直到M=0。
此外,因为重排调度是离线确定的,所以还可以使用穷尽搜索来找出针对给定上下文模型的在并行处理的吞吐量方面的最佳重排。
此外,在存在若干竞争上下文模型的情况下,本重排过程或其变型可被用于找出在并行处理方面比其他重排调度具有更好吞吐量的重排调度。
应该指出,此处描述的过程或其变型可被用于改善抗错能力。
还要注意,此处上下文的概念是一般性的,包括编码判决。例如,在H.264AVC标准的CABAC中,仅在设置了相同位置的有效位时,才编码表明当前位置是否是末位有效位置的最末位(bin)判决。因此,尽管H.264AVC标准中规定的上下文模型没提及有效位,但是在上面的解决方案中,上下文模型被扩展,使得在重排调度中反映这种依赖性。
现在参考图10,其以流程图形式示出用于重排熵编码的示例方法600。在该示例实施例中,编码器被配置为执行并行熵编码,尽管本申请不局限于并行熵编码。方法600开始于在步骤602中接收输入序列。该输入序列是属于有限字母表的符号的序列;在该示例实施例中,该序列是二进制的。
在步骤604中重排该序列以形成重排的序列。该重排基于针对给定上下文模型的满足上面陈述的两个条件的重排调度。如上面讨论的,该重排调度是针对给定上下文模型预先确定的。如此形成的重排调度由级联的满足那两个条件的比特组构成。
然后,并行地处理每个比特组,以便将比特指派给适当的熵编码器。具体地,如步骤606中所示,针对每个比特组,并行地确定每个比特的上下文。然后,基于每个比特的上下文和该上下文的比特历史,将每个比特与概率相关联。上下文的确定和与概率的关联针对组中的比特并行地发生。然后,基于每个比特的关联概率,将每个比特指派给适当的熵编码器。
在步骤608中,如前面所述,并行熵编码器并行地编码比特以产生编码数据的比特流。
图10中的示例处理假定了并行熵编码。应该理解,此处描述的重排上下文建模不一定涉及并行熵编码。重排上下文建模提高了编码过程的上下文建模方面的吞吐量;使用该上下文信息的对输入比特的熵编码可以是并行的或串行的。例如,重排上下文建模可以与H.264的CABAC一起使用。
下面对示例解码过程的描述也假设了使用并行熵解码。应该理解,本申请不限于并行熵解码。下面描述的重排上下文建模可以与并行或串行熵解码一起使用。
现在参考图11,其以流程图形式示出用于使用重排上下文建模对编码比特流进行解码的示例方法700。方法700开始于在步骤702中接收编码比特流。如上所述,可以对编码比特流进行熵解码以产生多个均与具体概率关联的解码出的子序列,如步骤704中所指示的那样。在本实施例中,解码可以使用多个并行熵解码器来发生,以产生多个解码出的子序列。在另一个实施例中,解码器可以使用串行熵解码器来产生单个解码出的序列。
在步骤706中,使用上下文建模生成中间序列,以将来自解码出的子序列的比特指派给中间序列,由此对比特进行交织以重建或重构“重排的”输入序列。换言之,中间序列是多个级联的比特组。为了重构比特组,步骤706涉及:确定下一个比特组中的每个比特的上下文,即该比特组中的每个比特位置的上下文。然后,使用该上下文以及与该上下文相关联的比特历史,确定与该比特位置关联的概率。应该理解,组中的每个比特位置的上下文的确定以及与该比特位置的概率的关联是针对组中的比特并行执行的。然后,基于比特位置的关联的概率,将来自解码出的子序列的比特指派给那些位置,以形成和输出比特组。然后以类似方式生成下一个比特组。
然后,在步骤708中,基于在编码器处使用的相同重排调度,对如此形成的中间序列进行重排。重排调度描述了将如何重排比特组以形成重构的序列。然后,重构的序列可用于解码处理的其余部分,诸如解量化、反变换、运动或空间补偿,等等。
应该理解,中间序列不一定是在串行熵解码的情况下形成的。用于解码的方法可以包括解码比特流以产生解码出的比特组。对于每个组,产生该比特组的解码是基于上下文建模过程的。上下文建模过程可以利用重排的比特组中的可用的并行性,如果它们已经被如此编码的话。因此,针对每个比特组,解码器确定上下文,并且基于比特的上下文将比特与概率相关联。如果比特组满足上面阐述的两个条件,则可以针对比特组中的所有比特并行地进行上述操作。这两个条件即:该比特组中的每个比特的上下文不同于该组中的每个其他比特的上下文,以及独立于该组中的每个其他比特来确定该组中的每个比特的上下文。针对具体上下文模型离线开发的并且在编码过程中使用的重排调度对于解码器而言是已知的。因此,解码器能够基于该重排调度对比特组的解码出的比特进行重排,以将比特返回它们的原本顺序,并且因此产生重构的比特序列。
现在参照图8,图8示出了编码器900的示例实施例的简化框图。编码器900包括:处理器902、存储器904和编码应用906。编码应用906可以包括存储在存储器904中并包含指令的计算机程序或应用,所述指令用于将处理器902配置为执行这里描述的步骤或操作。例如,编码应用906可以编码并输出根据这里描述的并行熵编码过程编码的视频比特流。编码应用906可以包括:熵编码器26,被配置为使用这里描述的一个或多个过程,对输入序列进行熵编码,并输出比特流。可以理解,编码应用906可以存储在计算机可读介质上,如致密光盘、闪存设备、随机存取存储器、硬盘等等。
在一些实施例中,编码器900中的处理器902可以是单一处理单元,被配置为实现编码应用906的指令。在一些其他实施例中,处理器902可以包括能够并行执行指令的多于一个处理单元。多个处理单元可以是逻辑上或物理上单独的处理单元。在一些实例中,编码器900可以包括N个或更多处理单元,其中编码应用906将处理单元中的N个处理单元配置为实现这里描述的方法。还可以认识到,在一些实例中,编码应用906的一些或全部操作以及一个或多个处理单元可以通过专用集成电路(ASIC)等等来实现。
参照还参照图9,图9示出了解码器1000的示例实施例的简化框图。解码器1000包括:处理器1002、存储器1004和解码应用1006。解码应用1006可以包括存储在存储器1004中并包含指令的计算机程序或应用,所述指令用于将处理器1002配置为执行这里描述的步骤或操作。解码应用1006可以包括:熵解码器1008,被配置为接收根据这里描述的熵编码过程来编码的比特流,以及从比特流中提取编码数据。解码应用1006可以将处理器配置为对编码子序列进行并行解码,以产生重构序列,如这里所述。可以理解,解码应用1006可以存储在计算机可读介质上,如致密光盘、闪存设备、随机存取存储器、硬盘等等。
在一些实施例中,解码器1000中的处理器1002可以是单一处理单元,被配置为实现解码应用1006的指令。在一些其他实施例中,处理器1002可以包括能够并行执行指令的多于一个处理单元。多个处理单元可以是逻辑上或物理上单独的处理单元。在一些实例中,解码器1000可以包括d个、N个或更多或更少的处理单元,其中解码应用1006将处理单元配置作为并行熵解码器操作,以实现这里描述的方法。还可以认识到,在一些实例中,解码应用1006的一些或全部操作以及一个或多个处理单元可以通过专用集成电路(ASIC)等等来实现。
可以认识到,根据本申请的解码器和/或编码器可以在多个计算设备中实现,包括但不限于服务器、合适编程的通用计算机、电视机顶盒、电视广播设备和移动设备。可以通过包含指令的软件来实现解码器或编码器,所述指令用于将处理器配置为执行这里描述的功能。软件指令可以存储在任何合适的计算机可读存储器上,包括CD、RAM、ROM、闪存等等。
可以理解,这里描述的编码器和解码器以及实现所描述的用于配置编码器的方法/过程的模块、例程、进程、线程或其他软件组件可以使用标准计算机编程技术和语言来实现。本申请不限于特定处理器、计算机语言、计算机编程惯例、数据结构、其他这种实现细节。本领域技术人员将认识到,可以将所描述的过程实现为存储在易失性或非易失性存储器中的计算机可执行代码的一部分、专用集成芯片(ASIC)的一部分等。
可以对所描述的实施例进行特定适配和修改。因此,上述实施例被认为是示意性而非限制性。
Claims (18)
1.一种用于对输入比特序列进行编码的方法,所述方法包括:
根据预定的重排调度将所述输入比特序列重排成输入比特组,
针对每个输入比特组,
并行确定所述输入比特组中的每个输入比特的上下文,并且基于每个输入比特的上下文将该比特与概率相关联,
其中所述组中的每个输入比特的上下文与所述组中的每个其他输入比特的上下文不同,并且独立于所述组中的其他输入比特来确定所述组中的每个输入比特的上下文;以及
对输入比特进行熵编码以生成编码序列。
2.根据权利要求1所述的方法,其中所述重排调度定义在所述重排中所述输入序列中的比特被分配到的所述输入比特组。
3.根据权利要求2所述的方法,其中所述重排调度是离线确定的,并且基于预定义的上下文模型。
4.根据权利要求3所述的方法,还包括定义所述重排调度。
5.根据权利要求1-4中任一项所述的方法,其中确定还包括:基于所述输入比特组中的每个比特的关联概率将该比特指派给多个并行熵编码器之一。
6.一种用于对输入符号序列进行编码的编码器,所述符号属于有限字母表,所述编码器包括:
处理器;
存储器;以及
编码应用,存储在所述存储器中,并且包含用于将所述处理器配置为执行下述操作的指令:
根据预定的重排调度将所述输入比特序列重排成输入比特组,
针对每个输入比特组,
并行确定所述输入比特组中的每个输入比特的上下文,并且基于每个输入比特的上下文将该比特与概率相关联,
其中所述组中的每个输入比特的上下文与所述组中的每个其他输入比特的上下文不同,并且独立于所述组中的其他输入比特来确定所述组中的每个输入比特的上下文;以及
对输入比特进行熵编码以生成编码序列。
7.根据权利要求6所述的编码器,其中所述重排调度定义在所述重排中所述输入序列中的比特被分配到的所述输入比特组。
8.根据权利要求7所述的编码器,其中所述重排调度是离线确定的,并且基于预定义的上下文模型,以及所述存储器存储所述重排调度。
9.根据权利要求6-8中任一项所述的编码器,其中所述编码器包括多个并行熵编码器,并且所述处理器被配置为:基于所述输入比特组中的每个比特的关联概率将该比特指派给多个并行熵编码器之一。
10.一种用于对编码数据的比特流进行解码以重构比特序列的方法,所述方法包括:
对编码数据的比特流进行解码以产生解码比特组,其中,对于每个比特组,产生所述比特组的解码包括:确定针对所述比特组中的每个比特的上下文,并且基于该比特的上下文将该比特与概率相关联,以及其中所述比特组中的每个比特的上下文与所述组中的每个其他比特的上下文不同,并且独立于所述组中的每个其他比特来确定所述组中的每个比特的上下文;以及
基于预定的重排调度重排比特组中的比特以产生重构的比特序列。
11.根据权利要求10所述的方法,其中所述重排调度定义了比特组以及重排所述比特组中的比特以产生重构的比特序列的方式。
12.根据权利要求11所述的方法,其中所述重排调度是离线确定的,并且基于预定义的上下文模型。
13.根据权利要求12所述的方法,还包括定义所述重排调度。
14.一种用于对编码数据的比特流进行解码以重构符号序列的解码器,所述符号属于有限字母表,所述解码器包括:
处理器;
存储器;以及
解码应用,存储在所述存储器中,并且包含用于将所述处理器配置为执行下述操作的指令:
对编码数据的比特流进行解码以产生解码比特组,其中,对于每个比特组,产生所述比特组的解码包括:确定针对所述比特组中的每个比特的上下文,并且基于该比特的上下文将该比特与概率相关联,以及其中所述比特组中的每个比特的上下文与所述组中的每个其他比特的上下文不同,并且独立于所述组中的每个其他比特来确定所述组中的每个比特的上下文;以及
基于预定的重排调度重排比特组中的比特以产生重构的比特序列。
15.根据权利要求14所述的解码器,其中所述重排调度定义了比特组以及重排所述比特组中的比特以产生重构的比特序列的方式。
16.根据权利要求15所述的解码器,其中所述重排调度是离线确定的,并且基于预定义的上下文模型,以及所述存储器存储所述重排调度。
17.一种计算机可读介质,存储用于将处理器配置为执行权利要求1-5中的任一项所述的方法的计算机可执行指令。
18.一种计算机可读介质,存储用于将处理器配置为执行权利要求10-13中的任一项所述的方法的计算机可执行指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32580610P | 2010-04-19 | 2010-04-19 | |
US61/325,806 | 2010-04-19 | ||
PCT/CA2011/050208 WO2011130854A1 (en) | 2010-04-19 | 2011-04-19 | Methods and devices for reordered parallel entropy coding and decoding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102845065A true CN102845065A (zh) | 2012-12-26 |
Family
ID=44787835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800197029A Pending CN102845065A (zh) | 2010-04-19 | 2011-04-19 | 用于重排并行熵编码和解码的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8400336B2 (zh) |
EP (1) | EP2561680B1 (zh) |
CN (1) | CN102845065A (zh) |
CA (1) | CA2794261A1 (zh) |
WO (1) | WO2011130854A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
WO2018107467A1 (en) * | 2016-12-16 | 2018-06-21 | Thomson Licensing | Apparatus, method, and storage medium for providing preview of restricted video asset |
CN108235010A (zh) * | 2017-12-13 | 2018-06-29 | 北京时代民芯科技有限公司 | 一种适应性变动长度实时编码器及编码方法 |
CN112560398A (zh) * | 2019-09-26 | 2021-03-26 | 百度在线网络技术(北京)有限公司 | 一种文本生成方法及装置 |
WO2023216445A1 (zh) * | 2022-05-10 | 2023-11-16 | 华为技术有限公司 | 编解码方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010503072A (ja) * | 2006-09-02 | 2010-01-28 | ティーティービー テクノロジーズ,エルエルシー | コンピュータベースのミーティング準備方法および実施システム |
US10110891B2 (en) * | 2011-09-29 | 2018-10-23 | Sharp Kabushiki Kaisha | Image decoding device, image decoding method, and image encoding device |
JP5976658B2 (ja) | 2011-09-29 | 2016-08-24 | シャープ株式会社 | 画像復号装置、画像復号方法および画像符号化装置 |
US9892188B2 (en) * | 2011-11-08 | 2018-02-13 | Microsoft Technology Licensing, Llc | Category-prefixed data batching of coded media data in multiple categories |
US20130195200A1 (en) * | 2012-01-28 | 2013-08-01 | Research In Motion Limited | Methods and devices for context modeling to enable modular processing |
US9432688B2 (en) * | 2013-08-26 | 2016-08-30 | Broadcom Corporation | Parallel symbol decoding |
US9451291B1 (en) * | 2015-08-31 | 2016-09-20 | Radmilo Bozinovic | Fast DWT-based intermediate video codec optimized for massively parallel architecture |
EP3474233A1 (en) * | 2017-10-19 | 2019-04-24 | Thomson Licensing | A method and apparatus for encoding/decoding the geometry of a point cloud representing a 3d object |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2319689A (en) * | 1994-02-23 | 1998-05-27 | Ricoh Kk | An entropy encoder using context modelling with data reordering |
CN1223502A (zh) * | 1994-02-23 | 1999-07-21 | 株式会社理光 | 调色图象的压缩及其m阵符号集比特状态编码的二进制化 |
EP1501313A1 (en) * | 2002-04-26 | 2005-01-26 | Sony Corporation | Coding device and method, decoding device and method, recording medium, and program |
CN1741616A (zh) * | 2005-09-23 | 2006-03-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的自适应熵编/解码方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
JP3230933B2 (ja) * | 1994-08-19 | 2001-11-19 | 株式会社リコー | データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ |
US7395210B2 (en) * | 2002-11-21 | 2008-07-01 | Microsoft Corporation | Progressive to lossless embedded audio coder (PLEAC) with multiple factorization reversible transform |
US7315822B2 (en) * | 2003-10-20 | 2008-01-01 | Microsoft Corp. | System and method for a media codec employing a reversible transform obtained via matrix lifting |
US8761240B2 (en) * | 2010-07-13 | 2014-06-24 | Blackberry Limited | Methods and devices for data compression using context-based coding order |
-
2011
- 2011-04-19 US US13/089,599 patent/US8400336B2/en active Active
- 2011-04-19 EP EP11771459.2A patent/EP2561680B1/en active Active
- 2011-04-19 CN CN2011800197029A patent/CN102845065A/zh active Pending
- 2011-04-19 CA CA2794261A patent/CA2794261A1/en not_active Abandoned
- 2011-04-19 WO PCT/CA2011/050208 patent/WO2011130854A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2319689A (en) * | 1994-02-23 | 1998-05-27 | Ricoh Kk | An entropy encoder using context modelling with data reordering |
CN1223502A (zh) * | 1994-02-23 | 1999-07-21 | 株式会社理光 | 调色图象的压缩及其m阵符号集比特状态编码的二进制化 |
EP1501313A1 (en) * | 2002-04-26 | 2005-01-26 | Sony Corporation | Coding device and method, decoding device and method, recording medium, and program |
CN1741616A (zh) * | 2005-09-23 | 2006-03-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的自适应熵编/解码方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN105451026B (zh) * | 2014-09-19 | 2019-07-30 | 想象技术有限公司 | 数据压缩 |
WO2018107467A1 (en) * | 2016-12-16 | 2018-06-21 | Thomson Licensing | Apparatus, method, and storage medium for providing preview of restricted video asset |
CN108235010A (zh) * | 2017-12-13 | 2018-06-29 | 北京时代民芯科技有限公司 | 一种适应性变动长度实时编码器及编码方法 |
CN108235010B (zh) * | 2017-12-13 | 2020-09-11 | 北京时代民芯科技有限公司 | 一种适应性变动长度实时编码方法 |
CN112560398A (zh) * | 2019-09-26 | 2021-03-26 | 百度在线网络技术(北京)有限公司 | 一种文本生成方法及装置 |
WO2023216445A1 (zh) * | 2022-05-10 | 2023-11-16 | 华为技术有限公司 | 编解码方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US8400336B2 (en) | 2013-03-19 |
WO2011130854A1 (en) | 2011-10-27 |
US20110254712A1 (en) | 2011-10-20 |
EP2561680A1 (en) | 2013-02-27 |
EP2561680A4 (en) | 2014-04-02 |
CA2794261A1 (en) | 2011-10-27 |
EP2561680B1 (en) | 2020-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102783035B (zh) | 并行熵编码方法和设备 | |
CN102845065A (zh) | 用于重排并行熵编码和解码的方法和设备 | |
US11736723B2 (en) | Method of coding and decoding images, coding and decoding device and computer programs corresponding thereto | |
US20230353740A1 (en) | Method of Coding and Decoding Images, Coding and Decoding Device and Computer Programs Corresponding Thereto | |
EP3550726B1 (en) | Methods and devices for reducing sources in binary entropy coding and decoding | |
CN102783154B (zh) | 采用双码集的编码和解码方法和设备 | |
CN102783036B (zh) | 使用辅码字指示符的编码和解码方法和设备 | |
US20120147972A1 (en) | Image decoding apparatus, image decoding method, image encoding apparatus, image encoding method, and program | |
CN105007486A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121226 |