CN103327314A - 基于通用格式码表的可变长解码装置和方法 - Google Patents
基于通用格式码表的可变长解码装置和方法 Download PDFInfo
- Publication number
- CN103327314A CN103327314A CN2012100789738A CN201210078973A CN103327314A CN 103327314 A CN103327314 A CN 103327314A CN 2012100789738 A CN2012100789738 A CN 2012100789738A CN 201210078973 A CN201210078973 A CN 201210078973A CN 103327314 A CN103327314 A CN 103327314A
- Authority
- CN
- China
- Prior art keywords
- code table
- address
- decoding
- code
- state variable
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 description 5
- 238000012827 research and development Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种基于通用格式码表的可变长解码装置和方法,该装置包括:指令译码器,输出指令译码结果;地址计算器,根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;码表存储器,用于存储码表数据,根据地址计算器提供的码表地址和输入码流中的数据来输出码表中的表项;表项译码器,接收码表存储器输出的表项并进行译码,确定地址状态变量和语法状态变量;地址状态寄存器,接收地址状态变量并输出给地址计算器;语法状态寄存器,接收语法状态变量并在解码结束时输出该语法状态变量;码表装配器,接收码表数据并加载到码表存储器中,码表数据包含多个码表且针对不同的视频标准具有统一的通用格式。
Description
技术领域
本发明涉及一种可变长解码装置和方法,特别的,本发明涉及一种基于通用格式码表的可变长解码装置和方法。
背景技术
目前,以H.26X系列为代表的各类可变长视频编解码标准广泛应用于各种视频处理、通信、控制等系统中。视频接收端的视频解码器的性能对系统性能有显著的影响。在现有的视频解码器ASIC(专用集成电路)中,针对不同的视频编解码标准,均采用全硬件逻辑实现的码表设计,即以硬件方式提供针对某种特定视频标准的码表,由硬件系统通过查表匹配的方法查找码流中的码字对应的语法元素的解码结果,从而实现可变长视频码字的解码过程。这种全硬件机制因其查表效率高和性能好的优势而被广泛采用。
然而,这种全硬件逻辑的码表设计存在以下缺点:
-新的视频标准出现后,需要加入针对该新的视频标准的新的硬件逻辑,并重新流片验证投入使用,这样就降低了研发效率,增加了研发成本。
-由于码表的规模和复杂度相当高,直接导致了视频解码器ASIC的面积会相当大。
-这种硬件逻辑实现的码表查表效率高、性能好的优势仅体现在码率较低的条件下,在高码率的条件下,主要的性能瓶颈在于码流输入的带宽,因此整个解码性能并不能匹配该设计预想的性能效果。
发明内容
本发明提出了一种基于通用格式码表的可变长解码装置和方法,其目的在于克服现有的全硬件逻辑实现的码表的上述缺点,针对不同格式的视频编码标准,抽象了统一通用的可编程码表的定义方法和状态更新方法,从而使得不同的视频标准下的编码结构都能够利用本发明的装置和方法进行解码,以此代替了全硬件码表设计,从而达到提高研发效率,降低硬件面积和成本的目的。
根据本发明的一方面,提出了一种基于通用格式码表的可变长解码装置,该装置包括:
-指令译码器,接收解码指令并对解码指令进行译码输出指令译码结果;
-地址计算器,根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;
-码表存储器,用于存储码表数据,所述码表存储器根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来输出码表中的表项;
-表项译码器,接收码表存储器输出的所述表项,并对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量;
-地址状态寄存器,接收所述地址状态变量并输出给地址计算器;
-语法状态寄存器,接收所述语法状态变量并在解码结束时输出该语法状态变量;
-码表装配器,接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式。
优选地,所述码表数据中包括多个码表,每个码表具有特定的类别以及与之唯一对应的码表地址,每个码表包括多个表项,每个表项具有与之唯一对应的索引号。
优选地,所述多个码表分为0bit码表、1bit码表......Nbit码表,N≥0且N为整数,Nbit码表中包含2N个表项,通过码流中的Nbit数据可对Nbit码表进行查找,得到与该Nbit数据表示的索引号相对应的表项。
优选地,其中每个所述表项包括以统一的格式表示的以下信息中的一个或多个:
-对码流中的Nbit进行查表解码得到的解码值;
-解码值的符号位;
-当前查表后,应在码流中删除多少个比特;
-当前查表后,码字是否结束;
-下一次查表的地址和码表类型;
所述表项译码器根据以上信息确定所述地址状态变量和所述语法状态变量,其中所述地址状态变量用于指示下一个需要查找的码表地址和码表类型,所述语法状态变量包含解码结果的语法信息。
优选地,其中地址计算器根据指令译码结果提供的码表地址或地址状态变量提供的码表地址确定所述码表存储器中的码表,并根据指令译码结果提供的码表类型或地址状态变量提供的码表类型从输入码流中读出Nbit数据,并通过该Nbit数据确定所述码表中的表项。
优选地,所述语法状态变量中还包含下一次查表之前需在码流中删除多少个数据的信息,在针对当前读取的数据的解码完成并确定合法之后,将相应个数的数据从输入码流中删除。
优选地,通过解码指令提供每个码字的初始码表地址和初始码表类型,在对一个码字解码未结束时,所述地址计算器根据所述地址状态变量查找表项,当对一个码字解码结束时,所述语法状态寄存器输出所述语法状态变量并重新通过解码指令指定下一码字的初始码表地址和初始码表类型。
优选地,所述解码指令包含要解码的码字数目,在完成每个码字的解码之后,所述地址计算器自动根据前次解码过程中获得的地址状态变量计算下一个新的码字的起始码表地址和码表类型,直到解码的码字数目达到指令要求、或者地址状态变量显示下次无表可查、或者解码装置停止工作为止。
优选地,采用分页方式存放所述码表数据,所述码表装配器向码表存储器加载一页码表,如果所述指令译码结果指示的页地址或所述地址状态变量指示的页地址与码表装配器中的码表数据的页地址不一致,则由所述码表装配器将所需的码表页加载到所述码表存储器中。
根据本发明的另一方面,提出了一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
3)通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;
4)根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
5)通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器,如果译码的结果指示解码完成,则进入步骤6),如果译码的结果指示译码未完成,则进入步骤3);
6)通过语法状态寄存器输出所述语法状态变量。
根据本发明的另一方面,提出了一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的当前码字的初始码表地址和初始码表类型;
3)通过地址计算器根据该初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
4)通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器,如果已经完成了对一个码字的解码,则通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并回到步骤2),如果未完成对一个码字的解码,则进入步骤5);
5)通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,并进入步骤4)。
根据本发明的另一方面,提出了一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的码字的数目;
3)通过地址计算器根据初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
4)通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器,如果已经完成了对一个码字的解码,则通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并进入步骤5),如果未完成对一个码字的解码,则进入步骤6);
5)如果已经完成了对所述数目的码字的解码,则该方法结束,如果未完成对所述数目的码字的解码,则进入步骤6);
6)通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,然后进入步骤4)。
优选地,所述初始码表地址和初始码表类型由所述地址状态寄存器中的地址状态变量提供、或由所述解码指令提供、或由用于指示该初始码表地址和初始码表类型的其他解码指令提供。
根据本发明的另一方面,提出了一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收一页码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
3)通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表的页地址和页内偏移地址,如果该页地址与码表装配器中的码表数据的页地址一致,则读取输入码流中的数据并进入步骤5),如果该页地址与码表装配器中的码表数据的页地址不一致,则进入步骤4);
4)通过码表装配器向码表存储器加载与该页地址相对应的另一页码表数据,并进入步骤5);
5)根据所述页地址和页内偏移地址以及所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
6)通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器,如果译码的结果指示解码完成,则进入步骤7),如果译码的结果指示译码未完成,则进入步骤3);
7)通过语法状态寄存器输出所述语法状态变量,该方法结束。
根据本发明的装置和方法,对于不同格式的视频标准,仅需静态生成新的一套可编程码表,对于不同的视频格式,可动态为解码装置选择装配预先静态生成的码表,从而大大缩小了ASIC硬件逻辑设计的面积。
根据本发明的装置和方法,为了支持不断出现的新的格式的视频标准,无需加入新的码表算法硬件逻辑,无需重新流片验证,明显提高了研发验证的效率,大大节省了研发成本。
附图说明
图1是根据本发明的基于通用格式码表的可变长解码装置的一个实施例的框图;
图2是根据本发明的基于通用格式码表的可变长解码方法的一个实施例的流程图;
图3是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图;
图4是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图;
图5是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图。
具体实施方式
本发明提出的基于通用格式码表的可变长解码装置和方法主要基于以下原理:视频数据的可变长编解码机制在编码端通常先对要编码的图像进行分析,得到语法元素,再根据基于特定视频标准的码表,通过查表将语法元素编码为二进制码流,从而得到编码结果;在解码端,则基于与编码端相应的码表,通过查表匹配的方法将二进制码流中的码字解码为语法元素的值,从而得到解码结果。编码和解码的过程通常需要对大量的码表进行多次查找来完成。可变长编码结果通常包括前导数据和后端数据,前导数据主要用于指示码表入口,即解码时应采用的起始码表,后端数据主要包括可变长编码结果的值和符号。
基于上述原理,本发明利用了在不同视频标准下得到的可变长编码结果的抽象规律,将不同视频标准下的码表都转换成本发明的装置可识别的通用格式,从而使得对于不同的视频标准下的编码结果都能够利用本发明的装置和方法进行解码。
图1是根据本发明的基于通用格式码表的可变长解码装置的一个实施例的框图,其中该基于通用格式码表的可变长解码装置包括:
-指令译码器101,接收解码指令并对解码指令进行译码输出指令译码结果;
-地址计算器102,根据所述指令译码结果或地址状态寄存器106返回的地址状态变量计算码表地址并读取输入码流中的数据;
-码表存储器103,用于存储码表数据,所述码表存储器103根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来输出码表中的表项;
-表项译码器105,接收码表存储器103输出的所述表项,并对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量;
-地址状态寄存器106,接收所述地址状态变量并输出给地址计算器102;
-语法状态寄存器107,接收所述语法状态变量并在解码结束时输出该语法状态变量;
-码表装配器104,接收码表数据并加载到码表存储器103中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式。
在一个优选实施例中,码表装配器104所接收并加载到码表存储器103中的码表数据,是针对特定的视频标准静态生成一套码表数据,在应用中,可针对不同的视频标准静态生成相应的码表数据,这些针对不同的视频标准的码表数据具有统一的通用格式,并与视频标准自身的码表数据相对应。事实上,正如前文所述,由于可变长编码的码表具有一定的抽象规律,因此可将不同的视频标准的码表都转换为本发明中的具有通用格式的码表数据。所述码表数据中包括多个码表,每个码表具有特定的类别以及与之唯一对应的码表地址,每个码表包括多个表项,每个表项具有与之唯一对应的索引号。
具体地,在一个优选实施例中,可将根据本发明的码表数据中的码表分为多种类型,分别为0bit码表、1bit码表......Nbit码表,N≥0且N为整数,0bit码表中包含20个表项,1bit码表中包含21个表项,以此类推,Nbit码表中包含2N个表项。Nbit码表中的2N个表项中的每一个都具有与之唯一对应的索引号,通过码流中的Nbit数据可对Nbit码表进行查找,得到与该Nbit数据表示的索引号相对应的表项。每个表项包含各种视频标准的码表中的表项所具有的共性信息,例如,每个表项可包括如下五种信息,可分别由五个变量表示:
变量v:对码流中的N个bit进行查表式解码得到的解码值;
变量s:解码值的符号位;
变量b:当前查表后,应在码流中删除多少个比特;
变量eocw:当前查表后,码字是否结束;
变量next:下一次查表的地址和码表类型;
尽管如此,本发明并不限于上述五种信息或五个变量,也可包含各种视频标准下的可变长解码的码表的表项中的其他信息,或包含以上五种信息中的一种或多种。只要能够以统一的格式,表达各种视频标准下的可变长解码的表项中的信息即可。
通过表项译码器105,可以根据表项中包含的上述五种信息得出地址状态变量和语法状态变量。
其中地址状态变量用于指示下一个需要查找的码表地址和码表类型,在一个实施例中,地址状态变量可与变量next相同;
语法状态变量包含解码结果的语法信息,语法状态变量可包括:
变量sign:解码结果的符号,可根据变量s获得;
变量v_1:解码值,可根据变量v获得,变量v_1也可以是多个变量,用于分别存储变量v中的指定位,变量v_1还可以利用部分位存储变量b的值;
变量flag:指示下一次查表地址溢出,可根据变量next获得,例如当变量next指示下一次无表可查时,更新变量flag以指示该状态。
尽管如此,本发明并不限于以上定义的地址状态变量及语法状态变量,还可以是其他的地址状态变量和语法状态变量,只要它们能够分别表示下一次查表的码表地址和码表类型,以及解码结果的信息即可。
语法状态寄存器107在开始任何一个全新码字的解码之前都被复位(reset),并在每次查表操作之后,在判断本次查表为合法操作的基础上,根据得到的表项中的信息对地址状态变量和语法状态变量进行更新,直到表项中的信息(如变量eocw)指示针对当前码字的解码已经结束,则由语法状态寄存器向解码装置外部的其他部件返回语法状态变量。
在另一优选实施例中,语法状态寄存器107的语法状态变量中还包含下一次查表之前需在码流中删除多少个数据的信息(例如变量b的信息),也就是说,在对当前读取的数据进行解码的过程中,所述数据仍保留在码流中,直到针对当前读取的数据的解码完成并确定合法之后,才将其从码流中删除。在一个实施例中,语法状态寄存器107在每次查表后将变量b的信息返回解码装置的外部逻辑部件,从而在当前查表后在码流中删除相应个数的数据;
本发明的解码装置可在三种模式下工作,分别是单步模式、自动模式和分页模式。
单步模式
在一个优选实施例中,本发明的解码装置以单个码字作为一次完整解码的操作对象,通过解码指令提供每个码字的初始码表地址和初始码表类型,在对一个码字解码结束时,输出语法状态变量并重新通过解码指令指定下一码字的初始码表地址和初始码表类型,每个码字的初始码表地址和初始码表类型可在解码操作之前通过软件或固件预先静态设置。
参见图1,在该优选实施例中,在解码装置开始工作之前,码表装配器104将针对特定视频标准的一套码表加载到码表存储器103中。在解码装置开始工作时,地址指令译码器101接收解码指令并对其进行译码,从而得到初始码表地址及初始码表类型。初始码表类型指示了对输入码流中的第一段数据进行解码时,需要查找0bit码表到Nbit码表中的哪一类码表,也就决定了需从输入码流中读取的第一端数据的长度,地址计算器102需要根据该初始码表类型从码流中读出相应的0bit,1bit......或Nbit的数据。在码表存储器103中,根据初始码表地址可以得到要查找的码表,根据读出的0bit,1bit......或Nbit数据,可以查出该码表中的与该数据唯一对应的表项。得到该表项后,表项译码器105对该表项进行译码,从而得到上述地址状态变量和语法状态变量,地址状态寄存器106接收地址状态变量,将本次查表得到的下一次查表的地址和码表类型(例如存储于变量next中)提供给地址计算器102,语法状态寄存器存储当前查表的到的语法状态变量。地址计算器102根据下一次查表的码表类型从输入码流中读出对应的0bit,1bit......或Nbit的数据,并根据下一次查表的码表地址在码表存储器103中确定相应的码表,从而基于上述数据和码表地址查出该码表中的相应表项。此后,表项译码器105、地址状态寄存器106、语法状态寄存器107等部件针对该表项重复上述操作,在码流中不断取出数据进行查表译码,直到表项译码器105的结果指示已经完成了一个码字的解码操作(例如由变量eocw指示),则由语法状态寄存器107向解码装置外部的其他部件返回最终得到的语法状态变量,并将语法状态寄存器107复位。在开始下一个码字的解码时,由指令译码器101再次根据新的解码指令得出下一个码字的初始码表地址和初始码表类型并重复上述操作。如果未接到新的解码指令,上述过程自然停止。
自动模式
在本发明的另一优选实施例中,本发明的解码装置以指定个数的码字作为一次完整解码的操作的对象,这种模式可称为自动模式。在这种自动模式下,解码指令包含要解码的码字数目,该数目可以是有限个,也可以是无限个,即直到解码装置停止工作为止。在该自动模式下,在完成每个码字的解码之后,地址计算器102不再接收新的解码指令,而是自动根据前次解码过程中获得的地址状态变量(例如变量next)计算下一个新的码字的起始码表地址和码表类型,直到解码的码字数目达到指令要求、或者地址状态变量显示下次无表可查、或者解码装置停止工作为止,完成自动解码过程。优选地,自动模式启动时的初始码表地址和初始码表类型可根据应用需要通过不同方式来提供,例如可由地址状态寄存器中的地址状态变量提供、或由解码指令提供、或由用于指示该初始码表地址和初始码表类型的其他的解码指令提供。
分页模式
在本发明的另一个优选实施例中,为了扩大码表的寻址范围,采用分页方式存放码表数据,因此在解码指令中,可包含初始码表的页地址及其页内偏移地址,以及初始码表类型,从而通过初始码表的页地址及其页偏移地址对初始码表进行寻址。
当视频标准对应的码表数据的规模较小时,仅需在解码开始之前,通过码表装配器104向码表存储器103加载一页码表,即可完成解码。当视频标准对应的码表数据的规模很大时,为提高解码装置的解码速度,可通过码表装配器104向码表存储器103加载一页码表,在解码过程中,如果出现码表译码地址溢出的情况,例如如果所述指令译码结果或所述地址状态变量指示下一次查表对应的码表页地址与当前码表页的页地址不一致,需要切换到其他码表页中寻址,则由码表装配器104将所需的码表页加载到码表存储器103中,进行后续解码。在一个优选实施例中,可通过表项信息,例如变量next以及变量eocw来指示需切换码表页,例如当变量next指示已无表可查,且变量eocw指示对一个码字的解码未结束时,意味着下一次查表对应的码表页地址与当前码表页的页地址不一致,在这种状态下,可利用地址状态变量或语法状态变量来保存要切换到的码表页的页地址和页内偏移地址,并输出给外部控制部件,外部控制部件控制码表装配器104按照上述页地址向码表存储器103加载要切换的码表页,外部控制部件还控制解码指令向地址译码器提供页地址和页内偏移地址,从而使得本发明的解码装置继续在新的码表页中进行查找解码。
图2是根据本发明的基于通用格式码表的可变长解码方法的一个实施例的流程图,其中该基于通用格式码表的可变长解码方法包括:
S201,通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
S202,通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
S203,通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;
S204,根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
S205,通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器;
S206,判断译码是否完成,如果译码的结果指示译码完成,则进入步骤S207,如果译码的结果指示译码未完成,则进入步骤S203;
S207,通过语法状态寄存器输出所述语法状态变量。
图3是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图,在该实施例中本发明的方法以单步模式操作,即以单个码字为一次完整解码的操作对象,在该实施例中,该方法主要包括以下步骤:
S301,通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
S302,通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的当前码字的初始码表地址和初始码表类型;
S303,通过地址计算器根据该初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
S304,通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器;
S305,判断是否完成了对一个码字的解码,如果未完成对一个码字的解码,则进入步骤S306;如果已经完成了对一个码字的解码,则进入步骤S307;
S306,通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,并进入步骤S304;
S307,通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并回到步骤S302。
图4是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图,在该实施例中本发明的方法以自动模式操作,即、以指定个数的码字作为一次完整解码的操作的对象在这种自动模式下,解码指令包含要解码的码字数目,该数目可以是有限个,也可以是无限个,即直到解码装置停止工作为止。在该实施例中,该方法包括以下步骤:
S401,通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
S402,通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的码字的数目;
S403,通过地址计算器根据初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
S404,通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器;
S405,判断是否完成对一个码字的解码,如果未完成对一个码字的解码,则进入步骤S406;如果已经完成了对一个码字的解码,则进入步骤S407;
S406,通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,然后进入步骤S404;
S407,通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并进入步骤S408;
S408,判断是否完成了对所述数目的码字的解码,如果未完成对所述数目的码字的解码,则进入步骤S406;如果已经完成了对所述数目的码字的解码,则该方法结束。
优选地,所述初始码表地址和初始码表类型可根据应用需要通过不同方式来提供,例如可由地址状态寄存器中的地址状态变量提供、或由解码指令提供、或由用于指示该初始码表地址和初始码表类型的其他的解码指令提供。
图5是根据本发明的基于通用格式码表的可变长解码方法的另一个实施例的流程图,在该实施例中,为了扩大码表的寻址范围,采用分页方式存放码表数据,因此在解码指令中,可包含初始码表的初始页地址及其初始页内偏移地址,以及初始码表类型,从而通过初始码表的初始页地址及其初始页偏移地址对初始码表进行寻址。当视频标准对应的码表数据的规模较小时,仅需在解码开始之前,通过码表装配器104向码表存储器103加载一页码表,即可完成解码,此时解码方法与图2、图3或图4所示的方法相似。
在一个优选实施例中,当视频标准对应的码表数据的规模很大时,为提高解码装置的解码速度,可通过码表装配器104向码表存储器103加载一页码表,在解码过程中,如果出现码表译码地址溢出的情况,需要切换到其他码表页中寻址,则由码表装配器104将所需的码表页加载到码表存储器103中,进行后续解码。在图5所示的该实施例中,是以图2所示的实施例为基础来描述分页存放模式的,事实上,分页存放模式也可应用于图3和图4所示的实施例,其中该方法包括:
S501,通过码表装配器接收一页码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
S502,通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
S503,通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表的页地址和页内偏移地址;
S504,判断该页地址与码表装配器中的码表数据的页地址是否一致;如果该页地址与码表装配器中的码表数据的页地址不一致,则进入步骤S505;如果该页地址与码表装配器中的码表数据的页地址一致,进入步骤S506;
S505,通过码表装配器向码表存储器加载与该页地址相对应的另一页码表数据,并进入步骤S507;
S506,读取的输入码流中的数据,并进入步骤S507;
S507,根据所述页地址和页内偏移地址以及所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
S508,通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器;
S509,判断译码是否完成;如果译码的结果指示译码完成,则进入步骤S510,如果译码的结果指示译码未完成,则进入步骤S503;
S510,通过语法状态寄存器输出所述语法状态变量,该方法结束。
上述实施例是用于例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修改。因此本发明的保护范围,应如本发明的权利要求书所列。
Claims (14)
1.一种基于通用格式码表的可变长解码装置,该装置包括:
-指令译码器,接收解码指令并对解码指令进行译码输出指令译码结果;
-地址计算器,根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;
-码表存储器,用于存储码表数据,所述码表存储器根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来输出码表中的表项;
-表项译码器,接收码表存储器输出的所述表项,并对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量;
-地址状态寄存器,接收所述地址状态变量并输出给地址计算器;
-语法状态寄存器,接收所述语法状态变量并在解码结束时输出该语法状态变量;
-码表装配器,接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式。
2.根据权利要求1所述的基于通用格式码表的可变长解码装置,其中,每个所述码表具有特定的类别以及与之唯一对应的码表地址,每个码表包括多个表项,每个表项具有与之唯一对应的索引号。
3.根据权利要求2所述的基于通用格式码表的可变长解码装置,所述多个码表分为0bit码表、1bit码表......Nbit码表,N≥0且N为整数,Nbit码表中包含2N个表项,通过码流中的Nbit数据可对Nbit码表进行查找,得到与该Nbit数据表示的索引号相对应的表项。
4.根据权利要求2所述的基于通用格式码表的可变长解码装置,其中每个所述表项包括以统一的格式表示的以下信息中的一个或多个:
-对码流中的Nbit进行查表解码得到的解码值;
-解码值的符号位;
-当前查表后,应在码流中删除多少个比特;
-当前查表后,码字是否结束;
-下一次查表的地址和码表类型;
所述表项译码器根据以上信息确定所述地址状态变量和所述语法状态变量,其中所述地址状态变量用于指示下一个需要查找的码表地址和码表类型,所述语法状态变量包含解码结果的语法信息。
5.根据权利要求4所述的基于通用格式码表的可变长解码装置,其中地址计算器根据指令译码结果提供的码表地址或地址状态变量提供的码表地址确定所述码表存储器中的码表,并根据指令译码结果提供的码表类型或地址状态变量提供的码表类型从输入码流中读出Nbit数据,并通过该Nbit数据确定所述码表中的表项。
6.根据权利要求4所述的基于通用格式码表的可变长解码装置,所述语法状态变量中还包含下一次查表之前需在码流中删除多少个数据的信息,在针对当前读取的数据的解码完成并确定合法之后,将相应个数的数据从输入码流中删除。
7.根据权利要求1所述的基于通用格式码表的可变长解码装置,通过解码指令提供每个码字的初始码表地址和初始码表类型,在对一个码字解码未结束时,所述地址计算器根据所述地址状态变量查找表项,当对一个码字解码结束时,所述语法状态寄存器输出所述语法状态变量并重新通过解码指令指定下一码字的初始码表地址和初始码表类型。
8.根据权利要求1所述的基于通用格式码表的可变长解码装置,所述解码指令包含要解码的码字数目,在完成每个码字的解码之后,所述地址计算器自动根据前次解码过程中获得的地址状态变量计算下一个新的码字的起始码表地址和码表类型,直到解码的码字数目达到指令要求、或者地址状态变量显示下次无表可查、或者解码装置停止工作为止。
9.根据权利要求1所述的基于通用格式码表的可变长解码装置,采用分页方式存放所述码表数据,所述码表装配器向码表存储器加载一页码表,如果所述指令译码结果指示的页地址或所述地址状态变量指示的页地址与码表装配器中的码表数据的页地址不一致,则由所述码表装配器将所需的码表页加载到所述码表存储器中。
10.一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
3)通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表地址并读取输入码流中的数据;
4)根据所述地址计算器提供的码表地址和所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
5)通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器,如果译码的结果指示解码完成,则进入步骤6),如果译码的结果指示译码未完成,则进入步骤3);
6)通过语法状态寄存器输出所述语法状态变量。
11.一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的当前码字的初始码表地址和初始码表类型;
3)通过地址计算器根据该初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
4)通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器,如果已经完成了对一个码字的解码,则通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并回到步骤2),如果未完成对一个码字的解码,则进入步骤5);
5)通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,并进入步骤4)。
12.一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果,其中译码结果包括要解码的码字的数目;
3)通过地址计算器根据初始码表地址和初始码表类型对码表存储器进行查找并得到表项;
4)通过表项译码器对该表项进行译码,从而得到地址状态变量和语法状态变量,其中地址状态变量中包含下一次查表的码表地址和码表类型,通过地址状态寄存器将地址状态变量提供给地址计算器,如果已经完成了对一个码字的解码,则通过语法状态寄存器输出语法状态变量,将语法状态寄存器复位,并进入步骤5),如果未完成对一个码字的解码,则进入步骤6);
5)如果已经完成了对所述数目的码字的解码,则该方法结束,如果未完成对所述数目的码字的解码,则进入步骤6);
6)通过地址计算器根据地址状态变量对码表存储器进行查找并得到表项,然后进入步骤4)。
13.根据权利要求12所述的基于通用格式码表的可变长解码方法,其中所述初始码表地址和初始码表类型由所述地址状态寄存器中的地址状态变量提供、或由所述解码指令提供、或由用于指示该初始码表地址和初始码表类型的其他解码指令提供。
14.一种基于通用格式码表的可变长解码方法,该方法包括:
1)通过码表装配器接收一页码表数据并加载到码表存储器中,所述码表数据包含多个码表且针对不同的视频标准具有统一的通用格式;
2)通过指令译码器接收解码指令并对解码指令进行译码输出指令译码结果;
3)通过地址计算器根据所述指令译码结果或地址状态寄存器返回的地址状态变量计算码表的页地址和页内偏移地址,如果该页地址与码表装配器中的码表数据的页地址一致,则读取输入码流中的数据并进入步骤5),如果该页地址与码表装配器中的码表数据的页地址不一致,则进入步骤4);
4)通过码表装配器向码表存储器加载与该页地址相对应的另一页码表数据,并进入步骤5);
5)根据所述页地址和页内偏移地址以及所读取的输入码流中的数据来查找并输出码表存储器中的码表的表项;
6)通过表项译码器对所述表项进行译码,通过译码的结果确定地址状态变量和语法状态变量,通过地址状态寄存器将所述地址状态变量输出给地址计算器,如果译码的结果指示解码完成,则进入步骤7),如果译码的结果指示译码未完成,则进入步骤3);
7)通过语法状态寄存器输出所述语法状态变量,该方法结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210078973.8A CN103327314B (zh) | 2012-03-22 | 2012-03-22 | 基于通用格式码表的可变长解码装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210078973.8A CN103327314B (zh) | 2012-03-22 | 2012-03-22 | 基于通用格式码表的可变长解码装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103327314A true CN103327314A (zh) | 2013-09-25 |
CN103327314B CN103327314B (zh) | 2016-06-29 |
Family
ID=49195815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210078973.8A Active CN103327314B (zh) | 2012-03-22 | 2012-03-22 | 基于通用格式码表的可变长解码装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103327314B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030184457A1 (en) * | 1999-12-14 | 2003-10-02 | Vivian Hsiun | Programmable variable-length decoder |
CN1496127A (zh) * | 2002-08-03 | 2004-05-12 | 三星电子株式会社 | 用于译码可变长度编码的装置和方法 |
US20040233076A1 (en) * | 2001-02-20 | 2004-11-25 | Minhua Zhou | Variable length decoding system and method |
CN1791223A (zh) * | 2005-12-15 | 2006-06-21 | 清华大学 | 基于上下文的自适应二维变长解码方法和装置 |
CN101309423A (zh) * | 2008-06-26 | 2008-11-19 | 四川虹微技术有限公司 | 一种解码非零系数个数和拖尾系数个数的方法 |
-
2012
- 2012-03-22 CN CN201210078973.8A patent/CN103327314B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030184457A1 (en) * | 1999-12-14 | 2003-10-02 | Vivian Hsiun | Programmable variable-length decoder |
US20040233076A1 (en) * | 2001-02-20 | 2004-11-25 | Minhua Zhou | Variable length decoding system and method |
CN1496127A (zh) * | 2002-08-03 | 2004-05-12 | 三星电子株式会社 | 用于译码可变长度编码的装置和方法 |
CN1791223A (zh) * | 2005-12-15 | 2006-06-21 | 清华大学 | 基于上下文的自适应二维变长解码方法和装置 |
CN101309423A (zh) * | 2008-06-26 | 2008-11-19 | 四川虹微技术有限公司 | 一种解码非零系数个数和拖尾系数个数的方法 |
Non-Patent Citations (1)
Title |
---|
BAI-JUE SHEIEH: "A new approach of group-based VLC codec system with full table programmability", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 * |
Also Published As
Publication number | Publication date |
---|---|
CN103327314B (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10116325B2 (en) | Data compression/decompression device | |
US20180107725A1 (en) | Data Storage Method and Apparatus, and Data Read Method and Apparatus | |
CN104657362A (zh) | 数据存储、查询方法和装置 | |
CN110554878A (zh) | 数据转换方法、游戏数据的处理方法、装置和服务器 | |
US9292549B2 (en) | Method and system for index serialization | |
US8542137B2 (en) | Decoding encoded data | |
US20140258247A1 (en) | Electronic apparatus for data access and data access method therefor | |
CN101551820B (zh) | 兴趣点属性的索引数据库的生成方法和装置 | |
CN202602827U (zh) | 基于通用格式码表的可变长解码装置 | |
CN107943727B (zh) | 一种高效dma控制器 | |
CN106484691B (zh) | 移动终端的数据存储方法和装置 | |
KR20220054651A (ko) | 다중 심볼 디코더 | |
US6205255B1 (en) | Method and apparatus for run-length encoding of multi-colored images | |
CN103327314A (zh) | 基于通用格式码表的可变长解码装置和方法 | |
CN101201805A (zh) | 串行传输控制器与串行传输解码器及其串行传输方法 | |
CN114070470B (zh) | 编解码方法及装置 | |
CN113222807B (zh) | 数据存储器、数据存储、读取方法、芯片及计算机设备 | |
CN111190896A (zh) | 数据处理方法、装置、存储介质和计算机设备 | |
CN105916007A (zh) | 一种基于录像的视频展示方法和系统 | |
CN112579607B (zh) | 数据访问方法和装置、存储介质、电子设备 | |
CN102695096A (zh) | 一种获取码流的输出图文语言的方法、装置及机顶盒 | |
JP4821287B2 (ja) | 構造化文書の符号化方法、符号化装置、符号化プログラム、復号装置及び符号化された構造化文書のデータ構造 | |
CN111726626B (zh) | 集成电路及用于视频解码的概率表存储方法 | |
CN115765754A (zh) | 一种数据编码方法及一种编码数据比较方法 | |
CN110781182B (zh) | 校验逻辑的自动编码方法、装置以及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220727 Address after: 201203 11F, No. 2 Building, 560 Lane, Midsummer Road, Pudong New Area, Shanghai Patentee after: GALAXYCORE SHANGHAI Ltd.,Corp. Address before: Room 1004-1005, building 2, No. 560, shengxia Road, Pudong New Area, Shanghai 201203 Patentee before: SHANGHAI SUANXIN MICROELECTRONICS Co.,Ltd. |