发明内容
为解决上述技术问题,本发明实施例提供一种视频数据解码方法及系统,以解决在对视频数据进行解码时,计算量较大,效率较低的问题。技术方案如下:
一种视频数据解码方法,包括:
接收待解码的视频数据;
提取所述视频数据中第一长度比特数据作为第一目标索引;
判断所述第一目标索引是否在预设的一级码表中存在相应的变长码字信息,如果是,则将所述第一目标索引作为所述一级码表的索引,解析出相应的变长码字信息;否则,
继续提取所述视频数据的数据,与所述第一目标索引构成第二目标索引,所述第二目标索引的长度为第二长度;将所述第二目标索引作为预设的二级码表的索引,解析出相应的变长码字信息;
将所述解析出的相应的变长码字信息解析成原始的视频数据;
其中,所述第一长度为所述一级码表的索引的长度,所述第二长度为所述二级码表的索引的长度;所述一级码表的索引对应的数据中包含标识变长码字符号的数据信息;所述二级码表的索引对应的数据中包含所述一级码表的索引对应的数据。
本发明还提供一种视频数据解码系统,该系统包括:
接收模块、提取模块、判断模块、第一解析模块、第二解析模块;
所述接收模块,用于接收待解码的视频数据;
所述提取模块,用于提取所述接收模块接收的视频数据中第一长度比特数据作为第一目标索引;
所述判断模块,用于判断所述提取模块提取的第一目标索引是否在预设的一级码表中存在相应的变长码字信息,如果是,则触发所述第一解析模块将所述第一目标索引作为所述一级码表的索引,解析出相应的变长码字信息;否则,触发所述提取模块,继续提取所述视频数据的数据,与所述第一目标索引构成第二目标索引,所述第二目标索引的长度为第二长度;触发所述第一解析模块,将所述第二目标索引作为预设的二级码表的索引,解析出相应的变长码字信息;
所述第二解析模块,用于将所述第一解析模块解析出的相应的变长码字信息解析成原始的视频数据;
其中,所述第一长度为所述一级码表的索引的长度,所述第二长度为所述二级码表的索引的长度;所述一级码表的索引对应的数据中包含标识变长码字符号的数据信息;所述二级码表的索引对应的数据中包含所述一级码表的索引对应的数据。
由以上本发明实施例提供的技术方案可见,预先设置索引数据中包含标识变长码字符号信息的一级码表和二级码表,解决了在提取变长码字过程中,存在两次判断和多余比特读取的问题。将上述设置的一级码表和二级码表应用于视频数据解码中,由于索引对应数据中包含标识变长码字符号的信息,使得在提取变长码字的同时,获取到所述变长码字的符号,这样有效解决了对视频数据进行解码过程中的计算量较大的问题,提高了计算效率。
具体实施方式
在MPEG-4压缩标准里,使用分布查表法的VLD实现方法通过利用两级码表即可提取出变长码字信息,但是存在两次判断和多余比特的读取,这样导致整个视频数据的解码过程计算量较大,效率较低。本发明提供的一种视频数据解码方法及系统,通过利用预先设置的索引数据中包含变长码字符号信息的一级码表和二级码表,有效地解决了对视频数据进行解码过程中的计算量较大的问题,提高计算效率。下面首先对本发明提供的一种视频数据解码方法,进行详细介绍。
该方法包括:
接收待解码的视频数据;
提取所述视频数据中第一长度比特数据作为第一目标索引;
判断所述第一目标索引是否在预设的一级码表中存在相应的变长码字信息,如果是,则将所述第一目标索引作为所述一级码表的索引,解析出相应的变长码字信息;否则,
继续提取所述视频数据的数据,与所述第一目标索引构成第二目标索引,所述第二目标索引的长度为第二长度;将所述第二目标索引作为预设的二级码表的索引,解析出相应的变长码字信息;
将所述解析出的相应的变长码字信息解析成原始的视频数据;
其中,所述第一长度为所述一级码表的索引的长度,所述第二长度为所述二级码表的索引的长度;所述一级码表的索引对应的数据中包含标识变长码字符号的数据信息;所述二级码表的索引对应的数据中包含所述一级码表的索引对应的数据。
本发明所提供的方案中,预先设置索引数据中包含标识变长码字符号信息的一级码表和二级码表,解决在提取变长码字过程中,存在两次判断和多余比特读取的问题。将上述设置的一级码表和二级码表应用于视频数据解码中,由于索引对应数据中包含标识变长码字符号的信息,使得在提取变长码字的同时,获取到所述变长码字的符号,这样有效解决了对视频数据进行解码过程中的计算量较大的问题,提高了计算效率。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
在MPEG-4压缩标准中,变长码字的最大长度为12,且具有唯一前缀码。因此在每一个变长码后增加1比特,无论是“0”或“1”,仍具有唯一前缀性质。而增加的1比特是LEVEL的符号位,即变长码字的符号位。所以通过构建索引数据含有标识变长码字符号信息的一级码表和二级码表,即可索引到唯一的数据结构(RUN,SIGN_LEVEL,LENGTH,LAST,HIT),其中SIGN LEVEL是带符号的LEVEL。也就是说,通过包含标识符号信息的索引能够索引到带符号的变长码字。因此,数据结构中就不需要HIT了,更新为如下形式:
vld_structure_c(RUN,SIGN_LEVEL,LENGTH,LAST)
下面列举了一种与MPEG-4压缩标准相对应的,索引中含有标识符号的一级码表和二级码表。
如表1所示,为以9比特数据作为索引(INDEX)重新排列的一级码表,该一级码表中仅列出了变长码字的实际长度(CODEWORD LENGTH)和加上符号位的实际长度(CODEWORD+SIGN LENGTH)。
表1:
如表2所示,为以13比特数据作为索引(1NDEX)重新排列的二级码表,该二级码表中仅列出了变长码字的实际长度(CODEWORD LENGTH)和加上符号位的实际长度(CODEWORD+SIGN LENGTH),UNVALID表示无该码字。
表2:
下面结合上述表1、表2对本发明实施例进行详细的介绍,如图1所示,该方法包括:
S101:接收MPEG-4标准压缩的待解码的视频数据;
VLD接收经由MPEG-4压缩标准的视频数据,负责从待解码的视频数据中提取出变长码字,供解码器的其他模块使用,从而实现对视频数据的解码。
S102:提取所述视频数据中9比特数据作为第一目标索引;
在MPEG-4压缩标准里,现有技术中,通常以8比特输入作为一级码表的索引。本发明实施例中,由于考虑引入符号位,预置的一级码表和二级码表的索引数据中包含了标识变长码字符号的信息,即索引数据中增加了1比特。所以视频数据的提取中,将9比特数据作为第一长度比特数据提取出来,且将这9比特数据作为第一目标索引。第一目标索引用于后续的变长码字查找。
S103:判断第一目标索引对应数据的值是否大于一级码表的索引的临界值,如果是,则进入S104;否则,进入步骤S105;
由上表可发现,一级码表的索引对应数据的值是顺序增长的,且如果一级码表的索引对应数据的值小于(000100110),表示9比特数据构成的索引数据不足以解析出一个带符号的完整的变长码字;而一级码表的索引对应数据的值大于(000100110),则可解析出完整的变长码字信息。所以可将(000100110)作为一级码表的索引的临界值。因此,通过判断索引对应数据的值是否小于索引的临界值来决定是否搜索下一级码表,也就是二级码表。
S104:将第一目标索引作为一级码表的索引,解析出相应的变长码字信息,进入步骤S106;
S105:继续提取视频数据的比特数据,与提取的9比特数据构成具有13比特的第二目标索引,并将第二目标索引作为二级码表的索引,解析出相应的变长码字信息,进入步骤S106;
本发明实施例中,对于MPEG-4的压缩标准里,二级码表的索引为13比特数据,所以将13比特作为第二长度比特。将提取的第二目标索引作为二级码表的索引进行查找,解析出相应的变长码字信息。
S106:将解析出的相应的变长码字信息解析成原始的视频数据。
由上述实施例以及表2可知,表2的二级码表的索引的长度为变长码字的最大长度,这种直接查表法有效地加快二级码表的索引速度。也就是,如果第一目标索引对应数据的值小于索引的临界值,则从视频数据中继续提取4比特数据,和之前提取的9比特数据一起构成13比特数据,作为第二目标索引,根据第二目标索引查找二级码表的索引,就可以直接解析出相应的变长码字信息。
上述方案中,预先设置索引数据中包含标识变长码字符号信息的一级码表和二级码表,解决在提取变长码字过程中,存在两次判断和多余比特读取的问题。将上述设置的一级码表和二级码表应用于视频数据解码中,由于索引对应数据中包含标识变长码字符号的信息,使得在提取变长码字的同时,获取到所述变长码字的符号,这样有效解决了对视频数据进行解码过程中的计算量较大的问题,提高了计算效率。
进一步的,需要将解析出的变长码字信息进行存储,存储方式为:
选择大于所述第二长度的字长空间,对所述解析出的变长码字信息进行存储。
上述表1对应的一级码表和表2对应的二级码表为INTRA VLC表,VLD会根据变长码字的长度生成其他类型码表:INTER VLC表。
在MPEG-4INTRA VLC表中,长度在8以内的变长码字,RUN的范围介于[0,10],SIGN_LEVEL范围介于[-12,12],LENGTH范围介于[2,8],LAST非0即1。考虑到嵌入式系统的基本字长为字节(8比特),字(16比特)和双字(32比特),为了节约存储空间,设法用字(16比特)存放vld_structure_c。如表3(a)所示。长度在8以上的码字,RUN的范围介于[0,20],SIGN_LEVEL介于[-27,27],LENGTH介于[9,12]。存储方式如表3(b)所示。
表3(a):
表3(b):
同理,在MPEG-4INTER VLC中,码字长度在8以内的变长码字,RUN的范围介于[0,16],SIGN_LEVEL介于[-5,5],LENGTH介于[2,8],LAST非0即1。长度在8以上的码字,RUN的范围介于[0,40],SIGN_LEVEL介于[-12,12],LENGTH介于[9,12]。其存储方式如表4(a)和表4(b)所示。
表4(a):
表4(b):
相应于上面的方法实施例,本发明还提供一种视频数据解码系统,如图2所示,该系统包括:
接收模块210、提取模块220、判断模块230、第一解析模块240、第二解析模块250;
接收模块210,用于接收待解码的视频数据;
提取模块220,用于提取接收模块210接收的视频数据中第一长度比特数据作为第一目标索引;
判断模块230,用于判断提取模块220提取的第一目标索引是否在预设的一级码表中存在相应的变长码字信息,如果是,则触发第一解析模块240将第一目标索引作为一级码表的索引,解析出相应的变长码字信息;否则,触发提取模块220,继续提取视频数据的数据,与第一目标索引构成第二目标索引,第二目标索引的长度为第二长度;触发第一解析模块240,将第二目标索引作为预设的二级码表的索引,解析出相应的变长码字信息;
第二解析模块250,用于将所述第一解析模块240解析出的相应的变长码字信息解析成原始的视频数据;
其中,第一长度为一级码表的索引的长度,第二长度为二级码表的索引的长度;一级码表的索引对应的数据中包含标识变长码字符号的数据信息;二级码表的索引对应的数据中包含一级码表的索引对应的数据。
进一步的,判断模块230对第一目标索引的判断过程具体为:
判断模块230判断提取模块220提取的第一目标索引对应数据的值是否大于一级码表的索引的临界值。
如图3所示,该系统还包括:存储模块260;
存储模块260,用于将第一解析模块240解析出的相应的变长码字信息进行存储。
进一步的,存储模块260具体用于:
选择大于所述第二长度的字长空间,对第一解析模块240解析出的相应的变长码字信息进行存储。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。