CN1607732A - 压缩数据的可变长编码 - Google Patents

压缩数据的可变长编码 Download PDF

Info

Publication number
CN1607732A
CN1607732A CN 200410078982 CN200410078982A CN1607732A CN 1607732 A CN1607732 A CN 1607732A CN 200410078982 CN200410078982 CN 200410078982 CN 200410078982 A CN200410078982 A CN 200410078982A CN 1607732 A CN1607732 A CN 1607732A
Authority
CN
China
Prior art keywords
value
decompressor
currency
series
compressor reducer
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.)
Granted
Application number
CN 200410078982
Other languages
English (en)
Other versions
CN100492915C (zh
Inventor
希姆·列
Z·刘
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.)
Nokia Technologies Oy
Original Assignee
Nokia Oyj
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 Nokia Oyj filed Critical Nokia Oyj
Publication of CN1607732A publication Critical patent/CN1607732A/zh
Application granted granted Critical
Publication of CN100492915C publication Critical patent/CN100492915C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明是一种用于将当前值压缩到最小数量的比特以便从压缩器发送到解压缩器的方法和系统。根据本发明的方法包括在压缩器上保留一系列至少先前值,每个先前值具有不同的k个最低有效位并且其已经发送到解压缩器;确定表示允许利用所述一系列先前值中的任何值作为参考值而在解压缩器上对当前值成功地解压缩的最小数比特的k值;以及将当前值以压缩的形式与当前值的k个最低有效位一起从压缩器发送到解压缩器。

Description

压缩数据的可变长编码
本申请是申请日为2000年11月2日、申请号为00815502.X并且发明名称为“压缩数据的可变长编码”的申请的分案申请。
                        技术领域
本发明涉及包括分组头压缩的高效数据压缩。
                        背景技术
本申请要求1999年11月9日提交的名为“Variable LengthEncoding of Compressed Data(压缩数据的可变长编码)”的美国临时申请序号60/164,330的提交日。
参考2000年3月9日提交的名为“An Efficient HandoffProcedure for Header Compression(用于头压缩的一种高效切换过程)”的美国专利申请序号09/522,497,该申请已转让给本申请的受让人并且整体合并在这里供参考。
还可参考2000年3月28日提交的名为“Method and System forTransmitting and Receiving Packets(用于发送和接收分组的方法和系统)”的美国专利申请序号09/536,639,该申请已转让给本申请的受让人并且整体合并在这里供参考。
在许多领域中,能够以高效和对错误鲁棒性的方式对一系列值进行压缩非常关键。例如IP/UDP/RTP头压缩以便在蜂窝网上传送实时基于IP的多媒体业务。因为IP/UDP/RTP头的尺寸大并且蜂窝系统的带宽有限,因此压缩效率是必需的。因为蜂窝链路易于出错的特点因此错误鲁棒性也需要。
在1999年2月的互联网工程任务组(IETF)RFC 2508中描述的RTP头压缩在无损压缩器-解压缩器链路上获得了很高的压缩效率。其可以将大多数头压缩到两字节那么低。但是,该方案不具有错误鲁棒性。遇到的问题是错误传播并且增加已压缩头的大小。这里的错误传播指的是如果压缩头碰到错误,则不仅这个压缩头不能解码而且接着的压缩头即使没有错误可能也不能解码。这里增加的压缩头大小指的是因为错误恢复过程,在有损耗的链路上的压缩头大于在无损链路上获得的最佳的2字节。下面讨论RFC 2508的限制。
头压缩方案利用头中携带的某些信息域或者1)不改变(这里称为‘类型1’头域)或者2)以完全可预测的方式改变(这里称为‘类型2’头域)的事实。其它域,称作‘类型3’头域,以不可确切预测的方式变化。
类型1头域的例子是IP地址、UDP端口号、RTP SSRC(同步源)等。在会话期间这些域仅需要发送到接收器/解压缩器一次(例如作为会话建立时发送的一个或多个分组的部分)。
类型2头域的例子是RTP时间戳、RTP序号、以及IP ID域。所有的都有按从分组到分组的某个常量增加的趋势。因此,对于这些值不需要在每个头中发送。仅需要使解压缩器知道恒定的增量(差分)值,在RFC 2508中称为增量。解压缩器在重建原始头时利用这些增量来重新生成最新的类型2域值。换句话说,差分编码用于压缩类型2的头域。
大多数IP堆栈实现的IP-ID域对于源发送的每个分组按一个固定数量增加。因此只要RTP流分组与来自压缩器-解压缩器(CD)信道上相同源的其它分组没有交叉,则IP-ID增量就是常量并且不需要发送。
类型3头域的例子是RTP M-比特(标志器),其指示介质中某个边界的出现(如视频帧结束)。因为介质通常以不可预测的方式变化,因此这个信息不能确切地预测。
上面提到的头压缩方案的限制源于用于类型2域的增量编码。因为差分编码,如果一个单一的压缩头丢失,则因为所有后面的压缩头从不能解码的压缩头递归地预测,所以将都不能解码。这就是我们称为的错误传播。
用于从错误传播恢复的一种算法称为“二次”算法,如果在压缩分组中发送分组UDP校验和可以使用该算法。CD-链路上的压缩分组携带一个4比特序号,其对压缩器发送的每个压缩分组增加1。解压缩器使用这个序号来检测链路上丢失的压缩分组。如果序号增加超过1,则解压缩器希望从最后压缩的分组增量以来的所有压缩分组增量没有改变并且为每个丢失的分组增加一个增量。然后解压缩器通过计算解压缩分组UDP的校验和并且检测其是否与发送的UDP校验和匹配来检测该设想是正确的。
二次算法限制性太强。首先,其要求在每个压缩分组中发送校验和(2字节)并且因此降低了压缩效率。其次,对于典型的音频流,二次算法仅在自最后解压缩分组以来没有任何TS和IP-ID跳跃才有效。
当解压缩器不能对分组解压缩时,其向压缩器发送一个否定确认Nack。压缩器一接收到Nack,就发送未压缩的头域。因为域需要无压缩地发送,因此Nack机制导致至少一个来回延迟持续时间的音频或视频中断期。
为了限制错误传播,压缩器使用刷新机制,借此即使解压缩器不要求其也周期性地发送未压缩域值。但是这样的机制进一步降低了压缩效率。
RFC 2508的另一个限制是压缩头短序号。当解压缩器接收到序号与前一个不连续的头时,检测到分组丢失并且使用恢复方案来重新同步压缩器和解压缩器。仅使用一个短序号来检测分组丢失对易于出错的链路,如经常发生‘长丢失’的无线链路是不鲁棒的。长丢失定义为‘序列循环’或一行中多个分组的丢失。当长丢失发生时,解压缩器接收的分组中的序号‘回绕’。例如,假设序号包含k比特,因此序号循环等于2k。如果一行中有2k个分组丢失,则因为看起来在到来的分组中序号仍连续,所以解压缩器不能检测到分组丢失。
                        发明内容
本发明是一个鲁棒和高效的编码方案,其在一个实施方案中称为VLE(可变长编码)。VLE以及本发明的其它实施方案解决了现有技术的错误传播和效率下降问题。
本发明部分地基于在压缩点接收的头类型2域显示一个增加趋势的观察。这暗示来自连续头的域趋于具有相同的多个MSB(最重要比特)并且仅由其多个LSB(最低有效位)区别。因此可以通过仅发送多个LSB来实现压缩。
本发明使压缩器能够确定要发送的多个LSB的最小数量,这样无论CD-链路上前面的压缩分组怎么丢失,该数量足以提供正确的解压缩。
本发明可以应用于任何值序列。数值越聚合(也就是彼此接近),则效率越高。
根据本发明将当前值压缩到最小或减少数量的比特用于从压缩器发送到解压缩器的方法包括在压缩器上保留一系列至少一个先前值,每个具有不同的k个最低有效位并且已经发送到解压缩器;确定表示能够利用所述一系列先前值中的任何值作为参考值在解压缩器中成功地对当前值解压缩的最少或减少数量比特的k值;以及以压缩的形式将当前值与当前值的k个最低有效位一起从压缩器发送到解压缩器。通过将当前值与前面的值相比较来确定当前值与先前值之间的最大差值r,同时选择大于log2 (r)+1的最小整数作为k来确定k值。解压缩器将至少一个确认发送给压缩器,指示解压缩器已经对值解压缩并且压缩器可更新至少一个先前的,以丢弃较旧的至少一个先前值。解压缩器可用所述一系列至少一个先前值的最后一个值的参考值对当前值解压缩,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。解压缩器使用包含从小于参考值到大于参考值的值的一个搜索区间;并且从搜索区间里的值中选择具有相同k个最低有效位的值。该值可通过将参考值v_ref和比特k的数量映射到所述一系列至少一个先前值的和当前值上来生成;并且所述一系列至少一个先前值可以更新以使已经确认由解压缩器解压缩的最旧的发送值作为最旧值。这些值可以是参考值和比特数量k的一个函数。该函数可以是]v_ref-2k-1,v_ref+2k-1]。该函数可以是]v_ref,v_ref+2k]。至少一个确认是接收的未压缩或压缩值。至少一个确认是可以是包括在部分压缩值编码中使用的信息的接收的压缩值。至少一个确认包含所述一系列至少一个先前值中最旧的值。所述一系列至少一个先前值可以更新以基于估算的可能在压缩器和解压缩器之间序列值的发送期间丢失的值的最大数量来丢弃较旧的先前值。压缩的当前值对与当前值一起发送的数k编码。该编码可以是哈夫曼编码。该值包含RTP头。至少一个确认可以是表示RTP头中TS和IP-ID确认的RTP SN头的确认。
根据本发明的一种用于将当前值压缩成最小或减少数量比特的系统包括一个保留一系列至少一个先前值,每个先前值具有不同的k个最低有效位的压缩器;从压缩器中接收压缩成最小或减少数量的k个最低有效位的当前值的解压缩器;并且其中压缩器确定代表最小数量比特的k值,该值使用所述一系列至少一个先前值中的任何一个值作为参考在解压缩器上对当前值成功地解压缩。通过将当前值与至少一个先前值相比较确定当前值与至少一个先前值之间的最大差值r,选择大于log2 (r)+1的最小整数作为k来确定k值。解压缩器将至少一个确认发送给压缩器,指示解压缩器已经对值解压缩并且压缩器可更新所述一系列至少一个先前值以丢弃较旧的一个至少一个先前值。解压缩器可用所述一系列至少一个先前值的最后一个值的参考值,来在解压缩器上解压缩将作为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值而被解压缩的当前值。解压缩器使用包含从小于参考值到大于参考值的值的一个搜索区间;并且从搜索区间里的值中选择具有相同k个最低有效位的值。压缩器可通过将参考值v_ref和比特的数量k映射到所述一系列至少一个先前值和当前值上来生成该值;并且所述一系列至少一个先前值可以更新以使已经确认由解压缩器解压缩的最旧的发送值作为最旧值。该函数可以是]v_ref-2k-1,v_ref+2k-1]。该函数可以是]v_ref,v_ref+2k]。确认是接收的未压缩值。至少一个确认是接收的压缩值。至少一个确认是可以是包括在部分压缩值编码中使用的信息的接收的压缩值。所述一系列至少一个先前值可以由压缩器更新以基于估算的可能在压缩器和解压缩器之间序列值的发送期间丢失的值的最大数量来丢弃至少一个较旧的先前值。压缩的当前值对与当前值一起发送的数k编码。该值包含RTP头。至少一个确认可以是表示RTP头中TS和IP-ID确认的RTP SN头的确认。
                     附图说明
图1从概念上说明了信息压缩。
图2从概念上说明了信息的解压缩。
图3说明了根据本发明利用确认压缩器从发送具有较高比特数的头到具有较低比特数的头的转换。
图4说明了根据本发明压缩器从发送具有第一压缩顺序的头到具有第二压缩顺序的头的转换。
图5和6说明了根据本发明选择比特k最小数的例子。
图7A和7B说明了根据本发明压缩器存储的值的滑动窗口的使用。
图8说明一个根据本发明利用两个编码域发送压缩值的VLE编码格式的例子。
                      具体实施方式
基本概念和规则
图1从概念上说明了压缩信息及其例子。压缩上下文信息是一个信息子集的一组、一个子集或一个代表,其可以是没有限制的任何类型的信息,包含如图3和4所示由压缩器用来作为压缩算法输入以生成可以是没有限制的压缩头的压缩信息的头。另一个输入来自要压缩的信息源,在例子中其没有限制的说明为要压缩的头。
图2从概念上说明信息解压缩及其例子。解压缩上下文信息是一个信息子集的一组、一个子集或一个代表,其可以是没有限制的任何类型的信息,包含如图3和4所示由解压缩用来作为解压缩算法输入以生成可以是没有限制的解压缩头的解压缩信息的头。另一个输入来自要解压缩的信息,在例子中其没有限制的说明为要解压缩的头。
压缩和解压缩上下文信息都是动态的,也就是说,可以由压缩器和解压缩器分别更新。更新的频率依赖于头压缩机制。在压缩器上导致压缩上下文信息更新的时间包括进入头的压缩,或接收来自解压缩器的反馈。在解压缩器上导致解压缩上下文信息更新的事件包括进入头的解压缩。
压缩器可以是三种状态中的一种:
·FH(完整头)状态
·FO(第一顺序)状态
·SO(第二顺序)状态
在初始化阶段压缩器工作在FH状态。在FH状态,压缩器发送完整的RTP头。这个状态通常仅是一个过渡状态,其仅在RTP会话开始出现或因极其异常事件,如压缩器故障或存储丢失,而在会话中间出现。
在更新阶段压缩器工作在FO状态。在FO状态,发送器发送FO头,也就是其头部携带与参考头相比已经改变的,与序号一起适当编码的域的分组。希望解压缩器如图3和4所示能够对一定数量的FO确认,其中数量依赖于模式。例如,如果是带有固定参数的线性模式,则在推断阶段只需要发送一个确认。
在推断阶段压缩器工作在SO状态。在SO状态,发送器发送SO头,也就是其头部基本上只是一个序号的分组。解压缩器可以对正确接收的SO分组确认或不确认。
下面描述本发明使用的,但不限于此的,在VLE中使用的一种数学函数类型。该函数表示为f(k,v_ref)=(v_1,v_2,...,v_2k),映射为一个称为参考值的整数值v_ref并且许多比特k映射为都具有不同k个LSB的k元整数。
虽然任何这样的函数都是合适的,但是一个优选的实施方案仅使用返回连续值v_1,v_2,..,v_2k,也就是v_i=v_1+i-1的函数。换句话说,该函数具有长度有2k值的区间。该区间可以写做]v_ref-C(k,v_ref),v_ref-C(k,v_ref)+2k]其中C是作为k和v_ref函数的一个整数。再一次,虽然可以对任何这样的区间感兴趣,但是优选实施方案使用C(k,v_ref)=0和C(k,v_ref)=2k-1。换句话说,该实施方案使用区间为]v_ref-2k-1,v_ref+2k-1]以及]v_ref,v_ref+2k]。
下面描述基于]v_ref-2k-1,v_ref+2k-1]间隔的VLE实施方案。系统由压缩器、解压缩器和如图3和4所示的CD-信道,也就是压缩器和解压缩器之间的链路组成。该信道是易于出错的。该实施方案唯一的假设,但不限于此,是信道不记录压缩值并且给出作为解压缩器输入的压缩值是没有被破坏的(或者换句话说破坏的头被作为丢失头)。如图3和4所示该信道可以是一个单工链路,也就是仅传送来自解压缩器的压缩值或双工信道,也就是信道还传送从解压缩器到压缩器的反馈。在优选实施方案中使用双工信道。
第一阶段是解压缩器获得初始值。这由压缩器或其它合适的装置在通信开始时发送未压缩值实现。解压缩器如图3和4所示利用反馈信道确认接收值。当压缩器接收到一个反馈确认时初始化无限地完成,然后可以使用VLE编码进行压缩。在VLE中,值作为比特k的可变数压缩。首先讨论在VLE模式中解压缩器的操作。
图7A和7B说明了窗口更新过程。窗口包括输入压缩器并且可能被压缩但是不需要被压缩的先前值。假设在一个特定时间点窗口是vi,vi+1,---,vn
(1)当压缩一个新的值vn+1时,如图7A所示窗口扩大以便包括这个新值。
(2)然后如图7B所示,当压缩器知道较旧的值不能再由解压缩器使用时,在这个例子中,可以是当发生值vi+2的确认接收时,通过删除较旧的一个或多个值(在该例子中为vi和vi+1,)来缩小窗口。
解压缩:
参考值是由解压缩器解压缩的最后一个值。通过如图3和4所示确认的接收或假设由在足够的时间期间一系列值的发送,至少一个值可能统计地被接收并且不利用来自解压缩器的任何反馈解压缩看来,已经接收了一个实际值,来用信号通知压缩器解压缩。解压缩器通过提供其k个LSB与接收的k比特相符的区间]v_ref-2k-1,v_ref+2k-1]中的唯一值来对进入的压缩值解压缩。这个搜索区间是前面介绍的函数的一个特殊实例。解压缩值变成v_ref,其进而又用于对下面进入的压缩值解压缩。在优选实施方案中,解压缩器确认如图3和4所示已经解压缩的至少一些分组。需要确认的分组数是完全灵活的并且被选择以满足想要应用的规范。如下所示,从解压缩器发送到压缩器的确认越多,则正向链路上的压缩效率越高。
压缩:
现在参考压缩器操作。压缩器保留其已经压缩并且发送到解压缩器的值的一个滑动窗口,如图7A和7B所示。在一个实施方案中,该窗口保留其从解压缩器接收到确认的最新值以及按向解压缩器发送的顺序的所有下面要发送的值。压缩器还分别保留滑动窗口的最小和最大值v_min和v_max。
当一个新的未压缩值v到达压缩器时,压缩器发送对于滑动窗口的每个v_i在区间]v_i-2k-1,v_i+2k-1]中的v的k个LSB。这可以方便地由r<2k-1来表示,其中r=max(|v-v_max|,|v-v_min|)。然后压缩器选择大于log2 (r)+1的最小整数作为k。当压缩器接收到确认时,其从窗口中删除在确认值之前发送的所有值,如上述参考图7B所论述的。
下面的讨论说明为什么VLE总是提供正确的解压缩并且是一种非常灵活的压缩机制。
只要压缩器和解压缩器遵循上述规则,则无论在如图3和4所示的压缩器和解压缩器之间的CD-信道上有什么损失,都能正确解压缩。实际上,解压缩器使用的参考值v_ref必须属于压缩器窗口,如图5和6所示的例子中在点v_min和v_max之间,并且因此知道编码值将在作为解压缩器使用的搜索区间的区间]v_ref-2k-1,v_ref+2k-1]中。
VLE没有错误传播。解压缩器接收的压缩分组可以总是解压缩的。分组丢失转化为压缩分组大小的一个逐渐增加。
确认越频繁,窗口中的值越少并且因此可能发送更少的LSB。尤其是在要压缩的值符合增加的趋势并且对于每个新值v,v-v_min增加,直到接收到确认为止的头压缩情况下更是这样。
解压缩器必须知道压缩值的长度。在有些情况下可以无任何附加信令,例如,通过来自编码较低层的组帧信息知道这个长度。如果需要明确的信令,则优选实施方案定义一种VLE格式。该格式可有两个域:长度域(也就是LSB数量R)和压缩值域(也就是原始值v的k个LSB),如图8所示。
在优选实施方案中,VLE长度域,如图8中所示,利用哈夫曼编码对自身编码。也可以使用任何其它编码方法(例如线性编码)。对不同的应用应该估计不同长度的可能性,并且然后应该使用哈夫曼编码算法对这些数据中需要的进行编码。在知道链路特性(损耗和延迟)、解压缩器确认周期,以及要压缩的原始值的模式时,可以估计在压缩器和解压缩器之间的通信链路上遇到给定长度的可能性。
为进一步减少长度域自身的长度,可以限制压缩器从减少的一组值中选择域的长度。例如,假设未压缩的域是32比特并且想要以最大2比特长度对下面的可能性递减顺序的4比特、8比特和32比特编码,合适的编码字是单一比特0用于4比特,2比特值10用于8比特并且2比特值11用于32比特。
使用合适的编码使得压缩值的平均尺寸最小化。
而且,如果可以从其它分组域中得到长度,则长度信息不需要专门的比特。例如,在典型的头压缩应用中,在压缩头中发送了一个分组类型域。可以使用这个分组类型域来暗示几乎不会超过的一个缺省长度。在这种情况下,在缺省长度超过的地方使用一个单独的分组类型。因为这种情况很少发生,因此额外开销整体降低了。
如果没有反馈信道,则需要其它信息(带外)或额外假设来使压缩器窗口向前移动并且防止k一直增加。一种方式是假设沿从压缩器到解压缩器的信道至多L个连续压缩值可以丢失。换句话说,压缩器确切地知道(L+1)个连续压缩值中至少有一个到达解压缩器。因此,压缩器仅需要在窗口中存储已经发送到解压缩器的最近的(L+1)个值。因此,范围(v_max-v_min),并且因此k值,仅依赖于最近发送的(L+1)个值。
VLE可应用于RTP头压缩。与RFC 2508相反地,不需要使用压缩器-解压缩器序号。代替地,利用VLE对RTP序号编码。解压缩器如图3和4所示在VLE应用中描述的,通过向压缩器发送它接收的RTPSN来确认分组。
如下所述关于最佳确认,解压缩器不需要返回未压缩的RTP SN值。
下面的例子说明用于如RFC 2508中提出的RTP SN压缩的本发明的工作。向压缩器提供一系列进入分组,其SN(序号)是:32、33、35、36、39、40、38、41。假设解压缩器已经确认序号是35的分组,则压缩器保持一个如上所述的自从最后一个确认分组以来发送的序号窗口。当接收到确认时,压缩器窗口是:35、36、39、40、38、41。现在假设一个具有序号值43的新的SN值到达压缩器。压缩器寻找其窗口最大值并且找到41。压缩器寻找窗口最小值并且找到35。压缩器计算进入值与其上(43-41=2)界和下界(43-35=8)的距离r。最大距离是8。压缩器必须发送在这个例子中大于log2 r+1,2k大于17的整数的许多比特k。这个数是k=5。因为43的二进制格式写作101011,所以压缩器发送5个LSB,也就是01011。解压缩器参考值是解压缩器解压缩的最后的值并且其肯定是压缩器窗口中的值。解压缩器通过将其5个LSB是01011并且最接近参考值的值返回来对进入的值(01011)解压缩。无论参考值是什么,这个值总是43。例如,如果假设当解压缩器接收压缩值时其接收的最后的值是40(也就是在压缩器和解压缩器之间的链路上38和41丢失),则解压缩器使用的搜索区间是[25,56]或二进制格式[011001,111000]。区间中最后的LSB是01011的唯一一个值是101011,也就是43。
解压缩器挑选k值的另一种方法是选择LSB是01011的离40最近的值。数40的二进制格式是101000。最后的LSB是01011的离101000最近的值是01011,也就是43。这说明无论在压缩器-解压缩器链路上有什么丢失,VLE都能够确定将提供正确解压缩的最小或减少数量的LSB比特。
图5和6说明将进行k的挑选,以便被VLE编码的当前值的是在具有相同LSB的值中间并且离窗口中最大或最小值最近。图5说明v大于v_max的情况而图6说明v小于v_min的情况。
在发送RTP时间戳或IP-ID域的分组中,利用用于SN编码的相同的发送分组窗口对这些域编码。因此,解压缩器不在反向/反馈信道上回送这些域以便对其确认。窗口还可以看作矢量窗口(SN,TS,IP-ID)。通过仅返回SN域可以确认给定的矢量。
当SN、TS和IP-ID要发送时一个实施方案基于确认结构来执行头压缩以便发送这些域。其它编码可用于TS和IP-ID。这个头压缩方案概括如下。
利用确认转换到FO和SO状态
当新的会话开始时,压缩器在FH状态下工作直到从解压缩器接收到确认(ACK),指示已经接收到至少一个FH分组。解压缩器负责一接收到FH分组就确认,因此压缩器可以从FH状态转换到FO状态。确认可包括由解压缩器解压缩的压缩当前值或未压缩的当前值。两个值中任何一个允许压缩器更新压缩状态并且启动旧值的丢弃。
在FO状态,压缩器发送FO分组并且期望解压缩器确认接收的FO分组(不是对每个FO分组必须的)。如果压缩器确定(基于ACK)解压缩器已经建立了FOD,并且该FOD与正在发送的当前头和上一个发送的头之间的FOD相同,则压缩器进入SO状态并且开始发送SO分组。
由于上面讨论的原因,压缩器需要从SO状态退回FO状态。但是,压缩器从不转换回FH状态除非发生某些异常事件,如因为系统崩溃解压缩器丢失其上下文。无论何时压缩器处于FO状态,其都如上所述试图进入SO状态。
合适的分组类型公开在2000年3月28日提交的名为“Method andSystem for Transmitting and Receiving Packets(用于发送和接收分组的方法和系统)”专利申请序号09/536,639中。
下面描述VLE的两个变量,称为固定长编码(FLE)和单边可变长编码(OVLE)。
固定长编码(FLE)
如果已经确切知道范围r=(v_max-v_min)从不超过上界,则可以使用固定长编码。每个值采用相同数量比特编码,其是覆盖这个范围需要的最小数量比特。在这种情况下因为假设长度是一个已知常数因此不需要发送。
单边可变长编码(OVLE)
前面描述的VLE基于与参考值v_ref和返回搜索区间]v_ref-2k-1,v_ref+2k-1]的比特数k相匹配的一个函数。因为其可以适应从一个值到另一个值的任意改变(正,负),所以非常通用和灵活。但是,当用于单调的域时这个区间不是最有效的。实际上,解压缩器仅在子集]v_ref,v_ref+2k-1]中获得解压缩值。
在RTP头压缩的情况下,这些域通常以增加的顺序到达压缩器。但是,因为来自压缩器的上行流可能出现混乱或在时间戳的情况下,编码器可能不按采样的顺序发送编码的帧,所以会有例外。为了提高效率,利用返回不在v_ref中间的,如]v_ref-2k-2,v_ref+3*2k-2]的搜索区间的函数是有价值的。
当VLE用于作为自适应头压缩应用的组成部分时,可能使用区间]v_ref,v_ref+2k],其对于给定的k最有效。这称为单边可变长编码(OVLE)。只要压缩器进入值在增加,VLE就用于FO分组而OVLE用于SO分组。在到达压缩器之前分组出现混乱的情况下,压缩器总是将分组作为FO分组压缩。替代地,即使发生混乱,压缩器也会重新排序和/或丢弃分组以便停留在SO状态。
用于压缩数据的可变长编码(VLE)和单边VLE(OVLE)的最优确认算法
为提高整体压缩效率,希望解压缩器发送到压缩器的确认的大小保持最小。在这里讨论的算法中,解压缩器仅需要在确认中发送与其在压缩消息中接收的相同数量的比特(或最多多2比特,如后面描述的)。
如在VLE和OVLE中描述的,压缩器保持值VSW的滑动窗口并且在发送到解压缩器之后将每个原始未压缩的值存储在VSW中。
VSW:v 1 ,v 2 ,v 3 ,...,v i ,...v n 注意:v 1 是最旧的值,并且v n 是最 新的值。
事例1:单一编码方法
假设仅使用一个编码方法(VLE或OVLE)并且压缩器和解压缩器都知道使用的是哪一个。当解压缩器成功地接收到一个压缩值并且决定对其确认时,其简单地将接收的压缩值拷贝到确认中并且将其发送回压缩器。
当压缩器接收到确认消息时,其按下面的三个步骤处理确认:
1)使用VSW中的(最旧的值)作为参考值并且遵守与解压缩器相同的规则对确认中的压缩值解压缩。解压缩的值标识为v_acked。
2)对于第一次(最旧)出现的v_acked从头(最旧)到尾(最新)搜索VSW。
3)删除在v_acked之前(比v_acked旧)的所有值。
可以看到上述算法通过保留VSW的下列特性来工作:
·如果由压缩器利用k比特发送HSW中的vi,则可以利用相同的k比特解压缩并且利用任何vj(j≤i))作为参考值。
特别地,vi可以用作参考值来对VSW中的任何值解压缩。与确认总是确认VSW中的一个值相结合,可以推断从步骤1)得到的v_acked是触发确认消息的真正正确的原始值。
事例2:多编码方法
在这种情况下,解压缩器在VLE和OVLE之间动态地切换编码方法。其仅需要稍微改变上述的算法就可以处理这种情况。基本上,在每个确认消息中,解压缩器必须增加一个标记以指示使用哪种编码方法来压缩接收值。因此,当压缩器接收到确认消息时,其可以基于确认中的编码标记来选择正确的解压缩方法。只要保留VSW的属性,基于与上一节相同的推理改变的算法就是正确的。
当VLE和/或OVLE应用于头压缩时,因为解压缩器可以基于头类型和其它配置信息隐含地得到该信息,所以在从压缩器发送到解压缩器的压缩头中不需要明确地携带编码标记。但是,在相反的方向,必须在确认消息中明确地携带该标记。在最坏的情况下,需要2比特来区分三种可能性:VLE、正侧(plus-sided)OVLE、负侧(mius-sided)OVLE。如果OVLE的侧信息是预先定义的,则编码标记可以减少到1比特。
VSW中的重复值
有一种特殊的情况上面还没有讨论到。在压缩器滑动窗口中相同(原始未压缩)的值可能出现不止一次。出于下面两个原因需要考虑这一点:1)理论上,算法应该是通用的并且对任何序列值都有效;2)实际上,某些视频代码的RTP时间戳确实具有这种行为。
问题是,虽然计算的值v_acked仍然是正确的,但是压缩器不能确定VSW中出现的哪个v_acked实际上触发了ACK(如果找到了多个出现)。
但是,应当指出,因为压缩器总是选择VSW中第一个(最旧的)出现的v_acked,所以算法是有效的。如果不是正确的实例触发了确认,则唯一的副作用是从VSW中删除的值比应该删除的少。结果,会使用比需要的多的比特对此后到达的新的值编码。
如果重复值很少出现,则因为确认一个值在VSW中仅出现一次的另一个(明确)确认一到达,压缩器就离开其不是最佳的状态,所以不需要对上述算法做任何修改。
如果认为重复值经常发生,则会增加额外信息以去除确认的二义性。一个例子是将一个生成号(GN)分配给每个压缩值并且要求解压缩器将GN放在确认中。
虽然已经参考优选实施方案描述了本发明,但是应该理解在不背离其精神和范围的情况下可以做许多的修改。意指所有这些修改落在所附权利要求的范围里。

Claims (60)

1.一种将当前值压缩到最小数比特用于压缩器发送到解压缩器的方法,包括:
在压缩器上保留一系列至少一个先前值,每个先前值具有不同的k个最低有效位并且已经发送到解压缩器;
确定表示最小数比特的k值,其允许利用所述一系列先前值中的任何值作为参考值在解压缩器上对当前值成功地解压缩;以及
将当前值以压缩形式与当前值的k个最低有效位一起从压缩器发送到解压缩器。
2.根据权利要求1的方法,其中:
通过将当前值与至少一个先前值比较以确定当前值与至少一个先前值之间的最大差值r,以及选择k作为大于log2 (r)+1的最小整数来确定k值。
3.根据权利要求1的方法,其中:
解压缩器向压缩器发送至少一个确认,其指示解压缩器已经对值解压缩并且压缩器更新所述一系列至少一个先前值以便丢弃至少一个较旧的先前值。
4.根据权利要求2的方法,其中:
解压缩器向压缩器发送至少一个确认,其指示解压缩器已经对值解压缩并且压缩器更新所述一系列至少一个先前值以便丢弃至少一个较旧的先前值。
5.根据权利要求1的方法,还包括:
在解压缩器上利用所述一系列至少一个先前值的最后值的参考值对当前值解压缩,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。
6.根据权利要求2的方法,还包括:
在解压缩器上利用所述一系列至少一个先前值的最后值的参考值对当前值解压缩,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位值的值。
7.根据权利要求3的方法,还包括:
在解压缩器上利用所述一系列至少一个先前值的最后值的参考值对当前值解压缩,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位值的值。
8.根据权利要求4的方法,还包括:
在解压缩器上利用所述一系列至少一个先前值的最后值的参考值对当前值解压缩,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位值的值。
9.根据权利要求5的方法,还包括:
在解压缩器上使用一个搜索区间,其包含范围从小于到大于参考值的值;以及
从位于搜索区间的值中选择具有相同k个最低有效位的值。
10.根据权利要求6的方法,还包括:
在解压缩器上使用一个搜索区间,其包含范围从小于到大于参考值的值;以及
从位于搜索区间的值中选择具有相同k个最低有效位的值。
11.根据权利要求7的方法,还包括:
在解压缩器上使用一个搜索区间,其包含范围从小于到大于参考值的值;以及
从位于搜索区间的值中选择具有相同k个最低有效位的值。
12.根据权利要求8的方法,还包括:
在解压缩器上使用一个搜索区间,其包含范围从小于到大于参考值的值;以及
从位于搜索区间的值中选择具有相同k个最低有效位的值。
13.根据权利要求1的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
14.根据权利要求2的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
15.根据权利要求3的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
16.根据权利要求4的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
17.根据权利要求5的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
18.根据权利要求6的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
19.根据权利要求7的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
20.根据权利要求8的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
21.根据权利要求9的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
22.根据权利要求10的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
23.根据权利要求11的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
24.根据权利要求12的方法,其中:
通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;以及
更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
25.根据权利要求1的方法,其中:
所述值是参考值和比特数k的函数。
26.根据权利要求25的方法,其中:
所述函数是]v_ref-2k-1,v_ref+2k-1]。
27.根据权利要求25的方法,其中:
所述函数是]v_ref,v_ref+2k]。
28.根据权利要求3的方法,其中:
所述至少一个确认是接收到的未压缩值。
29.根据权利要求3的方法,其中:
所述至少一个确认是接收到的压缩值。
30.根据权利要求29的方法,其中:
所述至少一个确认是包括在部分压缩值编码中使用的信息的接收到的压缩值。
31.根据权利要求28的方法,其中:
所述至少一个确认包含所述一系列先前值中的一个最旧值。
32.根据权利要求29的方法,其中:
所述至少一个确认包含所述一系列先前值中的一个最旧值。
33.根据权利要求1的方法,其中:
基于在压缩器和解压缩器之间序列值的发送期间可丢失值的估算的最大数来更新所述一系列先前值以便丢弃较旧的先前值。
34.根据权利要求1的方法,其中:
所述已压缩的当前值将与当前值一起发送的数k编码。
35.根据权利要求34的方法,其中:
所述编码是哈夫曼编码。
36.根据权利要求1的方法,其中:
所述值包括RTP头。
37.根据权利要求33的方法,其中:
所述至少一个确认是代表RTP头中TS和IP-ID确认的RTP SN头的确认。
38.一种用于将当前值压缩成最小数量的比特的系统,包括:
保留一系列至少一个先前值的压缩器,每个先前值具有不同的k个最低有效位;
接收来自压缩器的压缩到最少的k个最低有效位的当前值的解压缩器;并且其中
压缩器确定代表比特的最小数的k值,其允许利用所述一系列至少一个先前值中的任何一个作为参考在解压缩器上对当前值成功解压缩。
39.根据权利要求38的系统,其中:
通过将当前值与至少一个先前值相比较以确定当前值与至少一个先前值之间的最大差值r,同时选择大于log2 (r)+1的最小整数作为k来确定k值。
40.根据权利要求38的系统,其中:
解压缩器向压缩器发送至少一个确认,指示解压缩器已经对值解压缩并且压缩器更新所述一系列至少一个先前值以丢弃较旧的先前值。
41.根据权利要求39的系统,其中:
解压缩器向压缩器发送至少一个确认,指示解压缩器已经对值解压缩并且压缩器更新所述一系列至少一个先前值以丢弃较旧的先前值。
42.根据权利要求38的系统,其中:
解压缩器可用所述一系列的至少一个先前值的最后一个值的参考值,来在解压缩器上解压缩当前值,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。
43.根据权利要求39的系统,其中:
解压缩器可用所述一系列的至少一个先前值的最后一个值的参考值,来在解压缩器上解压缩当前值,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。
44.根据权利要求40的系统,其中:
解压缩器可用所述一系列的至少一个先前值的最后一个值的参考值,来在解压缩器上解压缩当前值,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。
45.根据权利要求41的系统,其中:
解压缩器可用所述一系列的至少一个先前值的最后一个值的参考值,来在解压缩器上解压缩当前值,其将压缩为具有与和参考值最接近的接收到的当前值的k个最低有效位相同的k个最低有效位的值。
46.根据权利要求42的系统,还包括:
解压缩器使用一个范围包含从小于到大于参考值的值的搜索区间;并且从搜索区间中选择具有相同k个最低有效位的值。
47.根据权利要求43的系统,还包括:
解压缩器使用一个范围包含从小于到大于参考值的值的搜索区间;并且从搜索区间中选择具有相同k个最低有效位的值。
48.根据权利要求44的系统,还包括:
解压缩器使用一个范围包含从小于到大于参考值的值的搜索区间;并且从搜索区间中选择具有相同k个最低有效位的值。
49.根据权利要求45的系统,还包括:
解压缩器使用一个范围包含从小于到大于参考值的值的搜索区间;并且从搜索区间中选择具有相同k个最低有效位的值。
50.根据权利要求38的系统,其中:
压缩器通过将参考值v_ref和比特数k映射到所述一系列至少一个先前值和当前值生成所述值;并且更新所述一系列至少一个先前值以便将已经由解压缩器确认解压缩的最旧的发送值作为最旧值。
51.根据权利要求38的系统,其中:
所述函数是]v_ref-2k-1,v_ref+2k-1]。
52.根据权利要求38的系统,其中:
所述函数是]v_ref,v_ref+2k]。
53.根据权利要求40的系统,其中:
所述确认是接收到的未压缩值。
54.根据权利要求40的系统,其中:
所述至少一个确认是接收到的压缩值。
55.根据权利要求54的系统,其中:
所述至少一个确认是包括在部分压缩值编码中使用的信息的接收到的压缩值。
56.根据权利要求38的系统,其中:
由压缩器基于在压缩器和解压缩器之间序列值的发送期间可丢失值的估算的最大数来更新所述一系列至少一个先前值以便丢弃至少一个较旧的先前值。
57.根据权利要求38的系统,其中:
所述已压缩的当前值将对与当前值一起发送的数k编码。
58.根据权利要求38的系统,其中:
所述值包括RTP头。
59.根据权利要求40的系统,其中:
所述至少一个确认是代表RTP头中TS和IP-ID确认的RTP SN头的确认。
60.一种将当前值压缩到减小数量的比特用于从压缩器发送到解压缩器的方法,包括:
在压缩器上保留一系列至少一个先前值,每个先前值具有不同的k个最低有效位并且已经发送到解压缩器;
确定表示减小的比特数的k值,其允许利用所述一系列先前值中的任何值作为参考值而在解压缩器上对当前值成功地解压缩;以及
将当前值以压缩形式与当前值的k个最低有效位一起从压缩器发送到解压缩器。
CNB2004100789822A 1999-11-09 2000-11-02 压缩数据的可变长编码 Expired - Lifetime CN100492915C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16433099P 1999-11-09 1999-11-09
US60/164330 1999-11-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB00815502XA Division CN1174554C (zh) 1999-11-09 2000-11-02 压缩数据的可变长编码

Publications (2)

Publication Number Publication Date
CN1607732A true CN1607732A (zh) 2005-04-20
CN100492915C CN100492915C (zh) 2009-05-27

Family

ID=22594003

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB2004100789822A Expired - Lifetime CN100492915C (zh) 1999-11-09 2000-11-02 压缩数据的可变长编码
CNB00815502XA Expired - Lifetime CN1174554C (zh) 1999-11-09 2000-11-02 压缩数据的可变长编码

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB00815502XA Expired - Lifetime CN1174554C (zh) 1999-11-09 2000-11-02 压缩数据的可变长编码

Country Status (2)

Country Link
JP (2) JP2004500753A (zh)
CN (2) CN100492915C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8537741B2 (en) * 2006-01-13 2013-09-17 Alcatel Lucent Method of header compression over channels with out-of-order delivery
US8015467B2 (en) 2006-08-30 2011-09-06 Kyocera Corporation Communication system, communication apparatus and communication method
JP4486948B2 (ja) * 2006-08-30 2010-06-23 京セラ株式会社 通信システム、通信装置及び通信方法
CN101453298B (zh) * 2007-12-07 2013-06-05 华为技术有限公司 一种无线网络中头压缩的处理方法及系统、装置
US9204287B2 (en) * 2012-05-15 2015-12-01 Futurewei Technologies, Inc. System and method for reducing signaling overhead

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05191454A (ja) * 1992-01-16 1993-07-30 Nec Corp データ転送方式
JPH06204891A (ja) * 1993-01-05 1994-07-22 Fujitsu Ltd データ圧縮方法
JP3339335B2 (ja) * 1996-12-12 2002-10-28 ヤマハ株式会社 圧縮符号化復号方式
JP3634934B2 (ja) * 1997-02-12 2005-03-30 新日本無線株式会社 変調回路、復調回路、および変調/復調システム
JPH1188464A (ja) * 1997-09-04 1999-03-30 Fujitsu Ltd データ転送装置およびデータ転送方法

Also Published As

Publication number Publication date
CN1174554C (zh) 2004-11-03
JP5066276B2 (ja) 2012-11-07
CN1390390A (zh) 2003-01-08
JP2004500753A (ja) 2004-01-08
JP2011229161A (ja) 2011-11-10
CN100492915C (zh) 2009-05-27

Similar Documents

Publication Publication Date Title
CN1123981C (zh) 图像编码器
KR100458878B1 (ko) Fec 코딩 방식에 기초한 가변길이 패킷 송수신 방법
US7095729B2 (en) Method for multimedia communication over packet channels
US6728924B1 (en) Packet loss control method for real-time multimedia communications
US6782047B1 (en) Variable length encoding of compressed data
CN1671103A (zh) 数据压缩
JP2010521872A (ja) 無線通信システムにおいてヘッダ圧縮コンテキストを再配置する方法および装置
CN1216645A (zh) 增强数据传输的方法
JP2005515697A (ja) リード・ソロモン符号に基づいた前方誤り訂正を用いた不均一誤り保護
CN1174554C (zh) 压缩数据的可变长编码
CN1253452A (zh) 发送和恢复视频信号的方法和装置
CN1357189A (zh) 利用历史信息的稳健的德尔塔编码技术
Kozintsev et al. Image transmission using arithmetic coding based continuous error detection
CN1863311A (zh) 传输视频数据的方法
JP2004500753A5 (zh)
JP5567155B2 (ja) 改良されたマルチメディアデコーダに関する方法及び装置
JP2014506759A (ja) 異種ネットワークを介したコンテンツ配信のクリフ効果を軽減するシステムおよび方法
KR100739509B1 (ko) 다중 채널 구조 무선 통신 시스템에서 헤더 정보 송수신장치 및 방법
EP1670143B1 (en) Variable length encoding of compressed data
Hashemi et al. Delete-and-conquer: Rateless coding with constrained feedback
CA2388006C (en) Variable length encoding of compressed data
EP1228570B1 (en) Variable length encoding of compressed data
CN1301013C (zh) 传输用可变长码编码的图像或视频数据的方法及发射机
Grangetto et al. Error correction by means of arithmetic codes: an application to resilient image transmission
Manji et al. Bandwidth efficient and error resilient image coding for Rayleigh fading channels

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NOKIA OY

Free format text: FORMER OWNER: NOKIA OY; APPLICANT

Effective date: 20060428

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

Effective date of registration: 20060428

Address after: Espoo, Finland

Applicant after: Nokia Oyj

Address before: Espoo, Finland

Applicant before: Nokia Oyj

Co-applicant before: Khiem Le

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160113

Address after: Espoo, Finland

Patentee after: Technology Co., Ltd. of Nokia

Address before: Espoo, Finland

Patentee before: Nokia Oyj

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20090527