CN115516769A - 有损压缩技术 - Google Patents

有损压缩技术 Download PDF

Info

Publication number
CN115516769A
CN115516769A CN202180029948.8A CN202180029948A CN115516769A CN 115516769 A CN115516769 A CN 115516769A CN 202180029948 A CN202180029948 A CN 202180029948A CN 115516769 A CN115516769 A CN 115516769A
Authority
CN
China
Prior art keywords
component
bits
pixels
region
block
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
CN202180029948.8A
Other languages
English (en)
Inventor
T·J·博格蓝德
K·拉马尼
S·拉丘斯基
J·A·汉斯里
D·A·詹姆施迪
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.)
Apple Inc
Original Assignee
Apple 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
Priority claimed from US16/855,459 external-priority patent/US11405622B2/en
Priority claimed from US16/855,540 external-priority patent/US11664816B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN115516769A publication Critical patent/CN115516769A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • 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/124Quantisation
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了与以下方面相关的技术:针对正被压缩的像素块的不同区域,使用不同的量化来压缩像素数据。在一些实施方案中,压缩电路被配置为针对正被压缩的像素块的像素中所包括的多个分量,确定该像素块的相应区域中的相应最小分量值和最大分量值。基于所确定的最小分量值和最大分量值,该压缩电路可以确定使用第一位数来表示相对于第一区域中的第一分量的基值的增量值,并且使用不同的第二位数来表示相对于该第一区域中的第二分量的基值的增量值。然后,使用所确定的第一位数和第二位数,该压缩电路可以将该像素块的该第一区域中的像素的该第一分量和该第二分量的增量值量化。在一些实施方案中,该压缩电路确定是否在区域内提供跨分量位共享。

Description

有损压缩技术
背景技术
技术领域
本公开涉及数据压缩电路。
相关技术描述
计算设备可以压缩各种类型的数据,例如,以减小存储器占用空间或带宽。压缩对于多媒体数据(诸如,图形处理器所处理的像素)特别有用。一些压缩是有损的,使得解压缩的数据可能与压缩之前的图像不匹配。在另一方面,无损压缩在解压缩后提供原始数据。不同的无损压缩技术可以具有不同的特性,例如,计算资源,诸如压缩所需的面积或功率、压缩速度、压缩比等。类似地,不同的有损压缩技术可以具有不同的特性,包括解压缩后数据的准确性(一些有损技术可能导致比其他有损技术更多的损失)。压缩具体实施的质量可能对性能、功耗或电路面积有巨大影响。
附图说明
图1A是示出了根据一些实施方案的示例性压缩电路的框图。
图1B是示出了根据一些实施方案的示例性无损压缩电路和有损压缩电路的框图。
图2A是示出了根据一些实施方案的包括四个区域的示例性像素块的框图。
图2B是示出了根据一些实施方案的针对邻近预测器的像素块的示例性邻近关系的框图。
图3是示出了根据一些实施方案的用于选择无损压缩技术的示例性方法的流程图。
图4是示出了根据一些实施方案的无损压缩像素块的示例性格式化的框图。
图5是示出了根据一些实施方案的用于有损压缩的示例性方法的流程图。
图6是示出了根据一些实施方案的有损压缩像素块的区域的示例性格式化的框图。
图7是示出了根据一些实施方案的用于无损压缩的示例性方法的流程图。
图8是示出了根据一些实施方案的用于有损压缩的示例性方法的流程图。
图9是示出了根据一些实施方案的示例性计算机系统的框图。
图10是示出了根据一些实施方案的存储电路设计信息的示例性计算机可读介质的框图。
本说明书包括对各种实施方案的参考,以指示本公开并非旨在提及一个特定具体实施,而是提及落入包括所附权利要求书的本公开的实质内的一系列实施方案。特定特征、结构或特性可以与本公开一致的任何合适的方式被组合。
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物,诸如电子电路)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。“被配置为压缩像素数据块的压缩电路”旨在覆盖例如在操作期间执行此功能的电路,即使所涉及的电路当前并未正在被使用(例如,该电路并未连接到电力)。因此,被描述或表述成“被配置为”执行某个任务的实体是指用于实施该任务的物理的事物,诸如设备、电路、存储有可执行程序指令的存储器等等。该短语在本文中不被用于指代无形的事物。
术语“被配置为”并不旨在意指“可配置为”。例如,未经编程的FPGA不会被认为是“被配置为”执行某个特定功能,虽然其可能“可配置为”执行该功能。在适当编程之后,FPGA然后可被配置为执行该功能。
所附权利要求书中的表述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素援引35 U.S.C.§112(f)。于是,所提交的本申请中没有任何权利要求旨在要被解释为具有装置-加-功能要素。如果申请人在申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
此外,如本文所用,术语“第一”、“第二”、“第三”等并不一定暗示元件之间的排序(例如,时间顺序)。例如,对“第一”图形操作和“第二”图形操作的参考并不暗示对图形操作的排序,缺少限制这些操作之间的时间关系的附加语言。简而言之,诸如“第一”、“第二”等的参考用作标记,以便于在说明书和所附权利要求中进行参考。
具体实施方式
本公开论述了既用于无损压缩也用于有损压缩的技术的实施方案。在一些实施方案中,处理器的运行模式如下:只有在确定了无损压缩不能满足目标输出数据大小时,才针对给定像素块使用有损压缩。在各种公开的实施方案中,对像素数据块进行压缩,但是这些示例并不旨在限制本公开的范围。相反,可以实现所公开的技术来压缩各种类型的输入数据。
图1A是示出了示例性压缩电路110的框图。如上所述,输入数据可包括待压缩的像素块的值(并且每个像素可包括多个分量或通道的值)。例如,压缩数据可包括:表示压缩后的像素的数据,指示所用压缩类型的标头信息,以及描述压缩块大小的元数据。
图1B是示出了根据一些实施方案的示例性无损压缩电路120和有损压缩电路130的框图。在一些实施方案中,有损压缩电路130不被配置为压缩输入数据,除非无损压缩电路120确定它不能达到目标压缩大小。在一些实施方案中,无损压缩和有损压缩可以至少部分地并行进行。尽管所公开的实施方案既支持无损压缩也支持有损压缩,但是所公开的技术也可以独立使用。例如,处理器可以支持所公开的有损压缩技术,但不支持所公开的无损压缩技术,反之亦然。然而,在一些实施方案中,所公开的技术利用以下事实:针对给定的像素块,压缩电路既考虑无损压缩又考虑有损压缩。
图2A是示出了根据一些实施方案的示例性像素块的框图。每个像素可具有多个对应的数据字段,例如,可用于R、G、B、A通道或其他用途的分量。因此,可以对每个有效像素的多个分量进行像素块压缩。在所示实施方案中,该块包括M×N个像素,其中M和N是可相同或不同的整数。例如,该块可以是4×4、4×8、8×4、8×8、8×16等。在所示示例中,该块被图2A的粗线分成四个区域。在一些实施方案中,块可以被细分成各种适当数量的区域,每个区域包括多个像素。
在一些实施方案中,设备确定不同的无损压缩预测器,以便选择例如在可用技术中产生最大压缩比的无损压缩技术。不同的预测器可以使用不同的基本像素,例如以基于它们相对于基本像素的增量值,对像素进行编码。例如,所公开的技术可以利用原点预测器、梯度预测器和邻近预测器。在一些实施方案中,基本预测器和梯度预测器使用像素(0,0)作为基本像素,而邻近预测器使用不同的邻近基本(NB)像素。在所示示例中,NB像素位于该块的中心附近。在其他实施方案中,针对给定像素块,一个或多个预测器可动态地确定其基本位置,但这会增加复杂性和功耗。
在一些实施方案中,原点预测器将每个像素分量表示为相对于基本像素(例如,像素(0,0))的相同分量的增量值。在一些实施方案中,去相关型原点预测器的运行方式可以与原点预测器类似,但是可以首先从其他对应的分量中减去一个分量(例如,绿色分量)的值,这可以减小分量之间的相关性并且会对压缩比有积极影响。在一些实施方案中,梯度预测器将每个像素分量表示为相对于基本像素的相同分量的增量值加上梯度值。在一些实施方案中,邻近预测器将每个像素分量表示为相对于邻近像素的相同分量的增量值。去相关型邻近(neighbor-with-decorrelation)预测器可以类似于邻近预测器,但是减去了一个分量。
图2B示出了根据一些实施方案的邻近预测器的示例性图案。在图2B中,每个像素中的箭头指示邻近像素,基于该邻近像素来计算其增量。如图所示,在不同的实施方案中,图案包括未用增量表示的基本像素,该基本像素可以位于不同的位置。出于解释的目的而包括所示图案,但并不旨在限制本公开的范围;针对各种预测器,可以实现用于对像素之间的关系进行编码的各种图案。
使用多个预测器的示例性无损压缩
在一些实施方案中,计算系统至少部分并行地计算用于不同压缩技术的多个无损预测器,以确定多种不同压缩技术对于像素数据输入块的性能。例如,考虑以下情况:原点预测器具有相对于原点值而言最大增量为七的像素,而邻近预测器具有最大增量为三的像素。在具有无符号Δt的具体实施中,原点预测器需要三个位来表示压缩形式的每个像素,而邻近预测器仅需要二个位来表示压缩形式的每个像素。整体最佳预测器还会受附加考虑因素的影响,诸如所需的标头大小,偏差的使用是否影响增量大小,该块的不同区域中的像素是否可以使用不同位数来表示等,如下文进一步详细所述。因此,在并行计算多个预测器所需的大小之后,系统可选择提供最小压缩大小(例如,表示该块中的所有像素所需的标头元数据加上各个位)的压缩技术。
图3是示出了根据一些实施方案的用于像素块无损压缩的示例性技术的流程图。图3所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法要素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法要素。
在310,在所示实施方案中,计算系统使用多个预测器来确定每个像素的每个分量的增量。示例性预测器包括原点预测器、去相关型原点预测器、梯度预测器、邻近预测器、和去相关型邻近预测器。对于梯度预测器,系统可以例如根据以下等式,首先确定每个分量的原点像素(0,0)的x和y梯度:
dcdx=wrap_to_range(pixel(1,0).c-pixel(0,0).c,component_width/2)
dcdy=wrap_to_range(pixel(0,1).c-pixel(0,0).c,component_width/2)
其中component_width指示用于表示分量的位数,并且“.c”符号表示当前分量。
以下伪代码表示一种示例性技术以确定针对该块中x,y位置处的给定像素的每个预测器的增量:
delta_origin=pixel(x,y).c-pixel(0,0).c
其中像素(0,0)是原点预测器的基本像素。
delta_origin_decorrelate=wrap_to_range(pixel(x,y).c-pixel(x,y).green)–wrap_to_range(pixel(0,0).c-pixel(0,0).green)
其中通过减去绿色分量来执行去相关。
delta_gradient=pixel(x,y).c-(pixel(0,0).c+dcdx*x+dcdy*y)
其中像素(0,0)是梯度预测器的基本像素。
delta_neighbor=pixel(x,y).c-pixel(nx,ny).c
其中像素(nx,ny)是像素(x,y)的根据邻近图案的邻近像素。
delta_neighbor_decorrelate=wrap_to_range(pixel(x,y).c-pixel(x,y).green)–wrap_to_range(pixel(nx,ny).c-pixel(nx,ny).green)
在312,在所示实施方案中,系统确定针对整个块的最大位数,该最大位数是表示每个预测器的每个像素分量的增量所需的。系统可以将增量编码为位宽等于分量宽度的带符号值。以下表示一种示例性技术以确定针对给定带符号分量的增量所需的位数:
bits_c=max(signed_num_bits(max_delta_c),signed_num_bits(min_delta_c))
其中signed_num_bits是一个确定包含该输入的2的补码所需位数的函数,max_delta_c是该分量的最大增量值,并且min_delta_c是该分量的最小增量值。在一些实施方案中,系统被配置为确定将该块中针对每个分量的所有增量打包所需的位数。
在314,在所示实施方案中,系统还针对该块的每个子区域(例如,图2A所示的四个区域中的每个区域)确定表示每个预测器的每个像素分量的增量所需的最大位数。在一些实施方案中,系统被配置为确定将该块中针对每个分量的每个子区域中的所有增量打包所需的位数。在一些实施方案中,这可以允许不同的区域使用不同的增量位数,当这将提高整体压缩比时。
在316,在所示实施方案中,系统确定偏差是否将减少该块的bits_c(例如,减少一)。在一些实施方案中,对每个分量和每个预测器执行此确定过程,但不对每个区域单独执行此确定过程。以下伪代码表示一种示例性技术以确定是否应当使用偏差和偏差值:
biased_bits_c=num_bits(max_delta_c-min_delta_c)
if(bits_c>biased_bits_c)
delta_bits_c=biased_bits_c;
bias_c=(-1<<(delta_bits_c-1))-min_delta_c
else
delta_bits_c=bits_c
bias_c=0
在318,在所示实施方案中,如果在不同区域中使用不同增量位数,那么系统确定位宽的潜在缩减以表示增量。例如,以下伪代码表示一种用于确定region_bits_c的技术,region_bits_c表示代表特定区域的分量增量所需的位数,其中N表示区域数:
for region(0..N-1)
region_bits_c=max(signed_num_bits(region_max_delta_c),
signed_num_bits(region_min_delta_c))
reduction_c[region]=delta_bits_c-region_bits_c
注意,在一些实施方案中,相对于delta_bits_c值,存在针对某一区域的最大缩减。在一些实施方案中,如果任何区域具有非零缩减,则在压缩数据的标头中对每个区域的reduction_c[]进行编码。
在320,在所示实施方案中,系统选择一个或多个预测器用于压缩像素块。在一些实施方案中,通过以位为单位来计算可变大小,系统确定哪个预测器给出最佳压缩。以下伪代码表示一种用于确定给定预测器增量所需的位数的技术:
for region(0..N-1)
size_predictor_c+=region_bits_c_predictor[region]*
num_pixels_region[region]
其中num_pixels_region可以针对不同的区域而变化,例如,因为具有原点像素的区域可能不需要针对该像素的增量。
然后,针对每个预测器,系统可以确定标头的成本,该成本可以基于预测器使用区域还是偏差而变化。此外,某些类型的预测器(诸如梯度预测器)可能引起额外的标头开销来表示梯度。
size_predictor_c+=predictor_c.region_nonzero()?NUM_REGIONS*region_code_size_bits_c:0
size_predictor_c+=predictor_c.bias!=0?delta_bits_csize_gradient_c+=component_width[c]
其中region_code_size_bits表示指定该区域的增量大小所需的位数,如果有任何区域缩减码(上述reduction_c[0..N-1])为非零,则region_nonzero被定义为真,并且predictor_c.bias指示预测器是否使用偏差。
在一些实施方案中,针对每个分量,系统选择具有较小尺寸的预测器。因此,针对不同的分量,可以使用不同的压缩技术对像素块进行压缩。在一些实施方案中,如果预测器具有相同的输出大小,则存在预测器选择的预定义排序。在无损压缩的一些实施方案中,针对不同分量,可以单独执行所公开的计算过程。相反,如下所述,在某些情况下,有损压缩可以在分量之间共享位。
在322,在所示实施方案中,基于该选择过程,系统对块进行压缩。这可包括使用所确定的参数来存储每个像素的每个分量的增量值。
在324,在所示实施方案中,系统生成针对该块的标头的布局并且将标头打包。标头可以指示所选预测器、每个增量的位数、区域信息、偏差信息等。下文参考图4论述标头的详细示例性实施方案。
在326,在所示实施方案中,系统生成该块的元数据。在一些实施方案中,元数据指示压缩块的大小。针对有损格式和无损格式,元数据可以具有相同的大小,例如一个字节。元数据可以指示块是未压缩的还是压缩的。对于压缩块,元数据可以指示该块是有损的还是无损的。对于无损块,如果该块的每个分量的预测器相同并且没有分量启用了偏差或去相关,则该块可被描述为常量。在此场景中,针对不同的压缩容器格式,可以根据表格查找来设置元数据。如果该块并不是常量,则可以对该块进行填充并且元数据可描述该块大小。在一些实施方案中,当不需要元数据的所有位来描述该块大小时,元数据可包括标头中针对分量(例如,分量0)的模式位的一部分(这可进一步减小压缩块的大小)。在一些实施方案中,元数据[7:4]的4’b111的值指示有损压缩。在一些实施方案中,当无损压缩块的大小小于或等于目标大小时,此值决不会出现在元数据中。在一些实施方案中,有损压缩技术可以使用此事实,以避免对元数据中的压缩块的大小进行显式编码。相反,如果元数据指示有损压缩,则这暗示该压缩块具有针对有损压缩的目标块大小。
在328,在所示实施方案中,系统将该块打包。这可包括将标题和区域信息对齐,如下图4所示。每个区域的增量可以按旋转(twiddle)顺序打包。如果在针对该块的元数据中包括部分标头,则系统从标头中删除该信息,并且标头的大小得到减小。对于未压缩的块,系统可以在没有标头的情况下,按预定顺序排列像素。在一些实施方案中,例如,可以将多个压缩块一起打包成宏块以写入存储器中。
在各种实施方案中,相对于传统技术,所公开的技术可以有利地提供更高的无损压缩比和更高的压缩速度。具体地,针对不同区域启用不同的增量宽度,这可以在其中一个区域具有非常大的最大增量的多个区域中提供良好的压缩,该一个区域具有合理数量的标头信息以将针对不同区域的缩减进行编码。
图4是示出了根据一些实施方案的具有标头的示例性压缩像素块的示图。在所示实施方案中,压缩块包括标头410以及指定针对N个区域的像素数据的区域字段。
在所示实施方案中,标头410包括模式字段、位字段和基本字段。取决于用于对该块进行压缩的压缩参数,标头410也可以可选地包括区域字段、偏差字段或梯度字段(用虚线示出)。在一些实施方案中,针对像素块的每个分量,系统生成单独的标头。在其他实施方案中,将单个标头用于该块,并且该标头包括针对不同分量的单独字段实例。
在一些实施方案中,模式字段描述如何压缩该分量。在一些实施方案中,此字段指示所选预测器(例如,邻近预测器、梯度预测器或原点预测器)是否启用了不同区域中每增量的不同位数,是否启用了偏差,以及是否使用了去相关。对于不支持去相关的一些格式,系统可以略去相关位以减小模式字段的大小。
在一些实施方案中,位字段指示该块的增量位宽。例如,针对每个分量,系统可以将位字段编码为delta_bits_c-1。位字段的大小可以是log2(component_width)。在一些实施方案中,增量位宽为1表示从-1至0的值,宽度为2表示从-2至1的值,宽度为3表示从-4至3的值,等等。注意,如下所述,一个或多个区域的位宽可以从位字段所指示的位宽开始减小。
在一些实施方案中,基本字段指示用于所选预测器的基值。基本字段的大小可以对应于分量宽度。如果启用了去相关,则此字段指示去相关的基值。
在一些实施方案中,区域字段描述针对该块中每个区域的缩减。注意,在一些实施方案中,仅当模式字段指示区域被启用时,才可包括此字段。在一些实施方案中,此字段包括针对每个区域的子字段,该子字段指示该字段相对于该块的位宽的缩减。例如,如果位宽为八并且区域R3的缩减为三,则区域R3中的增量位宽为五。
在一些实施方案中,偏差字段指示在压缩期间待从增量中减去的偏差值。注意,在一些实施方案中,只有当模式字段指示偏差被启用时,才可包括此字段。在一些实施方案中,此字段的大小是delta_bits_c。
在一些实施方案中,梯度字段指示梯度dcdx和dcdy。此字段的大小可以是component_width&~1。注意,在一些实施方案中,只有当模式字段指示选择了梯度预测器时,才可包括此字段。
如图所示,每个区域包括针对该区域中的像素的增量。在解压缩期间,设备可以基于标头410来定位每个区域的开始。在所示示例中,区域0包括基本像素(在所示实施方案中,为像素0或像素M-1),其中M为每个区域的像素数。在所示实施方案中,实际上并未用作基本像素的潜在基本像素总是位于该区域中的最后位置处,这可简化解码。因此,在各种实施方案中,与其他区域相比,包括基本像素的区域可包括少一个的增量。在所示示例中,按从像素P0至像素M-1的顺序,存储其他区域(例如,区域N-1)中的像素。
在一些实施方案中,解压缩电路被配置为通过解除各种压缩动作,将所压缩的像素块进行解压缩。例如,解压缩电路可以首先例如基于包括多个压缩块的较大数据集中的块的元数据,确定像素块的位置。然后,解压缩电路将该块的元数据解码。如果元数据指示常量块,则如果子块包括常量颜色,则设备可以将常量数据复制到每个像素。如果元数据指示未压缩的块,则解压缩电路可以简单地将像素数据解包成期望格式。
在一些实施方案中,解压缩电路然后将标头解包,以确定可变字段的大小和打包增量的开始。然后,设备使用标头所指定的位宽将增量解包。对于原点模式和梯度模式,通过将增量添加到基值中,系统直接使用标头将每个分量解压缩。对于邻近模式,设备最初可以解码内部分量,接着解码邻近分量。如果在压缩期间应用,则系统逆转去相关。在一些实施方案中,此解压缩过程无损地提供原始像素数据。
示例性有损压缩技术
在一些实施方案中,在无损技术(诸如,图3的技术)被确定不满足目标压缩块大小之后,计算系统回退到有损压缩技术。目标块大小可以是可编程的或者可以基于处理模式而变化。此外,在一些实施方案中,计算系统可以执行有损压缩而无需首先确定针对无损压缩的输出大小。
在一些实施方案中,所公开的有损技术单独考虑正被压缩的像素块的不同区域。此外,系统可以确定在选择了初始量化之后是否跨分量共享位;调整用于基值和增量的位宽;以及处理某些误差情况或回退模式。
图5是示出了根据一些实施方案的用于像素块有损压缩的示例性技术的流程图。图5所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法要素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法要素。
在510,在所示实施方案中,计算系统确定无损预测器结果太大。例如,图3的技术中所用的无损预测器都不能将像素块压缩成阈值数据大小。注意,在其他实施方案中,可以在不先执行无损预测器的情况下,执行有损压缩。在一些实施方案中,在回退到有损压缩之前,检查是否可以使用无损压缩器,这可以提高整体压缩比。
在512,在所示实施方案中,系统添加偏差并且对像素分量值进行箝位。例如,以下系统可以确定该分量是以带符号的格式(例如,带符号的整数或带符号的归一化)还是以另一种格式(例如,浮点数或无符号)来表示。如果带符号,则针对每个分量和每个区域,系统通过翻转符号位来应用偏差。然后,如果适当的话,将结果箝位到最小值以供保留。
在514处,在所示实施方案中,系统确定正被压缩的像素块的每个区域中针对每个像素分量的最小值和最大值。这是一种用于确定每个区域中的可压缩性最小像素的技术。在一些实施方案中,最小值用作基值,并且最大值用于确定分量范围。此处理的输出可以是:针对每个区域的每个分量的min_value、针对每个区域的每个分量的min_position(具有min值的像素的位置)以及针对每个区域的每个分量的max_value。
在516,在所示实施方案中,系统确定有损量化模式。针对给定的分量宽度,可以使用许多模式。这些模式可以是预定的并且例如在查找表中进行编码。针对不同属性,诸如范围、基本位、增量位、级别、任意级别、和基值是否受保护,每种模式可以具有潜在不同的值。基本位和增量位可以分别指示用于对基值和增量进行编码的位数。在较高模式下,基值可以得到更大程度的量化,而在较低模式下,增量可以得到更大程度的量化。该级别可以指示模式将被量化(或不量化)的程度。系统也可以使用该级别来确定是否应用跨分量位共享。该级别可以是带符号的,并且较低级别值整体上可以指示较大程度的量化。任意级别可以指示:在不从当前分量的基本位或增量位中减去的情况下,可给予另一分量的级别数。受保护基值指示:当对另一分量给予级别时,该分量的基本位不能递减。
作为一个示例,根据一些实施方案,下表包括针对16位分量宽度的两种模式的模式信息(但应注意,可实现各种编码)。在此示例中,未示出的其他模式(例如,模式1至14)可具有各种范围、基本位、增量位、级别、任意级别和受保护值,例如,在介于模式0和模式15的值之间的范围内:
模式 范围 基本位 增量位 级别 任意级别 是否受保护?
0 2 16 1 5 4 1
15 65536 8 7 -6 0 0
在一些实施方案中,为了确定有损量化模式,通过找到每个分量的最大增量并确定表示该增量所需的无符号位数,系统首先针对每个区域确定将所有增量打包所需的位数。然后,此值可用于基于这些范围,生成针对每个分量的量化模式。换言之,每个模式可以与一个范围相关联,并且可以选择该模式使得区域中的分量的max_value与min_value之间的差值属于该范围内。一旦选择了该模式,压缩电路就可以基于该模式,确定是否执行跨分量位共享。
在一些实施方案中,系统还确定通过量化基值来扩展增量范围(减少增量量化)是否将减少量化损失。例如,系统可以应用掩码来确定量化后的新基值,并且确定此值是否满足转换阈值。因此,在一些情况下,系统可以确定进一步量化基值min_value,以提供附加位而用于增量量化。例如,这可以通过将量化模式增加一来实现。此时,在一些实施方案中,系统已经针对每个区域中的每个分量选择了量化模式。
在518,在所示实施方案中,系统确定是否使用跨分量位共享。一般来说,一些分量可能需要较少的基本位/增量位(例如,针对常量值或小增量范围),并且可以为了其他分量而舍弃其一些位以减少其他分量的量化误差。
在一些实施方案中,这包括针对每个区域,对每个分量的量化模式进行排序,例如从最小到最大。例如,对于示例性四分量格式,系统可以对模式进行排序,使得m0对应于具有最小模式的分量,m3对应于具有最大模式的分量,并且m1和m2对应于示例性四分量格式中的其他两个分量。
然后,系统可以确定每个分量的模式之间的差异,并使用该差异来确定哪些分量获得或失去量化级别。以下代码示出了此类计算过程的一个非限制性示例,但是可以设想各种技术:
Figure BDA0003900990260000141
Figure BDA0003900990260000151
注意,此代码示例是针对四通道位共享,但是类似的技术可以与不同数量的通道一起使用,例如在两通道模式中。此时,系统已经为每个分量分配了量化级别,并且start_level和end_level指示将如何量化每个分量。注意,尽管出于解释的目的而包括上文关于模式和基于模式来共享位的论述,但本公开并不限于这些特定技术。相反,所公开的系统可以实现各种技术来确定是否在给定区域内的分量之间共享位。
在520,在所示实施方案中,系统调整基本位和增量位。在一些实施方案中,这使用在元素框518中确定的量化级别。例如,以下伪代码可以实现此功能。
Figure BDA0003900990260000152
Figure BDA0003900990260000161
此时,在一些实施方案中,系统已经为每个分量生成了最终的base_bits和delta_bits。
在522,在所示实施方案中,系统检查是否需要像素量化回退。在某些情况下,可能优选的是:直接将区域内的输入像素数据量化,而不是将基值和增量量化。一种示例性情况是:当用于增量的量化级别产生超过该输入像素数据的直接量化的量化误差时。另一此类情况是:当输入数据以浮点格式来表示并且分量具有与特殊编码相匹配的至少一个值(例如,负零、正或负无穷大、或正则非数字(NaN),其中指数为全1并且对尾数的最高有效位进行了设置。在一些实施方案中,该系统被配置为如果针对某一区域,检测到这些场景中的任一种,则回退,以引导针对该区域的像素值的量化。如果发生回退,则系统可跳至针对该区域的元素框526。
在524,在所示实施方案中,系统根据所选参数,计算和量化基值和增量。通过从区域的基值中减去像素分量的值,系统可以确定该区域中像素分量的增量。因此,对于每个N像素区域,可以针对每个分量生成N-1个增量值,因为基本像素具有隐含的零增量值。在一些实施方案中,然后,使用针对每个区域的确定位数,系统将增量值量化。该量化可包括调整过程以保留最大分量值并减小偏差(例如,由于解压缩期间的中点重构而引起的偏差)。
在526,在所示实施方案中,系统将所压缩的像素信息打包。取决于是否使用像素量化回退模式,可以按不同方式执行打包。下文进一步详细论述的图6提供了示例性打包格式。
在528,在所示实施方案中,系统创建针对压缩数据的元数据。在一些实施方案中,针对所有格式,元数据具有相同的大小,例如一个字节。在一些实施方案中,不含有效数据的子块的元数据值为零。在一些实施方案中,将元数据[7:4]设置为4'b1111指示有损模式,其可以暗示:压缩块的大小对应于有损目标大小(其可以避免对元数据中的压缩块大小进行显式编码)。在一些实施方案中,剩余位均指示是否将量化回退用于特定区域(在示例性四区域实施方案中)。在一些实施方案中,然后将许多压缩块与它们的元数据一起打包,例如,以组合写入存储器中。
图6是示出了根据一些实施方案的针对压缩像素块的区域的示例性格式的框图。在所示实施方案中,该格式包括固定标头610、可变标头620、填充位630和打包增量640。
在一些实施方案中,在固定标头610和可变标头620中,系统将不同分量(例如,RGBA)的数据进行交织。在一些实施方案中,该数据必须符合有损目标大小的1/4。在一些实施方案中,添加了填充符630,使得标头与该区域的数据开始对齐,并且最后的增量与该区域的数据末尾对齐。在一些实施方案中,固定标头610对模式进行编码,而可变标头620对每个分量的基值位置和量化基值进行编码。
在一些实施方案中,打包增量640包括除了基值之外,针对每个分量而言,该区域中的每个像素的增量。例如,在所示实施方案中,打包增量包括像素P0至Pi的数据,其中在该区域中存在i+2个像素。在所示的四分量实施方案中,每个像素字段包括四个增量(每个分量一个增量),并且如果需要,可包括填充符。注意,针对每个像素具有不同数量的分量的实施方案,可包括更大或更小的增量数。将回退模式用于一个区域时,在一些实施方案中,所有分量进行相等程度的量化并且不存在标头编码。
在一些实施方案中,解压缩电路被配置为执行以下用于有损解压缩的过程。首先,例如基于先前块的元数据值,设备可以确定压缩块的位置。第二,解压缩电路可以解码针对该块的元数据。如果元数据指示常量块,则解压缩电路可以将颜色复制到每个像素。如果元数据指示符合目标大小的无损块,则无损解压缩电路将该块解码,如上文参考无损技术所述。如果元数据指示要求进行量化的有损块,则有损解压缩电路将该块解码。
针对打包块中的每个区域,解压缩电路确定区域编码。如果使用了回退编码,则它将该区域解包并且执行中点重建以将每个像素解量化。此时,可以完成此区域的解压缩。如果不使用回退编码,则解压缩电路基于所提取的模式进行解包和解码。在一些实施方案中,这包括基于该模式,确定基本位宽和增量位宽;以及根据跨分量位共享,进行调整(解压缩电路可以执行与压缩电路相同的计算过程,以基于针对每个分量的模式,确定跨分量位共享)。然后解压缩电路可以确定将基值和基值位置解包,并且将所量化的增量解包。然后,解压缩电路可以将该增量解量化并且重构像素值。对于有损压缩,由于量化,输出像素分量值可能与输入像素分量值不匹配。
相对于传统技术,所公开的技术可以有利地提供良好的压缩比、低功耗和更高的有损压缩精度。
示例性方法
图7是示出了根据一些实施方案的用于无损压缩的示例性方法的流程图。图7所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法要素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法要素。
在710,在所示实施方案中,至少部分并行地针对多种不同的无损压缩技术,压缩电路确定使用该技术来表示正被压缩的像素集中可压缩性最小的像素所需的位数。在像素集中,“可压缩性最小的像素”是指在给定压缩技术中,需要最大量数据来表示的像素。例如,针对四个像素的集合和原点预测器,考虑这些像素的增量分别为一、二、四和三十一的情况。增量为三十一的像素是可压缩性最小的像素,因为针对原点压缩技术,它需要最多位来表示其增量。注意,多个像素可以是集合中“可压缩性最小的像素”,例如,如果多个像素需要相同的最大位数。在一些实施方案中,针对该像素集中的像素的不同分量,单独执行图7的元素框。
在一些实施方案中,针对压缩技术中的一些技术,针对像素集中的多个像素区域,压缩电路使用该技术来确定表示可压缩性最小的像素所需的区域位数。在一些实施方案中,针对这些技术中的一种或多种技术的标头信息包括指示相应区域位数与位数之间的差异的字段。这可以提供更好的压缩比,例如,在一个区域具有特别难处理的像素而其他区域则没有的场景中。
在一些实施方案中,压缩技术包括:原点技术,其确定像素集中的像素的值与像素集中的原点像素的值之间的增量;邻近技术,其确定像素集中的相邻像素的值之间的增量;和梯度技术,其确定像素集中的像素的值与像素集中的原点像素的值之间的增量,该原点像素的值被添加到基于与原点像素相邻的一个或多个像素的梯度值。在一些实施方案中,像素数据包括每个像素的多个分量,并且压缩技术包括一种或多种从一个分量(例如,绿色分量)中减去来自一个或多个其他分量的值的去相关技术。一种或多种压缩技术可以具有固定的基本像素位置,该位置针对不同的技术可以不同。
在720,在所示实施方案中,基于所确定的位数以及存储针对多种压缩技术的压缩信息所需的标头大小,压缩电路选择这些压缩技术中的一种技术。在一些实施方案中,压缩技术的选择还可基于所确定的区域位数。
在730,在所示实施方案中,压缩电路存储了使用所选压缩技术对该像素集的值进行编码的信息。例如,压缩电路可以根据所选技术存储针对每个像素的每个分量的增量;以及生成指示所选技术和增量大小的标头信息。
在一些实施方案中,压缩电路生成指示压缩像素集大小的元数据。在一些实施方案中,元数据具有固定大小,并且响应于确定不需要元数据的所有位来表示压缩像素集的大小,压缩电路包括元数据中的标头信息的一个或多个位。这还可以减小压缩像素块的整体大小。
图8是示出了根据一些实施方案的用于有损压缩的示例性方法的流程图。图7所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法要素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法要素。
在810,在所示实施方案中,压缩电路访问针对正被压缩的像素块的像素数据。像素数据可包括针对每个像素的多个分量的值。针对不同的像素块,分量值可以具有不同的宽度,并且这些宽度可以是可编程的。在一些实施方案中,压缩电路确定是否将偏差应用于以带符号格式所表示的一个或多个分量值。
在820,在所示实施方案中,针对像素块的像素中所包括的多个分量,压缩电路确定该像素块的相应不同区域中的相应最小分量值和最大分量值。
在830,在所示实施方案中,基于所确定的最小分量值和最大分量值,压缩电路确定使用第一位数来表示相对于第一区域中的第一分量的基值的增量值,并且使用不同的第二位数来表示相对于第一区域中的第二分量的基值的增量值。
在一些实施方案中,为了确定第一位数和第二位数,压缩电路基于对应的最小分量值与最大分量值之间的差值,确定第一初始位数以表示第一区域中的针对第一分量的增量值,并且基于对应的最小分量值与最大分量值之间的差值,确定第二初始位数以表示第一区域中的针对第二分量的增量值。然后,响应于确定减少第一初始位数以与第二分量共享增量位,压缩电路选择第一位数和第二位数。
在一些实施方案中,压缩电路使用基于模式的查找技术来确定是否应用跨分量位共享。例如,基于第一区域中的针对第一分量的最小分量值与最大分量值之间的差值,压缩电路可以确定针对第一分量的压缩模式。然后,基于不同分量的模式,压缩电路可以确定是否共享位。例如,每个模式可以指示以下一项或多项:初始基本位数;初始增量位数;压缩级别;任意级别值,其指示在不从分量的基本位或增量位中减去的情况下,能够给予另一分量的级别数;和受保护基值,其指示当向另一分量给予一个或多个级别时,是否能够将该分量的基本位递减。基于针对区域中每个分量的这些字段,跨分量位共享逻辑可以确定位共享的程度,例如,以减少整体量化。
在840,在所示实施方案中,使用所确定的第一位数和第二位数,压缩电路将像素块的第一区域中的像素的第一分量和第二分量的增量值量化。可以相对于基本像素值来确定增量。该量化可能导致有损压缩。在一些实施方案中,使用不同的第三确定位数,压缩电路将像素块的第二区域中的像素的第一分量的增量值量化。换言之,使用不同区域中的不同位数,压缩电路可以将相同分量的增量值量化。
在一些实施方案中,压缩电路被配置为选择并应用针对像素块的第二区域的像素分量值的直接量化。压缩电路可以响应于确定了以下项而应用直接量化:用于第二区域的增量值的量化级别产生超过输入像素数据的直接量化的量化误差,或者第二区域中的分量的浮点值被包括在特定浮点值的集合之中。
在850,在所示实施方案中,使用所量化的增量,压缩电路存储像素块的压缩版本。例如,压缩电路可以将压缩像素块写入高速缓存/存储器层次结构中的某一级。随后,可以检索该块并将其解压缩以用于生成图形帧。
如本文所用,术语“每个”用于指代多个元素的集合中的每个元素,但是可以存在未被指代的与装置或方法相关联的其他元素。换言之,在参照实施方案使用“每个”以将性质或动作赋予多个元素中的各个项的情况下,并不旨在排除该实施方案可包括该性质或动作不适用的其他元素实例的可能性。例如,如果装置支持压缩技术A-F,则短语“针对多种压缩技术的集合中的每种技术,确定...”可以指代所有支持技术的各种子集中的每种技术(例如,子集A-B、B-E、D和F等)。类似地,当对像素块中的像素的“每个分量”执行操作时,此短语可指代所有潜在分量的某一子集(例如,当不使用这些分量中的一个或多个分量来存储像素信息时)。
以下编号的条款列出了本文所公开的各种非限制性实施方案:
集合A
A1.一种装置,包括:
压缩电路,该压缩电路被配置为:
至少部分并行地针对多种不同的无损压缩技术,确定使用该技术来表示正被压缩的像素集中可压缩性最小的像素所需的位数;
基于所确定的位数以及存储针对多种压缩技术的压缩信息所需的标头大小,选择这些压缩技术中的一种技术;以及存储使用所选压缩技术对该像素集的值进行编码的信息。
A2.根据集合A中的任何前述条款所述的装置,其中压缩电路还被配置为:
针对这些压缩技术中的一些技术,针对该像素集中的多个像素区域,使用该技术来确定表示可压缩性最小的像素所需的区域位数;
其中,对这些压缩技术中的一种技术进行选择还基于所确定的区域位数。
A3.根据集合A中的任何前述条款所述的装置,其中针对这些技术中的一种或多种技术的标头信息包括指示相应区域位数与位数之间的差异的字段。
A4.根据集合A中的任何前述条款所述的装置,其中标头信息还指示所选压缩技术、用于表示针对该像素集中的像素分量的增量的位数、以及基本像素值。
A5.根据集合A中的任何前述条款所述的装置,其中多种不同无损压缩技术包括:
原点技术,其确定像素集中的像素的值与像素集中的原点像素的值之间的增量;
邻近技术,其确定像素集中的相邻像素的值之间的增量;
梯度技术,其确定像素集中的像素的值与像素集中的原点像素的值之间的增量,该原点像素的值被添加到基于与原点像素相邻的一个或多个像素的梯度值。
A6.根据集合A中的任何前述条款所述的装置,其中,针对梯度技术,压缩电路被配置为将梯度值存储在像素集的标头中。
A7.根据集合A中的任何前述条款所述的装置,其中像素数据包括每个像素的多个分量,并且其中多种不同无损压缩技术包括一种或多种从一个分量中减去一个或多个其他分量的值的去相关技术。
A8.根据集合A中的任何前述条款所述的装置,其中压缩电路还被配置为生成指示压缩像素集大小的元数据。
A9.根据集合A中的任何前述条款所述的装置,其中元数据具有固定大小,并且其中压缩电路还被配置为响应于确定不需要元数据的所有位来表示该压缩像素集的大小,在元数据中包括标头信息的一个或多个位。
A10.根据集合A中的任何前述条款所述的装置,其中压缩电路还被配置为确定是否将偏差应用于该像素集中的像素值。
A11.根据集合A中的任何前述条款所述的装置,其中这些压缩技术中的一种或多种技术具有固定的基本像素位置,并且不同的压缩技术使用不同的基本像素位置。
A12.根据集合A中的任何前述条款所述的装置,其中压缩电路被配置为单独地确定可压缩性最小的像素,并且针对该像素集中的像素所包括的多个分量,选择压缩技术。
A13.一种方法,包括由根据集合A内的任何前述条款所述的装置执行的操作的任何组合。
A14.一种其上存储有设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
集合A内任何前述条款中所述要素的任何组合。
示例性设备
现在参考图9,示出了框图,该框图示出了设备900的示例性实施方案。在一些实施方案中,设备900的元件可包括在片上系统内。在一些实施方案中,设备900可包括在移动设备中,该移动设备可以由电池供电。因此,设备900的功耗可以是一项重要的设计考虑因素。在所示实施方案中,设备900包括结构体910、计算复合体920、输入/输出(I/O)桥接部950、高速缓存/存储器控制器945、图形单元970和显示单元965。在一些实施方案中,设备900可包括除了所示部件之外和/或代替所示部件的其他部件(未示出),诸如视频处理器编码器和解码器、图像处理或识别元件、计算机视觉元件等。
结构体910可包括各种互连器、总线、MUX、控制器等,并且可被配置为促进设备900的各种元件之间的通信。在一些实施方案中,结构体910的各部分可被配置为实现各种不同的通信协议。在其他实施方案中,结构体910可实现单个通信协议,并且耦接到结构体910的元件可在内部从单个通信协议转换到其他通信协议。
在所示实施方案中,计算复合体920包括总线接口单元(BIU)925、高速缓存930和内核935和940。在各种实施方案中,计算复合体920可包括各种数量的处理器、处理器内核和/或高速缓存。例如,计算复合体920可包括1个、2个或4个处理器内核,或任何其他合适的数量。在一个实施方案中,高速缓存930是关联L2高速缓存的集合。在一些实施方案中,内核935和/或940可包括内部指令和/或数据高速缓存。在一些实施方案中,结构体910、高速缓存930或设备900中的其他地方的一致性单元(未示出)可被配置为维持设备900的各个高速缓存之间的一致性。BIU 925可被配置为管理计算复合体920与设备900的其他元件之间的通信。处理器内核诸如内核935和940可被配置为执行可包括操作系统指令和用户应用指令的特定指令集架构(ISA)的指令。
高速缓存/存储器控制器945可被配置为管理结构体910与一个或多个高速缓存和/或存储器之间的数据传输。例如,可将高速缓存/存储器控制器945耦接到L3高速缓存,继而可将该L3高速缓存耦接到系统存储器。在其他实施方案中,可将高速缓存/存储器控制器945直接耦接到存储器。在一些实施方案中,高速缓存/存储器控制器945可包括一个或多个内部高速缓存。
如本文所用,术语“耦接到”可指示元件之间的一个或多个连接,并且耦接可包括中间元件。例如,在图9中,图形单元970可被描述为通过结构体910和高速缓存/存储器控制器945“耦接到”存储器。相反,在图9所示的实施方案中,图形单元970“直接耦接”到结构体910,因为不存在中间元件。
图形单元970可包括一个或多个处理器和/或一个或多个图形处理单元(GPU)。例如,图形单元970可接收面向图形的指令,诸如
Figure BDA0003900990260000241
Metal或
Figure BDA0003900990260000242
指令。图形单元970可基于所接收的面向图形的指令来执行专用GPU指令或执行其他操作。图形单元970通常可被配置为并行处理大块数据,并且可在帧缓冲器中构建图像以输出到显示器。图形单元970可包括在一个或多个图形处理管线中的变换、照明、三角形和/或渲染引擎。图形单元970可输出针对显示图像的像素信息。在各种实施方案中,可编程着色器975可包括被配置为执行图形程序的高度并行执行内核,这些图形程序可包括像素任务、顶点任务和计算任务(其可以是图形相关的或可以不是图形相关的)。
在一些实施方案中,可编程着色器975包括所公开的压缩电路。
显示单元965可被配置为从帧缓冲区中读取数据并且提供像素值流进行显示。在一些实施方案中,显示单元965可被配置为显示管线。另外,显示单元965可被配置为将多个帧混合以产生输出帧。此外,显示单元965可包括用于耦接到用户显示器(例如,触摸屏或外部显示器)的一个或多个接口(例如,
Figure BDA0003900990260000251
或嵌入式显示端口(eDP))。
例如,I/O桥接部950可包括被配置为实现通用串行总线(USB)通信、安全性、音频和/或低功率永远在线功能的各种元件。例如,I/O桥接部950也可包括接口,诸如脉冲宽度调制(PWM)、通用输入/输出(GPIO)、串行外围接口(SPI)和/或内部集成电路(I2C)。可将各种类型的外围设备和设备经由I/O桥接部950耦接到设备900。
示例性计算机可读介质
本公开已经在上文中详细描述了各种示例性电路。意图在于本公开不仅涵盖包括此类电路系统的实施方案,而且还涵盖包括指定此类电路系统的设计信息的计算机可读存储介质。因此,本公开旨在支持不仅涵盖包括所公开电路系统的装置、而且还涵盖以被配置为生成包括所公开电路系统的硬件(例如集成电路)的制造系统识别的格式指定电路系统的存储介质的权利要求。对此类存储介质的权利要求旨在涵盖例如生成电路设计但本身不制造该设计的实体。
图8是示出根据一些实施方案的存储电路设计信息的示例性非暂态计算机可读存储介质的框图。在例示的实施方案中,半导体制造系统820被配置为处理存储在非暂态计算机可读介质810上的设计信息815,并且基于设计信息815制造集成电路830。
非暂态计算机可读存储介质810可包括各种适当类型的存储器设备或存储设备中的任一个。非暂态计算机可读存储介质810可以是安装介质,例如CD-ROM、软盘或磁带设备;计算机系统存储器或随机存取存储器诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;非易失性存储器诸如闪存、磁介质,例如,硬盘驱动器或光学存储装置;寄存器,或其他类似类型的存储器元件等。非暂态计算机可读存储介质810还可以包括其他类型的非暂态存储器或它们的组合。非暂态计算机可读存储介质810可以包括可驻留在不同位置例如通过网络连接的不同计算机系统中的两个或更多个存储器介质。
设计信息815可利用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息815可以能被半导体制造系统820用来制造集成电路830的至少一部分。设计信息815的格式可以被至少一个半导体制造系统820识别。在一些实施方案中,设计信息815还可以包括指定集成电路830的综合和/或布局的一个或多个单元库。在一些实施方案中,设计信息整体或部分地以指定单元库元素及其连接性的网表的形式来指定。单独获取的设计信息815可以包括或可以不包括用于制造对应集成电路的足够信息。例如,设计信息815可以指定要制造的电路元件,但不指定它们的物理布局。在这种情况下,设计信息815可能需要与布局信息组合以实际制造指定的电路系统。
在各种实施方案中,集成电路830可以包括一个或多个定制宏单元,诸如存储器、模拟或混合信号电路等。在这种情况下,设计信息815可包括与所包括的宏单元相关的信息。此类信息可以包括但不限于电路图捕获数据库、掩模设计数据、行为模型以及设备或晶体管级网表。如本文所用,掩模设计数据可以根据图形数据系统(GDSII)或任何其他合适的格式来格式化。
半导体制造系统820可包括被配置为制造集成电路的各种适当元件中的任何元件。这可包括例如用于(例如,在可包括掩模的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如,通过掺杂材料或使用紫外线处理来修改介电常数)对材料进行改性等的元件。半导体制造系统820还可被配置为针对正确操作执行所制造电路的各种测试。
在各种实施方案中,集成电路830被配置为根据设计信息815指定的电路设计来操作,这可包括执行本文所述的功能中的任何功能。例如,集成电路830可包括图1A和图1B所示的各种元件中的任何元件。另外,集成电路830可被配置为执行本文结合其他部件所述的各种功能。另外,本文所述的功能性可由多个连接的集成电路来执行。
如本文所用,形式为“指定被配置为…的电路的设计的设计信息”的短语并不暗示为了满足该要素就必须制造所涉及的电路。相反,该短语表明设计信息描述了一种电路,该电路在被制造时将被配置为执行所指示的动作或者将包括所指定的部件。
***
尽管上文已经描述了具体实施方案,但这些实施方案并非要限制本公开的范围,即使仅相对于特定特征描述单个实施方案的情况下也是如此。本公开中提供的特征示例意在进行例示,而非限制,除非做出不同表述。上述说明书意在涵盖此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
本公开的范围包括本文(明确或暗示)公开的任意特征或特征的组合或其任意概括,而无论其是否减轻本文解决的任何或所有问题。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地,参考所附权利要求书,可将从属权利要求的特征与独立权利要求的特征进行组合,并可通过任何适当的方式而不是仅通过所附权利要求书中所列举的特定组合来组合来自相应独立权利要求的特征。

Claims (20)

1.一种装置,包括:
压缩电路,所述压缩电路被配置为:
访问针对正被压缩的像素块的像素数据;
针对所述像素块的像素中所包括的多个分量,确定所述像素块的相应不同区域中的相应最小分量值和最大分量值;
基于所确定的最小分量值和最大分量值,确定使用第一位数来表示相对于第一区域中的第一分量的基值的增量值,并且使用不同的第二位数来表示相对于所述第一区域中的第二分量的基值的增量值;
使用所确定的第一位数和第二位数,将针对所述像素块的所述第一区域中的像素的所述第一分量和所述第二分量的增量值量化;以及
使用所量化的增量来存储所述像素块的压缩版本。
2.根据权利要求1所述的装置,其中,为了确定使用所述第一位数和所述第二位数,所述压缩电路被配置为:
确定第一初始位数以表示所述第一区域中的针对所述第一分量的增量值;
确定第二初始位数以表示所述第一区域中的针对所述第二分量的增量值;以及
响应于确定减少所述第一初始位数以与所述第二分量共享增量位,选择所述第一位数和所述第二位数。
3.根据权利要求2所述的装置,其中所述压缩电路被配置为:
基于所述第一区域中的针对所述第一分量的最小分量值与最大分量值之间的差值,确定针对所述第一分量的压缩模式;以及
基于所确定的压缩模式,确定减少所述第一初始位数以与所述第二分量共享增量位,其中所述压缩模式指示:初始基本位数;初始增量位数;任意级别值,其指示在不从所述分量的基本位或增量位中减去的情况下,能够给予另一分量的级别数;和受保护基值,其指示当向另一分量给予一个或多个级别时,是否能够将所述分量的基本位递减。
4.根据权利要求1所述的装置,其中所述压缩电路还被配置为使用不同的确定的第三位数,将针对所述像素块的第二区域中的像素的所述第一分量的增量值量化。
5.根据权利要求1所述的装置,其中所述压缩电路还被配置为选择并应用针对所述像素块的第二区域的像素分量值的直接量化。
6.根据权利要求5所述的装置,其中所述压缩电路被配置为响应于确定了以下项,应用针对所述第二区域的像素分量值的直接量化:
用于所述第二区域的增量值的量化级别产生的量化误差超过了输入像素数据的直接量化;或者
所述第二区域中的分量的浮点值被包括在特定浮点值的集合中。
7.根据权利要求5所述的装置,其中所述压缩电路被配置为生成针对压缩像素块的元数据,所述元数据指示:
使用有损压缩来压缩所述像素块,其中所述装置被配置为暗示:所述压缩像素块的大小与基于使用有损压缩的目标压缩输出大小相匹配;以及
是否将像素分量值的直接量化用于所述区域中的相应区域。
8.根据权利要求1所述的装置,其中所述压缩电路还被配置为在确定所述相应的最小值和最大值之前,将偏差应用于以带符号格式所表示的一个或多个分量值。
9.一种方法,包括:
由压缩电路访问正被压缩的像素块的像素数据;
针对所述像素块的像素中所包括的多个分量,由所述压缩电路确定所述像素块的不同相应区域中的相应最小分量值和最大分量值;
基于所确定的最小分量值和最大分量值,由所述压缩电路确定使用第一位数来表示相对于第一区域中的第一分量的基值的增量值,并且使用不同的第二位数来表示相对于所述第一区域中的第二分量的基值的增量值;
使用所确定的第一位数和第二位数,由所述压缩电路将针对所述像素块的所述第一区域中的像素的所述第一分量和所述第二分量的增量值量化;以及
使用所量化的增量,由所述压缩电路存储所述像素块的压缩版本。
10.根据权利要求9所述的方法,其中所述确定所述第一位数和所述第二位数包括:
基于对应的最小分量值与最大分量值之间的差值,由所述压缩电路确定第一初始位数以表示所述第一区域中的针对所述第一分量的增量值;
基于对应的最小分量值与最大分量值之间的差值,由所述压缩电路确定第二初始位数以表示所述第一区域中的针对所述第二分量的增量值;以及
响应于确定减少所述第一初始位数以与所述第二分量共享增量位,由所述压缩电路选择所述第一位数和所述第二位数。
11.根据权利要求10所述的方法,还包括:
基于所述第一区域中的针对所述第一分量的最小分量值与最大分量值之间的差值,确定针对所述第一分量的压缩模式;以及
基于所确定的压缩模式,确定减少所述第一初始位数以与所述第二分量共享增量位,其中所述压缩模式指示:初始基本位数;初始增量位数;压缩级别;和任意级别值,其指示在不从所述分量的基本位或增量位中减去的情况下,能够给予另一分量的级别数。
12.根据权利要求9所述的方法,还包括针对所述像素块的第二区域,应用像素分量值的直接量化。
13.根据权利要求9所述的方法,还包括:
生成针对所述压缩像素块的元数据,所述元数据指示使用有损压缩来压缩所述像素块,其中解压缩电路暗示:所述压缩像素块的大小与基于使用有损压缩的目标压缩输出大小相匹配。
14.一种其上存储有设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
压缩电路,所述压缩电路被配置为:
访问正被压缩的像素块的像素数据;
针对所述像素块的像素中所包括的多个分量,确定所述像素块的不同相应区域中的相应最小分量值和最大分量值;
基于所确定的最小分量值和最大分量值,确定使用第一位数来表示相对于第一区域中的第一分量的基值的增量值,并且使用不同的第二位数来表示相对于所述第一区域中的第二分量的基值的增量值;
使用所确定的第一位数和第二位数,将所述像素块的所述第一区域中的像素的所述第一分量和所述第二分量的增量值量化;以及
使用所量化的增量来存储所述像素块的压缩版本。
15.根据权利要求14所述的非暂态计算机可读存储介质,其中,为了确定使用所述第一位数和所述第二位数,所述压缩电路被配置为:
确定第一初始位数以表示所述第一区域中的针对所述第一分量的增量值;
确定第二初始位数以表示所述第一区域中的针对所述第二分量的增量值;以及
响应于确定减少所述第一初始位数以与所述第二分量共享增量位,选择所述第一位数和所述第二位数。
16.根据权利要求15所述的非暂态计算机可读存储介质,其中所述压缩电路被配置为:
基于所述第一区域中的针对所述第一分量的最小分量值与最大分量值之间的差值,确定针对所述第一分量的压缩模式;以及
基于所确定的压缩模式,确定减少所述第一初始位数以与所述第二分量共享增量位,其中所述压缩模式指示:初始基本位数;初始增量位数;压缩级别;和任意级别值,其指示在不从所述分量的基本位或增量位中减去的情况下,能够给予另一分量的级别数。
17.根据权利要求14所述的非暂态计算机可读存储介质,其中所述压缩电路还被配置为使用不同的确定的第三位数,将针对所述像素块的第二区域中的像素的所述第一分量的增量值量化。
18.根据权利要求14所述的非暂态计算机可读存储介质,其中所述压缩电路还被配置为选择并应用针对所述像素块的第二区域的像素分量值的直接量化。
19.根据权利要求18所述的非暂态计算机可读存储介质,其中所述压缩电路被配置为生成针对所述压缩像素块的元数据,所述元数据指示:
使用有损压缩来压缩所述像素块,其中所述电路被配置为暗示:所述压缩像素块的大小与基于使用有损压缩的目标压缩输出大小相匹配;以及
是否将像素分量值的直接量化用于所述区域中的相应区域。
20.根据权利要求14所述的非暂态计算机可读存储介质,其中所述压缩电路还被配置为在确定所述相应的最小值和最大值之前,将偏差应用于以带符号格式所表示的一个或多个分量值。
CN202180029948.8A 2020-04-22 2021-04-16 有损压缩技术 Pending CN115516769A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16/855,540 2020-04-22
US16/855,459 2020-04-22
US16/855,459 US11405622B2 (en) 2020-04-22 2020-04-22 Lossless compression techniques
US16/855,540 US11664816B2 (en) 2020-04-22 2020-04-22 Lossy compression techniques
PCT/US2021/027623 WO2021216361A1 (en) 2020-04-22 2021-04-16 Lossy compression techniques

Publications (1)

Publication Number Publication Date
CN115516769A true CN115516769A (zh) 2022-12-23

Family

ID=75914572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180029948.8A Pending CN115516769A (zh) 2020-04-22 2021-04-16 有损压缩技术

Country Status (5)

Country Link
KR (1) KR20220157467A (zh)
CN (1) CN115516769A (zh)
DE (1) DE112021002484T5 (zh)
GB (1) GB2608965A (zh)
WO (1) WO2021216361A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03129987A (ja) * 1989-10-14 1991-06-03 Sony Corp 映像信号符号化装置及び映像信号符号化方法
EP1120970B1 (en) * 1996-05-17 2003-01-29 Matsushita Electric Industrial Co., Ltd. Image decoding apparatus with object area decoding means and shape decoding means
JP3687080B2 (ja) * 1996-07-17 2005-08-24 ソニー株式会社 画像符号化装置および画像符号化方法、画像復号化装置および画像復号化方法、並びに記録媒体

Also Published As

Publication number Publication date
KR20220157467A (ko) 2022-11-29
WO2021216361A1 (en) 2021-10-28
GB202215649D0 (en) 2022-12-07
DE112021002484T5 (de) 2023-04-06
GB2608965A (en) 2023-01-18

Similar Documents

Publication Publication Date Title
US10977833B2 (en) Compressing m-bit data using spatial decorrelation and entropy encoding on n-bit data
US20230253979A1 (en) Lossy Compression Techniques
US11843788B2 (en) Lossless compression techniques
US8355028B2 (en) Scheme for varying packing and linking in graphics systems
US11836368B2 (en) Lossy data compression
Cigolle et al. A survey of efficient representations for independent unit vectors
EP0762328B1 (en) Image processing device
US20240087171A1 (en) Image data decompression using difference values between data values and origin values for image data channels
US20230131251A1 (en) System and method for memory compression for deep learning networks
CN115695807A (zh) 编码像素块
US11539955B2 (en) Method and system for improving compression ratio through pixel conversion of image file
CN115516769A (zh) 有损压缩技术
CN114584777A (zh) 数据压缩和打包
JP2002519957A (ja) 符号関数を処理する方法および装置
US20230334028A1 (en) Data compression and decompression
GB2619574A (en) Image data decompression
Karadayi et al. Evaluation of Texas Instruments TMS320C64x mediaprocessor architecture and performance in image and video computing
CN118158423A (zh) 图像数据压缩
GB2619573A (en) Image data compression
CN118158393A (zh) 图像数据解压缩
CN116896387A (zh) 数据压缩和解压缩
Sannino CODE COMPRESSION

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination