首页 / 数据压缩

数据压缩有效专利 发明

技术内容

数据压缩 [0001] 背景 [0002] 存在许多用于数据压缩的技术。一些技术可产生非常高的压缩水平及非常少的丢失。许多数据压缩技术要求前向纠错。例如,一些增量编码技术同相对小的硬件良好地工作,但要求前向纠错以避免随时间累积的解压缩误差。 [0003] 概述 [0004] 本文描述了电子系统中的数据压缩。一个实施例的编码器传送具有替换位的经编码的字以及定义数据样本中的这些替换位的起始位置的编码。替换位是来自新数据样本中的选定位置的位。替换位的选定的位置可因数据样本而异。编码器可基于相对于先前数据样本已改变的最高有效位来选择该位置。因此,经重构的数据从所替换的位的最高排序位直到最低排序位可都为位准确的。这可减轻针对前向纠错的需要。数据压缩可能是有损的。 然而,有限数量的关键值可被无损地传送。正如所提到的,数据压缩可能不需要前向纠错(FEC),其为许多有损增量编码方案的必要部分。此外,编码和解码可以在硬件和/或软件方面被非常有效地完成。 [0005] 一个实施例是包括以下各项的系统。该系统具有第一接口,该第一接口可操作以访问具有从最高有效位到最低有效位排序的“n”个位的第一数据样本,以及具有从最高有效位到最低有效位排序的“n”个位的第二数据样本,其中第二数据样本是数据样本的有序序列中的第一数据样本之后的下一个数据样本。该系统具有可操作以确定在第一数据样本和第二数据样本之间不同的最高排序位(如果有的话)的第一逻辑。该系统具有可操作以确定作为“n”个位的特定位的分接点(tap point)的第二逻辑。分接点是“m”个位的覆盖的许多个被允许的起始点中的一个。分接点对应于其排序与在第一和第二数据样本之间不同的最高排序位至少一样高的位。分接点被定位成使得所有“n”个位都落在至少一个覆盖内。该系统具有可操作以访问第二数据样本的包括“m”个毗连的位的一部分的第三逻辑。该部分起始于分接点,并包括朝向最低有效位的位。该部分是第二数据样本的覆盖。第三逻辑还可操作以形成用于第二数据样本的经压缩的字,该压缩字包括第二数据样本的与指示分接点的编码相关联的部分。该系统具有第二接口,其可操作以输出用于第二数据样本的经压缩的字。 [0006] 一个实施例是包括以下各项的方法。编码器访问具有从最高有效位到最低有效位排序的“n”个位的第一数据样本,以及具有从最高有效位到最低有效位排序的“n”个位的第二数据样本,其中第二数据样本是数据样本的有序序列中的第一数据样本之后的下一个数据样本。编码器确定在第一数据样本和第二数据样本之间不同的最高排序位。编码器选择作为“n”个位的特定位的分接点。分接点是“m”个位的覆盖的许多个被允许的起始点中的一个。分接点对应于其排序与在第一和第二数据样本之间不同的最高排序位至少一样高的位。分接点被布置成使得所有“n”个位都落在至少一个覆盖内。该覆盖为“m”位。编码器访问第二数据样本的起始于分接点并朝向最低有效位移动的毗连部分。该毗连部分是第二数据样本的“m”位覆盖。编码器向解码器提供用于第二数据样本的经压缩的字。该经缩的字包括第二数据样本的与指示分接点的编码相关联的毗连部分。 [0007] 一个实施例是包括以下各项的一种装置。该装置具有解码器逻辑,其可操作以从编码器接收用于第一数据样本的经压缩的字,并且对第一数据样本解压缩以产生经解压缩的第一数据样本。该解码器逻辑还可操作以从编码器接收用于第二数据样本的经压缩的字,其中第二数据样本是数据样本的有序序列中的第一数据样本之后的下一个数据样本。 用于第二数据样本的经压缩的字包括第二数据样本的分接点的编码以及第二数据样本的“m”个毗连的位。第一和第二数据样本当被解码时各自具有从最高有效位到最低有效位排序的“n”个位。分接点是“n”个位的特定位。分接点是“m”个位的覆盖的许多个被允许的起始点中的一个。分接点对应于其排序与在第一和第二数据样本之间不同的最高排序位至少一样高的位。分接点被定位成使得所有“n”个位都落在至少一个覆盖内。解码器逻辑可操作以访问来自用于第二数据样本的经压缩的字的分接点和覆盖。解码器逻辑可操作以基于分接点来确定第二数据样本的覆盖的起始点。解码器逻辑可操作以用来自用于第二数据样本的经压缩的字的第二数据样本的“m”个毗连的位来替换起始于第二数据样本的覆盖的起始点的第一数据样本的经解码的版本中的“m”个位,以便生成第二数据样本的经解码的版本。解码器逻辑可操作以输出第二数据样本的经解码的版本。 [0008] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。 [0009] 附图简述 [0010] 图1示出了其中各实施例可被实践的示例性环境。 [0011] 图2例示了可以在图1的示例性环境中使用的捕捉设备的示例实施例的进一步的细节。 [0012] 图3示出了适用于数据压缩的一个实施例的16位数据样本。 [0013] 图4描绘了编码器和解码器的一个实施例。 [0014] 图5A是对数据样本进行编码的过程的一个实施例的流程图。 [0015] 图5B描绘了两个数据样本的示例,以帮助解说图5A的过程。 [0016] 图6A是被用来发送先前没有被发送的对位的改变的过程的一个实施例的流程图。 [0017] 图6B是例示帮助解说图6A的过程的处理的图示。 [0018] 图7是示出用于对经压缩的字进行解码的过程的一个实施例的流程图。 [0019] 图8A是用于实现编码器的一个实施例的示例逻辑的图示。 [0020] 图8B是示出用于解码器的一个实施例的逻辑的图示。 [0021] 图9A示出了解说提供空闲位的一个实施例的示例。 [0022] 图9B是提供空闲位的解码的一个实施例的流程图。 [0023] 图10A示出了两个连续的数据样本,以便解说对二进制补码而言非常小的改变。 [0024] 图10B示出了解说浮动符号实施例的示例。 [0025] 图10C是浮动符号编码的过程的一个实施例的流程图。 [0026] 图10D是浮动符号解码的过程的一个实施例的流程图。 [0027] 图10E是图10C的实施例的替代实施例的流程图。 [0028] 图10F是图10D的实施例的替代实施例的流程图。 [0029] 图11A示出了具有浮点格式的数据样本的示例。 [0030] 图11B示出了指数上升的跨越情况。 [0031] 图11C示出了指数下降的跨越情况。 [0032] 图11D示出了过零跨越情况。 [0033] 图11E是进行编码以处理跨越情况的一个实施例的流程图。 [0034] 图11F是进行解码以处理跨越情况的一个实施例的流程图。 [0035] 图12A是用来解说对特殊符号进行编码的一个实施例的数据样本和经压缩的字的图示。 [0036] 图12B是对特殊符号进行编码的一个实施例的流程图。 [0037] 图12C是对特殊符号进行解码的一个实施例的流程图。 [0038] 图13是可被用来实现所公开技术的组件和执行所公开技术的方法的计算系统的框图。 [0039] 详细描述 [0040] 本文所公开的各实施例提供了浮动覆盖压缩(“FOC”)。在一个实施例中,编码器假定数据样本是从最高有效位到最低有效位排序的。在一个实施例中,用于从编码器被发送到解码器的新数据样本的经压缩的数据包括“覆盖”以及指示该覆盖起始的位的位置的编码。覆盖是新数据样本中小的毗连段,至少在一些情况下该小的毗连段包括在新数据样本和紧接在前的数据样本之间改变了的最高排序位。覆盖起始于或者最高排序的改变了的位的位置或者更有效位的位置。因此,解码器可使用覆盖来替换先前经解码的数据样本中的某些位。这导致新数据样本的经解码的版本。 [0041] 在一个实施例中,经重构的数据从所替换的位直到最高排序位都将是位准确的。 但是,相比所替换的位而言,排序更低的位可能是不准确的。在一个实施例中,覆盖被用来传送在两个先前样本之间改变了的但在这两个先前样本的第二个样本中没有被准确地重构的位。即,改变了的位不是相对于紧接在前的样本的新样本中的改变。这在下文中被称为“纹波实施例”。该纹波实施例允许即使是较低排序位在仅一个或几个数据样本之后也是准确的。 [0042] 术语覆盖可被使用,因为FOC通过传送用于已改变的最高有效位的替换位而不是由一些常规技术所传送的差异值来工作。术语浮动可被使用,因为待替换的位的位置可因样本而异。这些位的位置也作为经编码的字的一部分来被传送。 [0043] FOC可被认为是固定长度增量编码的一种形式。例如,FOC可传送连续的数据样本之间的差异,其中这些差异相比传送整个样本而言通常要求更少的要传送的位。FOC可能是有损的。正如已提到的,覆盖可能不包括一些被改变了的较低排序位。然而,由于这些是较低排序位,所以它们的丢失可能不那么重要。例如,如果数据是表示像素值的整数数据,则最低有效位中的一者的丢失不一定导致显著的性能降级。此外,如以上所提到的,对较低排序位的改变可稍后在纹波实施例中被传送。在一个实施例中,有限数量的关键值可被无损地传送。 [0044] 没有假定FOC在压缩因子方面将必然同一些常规的增量编码技术一样好地执行。 然而,FOC的编码要求更加简单。例如,FOC不需要前向纠错(FEC),其为许多有损增量编码方案的必要部分。FEC在许多有损增量编码的方案中是必需的,因为如果编码器仅考虑当前和紧接在前的样本,则由每个样本处的压缩损失造成的误差将向前运送到链中的所有后续样本。这导致每个单独步骤处的误差的累积,从而导致每个经重构的样本相比在前的样本更容易出错。虽然设计良好的常规技术将具有随时间推移的零平均误差,但是局部化的误差可以是显著的。当样本在样本链上单调变化时,误差可能会特别严重,从而导致跨链累积的全正或者全负的误差。 [0045] 本文所公开的各实施例的编码和解码可以在硬件、软件或其某些组合中执行。编码可以在硬件和/或软件方面被非常有效地完成。同样地,解码可以在硬件和/或软件方面被非常有效地完成。不需要前向纠错是允许编码器和/或解码器的硬件和/或软件更加简单的一个因素。 [0046] 图1示出了其中各实施例可被实践的示例性环境10。示例性环境10包括计算控制台(下文中称为“控制台”)202、捕捉设备20和显示器14。在操作期间,各种数据可根据各实施例来被压缩以用于传送。作为一个示例,捕捉设备20可生成视频或深度数据,其中的任一者可被压缩并通过通信链路262被传送到控制台202。这些数据传送中的任一者可以是有线或无线的。在一些情况下,数据传送不会发生在设备外部。例如,控制台202内的一个组件可对数据编码并将经压缩的数据传送到控制台202内的另一组件。 [0047] 接下来,将讨论控制台202的进一步的细节。控制台202可包括硬件组件和/或软件组件,使得控制台202可被用来执行诸如游戏和非游戏应用之类的应用。在一个实施例中,控制台202可包括可执行被储存在处理器可读存储设备上以用于执行本文所描述的过程的指令的处理器,诸如标准化处理器、专用处理器、微处理器等。 [0048] 控制台202配备有内部硬盘驱动器(未示出)和支持如光学存储盘208所表示的各种形式的便携式存储介质的便携式介质驱动器206。合适的便携式存储介质的示例包括DVD、CD-ROM、游戏盘等。控制台202还包括用于容纳可移动闪存型存储器单元240的两个存储器单元卡插座225(1)和225(2)。控制台202上的命令按钮235可启用和禁用无线外围支持。 [0049] 控制台202还包括用于与一个或多个设备进行无线通信的光学端口230和支持用于附加的控制器或其他外围的有线连接的两个USB(通用串行总线)端口210(1)和210(2)。 在一些实现中,附加端口的数量和布置可被修改。电源按钮212和弹出按钮214还被定位在游戏控制台202的正面。电源按钮212被选择来对游戏控制台供电,并且还可提供对其他特征和控件的访问,而弹出按钮214交替地打开和关闭便携式介质驱动器206的托盘以允许存储盘208的插入和取出。 [0050] 控制台202可被连接到具有显示器14的音频/视频设备16。设备16可例如为可以向用户提供游戏或应用视觉和/或音频的电视机、监视器、高清电视机(HDTV)等。例如,控制台 202可包括诸如图形卡之类的视频适配器和/或诸如声卡之类的音频适配器,这些适配器可提供与游戏或其他应用相关联的音频/视觉信号。音频/视觉设备16可从控制台202接收音频/视觉信号,并且可接着输出与这些音频/视觉信号相关联的游戏或应用视觉和/或音频。 根据一个实施例,音频/视觉设备16可经由可例如为S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆、分量视频电缆等的A/V电缆220来被连接到控制台202。 [0051] 电源电缆222向游戏控制台供电。控制台202可进一步被配置成具有如电缆或调制解调器连接器224所表示的宽带能力以便于访问诸如互联网等网络。还可通过诸如无线保真(Wi-Fi)网络等宽带网络来无线地提供宽带能力。 [0052] 图2例示了可被用于环境10中的捕捉设备20的示例性实施例的进一步的细节。在一个示例中,捕捉设备20可被配置成经由任何合适的技术来捕捉具有可包括深度值的深度图像的视频,这些技术包括例如飞行时间、结构化光、立体图像等。根据一个实施例,捕捉设备20可将计算出的深度信息组织成“Z层”或者可以与从深度相机沿其视线延伸的Z轴垂直的层。 [0053] 如图2所示,捕捉设备20可包括图像相机组件22。根据一示例实施例,图像相机组件22可以是可捕捉场景的深度图像的深度相机。深度图像可包括捕获的场景的二维(2-D)像素区域,其中该2-D像素区域中的每个像素都可以表示一深度值,诸如捕获的场景中的一对象距相机的例如以厘米、毫米等为单位的长度或距离。 [0054] 如图2所示,根据一示例实施例,图像相机组件22可包括可以被用来捕捉场景的深度图像的红外(IR)光组件24、三维(3-D)相机26以及RGB相机28。例如,在飞行时间分析中,捕捉设备20的IR光组件24可将红外光发射到场景上,并且可接着使用传感器(未示出)用例如3-D相机26和/或RGB相机28来检测从场景中的一个或多个目标和对象的表面反向散射的光。 [0055] 在一些实施例中,脉冲红外光可被使用,使得出射光脉冲与对应的入射光脉冲之间的时间可被测得并被用来确定从捕捉设备20到场景中的目标或对象上的特定位置的物理距离。附加地,在其他示例实施例中,可以将出射光波的相位与入射光波的相位进行比较以确定相移。该相移于是可被用来确定从捕捉设备20到目标或对象上的特定位置的物理距离。 [0056] 根据另一示例性实施例,飞行时间分析可被用来通过经由包括例如快门式光脉冲成像在内的各种技术分析反射光束随时间的强度来间接地确定从捕捉设备20到目标或对象上的特定位置的物理距离。 [0057] 捕捉设备20还可包括麦克风30。麦克风30可包括可接收声音并将其转换成电信号的换能器或传感器。根据一个实施例,麦克风30可被用来减少目标识别、分析及跟踪系统10中的捕捉设备20和控制台202之间的反馈。附加地,麦克风30可被用来接收也可由用户提供的音频信号,以控制可由控制台202执行的诸如游戏应用、非游戏应用等的应用。 [0058] 在一示例实施例中,捕捉设备20还可包括可以与图像相机组件22有效通信的处理器32。处理器32可包括可执行指令的标准处理器、专用处理器、微处理器等,这些指令可包括用于接收深度图像的指令、用于确定合适的目标是否被包括在深度图像中的指令、用于将合适的目标转换成该目标的骨架表示或模型的指令,或者任何其他合适的指令。 [0059] 捕捉设备20还可包括存储器组件34,存储器组件34可储存可由处理器32执行的指令、由3-D相机或RGB相机捕获的图像或图像的帧,或者任何其他合适的信息、图像等。根据一示例实施例,存储器组件34可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘或者任何其他合适的存储组件。如图2所示,在一个实施例中,存储器组件34可以是与图像相机组件22和处理器32通信的分开的组件。根据另一实施例,存储器组件34可被集成到处理器32和/或图像相机组件22中。 [0060] 如图1和图2所示,捕捉设备20可经由通信链路262与控制台202通信。通信链路262可以是包括例如USB连接、IEEE 1394连接、以太网电缆连接等在内的有线连接和/或诸如无线802.11b、802.11g、802.11a或802.11n连接等的无线连接。根据一个实施例,控制台202可经由通信链路262向捕捉设备20提供时钟,该时钟可被用来确定何时捕捉例如一场景。 [0061] 附加地,捕捉设备20可将由例如3-D相机26和/或RGB相机28捕获的深度信息和图像经由通信链路262提供给控制台202。在一个实施例中,数据由捕捉设备20处的编码器402压缩,通过通信链路262按经编码的形式被传送,并由解码器404在控制台202处解码。虽然未在图2中被描绘出,但是捕捉设备20也可具有解码器,并且控制台202同样可具有编码器。 [0062] 在一个实施例中,编码器402假定每个样本的最高有效位是高排序位。在一个实施例中,编码器402替换起始于最高排序的改变了位或者其以上的数据。然而,给定的编码器 402实施例可能不允许在所有可能的位的位置处开始覆盖。因此,每个编码器402实施例指定覆盖可以开始处的多个分接点。覆盖是从选定的分接点开始朝向低排序位的位置的毗连的位。在一个实施例中,分接点以使所有的位都在至少一个分接点的范围内的方式进行分配。因此,对任何位的改变可被编码。 [0063] 将参考图3来解说一个实施例。图3示出了16位数据样本302。这些位从最高有效位(例如,303(15))到最低有效位(例如,303(0))按递增的有效性来被排序。在该示例中,这些位从最高有效位(MSB)到最低有效位(LSB)被标记为15、14、13、...0。 [0064] 示出了四个可用的覆盖(覆盖0、覆盖1、覆盖2、覆盖3)。每个覆盖涵盖数据样本302中的六个毗连的位。在该示例中,16位样本302被分配四个分接点(TP0、TP1、TP2、TP3)。需要注意,所有16位都在至少一个分接点的范围内。例如,位15到10在覆盖3的范围内,位12到7在覆盖2的范围内,而位8到3在覆盖1的范围内,且位5到0在覆盖0的范围内。由于存在四个可用的分接点,所以两个位将被用来对分接点进行编码。出于贯穿本公开的讨论的目的,针对TP0、TP1、TP2、TP3,编码将分别为(00,01,10,11)。由于存在六个位的覆盖以及用于经编码的分接点的两个位,因此在该示例中经编码的样本结果将始终为八位。 [0065] 可存在多于或少于四个的分接点。覆盖可包括多于或者少于六个位。样本大小不被要求为16位。在一个实施例中,存在同时在使用的有限数量的分接点。因此,对于每个位均被用于给定的经编码的样本的“m”的覆盖而言,存在有限数量的被允许的起始点。然而,分接点被布置成使得所有“n”个位都落在至少一个覆盖内。 [0066] 在一个实施例中,等式1中的以下关系适用于各自具有“n”个位、“m”个位的覆盖以及“e”个位的经编码的分接点的输入数据样本。需要注意,分接点可被编码在一个或多个位中。 [0067] (1)(2e×m)≥n [0068] 图4描绘了编码器402和解码器404的一个实施例。编码器402输入数据样本302,将它们压缩,并输出经压缩的数据样本550。在该示例中,编码器402使用接口456输入来自存储器452的数据样本302。 [0069] 经压缩的数据样本550在本文中可被称为“经压缩的字”或“经编码的数据样本”。 编码器402和解码器404之间的通信链路406被用来传送经编码的(或经压缩的)数据样本 550。通信链路406可以是有线或者无线的。 [0070] 编码器402具有样本比较逻辑412、分接点确定逻辑414以及经压缩的字生成逻辑 416。编码器402具有接口456,该接口456访问各自包括未经压缩格式的“n”个位的数据样本。每个数据样本302的“n”个位可以从最高有效位到最低有效位按递减的有效性来被排序。此外,数据样本302可被顺序地排序。作为一个示例,每个数据样本302可表示像素,其中在各像素之间存在空间序列。作为另一示例,每个数据样本302可以是音频数据,其中在各音频数据样本之间存在时间序列。编码器402具有可被用来储存先前访问的数据样本302以及其他信息的存储472。 [0071] 数据样本302可具有各种格式。作为一个示例,数据样本302是整数数据。数据样本 302的最高有效位可指示符号(例如,正或负)。该符号可指示整数是正还是负。作为一个示例,数据样本302可具有二进制补码格式。另一示例是符号和指数格式。例如,最高有效位可以是在尾数中被表示的值的符号。若干位可被用于指数。指数可被储存在符号之后的下一个最高有效位处。剩余的较低排序位是尾数。 [0072] 样本比较逻辑412被配置成执行两个数据样本302的比较。在一个实施例中,这是相对于例如数学比较而言的逻辑比较。作为一个示例,样本比较逻辑412执行逐位的比较。 在一个实施例中,逻辑412确定在两个数据样本之间不同的最高排序位。 [0073] 分接点确定逻辑414被配置成确定最新数据样本302的分接点。 [0074] 经压缩的字生成逻辑416被配置成为最新数据样本302生成经压缩的字550。在一个实施例中,逻辑416访问最新数据样本302的包括“m”个毗连的位的一部分,其中“m”是覆盖的大小。逻辑416根据用于分接点的编码以及“m”位覆盖来生成经压缩的字550。在一个实施例中,经压缩的字550包括指定分接点的编码以及最新数据样本的一些选定的位。最新数据样本的选定的位可被称作覆盖。在一个实施例中,编码器402遵照上述等式1来操作。在该情况下,分接点由“e”个位的编码指定,并且覆盖是最新数据样本的“m”个位。 [0075] 解码器404通过通信链路406从编码器402接收经压缩的字550。解码器404具有从通信链路406访问经压缩的字550的接口462。解码器404对经压缩的字550进行解码,并使用接口464来输出经解压缩的数据样本。经解压缩的数据样本302被描绘成被储存在存储器 454中。 [0076] 解码器404包括分接点逻辑422和解压缩逻辑426。分接点逻辑422被配置成确定经压缩的字550中的分接点应被如何使用以基于最新数据样本的覆盖来修改先前经解码的数据样本。解码器402具有可被用来储存先前解码的数据样本以及其他信息的存储474。 [0077] 解压缩逻辑426被配置成在经压缩的字550中取得覆盖,并使用它来修改先前数据样本以生成新数据样本的经解码的版本。分接点逻辑422同解压缩逻辑426一起工作以用覆盖来替换先前样本中的适当的位。 [0078] 编码器402和/或解码器404内的各种逻辑可以用硬件、软件或者硬件和软件的某些组合来实现。例如,一些逻辑可以通过实现诸如或、非或、异或、与、非与等的布尔逻辑的门来实现。一些逻辑可以用硬件实现的优先编码器来实现。一些逻辑可以在片上系统(SoC)内被实现。各个接口456、458、462、446可以是各种各样的接口,诸如USB控制器、I/O控制器、网络接口等。 [0079] 编码器402和/或解码器404内的任何或全部逻辑可以通过在处理器上执行指令来被实现。例如,回头参考图2,编码器402可至少部分地通过在处理器32上执行被储存在存储器34中的指令来被实现。类似的推理适用于解码器404。类似的推理适用于具有编码器402和/或解码器404的其他设备。图13示出了其中编码器402和/或解码器404可被实现的一个示例计算系统。 [0080] 回头参考图1的示例,控制台202或捕捉设备20可包括编码器402和/或解码器404。 在一些情况下,在操作期间,设备中的一者的编码器402向设备的另一者的解码器404提供经压缩的字。例如,捕捉设备20的编码器402向控制台202的解码器404提供经压缩的字。然而,一个可能性为例如控制台202的编码器402向控制台的解码器404提供经压缩的字。类似的推理适用于捕捉设备20和显示器14。还需要注意,图1中所描绘的各种设备14、20、202仅仅是一个示例环境。编码器402和/或解码器404不限于这些设备。 [0081] 图5A是对数据样本进行编码的过程的一个实施例的流程图。该过程可由编码器 402来执行。图5B描绘了将被用来帮助解说该过程的两个数据样本的示例。为了方便讨论,将以一定的顺序来描绘各步骤。 [0082] 在步骤502中,编码器402访问数据样本。编码器402可使用接口456(参见图4)访问来自存储器452的数据样本302。编码器402可具有用于至少临时地储存先前访问的数据样本的本地存储472。如上所述,数据样本302可具有包括但不限于整数、二进制补码以及符号和指数的格式。这些所访问的数据样本在一个实施例中具有某种连续的排序。例如,如果数据样本在空间上相关,则两个连续的数据样本可以是针对物理上相邻的数据。例如,两个数据样本可以是针对物理上相邻的像素。作为一个特别的示例,这些像素可以是显示屏上的两个相邻的像素。作为另一特别的示例,这些像素可以是相机的图像传感器的两个相邻的像素。 [0083] 在步骤504中,编码器402确定在最新数据样本与先前数据样本之间不同的最高排序位(如果有的话)。需要注意,最新数据样本是数据样本的有序序列中的先前数据样本之后的下一个数据样本。图5B示出了先前数据样本(D1)和新数据样本(D2)。每个数据样本都具有16位。在该示例中,编码器402假定这些位是从最高有效位到最低有效位排序的。该示例与图3的示例一致,其中数据样本具有从最高有效位(例如,位15)到最低有效位(例如,位 0)排序的16位。附加地,四个分接点TP0、TP1、TP2和TP3的位置与图3中的相同。需要注意,分接点的数量和位置的选择是设计决策。 [0084] 在图5B中,只要任何给定的英文字母表的字母的所有实例都表示相同的0或1的位值,则当实际值不相干时,字母就被用来表示这些位值。贯穿本说明书,将不会使用字母“I”、“O”和“Q”。出于解释的目的,图3所示的位编号0-15将在讨论图5B时被使用。因此,位15指代最高有效位(被标记为“A”),而位0指代最低有效位(被标记为“S”)。在两个数据样本(D1,D2)之间仅有两个位是不同的。在位7,值已从“1”变为“0”。在位14,值已从“0”变为“1”。 对于任何其他的位,两个数据样本302(0)、302(1)之间未曾有改变。在图5B的示例中,编码器402确定在两个样本之间不同的最高排序位是位14。 [0085] 在步骤506中,编码器402确定新数据样本的分接点。在一个实施例中,编码器402选择其关联的覆盖包括了在两个样本之间不同的最高排序位的最低分接点。如果没有位已改变,则最低的覆盖可被选择。在一个实施例中,选定的分接点对应于其排序与在两个数据样本之间不同的最高排序位至少一样高的位。 [0086] 在本示例中,如果在两个样本之间不同的最高排序位是位5到0中的任一者,则TP0被选择。同样,如果不存在位差异,则TP0被选择。如果在两个样本之间不同的最高排序位是位8到6中的任一者,则TP1被选择。如果在两个样本之间不同的最高排序位是位12到9中的任一者,则TP2被选择。如果在两个样本之间不同的最高排序位是位15到13中的任一者,则TP3被选择。参考图5B,编码器402确定分接点TP3是新样本的分接点,因为位14是在两个样本之间不同的最高排序位。 [0087] 在步骤508中,编码器402访问新数据样本的包括“m”个毗连的位的一部分。这里,“m”是覆盖的大小。该毗连部分起始于分接点,并包括朝向最低有效位的位。这充当“m”位覆盖。覆盖可以是一些固定数量的位。参考图3来解说,如果分接点是TP0,则位5到0被访问。如果分接点是TP1,则位8到3被访问。如果分接点是TP2,则位12到7被访问。如果分接点是TP3,则位15到10被访问。参考图5B,编码器402访问新样本(D2)的位15到10。 [0088] 在步骤510中,编码器402形成用于新数据样本的经压缩的字。经压缩的字包括分接点的编码以及新数据样本的覆盖。参考图5B,经压缩的字550(1)包括分接点TP3的编码“11”以及新数据样本(D2)的六个最高有效位。在该示例中,覆盖是六位的,但可以是不同数量的位。 [0089] 在步骤512中,编码器402通过通信链路406将经压缩的字发送到解码器404。需要注意,在位15向下到10中的任一者处可能已发生的任何改变已在该经压缩的字550(1)中被传达到解码器404。因此,在该示例中,至少对于最有效的六个位而言,不存在任何数据丢失。还需要注意,每当较低的分接点能够被选择,则甚至更多的位将是准确的。例如,回头参考图3,如果分接点TP2已被选择,则位15向下到7将是准确的。这可以当位12到7被包括作为覆盖数据且位15到13在两个最新近的数据样本之间没有改变时发生。 [0090] 然而,可能在较低有效位处潜在地存在至少一些临时数据丢失。例如,在该示例中,关于位7处的改变的信息尚未被传送到解码器404。接下来将在下文就可如何在经压缩的字中传达对位7的这种改变以供稍后的数据样本来讨论示例。 [0091] 图6A是被用来发送改变(诸如先前提到的对位7的改变)的过程的一个实施例的流程图。图6B是例示先前讨论的数据样本302(0)、302(1)以及下一个数据样本302(2)的处理的图示。为了方便讨论,处理数据样本302(2)的示例将被讨论。该过程可由编码器402来执行。为了方便讨论,将以一定的顺序来描绘各步骤。 [0092] 在步骤602中,编码器402访问下一个数据样本。该下一个数据样本可以是数据样本的有序序列中的下一个数据样本。该下一个数据样本可以在空间上与上一个数据样本相邻。例如,数据样本302(2)可以是物理上与数据样本302(1)所表示的像素相邻的像素的像素数据。作为另一示例,下一个数据样本可以在时间上与上一个数据样本相邻。例如,数据样本302(2)可以是在时间上相对于数据样本302(1)的下一个数据样本。 [0093] 在步骤604中,编码器402确定在最新数据样本与先前数据样本之间不同的最高排序位。图6B示出了先前数据样本(D2)和新数据样本(D3)。在两个数据样本(D3,D2)之间不同的唯一的位处于位1处。在位1处,值已从“0”变为“1”。对于任何其他的位,两个数据样本(D2,D3)之间未曾有改变。因此,在步骤604中,编码器402确定在两个样本之间不同的最高排序位是位1。 [0094] 在步骤606中,编码器402确定新数据样本的临时分接点。这类似于图5A的步骤 506,但为临时分接点,因为它可以稍后在过程中改变。参考图6B,编码器402确定分接点TP0是新样本(D3)的临时分接点。需要注意,假定六位覆盖,则针对TP0的覆盖将包括D2和D3之间的改变了的位。 [0095] 在步骤608中,编码器402确定新数据样本的最低的被允许的分接点。该步骤的原因是允许数据样本D1和D2之间的位7处的先前提到的差异在经压缩的字中被传送。需要注意,为了简化编码器402的设计,编码器不需要记住数据样本D1和D2之间的位7处的差异没有在经压缩的字中(在图5A的处理期间)被传送。并不要求编码器402不储存这样的信息。然而,以下描述了在不论编码器402是否储存这样的信息的情况下均合适的技术。 [0096] 由于编码器402不需要储存关于D1和D2之间的位7处的改变的任何信息,所以编码器402可简单地假定有可能的是在D2的覆盖以下也许已经存在改变。参考图6B,D2的覆盖 570(1)覆盖了位15到10(即,A、1、C、D、E、F)。这意味着在位10(其在图6B中由“F”表示)以下的D1和D2之间可能存在改变。分接点TP2是可被选择以使位10以下的任何位都被包括在覆盖中的最低分接点。因此,编码器402确定分接点TP2是最低的被允许的分接点。需要注意,最低的被允许的分接点可基于上一个分接点,结合这些分接点所位于的地点及覆盖的大小的知识来被确定。 [0097] 需要注意,在该示例中,如果知道位7是在D1和D2之间改变了的且先前没有在经压缩的字中被传达的最高排序位,则分接点TP1可被选择作为最低的被允许的分接点。然而,这将要求编码器402记住位7已改变。通过不要求编码器402的一个实施例来记住这样的信息,编码器402的设计被简化。这可导致较少的硬件和/或更简单的软件。例如,编码器402可具有较少的逻辑,诸如数据锁存器、门等。 [0098] 在步骤610中,编码器402确定最终的分接点。这是临时分接点和最低的被允许的分接点之间的最高分接点。在图6B的示例中,最终分接点是TP2。然而,临时分接点可能高于最低的被允许的分接点。在这种情况下,临时分接点被选择作为最终分接点。 [0099] 该过程接着使用最终分接点通过采取来自图5A的步骤508-512来继续。在步骤508中,编码器402访问新数据样本(D3)的起始于分接点的毗连部分。这充当数据样本D3的覆盖。参考图6B,编码器402访问新样本(D3)的位12到7。需要注意,在该示例中,覆盖包括在D1和D2之间改变了的数据位。 [0100] 在步骤510中,编码器402形成用于新数据样本的经压缩的字。参考图6B,经压缩的字550(2)包括分接点TP2的“10”的分接点编码560(2)。另外,覆盖570(2)是新数据样本(D3)的位12到7(D E F G H 0)。需要注意,最低有效位是“0”,以表示从“1”到“0”的改变。 [0101] 在步骤512中,编码器402通过通信链路406将经压缩的字550(2)发送到解码器 404。因此,在该时刻,从15到7的位将是准确的。然而,位7以下的位尚未被保证是准确的。可为接下来的数据样本重复图6A的过程。取决于D3和D4之间的差异,这可能导致D4的分接点为TP1。可为接下来的数据样本重复图6A的过程。取决于D4和D5之间的差异,这可能导致D5的分接点为TP0。 [0102] 图7是示出用于对经压缩的字进行解码的过程的一个实施例的流程图。该过程可由解码器404来执行。该过程可在编码器402执行图5A或6A的过程时作为两个示例来被使用。为了方便讨论,将按一定的顺序来描绘各步骤。 [0103] 在步骤702中,解码器404接收用于数据样本的经压缩的字。将假定解码器404已接收并解码了数据样本的有序序列中的先前样本。因此,为了讨论起见,解码器404已解码了数据样本D1,并且恰好正在接收用于数据样本D2的经压缩的字。在该过程期间,解码器404将修改先前经解码的数据样本D1,以便生成数据样本D2的经解码的版本。 [0104] 在步骤704中,解码器404访问来自经压缩的字的分接点的编码。如以上所讨论的,编码可具有“e”个位。例如,两位编码可被用于分接点TP0、TP1、TP2和TP3。参考图5B中的示例,解码器404访问来自经压缩的字的“11”编码。 [0105] 在步骤706中,解码器404基于分接点来确定覆盖的起始点。解码器404已经知道针对分接点中的每一者的起始点为何。例如,在某先前时间处,编码器402可能已向解码器404发送了用于每个分接点及其相关联的起始点的编码。需要注意,分接点以及分接点起始点的数量可“在运行中(on-the-fly)”被改变。用于分接点以及它们的起始点的编码也可以在解码器404中被硬编码。 [0106] 在步骤708中,解码器404使用从用于数据样本D2的经压缩的字访问的覆盖来替换先前经解码的数据样本D1中的“m”个毗连的位。参考图5B中的示例,解码器404访问六个覆盖位(A、1、C、D、E、F),并使用它们来替换已被解码的数据样本D1中的位15到10。 [0107] 在一个实施例中,解码器404在替换了先前经解码的数据样本D1的“m”个毗连的位之后,进一步使用旨在减少经解码的数据样本D2中的最大误差的一组位来替换相比被覆盖的位具有更低排序的所有的位。低于所替换的位的位的实际值对解码器404而言是未知的。 因此,通过例如用中间范围值来替换这些较低排序的位,最大可能解码误差被最小化。作为一个示例,位2到0表示对解码器404而言未知的0和7之间的值。因此,将这些位解码成表示值为4的100(二进制)把最大可能误差限制为4。显然,表示值为3的011也具有为4的最大可能误差。 [0108] 输入值的分布和/或某些类型的误差的成本的知识可导致针对被覆盖的位以下的上述较低排序位的不同的设置。在一个实施例中,解码器404用零来重写覆盖以下的位。这确保了输出结果将不会高于数据样本的实际值。 [0109] 在步骤710中,解码器输出经解码的数据样本D2。需要注意,在该时刻,结果向下到位10是准确的。然而,位7处的改变尚未被传送到解码器404。 [0110] 下面描述用于数据样本D3的经压缩的字的处理。需要注意,图7的过程可简单地被再次使用。因此,在步骤702中,用于D3的经压缩的字被接收到。图6B示出了用于D3的经压缩的字570(2)。在步骤704中,从经压缩的字访问分接点。图6B示出了分接点编码560(2)是“10”。该编码用于分接点TP2。 [0111] 在步骤706中,解码器404基于分接点来确定覆盖的起始点。在该示例中,分接点TP2的起始点为位12。 [0112] 在步骤708中,解码器404用起始于分接点的覆盖来替换先前样本(D2)的经解码的版本中的“m”个毗连的位。图6B示出了经解码的样本650。经解码的样本示出了区域640,其对应于来自样本D2(先前样本)的覆盖。经解码的样本示出了区域642,其对应于来自样本D3(新样本)的覆盖。因此,需要注意,位15到10先前已被替换。此时,位12到7使用覆盖570(2)来被替换。这意味着经解码的数据从位15向下到位7将是准确的。这也意味着D1和D2之间的在原始改变(位7)的时间处没有被发送的先前改变了的位现在已被发送。 [0113] 然而,D2和D3之间的改变了的位尚未被解码。需要注意,在图6B中的经解码的样本 650的位1处,该经解码的样本具有“0”,而D3(参见样本302(2))具有“1”。该改变可通过图6A的过程中的编码器402所使用的先前讨论过的技术来被“纹波化”。因此,位1处的改变最终可被传送到解码器404。需要注意,解码器404不需要意识到编码器402执行了图6A的过程以纹波化先前的改变。这有助于解码器404的简单设计。 [0114] 图8A是用于实现编码器402的一个实施例的示例逻辑的图示。该逻辑可以在硬件、软件或者硬件和软件的组合中被实现。该示例逻辑适用于实现图6A所描述的过程。 [0115] 新数据样本Dn和紧接在前的数据样本Dn-1被输入到异或(XOR)逻辑802中。每个数据样本都具有“n”个位。异或逻辑802执行每个位的逐位逻辑比较,并输出“n”个位到优先级编码器804。因此,异或逻辑802可以用一组异或逻辑门来实现。如果两个数据样本中的对应的位不同,则异或逻辑802输出“1”,否则输出“0”。 [0116] 优先级编码器804检查“n”个位并确定为“1”的最高排序位。优先级编码器804(与异或802组合)确定在两个输入数据样本之间不同的最高排序位。优先级编码器804被配置成输出表示包含为“1”的最高输入位的区域的“e”位编码。该编码被称为“Pn”。优先级编码器804可以用一组逻辑门来实现。下表I示出了二进制中的一个示例,其中“e”是两位。该示例与来自图3的示例一致。 [0117] 表I [0118] [0119] 优先级编码器804实际上确定新数据样本的分接点。数据样本Dn的分接点被称为Pn。需要注意,这可以是图6A的实施例中的步骤606的临时分接点。优先级编码器804将分接点的编码输出到合并逻辑806。 [0120] 合并逻辑806还输入了先前数据样本的最终分接点。这被称为En-1。合并逻辑806确定新数据样本(Dn)的最终分接点。这被称为En。结合图6A中的步骤610讨论了最终分接点。回想一下,该示例中的最终分接点被确定为临时分接点和最低的被允许的分接点之间的最高分接点。另外,最低的被允许的分接点可基于上一个分接点,结合这些分接点所位于的地点及覆盖的大小的知识来被确定。 [0121] 最终分接点(En)被提供给移位逻辑808。移位逻辑808还输入了新数据样本Dn。移位逻辑808输出“m”个位,其充当新数据样本Dn的覆盖。 [0122] 最后,最终分接点(En)和“m”个覆盖位被组合以形成用于新数据样本Dn的经压缩的字(Cn)。 [0123] 图8B是示出用于解码器404的一个实施例的逻辑的图示。该逻辑可以在硬件、软件或者硬件和软件的组合中被实现。该示例逻辑适合与图8A的样本编码器逻辑一起使用。 [0124] 解码器404接收来自编码器402的经压缩的字(Cn),如先前所讨论。来自经压缩的字(Cn)的分接点(En)被输入到扩展逻辑852。在该示例中,分接点是作为“e”个位的编码。 [0125] 来自经压缩的字(Cn)的“m”个覆盖位被提供给第一移位逻辑854。 [0126] 再次返回以讨论扩展逻辑852,该扩展逻辑852取得分接点的编码并将其扩展成移位值。移位值基于分接点的位的位置来被确定。 [0127] 移位值被提供给第一移位逻辑854和第二移位逻辑856两者。第一移位逻辑854输入了移位值以及“m”个覆盖位。第一移位逻辑854输出“n”个位的数据。该数据是移位了移位量的“m”个覆盖位。 [0128] 第二移位逻辑856还输入了移位值以及掩码。在该示例中,掩码为0x003F。该掩码值与图3的示例一致,其中覆盖是六位(例如,其中m是六位)。第二移位逻辑856输出“n”位掩码。 [0129] 下表II示出了移位值可被如何使用的一个示例。该示例与图3的示例一致。需要注意,在该示例中,“n”是16位。 [0130] 表II [0131] [0132] 表II示出了分接点En(其用二进制表示)的四个值。数据指的是由第一逻辑854输出的16位的数据。数据中的“M”指代“m”个覆盖位。需要注意,对于每个分接点,“m”个覆盖位已被移位了不同的量。 [0133] 表II中的掩码指的是由第二逻辑856输出的16位掩码。再次需要注意,掩码中的“一”模式针对每个分接点被移位了不同的量。还要注意,掩码模式中存在“m”个一(在该例子中,“m”为六)。 [0134] MUX 858输入了来自第一移位逻辑854的“n”个数据位以及来自第二移位逻辑856的“n”位掩码。MUX 857还输入了来自上一个经解码的数据样本Dn-1的“n”个位。MUX输出了新数据样本Dn的经解码的值。例如,当对下一个数据样本进行解码时,Dn变成Dn-1。需要注意,仅上一个阶段被纹波化,这导致了非常薄的纹波层。 [0135] 分接点不被要求位于本文描述的示例中所描绘的精确位置处。然而,分接点的选择对于数据压缩性能而言可能是重要的。此外,数据样本的类型可能影响分接点的选择。在一个实施例中,如果任何两个分接点相邻,则当两个分接点中的较高排序者被选择时,可以推断出一个位。如果两个相邻分接点的较高者被选择,则可以推断出所选择的分接点处的位已改变。覆盖可被用来更新起始于所选择的分接点右侧的一个位的位置的位。这有效地提供了不需要被传送的“推断的位”。例如,这允许“m”位覆盖更新“m+1”位,其中最高排序位被反转,并且剩余的位由覆盖来替换。 [0136] 图9A示出了解说提供推断的位的一个实施例的示例。在该实施例中,分接点TP1和TP2彼此相邻。需要注意,针对TP1和TP2的覆盖涵盖了相同的位。也就是说,覆盖1和覆盖2涵盖了相同的位。当TP2是所选择的分接点时,解码器404知道位9已经翻转。因此,当解码器 404接收所描绘的带有用于分接点编码560的“10”的经压缩的字550时,解码器404知道位9已经翻转并且覆盖570应当被用来替换位8到3。需要注意,该实施例可以是参考图3所描述的实施例的替代方案。 [0137] 图9B是提供推断的位的解码的一个实施例的流程图。当编码器402使用结合图9A所描述的实施例进行编码时,解码器404可以执行该过程。为了方便讨论,按某种顺序对各步骤进行描绘。 [0138] 在步骤902中,解码器404接收用于数据样本302的经压缩的字550。将假定解码器 404已接收到并解码了数据样本的有序序列中紧接在前的数据样本。此外,为讨论起见,编码560是对应于分接点TP1的编码“01”。 [0139] 在步骤904中,解码器404访问来自经压缩的字550的新分接点的编码。 [0140] 在步骤906中,解码器404确定新分接点是否比另一个被允许的分接点高一位。在图9A的示例中,解码器404确定新分接点是否为TP2。如果是,则过程908在步骤908处继续。 [0141] 在步骤908中,解码器404确定覆盖的起始点。解码器404确定起始点在新分接点下面一位。例如,起始点是位8,参考图9A。 [0142] 在步骤910中,解码器404反转先前经解码的数据样本中的新分接点处的位。参考图9A中的示例,解码器404将知道来反转位9。 [0143] 另一方面,如果解码器404在步骤906中确定了新分接点不比另一个被允许的分接点高一位,则步骤907被执行。在步骤907中,覆盖的起始点被建立作为新分接点。 [0144] 在步骤912中,解码器404用来自新数据样本的经压缩的字的覆盖来替换先前经解码的数据样本中的“m”个毗连的位。参考图9A中的示例,解码器404访问六个覆盖位(A、B、C、D、E、F),并且在分接点是TP2的情况下使用它们来替换先前经解码的数据样本中的位8到3。 在图9A中描绘了针对其他分接点的覆盖。 [0145] 在步骤914中,解码器输出经解码的数据样本。 [0146] 在一个实施例中,被压缩的数据样本具有二进制补码格式。二进制补码可能对压缩提出了挑战,因为零周围的非常小的变化可能导致对高排序位的改变,从而导致根本无法校正低排序位。虽然绝对误差不比其他情况下的高,但是相对(百分比)误差可能非常高。 [0147] 为了解说,将参考图10A。图10A示出了两个连续的数据样本302(p)和302(n)。每个数据样本均具有二进制补码格式。数据样本302(p)是小的正数。数据样本302(n)是小的负数。需要注意,在两个样本之间存在许多已改变了的高排序位。如果分接点在最高有效位处被选择,则连同“m”个最高有效位的覆盖一起的经压缩的字550是可被发送的经压缩的字。 在该示例中,“m”为6位。然而,这将导致经解压缩的样本650在六个最高有效位中具有一,随后在接下来的四个最高有效位中为零。最低有效位将保持不变。结果将为,经解码的样本将不正确地读取为比它应该是的值更大的负值。 [0148] 虽然符号和大小(sign-and-magnitude)表示可能产生多少更接近的结果,但是最低有效位将再次保持不变。一个实施例的解决方案是结合本文中被称为“浮动符号”的技术来使用符号和大小表示。在浮动符号实施例中,两个分接点编码而不是一个分接点编码被分配给最低排序分接点。这些编码将符号位和低排序位一起修改。因此,编码器402在符号位是要改变的唯一的高排序位时不将该符号位视为高排序位。在所有其他情况下,符号位被正常地对待。 [0149] 图10B示出了用于解说浮动符号实施例的示例。在该示例中,数据样本302具有符号和大小格式。最高有效位是符号位(被表示为“S”)。需要注意,该数据格式与图10A的二进制补码格式不同。分接点TP0和TP1都位于被标记为“A”的位处。该位置比最低有效位高“m- 1”位。为了与本文中的其他示例一致,在该示例中“m”为6。然而,覆盖可大于或小于六位。针对这些分接点中的每一个分接点的覆盖涵盖了六个最低有效位。在该示例中,分接点TP2位于位10处,而分接点TP3位于最高有效位处。 [0150] 图10C是浮动符号编码的过程的一个实施例的流程图。该过程可由编码器402来执行。为了便于讨论,将参考图10B的示例来讨论该过程。正如所提到的,图10B的示例中的数据样本302具有符号和大小格式。该过程可被一般化到不同数量和/或位置的分接点、不同大小的覆盖、数据样本中不同数量的位,等等。 [0151] 在步骤1052中,编码器402访问数据样本的有序序列中的两个最新近的数据样本。 在步骤1054中,编码器402确定在两个最新近的数据样本之间不同的最高排序位(除符号位以外)。 [0152] 如果不同的最高排序位(除符号位以外)是在最低的覆盖中(步骤1056=是),或者如果除了符号位以外不存在变化,则过程在步骤1058处继续。在这种情况下,分接点将为或者TP0或者TP1。 [0153] 另一方面,如果不同的最高排序位不在最低的覆盖中(步骤1056=否),则过程执行正常编码。在这种情况下,分接点将为或者TP2或者TP3。可以如作为两个示例的结合图5A或6A所讨论的那样来执行正常编码。 [0154] 现在参考其中分接点将为或者TP0或者TP1的情况,在步骤1058处,编码器402确定符号位在两个数据样本之间是否不同。如果符号位尚未改变,则在步骤1062中,编码器402选择TP0作为分接点。如果符号位已改变,则在步骤1062中,编码器402选择TP1作为分接点。 TP0和TP1的角色可被翻转。 [0155] 接下来,过程进行到步骤508。步骤508、510和512类似于在图5A的过程中具有相同附图标记的步骤。一般而言,这些步骤被用来形成包含分接点的编码以及新数据样本的充当覆盖的毗连部分的经压缩的字。在步骤512中,编码器402将经压缩的字发送到解码器 404。 [0156] 图10D是浮动符号解码的过程的一个实施例的流程图。该过程可由解码器404来执行。为了便于讨论,将参考图10B的示例来讨论该过程。该过程可以在使用图10C的过程来执行编码时被使用。该过程可被一般化到不同数量和/或位置的分接点、不同大小的覆盖、数据样本中不同数量的位,等等。一些步骤类似于图7的过程,并且将使用相同的附图标记。 [0157] 在步骤702中,解码器404接收用于数据样本的有序序列中的一数据样本的经压缩的字。将假定解码器404已接收到并解码了有序序列中的紧接在前的数据样本。 [0158] 在步骤704中,解码器404访问来自经压缩的字的新分接点的编码。 [0159] 在步骤1082中,解码器404确定分接点是否为TP1。在该示例中,这是一个特殊的分接点,其指示符号已被改变并且任何其他变化被限于低排序位。 [0160] 在步骤1084中,解码器404反转先前数据样本的经解码的版本中的符号位。 [0161] 在步骤706中,解码器404基于分接点来确定覆盖的起始点。在步骤708中,解码器 404用来自新数据样本的经压缩的字的覆盖来替换先前经解码的数据样本中的“m”个毗连的位。在步骤710中,解码器404输出经解码的数据样本。需要注意,分接点TP0、TP2和TP3的处理与图7的过程相同。 [0162] 图10E是图10C的实施例的替代实施例的流程图。在本实施例中,分接点中的一个(例如,TP0)被用来传达当前数据样本中的符号位的值为“0”。分接点中的另一个(例如,TP1)被用来传达当前数据样本中的符号位的值为“1”。该实施例与图10C的实施例的差异在于步骤1065替代了步骤1058–1062。回想一下,步骤1056是要确定其中除了符号位以外已经改变的最高排序位(如果有的话)是在最低的覆盖中的触发条件。当这发生时,步骤1065被执行,其中分接点被选择来传送符号位。编码器402在当前数据样本中的符号位的值为“0”时可选择分接点TP0。编码器402在当前数据样本中的符号位的值为“1”时可选择分接点TP1。 [0163] 图10F是图10D的实施例的替代实施例的流程图。当编码器402执行图10E的过程时,解码器404可执行图10F的过程。图10F和图10D之间的差异在于步骤1086和1088替代了步骤1082和1084。在步骤1086中,解码器404确定或者分接点TP0或者TP1是新分接点。在步骤1088中,解码器404基于分接点来将先前数据样本的经解码的版本中的符号位置位。使用图10E的示例,解码器404可在分接点为TP0时将符号位置为“0”。当分接点为TP1时,解码器 404可将符号位置为“1”。 [0164] 在一个实施例中,被压缩的数据样本是浮点数。图11A示出了具有浮点格式的数据样本302的示例。最高有效位是正被编码的值的符号。位14到10是指数。位9到0是尾数。 [0165] 还描绘了四个分接点。与其他示例一样,“m”个位的覆盖可与每个分接点相关联。 例如,覆盖可为6位。因此,位5到0可通过选择分接点TP0或TP1来被替换。位10到5可通过选择分接点TP2来被替换。位15到10可通过选择分接点TP3来被替换。 [0166] 此外,在一个实施例中,当分接点TP1在经压缩的字中时,位15到6潜在地被解码器 404重新计算。因此,TP1是指令解码器404实现复杂改变的特殊编码。编码器402在某些条件被检测到时选择该编码。重新计算可被用来处理在本文中被称为“跨越情况”的情形。当值中存在导致符号位或指数改变的小的变化时,跨越情况可能会发生。跨越情况由编码器402来检测,编码器402选择特殊的分接点(在该示例中为TP1)。图11B、图11BC和图11D示出了跨越情况的三个示例。 [0167] 图11B示出了“指数上升”跨越情况。数据样本302(n-1)是先前数据样本。数据样本 302(n)是新数据样本。在该示例中,指数增加一。另外,符号位在两个样本之间保持相同。而且,尾数中的较高排序位从“1”变为“0”。在该示例中,针对该改变来对尾数中的四个最高排序位进行检查。低排序位中的改变并不重要。需要注意,在该示例中,尾数中无关紧要的位对应于最低的覆盖中的那些位。 [0168] 图11C示出了“指数下降”跨越情况。数据样本302(n-1)是先前数据样本。数据样本 302(n)是新数据样本。在该示例中,指数下降一。另外,符号位在两个样本之间保持相同。而且,尾数中的较高排序位从“0”变为“1”。在该示例中,针对该改变来对尾数中的四个最高排序位进行检查。低排序位中的改变并不重要。需要注意,在该示例中,尾数中无关紧要的位对应于最低的覆盖中的那些位。 [0169] 图11D示出了“过零”跨越情况。数据样本302(n-1)是先前数据样本。数据样本302(n)是新数据样本。在该示例中,指数对两种情况而言均为零。然而,符号位在两个样本之间切换(例如,反转)。另外,尾数中的较高排序位保持为“0”。在该示例中,对尾数的四个最高排序位进行检查。低排序位中的改变并不重要。需要注意,在该示例中,尾数中无关紧要的位对应于最低的覆盖中的那些位。 [0170] 图11E是进行编码以处理跨越情况的一个实施例的流程图。在步骤502中,编码器 402访问有序序列中的两个最新近的数据样本。 [0171] 在步骤1152中,编码器402确定这是否为跨越情况。图11B描绘了指数上升跨越情况。编码器402可通过确定以下各项来检测该跨越情况:1)符号位尚未改变;2)指数已增加了一;以及3)尾数中比最低的覆盖高的位已从全一翻转为全零。 [0172] 图11C描绘了指数下降跨越情况。编码器402可通过确定以下各项来检测该跨越情况:1)符号位尚未改变;2)指数已减少了一;以及3)尾数中比最低的覆盖高的位已从全零翻转为全一。 [0173] 图11D描绘了过零跨越情况。编码器402可通过确定以下各项来检测该跨越情况: 1)符号位已经改变;2)两个样本中的指数为全零;以及3)尾数中比最低的覆盖高的位为全零。 [0174] 在步骤1152中,编码器402可寻找这些跨越情况中的任一者或全部。例如,在一个实施例中,编码器确定指数是否已在两个最新近的数据样本之间恰好改变了1以及尾数中比“m”个最低有效位高(例如,比最低的覆盖高)的位在两个最新近的数据样本之间是否尚未改变。 [0175] 如果编码器402没有检测到跨越情况,则处理可类似于起始于步骤504的图5A或者类似于起始于步骤604的图6A。如果编码器402的确检测到跨越情况,则在步骤1154中,编码器402选择分接点TP1作为分接点。 [0176] 处理接着继续步骤508-512,这些步骤类似于图5A。需要注意,无论是否为跨越情况,处理可以是相同的。 [0177] 图11F是进行解码以处理跨越情况的一个实施例的流程图。该过程可以在使用图 11E的过程进行编码时被使用。在步骤702中,解码器404接收包括新分接点和新覆盖的经压缩的字。在步骤704中,解码器访问来自经压缩的字的新分接点。 [0178] 在步骤1182中,解码器404确定分接点是否为TP1。这给了解码器404这是跨越情况的提示。如果分接点不是TP1,则分接点的正常处理被执行。例如,图7的过程可被使用。 [0179] 在本示例中,存在三个跨越情况。在步骤1184中,解码器404确定这是哪个跨越情况。解码器404可通过检查先前经解码的数据样本来确定跨越情况。 [0180] 当以下条件在先前样本中得到满足时,解码器404可确定这是过零跨越情况:1)在指数以及尾数中在最低的覆盖以上的位中存在全零。 [0181] 当以下条件在先前样本中得到满足时,解码器404可确定这是指数上升跨越情况: 1)在先前数据样本中,尾数中在最低的覆盖以上的位为全一。 [0182] 当以下条件在先前样本中得到满足时,解码器404可确定这是指数下降跨越情况: 1)在先前数据样本中,尾数中在最低的覆盖以上的位为全零;2)指数中的位不为全零。 [0183] 需要注意,存在其中解码器404检查过零、指数下降和指数上升情况的其他组合的许多变体。解码器404基于编码器402寻找了哪些情况来检查合适的情况。 [0184] 解码器404基于跨越情况来采取合适的步骤1186、1188或1190。如果这是过零跨越情况,则在步骤1186中,解码器404反转先前经解码的数据样本中的符号位。过程接着进行到步骤708以用覆盖来替换TP1处的先前经解码的数据样本的“m”个位。在步骤710中,经解码的数据样本接着由解码器404输出。 [0185] 如果这是指数下降情况,则在步骤1188中,解码器404在先前经解码的数据样本中将指数减少1。另外,解码器404将先前经解码的数据样本的尾数中的比覆盖高的位反转为全一。然后,如先前参考过零情况所描述的来执行步骤708和710。 [0186] 如果这是指数上升情况,则在步骤1190中,解码器404在先前经解码的数据样本中将指数增加1。另外,解码器404将先前经解码的数据样本的尾数中的比覆盖高的位反转为全零。然后,如先前参考过零情况所描述的来执行步骤708和710。 [0187] 如先前所提到的,对其他分接点的处理不要求特殊的处理。在该情况下,如果分接点是TP0,则解码器404将在不改变最高有效位、不改变指数且不改变尾数中在“m”个最低有效位以上的位的情况下用覆盖来替换经解码的先前数据样本中的最低有效的“m”个位。 [0188] 一些样本可能要求特殊的处理,因为它们必须被无损地解码。例如,误差编码和特殊符号必须在无位误差的情况下被解码。在一个实施例中,通常不由编码器402生成的某些输出编码被用来发送这样的特殊符号。 [0189] 尽管本文中所描述的数据压缩的一些实施例可能是有损的,但是在解码器404处,多个高排序位(等于覆盖的长度)总是正确的。如果在该区域中存在第二分接点,则选择最高分接点但发送不改变第二分接点以上的数据的覆盖的编码通常将不由编码器402生成。 因此,解码器404可将这解释成特殊符号。 [0190] 图12A是用来解说对特殊符号进行编码的一个实施例的数据样本302和经压缩的字550的图示。需要注意,分接点TP2比分接点TP3低三位。为了与本文中的其他示例一致,覆盖为六位。因此,需要注意,TP2在TP3的覆盖之内。 [0191] 经压缩的字550包括分接点TP3的编码以及重复三个最高有效位(A、B、C)的覆盖。 通常,编码器402将不选择分接点TP3并发送不改变三个最高有效位中的任何一个的覆盖。 换言之,假定覆盖570中的三个最高有效位尚未改变,则分接点通常将为分接点TP2或更低者。需要注意,选择分接点TP2可以保证向下直到位7的位都是准确的。然而,选择分接点TP3仅保证向下到位10的位是准确的。因此,除非位A、B或C中的至少一个已经改变,否则选择TP3而不是TP2是没有优势的。 [0192] 解码器404理解该情况,其中TP3看起来被不必要地选择为指示正被发送的特殊符号。此外,覆盖570中的三个最低有效位可被用来在多个特殊符号之间进行区分。需要注意,这些特殊符号可被无损地传送。 [0193] 图12B是对特殊符号进行编码的一个实施例的流程图。在步骤1201中,编码器402发送用于数据样本的经压缩的字。该经压缩的字使得至少“m”个最高有效位将是准确的。如前所述,“m”是指以位为单位的覆盖的大小。 [0194] 在步骤1202中,编码器402确定特殊符号是否应当在下一个经压缩的字中被传送。 在一个实施例中,该特殊符号是应当被无损地传送的有限数量的符号中的一个。步骤1202可包括识别出误差已经发生以及一些误差编码应当被发送的编码器402。 [0195] 在步骤1204中,编码器402访问特殊符号的编码。为了讨论起见,该编码长度上为“s”位。在图12A的示例中,“s”为三,但是可以大于或小于三,这取决于对分接点的选择。 [0196] 在步骤1206中,编码器选择分接点TP3作为分接点。这与图12A的示例一致。但是,所选择的分接点取决于实现。 [0197] 在步骤1208中,编码器402访问在步骤1201中所参考的先前数据样本的“m-s”个最高有效位。 [0198] 在步骤1210中,编码器402形成用于特殊符号的经压缩的字。在该示例中,经压缩的字具有分接点TP3的编码。另外,覆盖570中的“m-s”个最高有效位是来自在步骤1201中所参考的数据样本的“m-s”个最高有效位。覆盖中的“s”个最低有效位是特殊符号的编码。在该示例中,特殊符号的编码起始于分接点TP2。 [0199] 图12C是对特殊符号进行解码的一个实施例的流程图。在步骤1252中,解码器404接收用于数据样本的有序序列中的一数据样本的经压缩的字。在步骤1254中,解码器404对数据样本进行解码。已经讨论了步骤1252和1254的示例。在步骤1254之后,解码器404具有数据样本的经解码的版本。在一个实施例中,这对于至少“m”个最高有效位而言将是准确的。 [0200] 在步骤1256中,解码器404接收紧接在来自步骤1252的经压缩的字之后的下一个经压缩的字。该下一个经压缩的字对应于数据样本的有序序列中的下一个数据样本。 [0201] 在步骤1258中,解码器404确定特殊符号是否正在经压缩的字中被传送。解码器 404可以通过注意分接点是否为最高分接点(在本示例中为TP3)以及从最高分接点向上到但不包括下一个最高分接点的位中是否没有位已经改变来作出该确定。例如,解码器404将覆盖570与来自步骤1254的数据样本的经解码的版本进行比较,以帮助作出该确定。如果该测试没有被满足(步骤1258=否),则解码器404执行正常处理。如果测试被满足(步骤1258=是),则处理在步骤1260处继续。 [0202] 在步骤1260中,解码器404访问来自覆盖570的特殊符号的编码。在该示例中,编码可以是固定的长度。即,所有的编码可以是相同数量的位。因此,解码器404可访问来自覆盖 570的最低有效的“s”个位。在步骤1262中,解码器404可接着确定覆盖中的编码表示的特殊符号。需要注意,该特殊符号与编码器402在图12B的一个实施例中所一同工作的是同一个。 解码器404可接着输出特殊符号。任选地,解码器404可接着处理特殊符号。例如,解码器404可将特殊符号的编码转换为误差编码。然后,解码器404可基于误差编码来采取动作、传递误差编码,等等。 [0203] 在一个实施例中,在图12B的过程中,编码器402寻找应当被无损地传送的特殊符号。当编码器402接收到特殊符号时,其(作为一个示例)随未改变的高排序位以及特殊符号的一些编码来发送TP3。在图12C的过程的一个实施例中,解码器404确定特殊符号的编码对应于由编码器402接收到的特殊符号,并输出该特殊编码。 [0204] 图13例示了诸如多媒体控制台之类的计算系统100的功能组件,其描绘了其中本公开的各方面可被实现的一个计算环境。例如,编码器402和/或解码器404可以在计算系统 100中被实现。需要注意,多媒体控制台仅作为示例来被提供,因为各实施例可以在包括处理器和系统存储器在内的任何通用计算机系统中被实现。 [0205] 也不应将该计算设备解释为对示例性操作系统中所例示出的任一组件或其组合有任何依赖性或要求。在某些实施例中,所描绘的各种计算元素可包括被配置成实例化本发明的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。其他示例实施例中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。选择硬件或是软件来实现具体功能可以是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。由此,对于硬件实现还是软件实现的选择是设计选择之一并留给实现者。 [0206] 计算系统100包括具有1级高速缓存102、2级高速缓存104和闪存ROM(只读存储器) 106的中央处理单元(CPU)101。1级高速缓存102和2级高速缓存104临时地储存数据,并因此减少存储器访问周期的数量,由此改进处理速度和吞吐量。CPU 101可被提供为具有一个以上的核,并因此具有附加的1级高速缓存102和2级高速缓存104。闪存ROM 106可储存在系统 100通电时引导过程的初始阶段期间被加载的可执行代码。 [0207] 图形处理单元(GPU)108和视频编码器/视频编解码器(未示出)形成用于高速和高分辨率图形处理的视频处理流水线。类似地,音频处理单元(APU)114和音频编码器/音频编解码器(未示出)形成用于高速和高分辨率音频处理的音频处理流水线。数据可经由总线从GPU 108和APU 114被运送到编码器/编解码器。视频和音频处理流水线向A/V(音频/视频)端口140输出数据,用于传输到电视机或其他显示器。 [0208] 计算系统100包括在模块118上被实现的I/O控制器120、系统管理控制器122、网络接口控制器124、第一USB主控制器126、第二USB控制器128和前面板I/O子部件130。USB控制器126和128充当外围控制器142(1)-142(2)、无线适配器148以及外围存储器设备146(例如,闪存、外围CD/DVD ROM驱动器、可移动介质等)的主控。网络接口124和/或无线适配器 148提供对网络(例如,互联网、家庭网络等)的访问,并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线接口组件中的任何一种。 [0209] 计算系统100可包括各种计算机可读介质。计算机可读介质可以是可由计算系统 100访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机可读存储介质和通信介质。计算机可读存储介质包括以供存储诸如计算机可读指令、数据结构、程序模块或其他数据等的信息的任何方法或技术实现的易失性和非易失性、以及可移动和不可移动介质。计算机可读存储介质包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪存或其他存储器技术,CD-ROM、数字多功能盘(DVD)或其他光盘存储,磁带盒、磁带、磁盘存储或其他磁存储设备,或可被用来储存信息且可由计算设备100访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“经调制的数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如RF及其他无线介质之类的无线介质。上述任何项的组合也被包括在计算机可读介质的范围内。 [0210] 非易失性存储器143(例如,闪存)被提供来储存在引导过程期间被加载的应用数据。介质驱动器144被提供且可包括DVD/CD驱动器、蓝光驱动器、硬盘驱动器、或其他可移动介质驱动器等。介质驱动器144可内置或外置于计算系统100。应用数据可经由介质驱动器 144来访问,以供多媒体控制台100执行、回放等。介质驱动器144经由诸如串行ATA总线或其他高速连接(例如IEEE 1394)之类的总线被连接到I/O控制器120。 [0211] 系统管理控制器122提供与确保计算系统100的可用性相关的各种服务功能。前面板I/O子部件130支持被展示在计算系统100的外表面上的电源按钮150和弹出按钮152以及任何LED(发光二极管)或其他指示器的功能。系统供电模块136向计算系统100的各组件供电。风扇138冷却计算系统100内的电路。 [0212] 计算系统100内的CPU 101、GPU 108、控制器110以及各种其他组件经由一条或多条总线互连,总线包括串行和并行总线、存储器总线、外围总线以及使用各种总线架构中的任一种的处理器或局部总线。 [0213] 当计算系统100通电时,应用数据可从非易失性存储器143加载到存储器112和/或高速缓存102、104中,并且可在CPU 101上被执行。应用可在导航到多媒体控制台100上可用的不同媒体类型时呈现提供一致用户体验的图形用户界面。在操作中,介质驱动器144中所包含的应用和/或其他介质可从介质驱动器144启动或播放,以将附加功能提供给计算系统 100。 [0214] 计算系统100可通过简单地将该系统连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,计算系统100允许一个或多个用户与该系统交互、看电影或听音乐。然而,在通过网络接口124或无线适配器148可用的宽带连接集成的情况下,计算系统 100可进一步作为更大网络社区中的参与者来操作。 [0215] 控制器110被连接到CPU 101、GPU 108和APU 114,以便于对系统存储器112的访问和管理。控制器110可包括用于访问系统存储器112的硬件和/或软件。例如,在一个示例中,一个实现可包括被实现作为CPU 101的一部分的一个或多个独立的MMU(存储器管理单元)。 控制器110可包括基于硬件的存储器控制器。例如,基于软件的实现可包括被并入由CPU  101提供的操作系统内的控制器。在一个示例中,MMU在计算系统的操作系统层中被提供。系统存储器112可包括但不限于RAM(随机存取存储器),诸如DRAM(动态RAM)。控制器可负责处理与各种处理器相关联的存储器访问请求。由控制器执行的其他功能可包括将虚拟地址转换为物理地址(即,虚拟存储器管理)、存储器保护、高速缓存控制,等等。 [0216] 尽管用结构特征和/或方法动作专用的语言描述了本发明主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。

A·D·丹尼尔发明人的其他相关专利技术