CN104067338A - 改进的分层编码 - Google Patents

改进的分层编码 Download PDF

Info

Publication number
CN104067338A
CN104067338A CN201280062321.3A CN201280062321A CN104067338A CN 104067338 A CN104067338 A CN 104067338A CN 201280062321 A CN201280062321 A CN 201280062321A CN 104067338 A CN104067338 A CN 104067338A
Authority
CN
China
Prior art keywords
sample
bit
index
iexp
threshold value
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
CN201280062321.3A
Other languages
English (en)
Other versions
CN104067338B (zh
Inventor
克劳德·兰布林
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.)
Orange SA
Original Assignee
France Telecom SA
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 France Telecom SA filed Critical France Telecom SA
Publication of CN104067338A publication Critical patent/CN104067338A/zh
Application granted granted Critical
Publication of CN104067338B publication Critical patent/CN104067338B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/002Dynamic bit allocation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/24Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

改进的分层编码。本发明涉及包括数字信号增强层的分层编/解码中的二进制分配。此信号包括连续L个样本,各样本由尾数和指数表示。本方法包括分配预定数量Nb的增强比特至具有最大指数值的L个样本中的至少一部分。具体而言,本方法包括如下步骤:a)枚举各自具有给定值的L个样本的指数,b)通过减少指数数值直至预定值Nb接近于上述数值来计算指数枚举的至少一个累积值,以便c)确定没有有效增强比特的样本的最大指数的阈值数值iexp0,以及根据所选规则将Nb个增强比特分配到其指数大于上述阈值数值iexp0的样本。

Description

改进的分层编码
技术领域
本发明涉及数字信号的编码/解码,尤其是适用于诸如音频(语音和/或声音)或视频,或更具体为多媒体的数字信号的传输或存储的应用。
具体涉及例如由ITU-T G.711.1编码器所实施的对数类的数字编码/解码。
背景技术
为了降低比特率并同时保持良好的识别质量的信号压缩可以采用多种技术,包括:
-PCM(脉冲编码调制)技术及其诸如ADPCM(自适应差分PCM)的变型,
-CELP(码激励线性预测)技术,以及,
-称之为“通过变换”(例如,MDCT(改进离散余弦变换)类型)的技术。
PCM技术以指定数量比特对每一个样本压缩信号,而其它类型的技术压缩样本(或帧)块。
根据ITU-T推荐的G.711编码/解码是适用于语音信号的一种最广泛使用技术之一,无论是传统的电话技术(通过交换网络)还是通过互联网(IP语音或VoIP)的技术。这种编码使用一种称之为“对数PCM”的技术。
根据ITU-T推荐的G.711编码/解码原理可以概述如下。
G.711编码器可基于采样频率为8kHz的8比特对数压缩以获得64kbit/s的比特率。
G.711PCM编码的原理是运用对数曲线来实施300-3400Hz频带内的滤波信号的压缩,这使得宽动态范围的信号有可能获得信噪比几乎恒定的信号。这涉及通过量化来编码且量化步长随着要编码的样本幅值而改变:
-当输入信号电平弱时,量化步长小,
-当输入信号电平强时,量化步长大。
使用两个对数PCM压缩定律:
-μ律(在北美和日本使用)以及
-A律(在欧洲和世界其他地区使用)。
根据A律的G.711编码和根据μ律的G.711编码使用输入样本的8比特编码。
在实践中,为了便于G.711编码器的实现,对数PCM压缩采用分段曲线作近似。
在A律中,8位分布如下:
-1个符号位,
-3个比特用于表示分段,
-4个比特用于表示分段上的位置。
参照图1概述PCM编码/译码原理。PCM编码器11包括量化模块QMIC10,用于接收输入端的输入信号S(z)。位于量化模块10输出端的量化索引IMIC通过传输信道12传输到解码器14。PCM解码器14在输入端接收来自传输信道发送的索引I'MIC(可能是IMIC由于比特错误而劣化的版本)并籍助于逆量化模块13(Q-1 MIC)来进行逆量化以获得解码信号。标准化的ITU-TG.711PCM编码(以下称为G.711)在统一标量量化之前利用对数曲线进行信号幅值的压缩,这使得宽动态范围的信号有可能获得几乎恒定的信噪比。因此,在原始信号域中的量化步长正比于信号的幅值。压缩信号的连续样本可量化为8比特,即256个等级。
量化索引IPCM(如图1所示示例中的附图标记15)因此可认为代表一个浮点数,该浮点数具有4个尾数位“Pos”,3个指数位“Seg”和一个符号位“S”。
在超过16位的要编码的样本的二进制表示(符号和绝对值)中,用样本b0表示的最低有效位(LSB),指数表示位置14到8中的第一个“1”的位置pos,尾数位是随后接下来的4个比特以及符号位是比特b15
因此,如果位置pos=14,则exp=7;如果pos=13,则exp=6,...,如果pos=8,则exp=1。
如果第一个“1”在位置8(其对应于要编码样本的绝对值小于或等于255)后,则指数为0。
在下表给出的示例中,其中设定为“1”的第一比特为比特b10(pos=10),指数exp是3,并且4比特的尾数是位置9到6的4个比特:m3m2m1m0(=b9b8b7b6)。
b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
S 0 0 0 0 1 m3 m2 m1 m0
数字信号的G.711类型的编码可以通过与量化器决定的阈值数值进行比较来进行,通过二分法搜索使之有可能加快计算。通过与阈值数值比较的这一搜索需要存储决定阈值数值以及与该阈值数值对应的量化索引。另一种编码解决方案,其计算成本更低,包括通过右移4位消除4个最低有效位,然后增加2048到移位值。量化索引最终通过简单读取具有4096个条目的表而获得,然而,相比于上文示出的方法需要较大的只读存储器(ROM)。
为了避免存储这种表,该量化索引可采用低复杂度的简单操作来确定。例如在G.711.1编码器的情况下。仍然应用至少4位的右移。对于超过16比特的要编码样本,最小的量化步长保持为16。仍然丢失了4个最低有效位。
具体而言,只发送设置为“1”的第一比特之后的4个比特:将其它位都丢失。于是:
-在第一分段(|x|≤255,exp=0)中,丢失4个最低有效位(mant=x>>4);以及,
-在其它段(2exp+7≤|X|<2exp+8,0<exp<8)中,丢失(3+exp)个最低有效位(mant=x>>(3+exp))。
对于最后分段(exp=7),丢失的比特数随着分段号可增加至10个比特。
在解码器处,可在逆PCM量化器的输出端获得解码信号(图1)。如果逆量化通过表格方式来实现,则它简单地由通过256个解码值的表格中的索引指示来组成。因此,解码可由相同类型的简单操作来进行。
根据μ律的版本颇为相似。主要的区别是将128增加至这些值,以确保在第一分段中,第7位始终等于1。该安排使之有可能:
-传输不必要的位7,
-然而提高了第一分段中的编码精度(第一分段中量化步长等于8,而在根据A律的编码中为16),
-以相同方式处理所有分段。
此外,还有另外4个(于是总共为128+4=132)用于舍入,由此在量化值之中产生等级“0”(因为A律没有0级,最小的值是±8)。
这一在第一分段中具有较好解决方案的代价是将所有段移位132。至于A律,解码要么通过读取表要么通过一组算法上的简单操作来实施。
对于宽动态范围的信号来说,由PCM编码所得到的信噪比(SNR)几乎是恒定的(~38dB)。在原始信号域中的量化步长与信号的幅值成正比。这一信噪比不足以使量化噪声无法听见。此外,对于弱信号电平(第一分段)来说,则信噪比很差甚至可能是负数。
对于窄带语音信号(采样频率为8kHz)来说,G.711编码器的质量被认为是良好的。然而,这种质量不是非常好,并且要编码的原始信号和解码信号之间的差异由于存在着可听见的编码噪声因而是可感知的。在一些应用中,需要能够通过加入可选层,例如16kbit/s(因此每个样本2比特),来提高0-4000Hz频带中的PCM编码质量。当解码器接收到该增强层,它能够提高解码信号的质量。
称之为“分层”的G.711编码/解码原理概述如下。
在G.711编码中,编码器不是很复杂且在内存方面也不是很昂贵,值得考虑的是,分层扩展技术也同样具有低复杂度和合理内存需求的优点。该技术(例如文献US-2010/191538所述)包括恢复在PCM编码的尾数中没有发送的比特并将它们在增强层中发送。在接收到该层的情况下,解码器可以较高的精度来解码尾数。这种技术使之有可能对于每个样本所增加的各位提高信噪比6dB,它包括在增强比特流中保存和传输初始PCM编码过程中所丢失的比特中的最高有效位。例如,在16kbit/s的增强层(每样本2比特)的情况下,在该层中要发送的比特可以通过在两个步骤中执行右移而获得以保存4位尾数后面的2位。
该编码器在该扩展层中发送对应于第一(有效)位的位,否则这些位会由于对数PCM编码的有限精度而丢失。这些扩展位使之有可能将补充位置增加到分段“Seg”,从而增强具有最大幅值的样本的信息。解码器将所接收到的扩展比特连接在基本层比特之后,从而在该分段中的解码样本的位置中获得较高的精确度。在解码器中,基于所接收到的扩展比特数来调整舍入的数值。
这种恢复PCM编码的尾数中没有发送的比特,并将它们在增强层中发送的技术可用于提高ITU-T G.711.1编码器中对于低频带的编码。
2008版的ITU-T G.711.1编码器是PCM G.711编码的扩展。这涉及层级64至96kbit/s的编码器,该编码器与G.711编码器(A律或μ律)可完全互操作。此标准符合VoIP应用提高质量的要求。在图2中给出了G.711.1编码/解码的功能图。G.711.1编码器对音频信号以16KHz5ms的块或帧进行采样(即,16kHz的80个样本)。输入信号S(z)由QMF(正交镜像滤波器)类型的滤波器20划分为两个子频带SB1:[0-4kHz]和SB2:[4kHz-8kHz]。64kbit/s的比特率(“0层”与G.711(L0)兼容)对应于通过量化噪声的整形对0-4kHz子频带的量化,其由等价于上文提出的G.711编码的PCM(模块21)技术所执行。随后两个层(“层1-2”)分别对如下频带编码:
-使用适用于PCM编码的增强技术(ENH)(适用于“层1”(L1)的增强模块23)的0-4kHz低频带,
-以及利用MDCT变换编码(适用于“层2”(L2)的模块22)的4-8kHz高通频带,
各自具有16kbit/s的比特率(每帧80比特)。
低频带的增强层(“层1”)使之有可能通过根据推荐G.711对编码的各个样本增加补充比特来减少内核层(“层0”)的量化误差。如上所述,它对各个样本增加了附加尾数位。
附加尾数位的数目取决于样本幅值。与其分配相同比特数来提高样本的尾数编码的精度,还不如动态分配在层1(L1)中有效的80个比特,来提高40个样本的尾数编码的精度,使得更多的比特归属于具有有效指数的样本。因此,虽然增强层中比特的预算平均为每个样本2个比特(16kbit/s),但增强信号具有每个样本3比特的分辨率,其采用自适应分配方法,根据从0到3比特的指数数值来改变分配给每个样本的比特数。
以下将描述G.711.1编码器低频带的增强层“1”(L1)的编码/解码操作。
具有自适应比特分配的编码以两个阶段来完成:
-生成比特分配表的第一阶段,
-随后是增强信号动态复用的阶段。
该流程对于A和μ律都是相同的。
比特分配表的生成可采用40个样本的指数exp(n),其中n=0到n=39。用于产生比特分配表的流程本身包括两个步骤:
-在第一步骤中,通过指数来计算指数映射表和指数索引计数器表,以及,
-在第二步骤中,计算比特分配表。
指数映射表,map(j,n),j=0,...,9,n=0,...,39,以及指数索引计数器表,cnt(j),j=0,...,9,按照以下操作计算,参考图3,其中步骤S11包括重置指数索引计数器表为零:cnt(j)=0,j=0,...9以及将40个样本的循环索引n设置为零。
接着,对于40个样本中的各个样本(n=0,..,39的循环),
(在i=0,...,2的循环中)
步骤S12对应于三个指数索引的计算:iexpn=exp(n)+i,i=0,1,2;
步骤S13对应于指数映射表的更新:map(iexpn,cnt(iexpn))=n
步骤S14对应于指数索引计数器表的递增:cnt(iexpn)=cnt(iexpn)+1
在此流程结束时,指数索引计算器表cnt(j)表示具有相同指数索引的样本数并且指数映射表包含使用给定指数索引的样本索引。
因此,cnt(6)是样本的数量,该样本可能将6作为指数索引,即指数等于6(i=0),5(i=1),或4(i=2),map(6,j),j=0,cnt(6)-1的样本的数量,从而包含这cnt(6)个样本的索引。
然后,比特分配表(b(n),n=0,...,39)作如下计算,参照图4,其中步骤S21包括:
-重置比特分配表b(n)为零:b(n)=0,n=0,...,39;
-重置要分配的比特的数量Nb为80:Nb=80;
-重置指数索引iexp为其最大值(这里为9=7+2):iexp=9。在该第一重置步骤后,重复执行随后的步骤S22至S25,直至所有的位都被分配:
S22:比较要分配的比特的数量Nb和指数索引计数器,cnt(iexp),以确定两者中的较小者:min(cnt(iexp),Nb);
S23:前min(cnt(iexp),Nb)个样本的比特分配递增1,其中索引对应于指数映射表中的指数索引iexp:
b(n)=b(n)+1,适用于所有的n=map(iexpj),j=0,...,min(cnt(iexp),Nb)-1,
S24:更新要分配的比特数量:
Nb=Nb-min(cnt(iexp),Nb);
S25:测试以验证是否所有比特都已被分配(Nb=0)。
如果Nb>0,指数索引递减1:iexp=iexp-1并通过转入步骤S22执行下一次迭代。
否则(Nb=0:所有比特已被分配)完成比特分配表的计算。
文献EP-2187387和EP-2202728具体描述了这些流程。
比特分配表,b(n),n=0,...,39,给出了各个样本在扩展层中的最高有效位的数量。于是,提取增强码并随后在增强层的比特流中依次复用。这里,4个比特的尾数后面的3个比特被保存,而不是采用固定的比特分配的G711分层编码器中的2个比特被保存。然后,在计算自适应比特分配表之后,提取b-比特扩展信号(b=0,1,2或3),同时仅仅只保留了b个最高有效位。为此,取决于所分配的比特数b来执行3-b比特的右移位。
与具有固定比特分配的增强信号的复用相比较,具有自适应比特分配的复用就更为复杂。然而,在具有每个样本2个增强比特的固定比特分配的情况下,8比特字节中的增强层的比特流的构成是简单的,这不是适用于动态分配的情况。
在每个样本2个比特的固定分配下,增强层的10个字节各自由4个连续样本的2个增强的比特所构成。于是,第一个字节的8个比特(b7b6b5b4b3b2b1b0)为:
-样本0的2个增强比特(b7b6),
-随后是样本1的2个增强比特(b5b4),
-然后是样本2的2个增强比特(b3b2),
-以及最后是样本3的2个增强比特(b1b0)。
更具体地说,第i个字节(i=0,...9)的8个比特(b7b6b5b4b3b2b1b0)为:
-样本4i的2个增强比特(b7b6),
-随后是样本4i+1的2个增强比特(b5b4),
-然后是样本4i+2的2个增强比特(b3b2),
-以及最后是样本4i+3的2个增强比特(b1b0)。
在解码中,根据上述的相同原理重构比特分配表,该指数数值对于编码器和解码器都是有效的。然后,增强的信号可根据使用比特分配表的增强层的比特流进行重构。
然而,在目前G.711.1编码器的低频带增强层的编码/解码中还存在着一些固有的缺点。
与固定分配(典型为每个样本2个比特)相比较,动态比特分配使之有可能根据所要编码的样本幅值来分配若干增强比特。然而,这种自适应分配比固定分配明显更加复杂。在不考虑要存储在只读存储器中的指令数量的情况下,它不仅需要更多的随机存取存储器,并且还需要更多的计算。
例如,对于G.711.1编解码器来说,当80个比特被分配给40个样本以及所分配的比特数在0至3比特之间变化时,动态比特分配与固定比特分配相比,需要存储下列表格:
-位分配表:40个16比特字
-指数映射表:400(=10x40)个16比特字
-指数计数器表:10个16比特字
于是,与在G.711.1情况下的固定分配相比,动态分配需要存储器具有大约450字的存储量级。
至于计算的复杂度,指数映射表和相关指数计数器表以及动态比特分配的迭代过程的计算,需要复杂的寻址、大量的存储器访问以及测试。
指数计数器表的初始重置需要例如10次存储器访问,然后对40个样本进行循环,如下所示:
a)内存访问以取得样本n的指数iexpn
b)在指数映射表中寻址以指向map(iexpn,0)的地址adr_map
c)在计数器表中寻址以指向cnt(iexpn)的地址adr_cnt:adr_cnt=cnt+iexpn
d)接着在3个索引(i=0,1,2)上执行循环:
i.读取(存储器访问)存储在存储器中地址为adr_cnt的值:*adr_cnt
ii.在指数映射表中寻址以指向map(iexpn,*adr_cnt)的地址adr_mapi:adr_mapi=adr_map+*adr_cnt
iii.在这一地址写入(存储)n:*adr_mapi=n
iv.地址adr_cnt包含的指数计数器的值递增1:*adr_cnt=*adr_cnt+1
v.地址adr_cnt递增1:adr_cnt++
vi.地址adr_map递增40:adr_map=adr_map+40
操作a),b),c)和d)执行40次;具有内部循环的操作d)(操作i至vi)执行120(=40x3)次。
虽然正常寻址(如操作v和vi所示具有恒定的增量)的复杂度被认为可以忽略不计,但是对于某些不太正常的寻址操作来说并非如此。虽然在表cnt中寻址的代价并不非常高(步骤c中的增加),然而在指数映射表中的寻址相当复杂。
特别是,指向二维表(10和40)中一个元素map(j,n)的地址需要40j+n的计算。如果相加的n具有有效位“1”,乘以40花费“3”。为了减少这种寻址的成本,有可能存储部分地址,但是以增加随机存取存储器的大小为代价。
比特分配表的计算也是很复杂的,其复杂性在于将该比特分配表重置为零并且要分配的比特数重置为80需要41次存储器访问。指数计数器表中和指数映射表中的寻址也都重置为分别指向地址cnt(9)的adr_cnt和map(9,0)的adr_map(adr_cnt=cnt+9,adr_map=map+40*9)。
然后,10个指数索引值的循环(iexp从9递减到0)执行以下操作:
e)进行测试以确定要被分配的剩余比特数Nb是否小于指数计数器的当前值,*adr_cnt(=cnt(iexp));
如果是,则将变量Nb存储在变量bit_cnt中;
如果否,则存储的数值是*adr_cnt。
这种存储算作一次存储器访问。
f)重置指数映射表中的寻址以指向map(iexp,0)的地址adr_mapi:adr_mapi=adr_map
g)然后在bit_cnt个索引(i=0,1,bit_cnt-1)上执行循环,从而先前bit_cnt个样本的各自比特分配递增1个比特,所述先前的bit_cnt个样本的索引从map(iexp,0)存储至map(iexp,bit_cnt-1)。在这一内部循环中执行以下操作:
■读取(存储器访问)存储在存储器中地址为adr_mapi的样本的索引n(即,元素map(iexp,i)的地址):n=*adr_mapi
■在比特分配表中寻址以指向元素b(n)的地址adr_b:adr_b=b+n
■样本n的比特分配递增1(加法)并存储递增之后的数值(存储器访问):*adr_b=*adr_b+1(b(n)=b(n)+1)
■指数映射表中的地址递增1:adr_mapi++(adr_mapi现在指向元素map(iexp,i+1)的地址)
h)更新要分配的剩余比特的数量(减法):Nb=Nb-bit_cnt
i)进行测试以确定是否所有比特都已分配:
■如果是(Nb=0),则离开iexp上的循环:比特分配已完成
■如果否(Nb>0),地址adr_map递减40:adr_map=adr_map-40用来指向元素map(iexp-1,0)的地址并对下一个指数(iexp=iexp-1)执行步骤e)至i)。
外部循环的执行次数(操作e至i)取决于指数映射表(并因此取决于要编码样本的指数分布)。这一数目的变化使得循环更为复杂。如果在进入循环之前该循环的重复次数未知,则有必要在每次迭代结束时执行测试(步骤i)。内部循环操作的执行次数等于要分配的比特的总数(在G.711.1的情况下为80)。特别地,它仍然是这些操作由一次分配1个比特组成的情况。
至于具有自适应比特分配的复用,如上文所述,在比特流的增强层中的比特复用远比固定比特分配要复杂得多。
在动态分配下,比特流的组成并不规整:其比特组成字节的样本的数量会变化,并且同一样本的增强比特可能处于不同字节。在与固定复用相比较,自适应复用要复杂得多,并且在上述例子中需要40次循环测试(“IF”型)和80次辅助加/减法。10个字节的最后组成还需要20次减法和20个比特的偏移量。
因此,尽管通过引入具有动态比特分配的分层扩展使得G.711编码技术的质量得到增强,但这种动态分配需要大量的操作和多得多的内存。G.711分层扩展的ITU-T标准化的目的是实现低的复杂度。
发明内容
本发明将改善这一状况。
为此,提出了分层编码/解码中的比特分配方法,该分层编码/解码包括数字音频信号增强层的编码/解码。该数字音频信号包括连续的L个样本,其中各个样本都呈现为尾数和指数的形式。所述方法尤其包括分配预定数量Nb的增强比特至L个样本中至少一些具有最大指数数值的样本。
所述方法包括以下步骤:
a)枚举各自具有给定值的L个样本的指数,
b)通过减少指数数值直至预定值Nb接近于上述数值来计算指数枚举的至少一个累积值,以便
c)确定没有有效增强比特的样本的最大指数的阈值数值(以下记为“iexp0”)。
然后,根据所选择的规则将Nb个增强比特实际分配到指数大于阈值数值iexp0的样本。
正如以下参照附图所描述的实施示例中所看到的,与上文描述的现有技术相比,通过减少可用于分配的比特的数量来确定变量iexp0有可能显著限制比特分配计算的复杂度。
在一个实施例中,根据上述选择的规则,可规定将分配给样本的比特的最大数量Na并保留下述各项:
-对于指数大于阈值数值iexp0与最大数量Na之和的各个样本分配的Na个比特,
-对于指数小于或等于所述阈值数值iexp0的样本分配的0个比特,以及,
-对于指数包含在阈值数值iexp0加1与阈值数值和最大数量Na之和之间样本分配的比特数Nb中的多个附加比特。
这提供了基于样本指数数值的改进的比特分配。
在一个特定实施例中,可以决定为指数包含在阈值数值加1与阈值数值和最大数量Na之和之间的各个样本分配:
样本的指数与阈值数值iexp0之间的差值,
或者该差值小于1,这取决于选择的标准,举例来说,诸如连续样本中的样本的位置次序。
然而,对于这一类别的样本,分配变量是可能的(例如,考虑样本的近似性或任何其它标准)。
例如,有可能的是,与其选择其指数在[iexp0+1,iexp0+Na]范围内的前几个样本,不如选择具有最大指数的样本。
在预先确定数量Na的情况下,可以认为指数严格大于iexp0+Na的样本可最终接收Na个比特。
然而,在示例性实施例中,数量Na不能预先确定、预先验证的。例如,数量Na只能在上述步骤b)结束时确定(实质上在累积结束时确定)并且步骤b)的执行使之有可能简单获知此数量Na。的确,它有可能不一定能限制数量Na来验证该分配并不超过数量Nb。
具体的说,可理解为,附加的比特数最终对应于所要分配的比特总数Nb,它少于分配给其指数严格大于iexp0+Na的样本的比特数(这种样本的数量有可能为零)。另一方面,上述阈值数值iexp0的确定使之有可能确保这种分配不会超过数量Nb。分配给其指数大于iexp0+Na的所有样本的Na个比特因此可以不引起分配的“溢出”,这是因为阈值数值iexp0的计算可避免超过分配的比特的数量Nb。
在一个实施例中,步骤b)例如可包括:
b1)确定在L个样本中的最大指数数值(下文记为“iexpmax”);
b2)累积从最大指数数值到递减Na次后最大值的指数的数量;以及,
b3)条件循环,使得:
如果该累积始终小于所要分配给L个样本的比特总数Nb,则将最大指数数值递减1使这一累积增加到通过实施操作b2)计算出的新累积,为实施操作b2)所作的这一递减的结果作为最大指数数值,并且只要根据操作b2)获得的所述累积始终小于数量Nb就对操作b2)进行循环迭代,
否则,计算操作b2)的先前迭代所剩余的若干附加比特,以便确定其指数包含在阈值数值加1和阈值数值与最大数量Na之和之间的若干(“L”个)样本。
在一个实施例中,通过两个循环来执行L个样本的比特分配:
第一循环,持续执行直至比特分配至其指数介于阈值数值加1与阈值数值和最大数量Na之和之间的样本,对第一循环的迭代次数进行计数,
然后,第二循环执行最后剩余样本的比特分配,迭代若干次,该迭代次数为第一循环的所述迭代次数的函数。
在一个实施例中,指数计数器表可在步骤a)中创建并且在该表中的地址指针可在步骤b)所实施的条件循环中预先递减。
因此,确定在L个样本中的最大指数数值(iexpmax)可以通过读取上述表格来有效执行。
尤其是在编码中,该方法通常可包括由增强层编码获得的增强信号的比特流组成。在下文附录2所示和讨论的实施例中,该组成有利于在各个样本的比特分配之后执行。
在根据附录1所示实施例(下文称之为“第一实施例”)的变型中,比特分配数据首先存储于表格中并且所述比特流的组成在该表格的基础上进行。
该方法有利于应用于根据符合ITU-T推荐的G.711.1的类型A或类型μ的对数幅值压缩编码定律的PCM(脉冲编码调制)类型的量化所执行的编码/解码。
本发明具有众多优点,(但当然为非限制性的),尤其适用于音频,例如多个终端之间的电话会议通过对采用桥架构所输入的比特流执行至少部分解码、混合和至少部分再编码的信号处理。在这类应用中,第二实施例的实现是尤为有利的,如下面将要看到的。
本发明可以通过执行计算机程序来实现,所述计算机程序包括当由处理器执行时用于执行上述方法的指令,因此本发明涉及这类程序,下文将讨论图5至图9所示流程图的示例。
如图11作为参考所示,本发明还涉及设备COD,适用于数字音频信号的分层编码中的增强层的编码,并包括计算机化装置(如典型的处理器PROC和存储器MEM),适用于实施本发明含义范围内的编码方法和/或它的上述应用。
本发明还涉及设备DEC,适用于数字音频信号的分层解码中的增强层的解码,并包括计算机化装置(例如处理器PROC’和存储器MEM’),适用于实施本发明含义范围内的解码方法和/或它的上述应用。解码器和上述编码器可通过通道C相连接。
于是,本发明适用于基于具有动态比特分配的分层扩展技术来减少随机存取存储器和计算的次数且同时保留所获得的质量。在附录1具体示出的实施例中,所获得的信号在任何时候都与本领域的那些状态兼容。该结果易于实施(节省存储和处理能力)并因此节省成本。本发明尤其非常适用于电话会议***中的编码。
不同于进行逐个比特的比特分配,本发明根据其指数直接确定各个样本所需分配给它的增强比特的总数。有利的是,本发明不使用指数映射表,从而减少了随机存取存储器并且还避免了大量的存储器访问和复杂的寻址操作。本发明确定L个样本的指数的最大指数iexpmax和不接收增强比特的样本的最大指数iexp0。然后,根据这两个指数来计算所要分配给各个样本的比特总数。
在一个实施例中,本发明的应用使之有可能执行与现有技术的G.711.1编码/解码中初始使用的逐个比特的迭代流程相同的动态比特分配。
附图说明
本发明的其它优点和特征将通过参考附图阅读下面所表述的实施例说明而变得更加清晰,附图包括:
-图1示出了适用于实施所述方法的***的一般示例,包括本发明上下文所述的编码器11和解码器14,
-图2详细图示了适用于实施本发明的分层编码器的结构,
-图3示出了在现有技术含义范围内的指数映射表和指数索引计数器表的计算,
-图4示出了在现有技术含义范围内的比特分配表的计算,
-图5示出了适用于根据本发明实施例在第一步骤中的指数计数器表结构的示例流程图;
-图6示出了在本发明含义范围内的根据下一具体步骤的指数计数器的累积计算的示例流程图;
-图7示出了对应于将不接收增强比特的样本的最大指数的变量iexp0的计算的示例流程图,
-图8A示出了根据实施例适用于比特分配流程的示例流程图,
-图8B示出了根据变型实施例适用于比特分配流程的示例流程图,
-图9概述了枚举所要分配至一帧的L个样本的比特的示例具体流程图,以及,
-图10图示示出了本发明应用至多个终端之间的电话会议桥接器,
-图11示出了适用于实施本发明的编码器/解码器类型的***。
具体实施方式
本发明的可能应用涉及在分层编码中的增强层的编码。该分层编码包括根据幅值压缩定律通过对数字信号S的连续L个样本的量化的基本层的编码。样本以预定数量的比特进行编码,包括指数比特和尾数比特以获得量化索引(IMIC)的第一比特块,且在第一块中不考虑的预定数量的最低有效尾数位。尤其是,增强层的编码意味着在第二比特块中保留在第一块中不考虑的比特中的最高有效位,使之在第二块中为至少一些上述L个样本传递附加的尾数信息。增强层的编码典型地包括比特数量的计算以及将它们分配至这些样本,以便根据L个样本中的各自指数在增强层中提供L个样本中的这些样本的其它附加的尾数信息。
因此,在所描述的示例中,寻求根据L个样本的指数数值将总共Nb个附加比特分配至最多L个样本,以便增强在分层编码的增强层(层“1”(L1))中的样本编码(通过图2中的模块23实施)。
在下文中使用下述符号:
-Na分配给样本的附加比特的最大数量,
-Ne指数数值的总数,以及,
-exp[L]包含L个样本指数的表格。
使用L个样本的指数,exp(n),其中n=0,...,L-1(0≤exp(n)<Ne),来产生比特分配。
在第一阶段中,枚举该指数;然后,在第二阶段中,计算L个采样的比特分配。
更具体地说,在下面的实施例中,在上述第一阶段中:
-对具有给定值的指数的数量进行计数,
-这些计数都被存储在表cnt0[Ne]中(根据下文所述的步骤A)至C)),
-然后,计算指数计数器的累计表cnt_cum[Ne+Na-1]。
在示例性实施例中,增强层编码方法的具体步骤如图9所示。在第一具体步骤GEN-1中,构建指数计数器表cnt0。在所示的示例中,对于原始信号S(z)的一块(或帧)的L个样本(例如L=40):
-指数设定为0的样本数量是:10,
-指数设定为1的样本数量是:8,
-指数设定为2的样本数量是:8,
-指数设定为3的样本数量是:6,
-等等。
-直至达到指数数值(iexpmax+1),这时不再保留其余剩余样本。
因此,标明为iexpmax的指数数值是最大指数数值,这时还有至少一个样本具有该指数数值iexpmax
当然,这些数字的总和等于一帧中的样本数量L。
Na用于表示可分配给一个样本的附加比特的最大数目(例如Na=3)。然后,针对值iexp0进行搜索,其被定义为将不接收增强比特的样本的最大指数:使得指数小于或等于iexp0的样本的比特分配为0比特。
因此,在第二具体步骤GEN-2中,在总共所要分配的Nb个比特中,估算为了将来分配至指数包含在iexpmax和iexpmax-Na+1之间的样本而保留的比特数(记住,这些样本之一仅可被分配最多为Na个增强比特)。
接着,所讨论的指数数值进行递减,并且在步骤GEN-2的首次递增后保留的比特之中,估算它们会保持被分配至指数包含在iexpmax-1和iexpmax-Na之间样本的比特数量。这里,再次将最多Na个增强比特持续分配至各个样本,当然,只要在上述第一递增之后,在Nb’个附加比特中剩余足够的比特能够被分配。
这一递减继续进行直至样本数量达到其指数包含在iexp0和iexp0+Na-1之间并且这时剩余比特的数量Nb’不再足以满足最多Na个比特分配至这些样本中的各个样本。因此,图9所示的数量L’表示远远偏离上述递减的实施方式所计数出的比特数量。此数量L’还对应于指数包含在iexp0和iexp0+Na-1之间的样本的数量,所述指数通过指数的累积给出cnt_cum[iexp0+Na-1],但这时不能确保每个样本分配(exp(n)-iexp0)个比特。在这L’个样本中,数量L”涉及每个样本可能分配(exp(n)-iexp0)个比特的样本。
因此,在接下来的比特分配步骤GEN-3阶段,指数大于iexp0+Na的样本各自将被分配Na个比特;然而对于指数exp(n)包含在范围[iexp0+1,iexp0+Na]之间的样本,分配可能为exp(n)-iexp0(对于L”个样本)或者exp(n)-iexp0-1(对于L’-L”个剩余样本)。如上所述,对于此类样本,可能存在分配的变型。在特定的实施例中,可以简单地根据L个样本他们在帧中“出现”的次序进行分配。然后,首先在这些剩余样本中进行处理的样本将在分配增强比特的过程中首先服务。最后,指数小于或等于阈值数值iexp0的样本并不受益于任何补充的比特。
因此,第一具体步骤GEN-1包括构建指数计数器表,将在下文参考图5的示例性实施例进行详述。
计数器表cnt0首先被重置为零(通过Ne次存储器访问):cnt0[iexp]=0,其中0≤iexp<Ne
指数表中的指针adr_exp同样被重置为exp(0)的地址:adr_exp=exp。
然后,在对L个样本的循环(0≤n<L)中,执行下述操作:
A)访问存储器以获取样本n的指数iexpn(指针adr_exp递增1以指向下一样本的指数的地址):iexpn=*adr_exp++
B)在指数器表中进行寻址以指向cnt0(iexpn)的地址adr_cnt:adr_cnt=cnt0+iexpn
C)地址adr_cnt中包含的指数计数器值递增1(加法):*adr_cnt=*adr_cnt+1
操作A)、B)、C)执行L次。与上述现有技术的方法相比,二维表不存在内部循环或开销大的寻址。
一旦计算出表格cnt0,就计算指数计数器的累积表cnt_cum[Ne+Na-1]:
cnt _ cum [ j ] = &Sigma; i = max ( 0 , j - ( N e - 1 ) ) min ( j , N a - 1 ) cnt 0 [ j - i ] , 0 &le; j < N e + N a - 1
这一表达式在实践中可根据累加的限制分为三种情况:
cnt _ cum [ j ] = &Sigma; i = 0 j cnt 0 [ j - i ] , 0 &le; j < N a
cnt _ cum [ j ] = &Sigma; i = 0 N a - 1 cnt 0 [ j - i ] , N a &le; j < N e
cnt _ cum [ j ] = &Sigma; i = j - ( N e - 1 ) N a - 1 cnt 0 [ j - i ] , N e &le; j < N e + N a - 1
可执行对应于这三种情况的三个循环。然而,在有利的实施例变型中,有可能限制(要存储在程序存储器PROM中的)指令的数量并因此具有合理的程序存储空间,它可能优选具有大小为Ne+2Na的指数计数器表cnt0_a(因此仅具有2Na个字的增加)。然后,重置为零的步骤包括2Na次补充的存储器访问以及指向地址cnt0_a+Na的指针cnt0的定义。步骤A)至C)保持不变。籍助于这一大小稍稍增加的表,指数计数器的累积表的计算如下所示:
-指数计数器表上的指针adr_cnt0重置为cnt0(=cnt0_a++Na),因此指向cnt0(0)的地址,(于是cnt0(0)为指数为0的样本的数量),以及,
-第二指针adr_cnt_cum重置为cnt_cum(0)的地址(adr_cnt_cum=cnt_cum),
然后,参考图6,在对Ne+Na累积的循环(0≤j<Ne+Na-1)中,执行下述操作:
D)重置表cnt0_a上的第二指针adr_cnt:adr_cnt=cnt0
E)重置变量cum为零:cum=0
F)循环以累积Na个计数器(0≤i<Na):
在这一循环的每次迭代中,位于当前地址adr_cnt的计数器的值增加至变量cum随后地址adr_cnt递减1:cum=cum+*adr_cnt--。
G)在内部循环F)的输出处,变量cum存储于地址adr_cnt_cum处,并且两个指针adr_cnt_cum和cnt0后递增1:
-*adr_cnt_cum++=cum和cnt0++。
可提供有效计算该累积表的实施例变型。
例如,与其将变量cum重置为零并执行内部循环F)Na次,还可执行少一次(0≤i<Na-1),通过在步骤E)重置变量cum为地址adr_cnt中的计数器值然后将此指针递减1:cum=*adr_cnt--。
相似的,有可能通过执行两个循环将计算Na个先前累积与Ne个稍后累积相分离:
-通过将变量cum重置为0,然后进行Na次迭代(0≤j<Na),将当前地址cnt0中的计数器值增加至变量cum,将变量cum存储在地址adr_cnt_cum中,两个指针adr_cnt_cum和cnt0都后递增1:cum+=*cnt0++和*adr_cnt_cum++=cum;
-通过与步骤D)至G)所描述的循环类似的第二循环(对于j,Na≤j<Ne+Na-1),其中初始指针adr_cnt_cum和cnt0是在第一循环的输出获得的指针(0≤j<Na)。
在这一变型中,对更少的计算进行计数并且表格cnt0_a的大小为(Ne+Na),使之相当于减少了Na个字(指针cnt0然后被重置为cnt0_a中的第一个元素的地址:cnt0=cnt0_a),但是由于第一循环的指令会导致增加程序存储。
还可通过递推关系来构建累积表,当前迭代的累积通过先前迭代计算出的累积减去计数器并加上计数器来获得,如下所示:
cnt_cum[j+1]=cnt_cum[j]-cnt0[j-Na]+cnt0[j+1]
可以理解的是,根据在复杂度、随机存取存储器大小和程序存储大小之间寻求的折衷,有可能组合不同的变型。
例如,有可能组合用于计算累积表、将累积不重置为零而是数值cnt0(0)和递推关系使用的两个分离循环的变型。在这种情况下,位于先前Na次累积的第一循环输出处的变量cum可用于在第二累积计算循环中计算具有递推关系的第一迭代。
通过根据本发明的技术所获得的指数计数器累积表相当于现有技术的指数索引计数器表,但是其计算并不需要代价高的指数索引映射表(存储和复杂度的代价都高)。
现在对比特分配表的计算进行描述。
为了避免代价高的逐个比特的比特分配,分配至一个样本的比特总数可一次性分配。这一比特数量可确定为样本的指数、L个样本的指数的最大指数(iexpmax)和不接收增强比特的样本的最大指数iexp0的函数,应该记住的是,指数小于或等于iexp0的样本的比特分配为0比特(如上文参考图9中的步骤GEN-2所述)。
因此,前两个步骤包括找出这两个指数iexpmax和iexp0
为了从L个样本的指数中找出最大指数iexpmax,可在样本的L个指数上执行循环以确定该最大指数。
籍助于示例流程,提及一种根据ITU-T推荐的G.191(“用于语音和音频编码标准的软件工具(Software tools for speech and audio codingstandardization)”,2010年3月)使用基本操作符指令的伪代码,这种指令在下表中进行讨论:
例如,这里的“FOR”指令因此对应于循环L次的循环,在进入循环前已知其执行次数。另一方面,“WHILE”指令对应于条件循环(在进入循环前不知其执行次数),并且在循环的每次迭代中该指令的复杂度权重为“4”。因此,可以理解的是,在上述伪代码中使用“FOR”指令更为有利。
相似的,在上文的伪代码中,“if”(小写字母)指令对应于一次独特的测试,其后为具有单个基础的单独操作符。在这种情况下,这一测试的代价可被忽略。这并不是“IF”测试的情况,尤其当在该测试的下游有条件地执行多个指令或复杂操作(例如功能调用)时。“IF”(大写字母)指令的权重典型为“4”。此外,如果此测试并不被验证(测试的输出为“ifnot”分支),指令应当在下游执行。对应于这种情况的“ELSE”指令的权重典型为“4”。下述表格概述了多种类型指令的复杂度权重。
有利的是,指数Ne的数量一般小于样本的数量L,优选为在计数器表cnt0[Ne]中查找最后的非零元素。参考图7,进行至步骤S51中以重置变量iexpmax为(Ne-1)和重置指针adr_cnt为元素cnt0[Ne-1]的地址:
iexpmax=Ne-1;adr_cnt=cnt0+Ne-1;
接着,执行表cnt0[Ne]中的条件搜索循环,对地址adr_cnt中的计数器值进行测试,其后为这一指针进行递减(步骤S52):
-如果测试的值为零,则iexpmax递减1(步骤S53)并转入至下一迭代,
-否则,则在循环输出处,循环输出的数值iexpmax是L个样本的所有指数中的最大指数(步骤S54)。
对应的伪代码为:
WHILE(*adr_cnt--==0)iexpmax=sub(iexpmax,1)
下一步骤包括查找不接收增强比特(0比特)的样本的最大指数iexp0。为此,从等于指数iexpmax-1的指数iexp0(步骤S55)、指数计数器累积表的指针重置为cnt_cum[iexpmax+Na-1]的地址(步骤S56)和剩余要分配的比特数量N'b等于“Nb-cnt_cum[iexpmax+Na-1]”(步骤S57)开始,通过对N'b进行测试来执行条件循环:只要N'b严格为正值(测试S58处N'b>0),则该循环就进行迭代,并且N'b递减cnt_cum[iexp0+Na-1](步骤S59),然后,iexp0递减1(步骤S60)。下文的伪代码给出了与图7的表述相一致的程序示例:
iexp0=sub(iexpmax,1);
adr_cum=cnt_cum+(iexpmax+Na-1);
N’b=sub(Nb,*adr_cum--);
WHILE(N’b>0){
N'b=sub(N'b,*adr_cum--);
iexp0=sub(iexp0,1);
}
于是,在每次迭代中,adr_cum指向cnt_cum[iexp0+Na-1]的地址,它给出了具有指数iexp0+i的样本的数量,其中i=0,...,Na-1。
重置,iexpmax为L个样本的最大指数,adr_cum指向地址cnt_cum[iexpmax+Na-1],因此它给出了具有指数iexpmax的样本的数量(这是由于没有样本具有指数iexpmax+1、iexpmax+2、iexpmax+Na-1)。
然后,在第一迭代中,adr_cum指向cnt_cum[(iexpmax+Na-2)]的地址,它给出了样本的数量所具有的指数要么为iexpmax要么为(iexpmax-1)。
在最后的迭代中(此条件循环的输出处在步骤S61中),指数iexp0是接收0比特的样本的最大指数(因此,没有比特被分配至指数小于或等于iexp0的样本)。
应当注意的是,iexp0可以为负;在这种情况下,所有样本都将被分配至少一个比特。
各个样本的比特分配由此取决于其指数和数iexp0之间的差值。指数等于iexp0+1的样本将接收1个或0个比特,这取决于剩余要被分配的比特数。
更具体地说,指数等于iexp0+i(1≤i≤Na)的样本接收i个或(i-1)个比特,而指数严格大于iexp0+Na的样本则将接收Na个比特。
对于指数exp(n)包含在范围[iexp0+1,iexp0+Na]内的样本,分配可为exp(n)-iexp0或exp(n)-iexp0-1。指数位于这一范围内的样本数量通过指数的累积给出cnt_cum[iexp0+Na-1]并最终对应于上文参考图9示出的数量L’,即:
L’=cnt_cum[iexp0+Na-1]
在这L’个样本中,分配多个比特的样本的数量L”等于它们的指数数值减去iexp0(即exp(n)-iexp0)的数值,可由下式给出:
L &prime; &prime; = N b - &Sigma; j = iexp 0 + 1 iexp max cnt _ cum [ j + N a - 1 ] = N &prime; b + cnt _ cum [ iexp 0 + N a - 1 ] = N &prime; b + L &prime;
(在测试S58的输出KO处N'b为负或零)
本发明在分配多个比特的L”个样本数量等于它们的指数减去iexp0的数值的选择中提供极大的灵活性。在具体实施例中,这L’个样本中选择L”个样本使之有可能获得等同于现有技术所述的G.711.1中逐个比特分配的比特分配。这一选择包括采用其指数位于上述范围内的前L”个样本。
现在给出对计算比特分配本身的描述。
在下文的示例性实施例中,通过执行两个循环执行对L个样本的比特分配:
-第一循环直至对其指数位于范围[iexp0+1,iexp0+Na]内的前L”个样本的比特分配已被执行,
-然后,第二循环以对后面剩余的样本执行比特分配。
第一循环的执行次数取决于数量L”以及这L”个样本在L个样本中的位置。因此,此循环应当被执行的次数在进入这一循环前是未知的。另一方面,基于第一循环所执行的次数,在进入第二循环前可确定此第二循环应当被执行的次数,该次数表示为“N”。
于是,根据本发明的比特分配过程可参考图8A执行,始于重置步骤S101:
-重置指数位于范围[iexp0+1,iexp0+Na]内的样本计数器Nbech为L”,
-重置第二循环应当被执行的次数N为L,
-重置两个指针ptr_exp和ptr_b,以从第一样本开始比特分配,其中:
ptr_exp指向指数表的第一元素(&exp[0]=exp,exp[0]为第一样本的指数),
ptr_b指向比特分配表的第一元素(&b[0]=b,b[0]为第一样本的比特分配)。
在第一循环中(具有涉及Nbech的测试S102):
-首先计算第n个样本的指数和iexp0之间的差值(nbit)(步骤S103),
-然后,该差值的下限指定为零(步骤S104和S105)。
-如果该差值严格为正(测试S104输出为OK),
则执行另一测试S106,以确定该差值是否小于或等于Na
如果是,则该样本的指数位于范围[iexp0+1,iexp0+Na]内并且计数器Nbech递减1(步骤S120),
如果否,则该差值的上限指定为Na(步骤S107)
-然后,nbit是第n个样本的比特分配(步骤S108),以及,
-计数器N递减1(步骤S109)。
只要Nbech严格为正(来自测试S102的箭头OK),则转入至下一次迭代。否则(Nbech=0,对应于输出KO),其指数处于范围[iexp0+1,iexp0+Na]内的L”个先前样本的最后样本的比特分配刚刚被确定(步骤S108)并且退出基于Nbech的条件循环,以便进入第二循环并执行N个最后样本的比特分配。
这里,应当阐明的是,位于测试S106输出的术语“ifnot”可暗示指令“ELSE”,其习惯地跟在测试S106中的“IF”指令之后。这一实施例可以通过如图8所示的说明性示例作清楚阐明。然而,在实践中,应指出的是,这两个指令(“IF”和“ELSE”)各自复杂度权重均为4。因此,在编程实践中,总是优选对该差值设置上限(“s_max”指令的权重为1)。关于值Na的差值的测试(步骤S106)因此成为简单的“if”测试(小写字母,其含义已在上述表格中给出)。因此,在实践中,优先使用限制(s_min或s_max),以便将“n比特”与0或Na作比较。但是,为了阐明图8A和8B,其中已经示出了IF-ELSE类型的指令。
还应该注意的是,由于指针ptr_exp和ptr_b已算后递增,它们分别指向下一样本的指数及其比特分配。
在第二循环中,分配至其指数处于范围[iexp0+1,iexp0+Na]内的样本的比特数量等于其指数数值减去(iexp0+1)(即,因此为exp(n)-iexp0-1)。分配至其它样本的比特数为:
-对于指数小于或等于iexp0+1的样本为0,或者,
-对于指数严格在iexp0+Na之上的样本为Na
为了使后N个样本的处理统一,iexp0在进入该循环之前递增1(步骤S110)以及,在此第二循环中,从而足以限制样本的指数和该值递增iexp0之间的差值介于0和Na之间。
于是,在第二循环中(基于i的范围从0(步骤S111)至N定义):
-首先在步骤S114中计算第n个样本的指数和iexp0之间的差值(nbit),
-该差值被限制在0和Na之间(步骤S115至S118),
-nbit因此为第n个样本的比特分配(步骤S119)。
这里,再次地通过说明的方式,步骤S115至S118可由“IF”和“ELSE”类型的指令表示。然而,在编程实践中,优选使用所强加的限制。
该循环迭代N次(通过步骤S113的递增以及基于i的测试S112),以便执行后N个样本的比特分配。
根据图8A的比特分配的伪代码在下面给出:
将看到,在上述伪代码中,nbit的下限最初为0并在测试nbit>0之前(在测试S104中)保持为0,仍然是为了避免使用权重为4的“ELSE”指令。
由于“WHILE”类型的条件循环比“FOR”循环更为复杂,可优选使用FOR循环的迭代而避免WHILE循环,并因此取决于L″和L’的数值(例如如果L″>L’/2),可从最后的样本开始执行比特分配。该实施例变型对应于下面根据图8B所给出的伪代码,具有如下步骤:
iexp0=sub(iexp0,1)(步骤S211基于Nbech循环的输出处,以便执行下面基于n的第二循环);
一旦已经确定了比特分配,则适用于层“1”(L1)增强信号的自适应复用过程可根据现有的技术来执行。
然而,本发明还提供了另一优点,使之有可能一次执行比特分配的产生和自适应复用。确实,在现有技术中,由于直至所有要分配比特的逐个比特迭代分配结束才可获知样本的比特分配,样本的增强比特的自适应复用只能在所有样本的迭代逐个比特分配结束后才可发生。这并不是本发明中的情况,本发明可以一次确定样本的比特分配。
于是,有可能快速地逐个样本执行该自适应复用,而并不等待以确定所有比特的分配。组合产生比特分配和自适应复用的这两个步骤,使之有可能进一步减少随机存取存储器的需求以及复杂度:而不必存储L个样本的比特分配,因此能够提供对应于上述表格b(L)和写和读分配至L个样本的比特数所需的2L次存储器访问的存储器节省。
由于复杂度相应地降低,本发明可具有多种应用并尤其适用于对电话会议的音频桥接架构的信号处理应用中提供输入比特流的解码、混合和重新编码的应用,如上文所述。
更具体地说,本发明提供了很多优点。它提供了多种变型,以获得复杂度、随机存取存储器和制度存储器(程序码)之间的不同折衷。在所有情况下,都能极大节省随机存取存储器(RAM)和降低复杂度。所获得的这些节省并没有降低质量,因为本发明有可能使之在特定实施例中能够实现与现有技术的逐个比特迭代过程相同的自适应比特分配。
本发明的有益应用之一是高质量音频电话会议。在基于多点控制单元(MCU)的集中式通信架构的情况下,音频桥接器对输入比特流进行解码以及混合,然后重新编码该混合信号,以便将它们发送至远程终端。
基于所要处理的码流的数量,其复杂度可能是极大的。为了限制此复杂度,根据G.711.1标准,可提供部分混合技术来混合编码后的码流。因此,在G.711.1含义范围内的分层编码上下文中,与其完全解码比特流,还不如在重新编码之前,仅解码和混合内核层(可兼容G.711),增强层(较低的和较高的)未被解码。
作为一个变型,有可能在所有输入码流中选择活跃的码流并将它与混合和重新编码的内核层组合的增强层重新发送至其它远程终端。这一部分混合技术使之有可能显著降低复杂度并同时保证内核层等级的混合的连续性,这是由于仅仅只切换了增强层。然而,丧失了由扩展层所提供的对通信质量的增强。
通过显著降低输入码流的低频带增强层的解码以及增强的混合信号的重新编码的复杂度,本发明通过限制切换至高通频带层允许部分混合扩展至所有增强的低频带。从而确保了混合低频带的连续性,这增强了混合码流的质量,同时增加其复杂度也是合理的。参考图10,对于例如三个终端TER-A、TER-B、TER-C之间的电话会议桥接器DIS,在该示例中,可对桥接器DIS作出决定以为终端TER-B和TER-C丰富来自终端TER-A的G.711.1信号,但是混合低频带层(内核层L0和增强层L1):
-为终端TER-A混合来自终端TER-B和TER-C的低频带层(L0+L1[B+C]);
-为终端TER-B混合来自终端TER-A和TER-C的低频带层(L0+L1[A+C]);
-以及,为终端TER-C混合来自终端TER-A和TER-B的低频带层(L0+L1[A+B]);
同时,还提供从终端TER-A至终端TER-B和TER-C的增强层流L2[A]。
有利的是,在与较低层L0的三次混合中,三个L1层的解码和L1增强层的重新编码都可以低复杂度来执行,这得益于本发明的实施。
下面的附录1和2示出了对应于两种不同情况的伪代码的两个实施例示例。
-依照现有技术根据当前推荐的G.711.1所执行的复用(附录1中的第一示例性实施例),
-复用的执行紧随着各个样本的比特分配后(附录2中的第二示例性实施例)。
作为推荐的G.711.1的一部分,具有80比特的40个样本的编码必需增强。
指数Ne数值的数量因此在这里等于8,增强比特Na的最大数量等于3。
在第一实施例中,使用递推公式计算指数计数器的累积数值并且它们不作存储。
为了在随机存取存储器和复杂度方面得到极大节省,在第二实施例中,比特分配和自适应复用的计算步骤进行组合并且不存储比特分配表。
在第一实施例中,所提供的两个整数表超过16比特(字16),其中一个尺度10(=8+3-1)用于存储指数计数器,第二尺度40用于存储40个样本的比特分配。
伪代码在附录1中给出,其中:
-COM-1对应于注释:表格上的指针,
-COM-2对应于注释:地址cnt[2]处的指针,指数为0的样本数,
-COM-3:重置为零的指数计数器,
-COM-4:指数计数器表的计算,
-COM-5:存储器访问以读取样本n的指数,
-COM-6:指向地址cnt0[iexp],
-COM-7:cnt0[iexp]递增1并写入存储器,
-COM-8:搜索40个样本的最大指数:cnt的最后非零元素,
-COM-9:搜索iexp0:不接收任何增强比特的样本的最大指数,
-COM-10:附带递归的指数计数器的累积的计算,
-COM-11:cnt0[iexp0]增加至cum:cum=cnt0[iexp0+2]+cnt0[iexp0+1]+cnt0[iexp0],
-COM-12:iexp0递减1,
-COM-13:从cum中减去cnt0[iexp0+3]->cum=cnt0[iexp0+2]+cnt0[iexp0+1]
-COM-14:计算nbEch1:指数处于范围[iexp0+1,iexp0+3]中并接收exp(n)-iexp0个增强比特的的样本数,
-COM-15:指数处于范围[iexp0+1,iexp0+3]中的样本数的计算:cnt0[iexp0+3]+cnt0[iexp0+2]+cnt0[iexp0+1],通过将cnt0[iexp0+3]增加至cum,
-COM-16:通过将cum增加至条件循环输出处(负)比特数的nbEch1的计算,
-COM-17:根据样本的指数iexpn和iexp0之间的差值的比特分配;如果iexpn<=iexp0:则nbBit=0;如果iexp0<iexpn<=3(指数处于范围[iexp0+1,iexp0+3]中的样本);则nbBit=iexpn-iexp0,对于先前nbEch1个样本;则nbBit=iexpn-iexp0-1,对于稍后样本;如果iexpn>iexp0+3:则nbBit=3,
-COM-18:计算nbBit作为样本的指数和iexp0之间的差值,
-COM-19:测试样本的指数是否处于范围[iexp0+1,iexp0+3]内,通过测试是否nbBit小于或等于3,
-COM-20:指数处于该范围内,被分配iexp-iexp0个比特的范围内的样本的数量的递减,
-COM-21:限制为3的最大比特分配数,
-COM-22:已接收比特分配的样本的计数器的递减,
-COM-23:比特分配至后nbEch0个样本:在nbEch0个样本中,指数处于范围[iexp0+1,iexp0+3]内的样本,接收iexpn-iexp0-1个比特。
同时,为了考虑非正常寻址的复杂度,已指示出附加(add(0,0))。
值得注意的是,得益于搜索iexpMax,40个样本的最大指数、计数器的累积值的计算平均起来都不复杂(由于不计算大于iexpMax的指数的累积值)。
在可能的实施例变型中,显著的特点来自于iexpMax=0的特定情况(在这种情况下,将2个比特分配给40个样本中的各个样本)。在这一变型中,在确定了iexpMax后,执行测试以查看是否它严格为正(IF(iexpMax>0)),在这种情况下,在两个循环中执行步骤以确定iexp0,计算NbEch1并通过计算与iexp0的差值来分配比特。否则(iexpMax=0),则这些步骤可省略并且2个比特分配至各个样本。在这一变型中,iexpMax=0的情况可分开处理,表格cnt的尺度(重置cnt0为cnt+1)可以减1。在另一方面,区别于这一特殊情况,增加程序存储器的大小(需要用于这一情况的补充程序指令集)。当比特分配步骤与用于复用的步骤相组合时,这种情况特别有价值(根据下述第二实施例),在该特殊情况中,复用过程非常简单且不是非常复杂。
于是,可从中看到,本发明根据目标应用提供了多种可能的变型。
在附录2示出的第二实施例中,比特分配和自适应复用的计算步骤相组合并且无需存储比特分配表。第一步骤(计算指数计数器表,搜索40个样本的最大指数,搜索不接收任何增强比特的样本的最大指数,计算指数处于范围[iexp0+1,iexp0+3]中并将接收(exp(n)-iexp0)个增强比特的样本数)与上述第一实施例相同。
首先给出具体条件(iexpMax>0)。
在预备步骤后,自适应复用在两个比特分配计算循环中执行。在条件循环(WHILE(nbEch1>0))之前,执行与现有技术相同的重置。
附录2的伪代码调用下述注释:
-COM50:从mux_cod例程中提取,此例程执行自适应复用并包含与现有技术相同的指令集;
-COM51:但与现有技术不同,使之有可能如果不分配比特,则不跳用例程;在一个变型中,为了避免测试(ELSE)和减少指令数,如现有技术那样,有可能对所有样本调用例程,包括那些分配了0个增强比特的样本。
因此,本发明能够显著减小所需随机存取存储器的大小以及计算量。此外,得益于复杂度和存储器的减少,通过有利地使用全部低频带信号(包括核心和增强分层)的部分混合来取代限制为内核层的部分混合,尤其在会议桥接器中,有可能增强部分混合的质量。
附录1
附录2

Claims (14)

1.适用于分层编码/解码中的比特分配方法,所述分层编码/解码包括数字信号增强层的编码/解码,所述数字信号增强层包括连续的L个样本且各个样本包括尾数和指数,所述方法包括将预定数量Nb的增强比特分配至L个样本中具有最大指数数值的至少一部分样本,
其特征在于,包括下述步骤:
a)枚举步骤,枚举L个样本的指数且各自都具有给定数值,
b)计算步骤,通过减少指数数值直至预定数量Nb接近于上述数值来计算指数枚举的至少一个累积数值,以便
c)确定步骤,确定没有有效增强比特的样本的最大指数的阈值数值(iexp0),以及,
根据所选择的规则,将Nb个增强比特分配至指数大于所述阈值数值(iexp0)的样本。
2.根据权利要求1所述的方法,其特征在于:根据所述选择的规则规定所要分配给样本的比特的最大数量Na并保留下述各项:
-Na个比特分配至指数大于阈值数值(iexp0)与最大数量Na之和的各个样本,
-对于指数小于或等于所述阈值数值iexp0的样本分配的0个比特,以及,
-在比特数Nb中的多个附加比特分配至指数包含在阈值数值(iexp0)加1和阈值数值与最大数量Na之和之间的样本。
3.根据权利要求2所述的方法,其特征在于:所述分配至指数包含在阈值数值加1和阈值数值与最大数量Na之和之间的各个样本为:
在样本的指数(iexp(n))与阈值数值(iexp0)之间的差值,或者;
该差值小于1,这取决于所选择的标准。
4.根据权利要求3所述的方法,其特征在于:所述选择的标准对应于连续样本中的样本位置次序。
5.根据权利要求2至4中任一项所述的方法,其特征在于,包括:
b1)确定在L个样本中的最大指数数值(iexpmax);
b2)累积从最大指数数值到所述最大值递减Na次的指数数量;以及,
b3)条件循环,使得:
如果该累积保持小于要分配给L个样本的比特总数Nb,则该累积加上通过将最大指数数值递减1的操作b2)实施计算出的新累积,为了实施操作b2)将这一递减的结果作为最大指数数值,并且只要根据操作b2)所获得的所述累积保持小于数量Nb就对操作b2)进行循环迭代,
否则,计算操作b2)的紧前迭代处剩余的若干附加比特,以便确定其指数包含在阈值数值加1和阈值数值与最大数量Na之和之间的若干(“L”个)样本。
6.根据权利要求2至5中任一项所述的方法,其特征在于:分配至L个样本的比特通过执行两个循环来进行:
第一循环,直至至其指数介于阈值数值加1和阈值数值与最大数量Na之和之间的样本的比特分配已被执行,对第一循环的若干次迭代进行计数,
然后,第二循环以执行最后剩余样本的比特分配,迭代若干次,该迭代次数为第一循环的所述迭代次数的函数。
7.根据前述任一权利要求所述的方法,其特征在于:所属指数计数器表(cnt0)在步骤a)中创建,并且在条件循环中,该表中的地址指针递减,以便实施步骤b)。
8.根据引用权利要求5和6所述的方法,其特征在于:所述确定在L个样本中的最大指数数值(iexpmax)可以通过读取所述表来进行。
9.根据前述任一权利要求所述的方法,其特征在于,所述方法包括:在编码中,增强信号的比特流的组成来自于增强层的编码,
所述组成是紧接实现各个样本的比特分配之后进行的。
10.根据前述任一权利要求所述的方法,其特征在于,所述量化步骤是根据符合ITU-T推荐的G.711.1的类型A或类型μ的对数幅值压缩编码定律的脉冲编码调制类型。
11.根据前述任一权利要求所述的方法可通过对电话会议的音频桥架构中的输入比特流进行至少部分解码、混合以及至少部分再编码应用于信号处理。
12.计算机程序,其特征在于,包括适用于当由处理器(PROC;PROC’)执行时实施根据权利要求1至10中任一项所述方法的指令。
13.适用于包括连续样本的数字音频信号以分层编码方式进行增强层编码的装置,其特征在于,包括计算机化部件(PROC,MEM),适用于实施根据权利要求1至10任一项所述方法和/或实现根据权利要求11的应用。
14.包括连续样本的数字音频信号的分层解码中增强层的解码设备,其特征在于包括计算机化装置(PROC’,MEM’),用于实现根据权利要求1至10的任一所述的方法和/或实现根据权利要求11的应用。
CN201280062321.3A 2011-10-19 2012-10-19 改进的分层编码 Active CN104067338B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1159425 2011-10-19
FR1159425A FR2981781A1 (fr) 2011-10-19 2011-10-19 Codage hierarchique perfectionne
PCT/FR2012/052400 WO2013057453A2 (fr) 2011-10-19 2012-10-19 Codage hierarchique perfectionne

Publications (2)

Publication Number Publication Date
CN104067338A true CN104067338A (zh) 2014-09-24
CN104067338B CN104067338B (zh) 2016-10-05

Family

ID=47191967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280062321.3A Active CN104067338B (zh) 2011-10-19 2012-10-19 改进的分层编码

Country Status (7)

Country Link
US (1) US8981970B2 (zh)
EP (1) EP2769378B1 (zh)
JP (1) JP6165151B2 (zh)
KR (1) KR102017892B1 (zh)
CN (1) CN104067338B (zh)
FR (1) FR2981781A1 (zh)
WO (1) WO2013057453A2 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2969360A1 (fr) * 2010-12-16 2012-06-22 France Telecom Codage perfectionne d'un etage d'amelioration dans un codeur hierarchique
KR101869903B1 (ko) * 2014-03-24 2018-06-21 후아웨이 테크놀러지 컴퍼니 리미티드 물리 계층 데이터 전송 방법 및 데이터 전송 장치
FR3024581A1 (fr) * 2014-07-29 2016-02-05 Orange Determination d'un budget de codage d'une trame de transition lpd/fd
US11445152B2 (en) 2018-08-09 2022-09-13 Cobalt Robotics Inc. Security automation in a mobile robot
US10486313B2 (en) 2016-02-09 2019-11-26 Cobalt Robotics Inc. Mobile robot map generation
US11082667B2 (en) 2018-08-09 2021-08-03 Cobalt Robotics Inc. Contextual automated surveillance by a mobile robot
US11460849B2 (en) 2018-08-09 2022-10-04 Cobalt Robotics Inc. Automated route selection by a mobile robot

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101120566A (zh) * 2005-01-11 2008-02-06 高通股份有限公司 用于在一分层调制***中解码数据的方法和装置
EP2187387A2 (en) * 2007-08-16 2010-05-19 Electronics and Telecommunications Research Institute Apparatus and method for encoding and decoding enhancement layer
CN102420987A (zh) * 2011-12-01 2012-04-18 上海大学 基于分层b帧结构的码率控制的自适应比特分配方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3162773B2 (ja) * 1992-01-06 2001-05-08 キヤノン株式会社 画像処理方法及び装置
JP3139831B2 (ja) * 1992-05-27 2001-03-05 キヤノン株式会社 画像編集方法及び装置
JP3093494B2 (ja) * 1992-11-18 2000-10-03 株式会社東芝 多様性信号処理装置
JP3210862B2 (ja) * 1996-06-27 2001-09-25 シャープ株式会社 画像符号化装置及び画像復号装置
US6144968A (en) * 1997-03-04 2000-11-07 Zellweger; Paul Method and apparatus for menu access to information objects indexed by hierarchically-coded keywords
JP4251675B2 (ja) * 1997-07-30 2009-04-08 ソニー株式会社 記憶装置およびアクセス方法
JP3861957B2 (ja) * 1998-02-03 2006-12-27 ソニー株式会社 記憶装置、並びに書き込み方法および読み出し方法
US7558441B2 (en) * 2002-10-24 2009-07-07 Canon Kabushiki Kaisha Resolution conversion upon hierarchical coding and decoding
US7813453B2 (en) * 2004-01-21 2010-10-12 Qualcomm Incorporated Data detection for a hierarchical coded data transmission
FR2876860A1 (fr) * 2004-10-20 2006-04-21 Thomson Licensing Sa Procede de codage hierarchique d'images video
US7725799B2 (en) * 2005-03-31 2010-05-25 Qualcomm Incorporated Power savings in hierarchically coded modulation
FR2887711A1 (fr) * 2005-06-23 2006-12-29 Thomson Licensing Sa Procede de codage et decodage hierarchique
KR101018611B1 (ko) * 2005-12-05 2011-03-02 퀄컴 인코포레이티드 멀티캐스트 메시지들에 대한 계층적 코딩
WO2009010674A1 (fr) 2007-07-06 2009-01-22 France Telecom Codage hierarchique de signaux audionumeriques
KR100912826B1 (ko) * 2007-08-16 2009-08-18 한국전자통신연구원 G.711 코덱의 음질 향상을 위한 향상 계층 부호화 및복호화 장치와 그 방법
KR101336891B1 (ko) * 2008-12-19 2013-12-04 한국전자통신연구원 G.711 코덱의 음질 향상을 위한 부호화 장치 및 복호화 장치
WO2012002348A1 (ja) * 2010-06-29 2012-01-05 日本電信電話株式会社 ビット割当装置、方法、プログラム及びその記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101120566A (zh) * 2005-01-11 2008-02-06 高通股份有限公司 用于在一分层调制***中解码数据的方法和装置
EP2187387A2 (en) * 2007-08-16 2010-05-19 Electronics and Telecommunications Research Institute Apparatus and method for encoding and decoding enhancement layer
EP2187387A3 (en) * 2007-08-16 2012-01-25 Electronics and Telecommunications Research Institute Apparatus and method for encoding and decoding enhancement layer
CN102420987A (zh) * 2011-12-01 2012-04-18 上海大学 基于分层b帧结构的码率控制的自适应比特分配方法

Also Published As

Publication number Publication date
KR20140090632A (ko) 2014-07-17
CN104067338B (zh) 2016-10-05
JP6165151B2 (ja) 2017-07-19
US20140247166A1 (en) 2014-09-04
WO2013057453A2 (fr) 2013-04-25
WO2013057453A3 (fr) 2013-06-13
KR102017892B1 (ko) 2019-10-21
EP2769378B1 (fr) 2015-12-16
EP2769378A2 (fr) 2014-08-27
JP2014531054A (ja) 2014-11-20
US8981970B2 (en) 2015-03-17
FR2981781A1 (fr) 2013-04-26

Similar Documents

Publication Publication Date Title
CN104067338A (zh) 改进的分层编码
US6246345B1 (en) Using gain-adaptive quantization and non-uniform symbol lengths for improved audio coding
CN1922656B (zh) 用于确定量化器步长的设备和方法
US8547255B2 (en) Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver
CN102576536B (zh) 数字音频信号的增强的编码/解码方法和装置
CN101796579B (zh) 数字音频信号的分级编码
RU2553084C2 (ru) Устройство и способ для оценки уровня кодированных аудио кадров в области битового потока
CN109313908B (zh) 用于对音频信号进行编码的音频编码器以及方法
CN102016985A (zh) 对输入数据流进行混合以及从中产生输出数据流
TR201815373T4 (tr) Enkode ve dekode etmek için enkoder, dekoder, sistem ve yöntemler.
AU2018337086B2 (en) Method and device for allocating a bit-budget between sub-frames in a CELP codec
KR100893281B1 (ko) 오디오 코딩을 위해 이득-적응형 양자화 및 비균일 심볼길이를 사용하는 방법 및 장치
CN106463140B (zh) 具有语音信息的改进型帧丢失矫正
CN102055974B (zh) 数据压缩、解压缩方法、装置及***
US20090037166A1 (en) Audio encoding method with function of accelerating a quantization iterative loop process
CN101271691B (zh) 一种时域噪声整形工具启动判决方法及装置
CN101771416B (zh) 位平面编码和解码方法、通信***及相关设备
CN101685637B (zh) 音频编码方法及装置和音频解码方法及装置
CN101816041B (zh) 限制音频数字信号解码过程中的后处理步骤引起的失真的方法和装置
Hoang et al. Embedded transform coding of audio signals by model-based bit plane coding
EP1062657A2 (en) A system and method for providing split vector quantization data coding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant