+

CN101198051B - 基于h.264的熵解码器的实现方法及装置 - Google Patents

基于h.264的熵解码器的实现方法及装置 Download PDF

Info

Publication number
CN101198051B
CN101198051B CN 200610157417 CN200610157417A CN101198051B CN 101198051 B CN101198051 B CN 101198051B CN 200610157417 CN200610157417 CN 200610157417 CN 200610157417 A CN200610157417 A CN 200610157417A CN 101198051 B CN101198051 B CN 101198051B
Authority
CN
China
Prior art keywords
decoding
residual error
module
decoded
coefficient
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.)
Expired - Fee Related
Application number
CN 200610157417
Other languages
English (en)
Other versions
CN101198051A (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.)
Shenzhen Shenyang electronic Limited by Share Ltd
Original Assignee
Arkmicro Technologies Inc
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 Arkmicro Technologies Inc filed Critical Arkmicro Technologies Inc
Priority to CN 200610157417 priority Critical patent/CN101198051B/zh
Publication of CN101198051A publication Critical patent/CN101198051A/zh
Application granted granted Critical
Publication of CN101198051B publication Critical patent/CN101198051B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种专用于H.264解码MAE中对熵编码残差数据等进行解码的方法及装置,由于本发明所述方法采用了软硬件协同工作,将解码过程中占用大量资源的部分改用软件方法实现。所述的软件程序方法是指利用嵌入式cpu代替硬件电路进行运算的方式,使得熵解码器在保证获得可靠的解码效率和解码质量的前提下,大大降低了结构的复杂度和计算复杂度,从而有效的解决了结构和效率之间的矛盾,顺利的实现了对CAVLC和CABAC熵编码码流的解码,所述该熵解码装置包括BSI取数模块、ue/se/te解码单元、CAVLC残差解码模快、软件模块、二进制算术解码单元、熵解码控制模块、CABAC残差解码模块、反扫描RAM。

Description

基于H.264的熵解码器的实现方法及装置
技术领域
本发明属于集成电路数字多媒体处理技术领域,尤其涉及一种专为在视频通信的硬件MAE(media accelerator engine多媒体加速引擎)上实现熵解码器的方法及装置。
背景技术
视频编解码技术是数字多媒体存储和传输应用的关键技术之一,视频编码的核心部分包括:预测编码,变换编码,熵编码。作为视频编码重要组成部分的熵编码,是利用去除视频数据冗余的方法达到对视频数据进行压缩的效果。
熵编码包括变长编码和算术编码两种编码方法。典型的变长编码包括:H.261、MPEG(Motion Picture Experts Group)-2中采用的H.263,MPEG-4中采用的3D-VLC编码,以及H.264/AVC(国际电信协会ITU-T的H.264视频编码建议或ISO/IEC的国际标准14496-10即MPEG-4标准的第十部分)中采用的CAVLC(Context-based Adaptive Variable Length Coding)编码。其中2D-VLC编码和3D-VLC编码采用单一码表进行编码,码表的体积较小,硬件实现比较简单;而CAVLC编码根据已编码的句法元素的情况,动态调整使用的码表,可以得到很高的压缩比,性价比更高。算术编码中最典型的是在H.264/AVC中采用CABAC算术编码,相对变长编码而言,由于可以对上下文进行建模,对信源符号出现的概率有更准确的估计,因此编码效率更高,但是相比变长编码,它的计算复杂度高,硬件实现复杂,因此目前采用不多。一般来说,CAVLC编 码多用于实时性要求较高的应用,如视频电话等。而CABAC虽然编码效率较高,编码的图像质量较好,但由于编码比较复杂,难以用于对速度要求较高的应用中,更多地用于数字多媒体的应用,如数字广播电视和数字视频存储等。
熵解码就是将熵编码编码过的视频数据准确可靠的还原,对于应用H.264/AVC的视频编码标准进行编码的视频数据,针对存在的两种熵编码方式,熵解码器分别对经过CAVLC和CABAC编码过的视频数据进行解码。然而,由于CAVLC较以前的2D-VLC编码和3D-VLC编码复杂,CABAC计算复杂度很高,因此要对同时支持两种熵编码方式的视频数据解码需要耗费相当的资源。在IC设计中,纯ASIC硬件实现也相当困难,也正是由于这个原因,当前的H.264熵解码一般只是在计算机上采用纯软件的方式实现,少数硬件实现的熵解码器也只支持CAVLC编码方式,这样就限制了性能更好,压缩比更高的CABAC编码方法的应用。
发明内容
本发明所要解决的技术问题是如何采用一种简单有效的方法,在MAE上实现对CAVLC和CABAC的两种视频编码数据的熵解码,既能保证解码的质量和解码效率,结构简单又易于实现。
本发明的目的在于公开了一种专用于H.264解码MAE中对熵编码残差数据等进行解码的方法及装置,由于本发明所述方法采用了软硬件协同工作,使得熵解码器在保证获得可靠的解码效率和解码质量的前提下,大大降低了结构的复杂度和计算复杂度,从而有效的解决了结构和效率之间的矛盾,顺利的实现了对CAVLC和CABAC熵编码码流的解码。
基于H.264的熵解码器的实现方法,其特征在于:该方法采用了软硬件协 同工作,将解码过程中占用大量资源的部分改用软件程序方法实现,包括如下步骤:
步骤1:熵解码控制模块(6)根据熵编码模式标志选择解码方式:即是对CAVLC编码码流进行解码还是对CABAC编码码流进行解码;
步骤2:根据步骤1选定的解码类型以片(slice)数据为单位对CAVLC或者CABAC编码码流进行解码;
步骤3:解码完成后,判断是否为CAVLC或者CABAC编码码流的最后一个片数据,若不是,返回步骤2继续对下一个片(Slice)的数据进行解码,否则,解码过程结束。
基于H.264的熵解码器的实现方法,所述的将解码过程中占用大量资源的部分改用软件程序方法实现,其特征在于:所述的软件程序方法是指利用嵌入式cpu代替硬件电路进行运算的方式,而不是单纯的指用计算机软件实现熵解码中的某些计算功能。
所述的基于H.264的熵解码器的实现方法,其特征在于:该方法步骤2中所述的根据选定的解码类型以片数据为单位对CAVLC编码码流进行解码,其中所述的对CAVLC编码码流的解码还包括如下的具体步骤:
步骤2.1:熵解码控制模块(6)向软件模块(4)发出开始信号,开始求解与解码有关的变量和参数;
步骤2.2:软件模块(4)收到来自熵解码控制模块(6)的开始信号后,经由ue/se/te解码单元(2)并最终通过BSI取数模块(1)得到所需的编码数据流,经解码得到所需的宏块参数以及除残差系数以外的其他语法元素;
步骤2.3:熵解码控制模块(6)收到软件模块(4)发出的结束信号后,向CAVLC残差解码模块(3)发出解残差开始信号;
步骤2.4:CAVLC残差解码模块(3)收到熵解码控制模块(6)发来的开始信号后开始残差解码,并通过BSI取数据模块(1)获得解码所需的编码数据,得到亮度块和色度块的残差系数值;
步骤2.5:判断解码的是否为片数据的最后一个宏块,如果不是,则返回到步骤2.1继续解下一个宏块,否则解码结束。
所述的基于H.264的熵解码器的实现方法,其特征在于:以片数据为单位对CAVLC编码码流进行解码是通过对组成片数据的每个宏块进行解码实现的,所述对单个宏块的解码包括如下的步骤:
步骤1:由软件模块求解与宏块解码相关的变量和参数;
步骤2:根据上述步骤1得到解码所需的当前宏块以及邻近宏块解码所需的参数后,按照先亮度块后色度块的顺序对宏块进行解码;
步骤3:对亮度块进行解码;以4x4块为基本的解码单位,即每次对一个4x4亮度块进行块解码,先对亮度块的直流(DC)系数进行解码,然后再对亮度块的交流系数(AC)进行解码;
步骤4:解码完亮度块后,对色度块进行解码;以4x4块为基本的解码单位,按照先Cb块后Cr块的顺序,先解码色度块的直流系数,再解码色度块的交流系数;
步骤5:重复上述步骤,继续解下一个宏块。
所述基于H.264的熵解码器的实现方法,该方法步骤2所述的根据选定的解码方式以片数据为单位对CABAC编码码流进行解码,其特征在于:其中所述的对CABAC编码码流的解码还包括如下的具体步骤:
步骤2.1′:对CABAC解码所需的上下文模型进行初始化,并初始化概率区间;
步骤2.2′:熵解码控制模块(6)向软件模块(4)发出开始信号,开始对除残差系数以外的其他语法元素、运动向量mvd_l0,mvd_l1解码,并求解残差解码中用到的宏块参数;
步骤2.3′:软件模块(4)收到来自熵解码控制模块(6)的开始信号后,经由二进制算术解码单元(5)并最终通过BSI取数模块(1)得到所需的编码数据流,解码得到所需的宏块参数以及除残差系数以外的其他语法元素;
步骤2.4′:熵解码控制模块(6)向CABAC残差解码模块(7)发出解残差开始信号;
步骤2.5′:CABAC残差解码模块(7)收到熵解码控制模块(6)发来的开始信号后开始残差解码,经由二进制算术解码单元(5)并最终通过BSI取数模块(1)得到所需的编码数据流,解码得到亮度(luma)和色度(chroma)块的残差系数值;
步骤2.6′:判断解码的宏块是否为片(slice)的最后一个宏块,如果不是,则返回到步骤2.1′继续解下一个宏块,否则解码结束。
本发明所述的基于H.264的熵解码器的实现方法,其特征在于:所述的以片数据为单位对CABAC编码码流进行解码是通过对组成片数据的每个宏块进行解码实现的,所述对单个宏块的解码包括如下的步骤:
步骤1:对上下文模型和概率区间进行初始化;
步骤2:开始对残差系数以外其他语法元素进行解码,并通过采用软件方法求解残差解码中要用到的宏块参数和其他参数;
步骤3:按照先亮度后色度的顺序对残差宏块进行解码;
步骤4:对亮度块的解码;以4x4块或者8x8块为基本单位,先对亮度直流系数进行解码,再对剩余的亮度交流系数进行解码,完成对亮度块的解码过程;
步骤5:对色度块的解码;按照先Cb后Cr块的顺序以4x4块为单位对两个色度块Cb和Cr块进行解码,先解Cb和Cr块的直流系数,然后再解Cb和Cr块的交流系数;
步骤6:重复上述步骤,继续解下一个宏块。
本发明还公开了一种基于H.264的熵解码器装置,该装置包括如下模块:
BSI取数模块:负责从外部取得解码所需的码流数据,当接收到其他模块的取数请求时,返回相应长度的码流数据;
ue/se/te解码单元:接收软件模块发送来的解码请求并返回解码后的参数值;
CAVLC残差解码模块:以‘4X4块’为单位,根据软件模块解码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM;
软件模块:对残差解码需要的参数和变量进行解码,通过ue/se/e解码单元求解与CAVLC相关的参数,通过二进制算术解码单元求解与CABAC相关的参数,最终得到的参数再提供给CAVCL或CABAC残差解码模块使用;
二进制算术解码单元:在解码与宏块有关的参数时,当收到软件模块发送来的解码请求,经解码返回得到的二进制结果;另外在进行CABAC残差解码的时,当收到CABAC残差解码模块发送来的解码请求时,经解码返回得到的二进制结果;
熵解码控制模块:控制整个解码流程,先控制软件模块求解相关的参数,负责向CAVLC残差解码模块或者CABAC残差解码模块发出开始解码信号,当接收到解码结束信号后,将解码得到的相应残差系数写入反扫描RAM;
CABAC残差解码模块:以‘4X4’块或者‘8X8’块为单位,根据软件模块解 码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM;
反扫描RAM:存储经CAVLC残差解码模块或者CABAC残差解码模块解码得到的残差系数。
本发明的显著有益效果在于:在CAVLC和CABAC的解码过程中,尤其是在对CABAC码流的解码过程中,CABAC解码本身就是一个复杂的过程,而且在对残差以外的其他语法元素进行解码时,CABAC的编码方式决定了解码的复杂性,伴随而来的是计算的复杂度,在ASIC设计中,如果完全采用纯硬件实现,这不仅将会占用大量的硬件资源,而且势必会大大增加设计的难度。
本发明提出了一种专用于H.264解码MAE中对熵编码残差数据等进行解码的方法,由于采用了软硬件协同工作,将解码过程中占用大量硬件资源的部分改用软件方式实现,使得熵解码器在保证获得可靠的解码效率和解码质量的前提下,大大降低了结构的复杂度和计算的复杂度,从而有效的解决了速度和效率之间的矛盾,顺利的实现了对CAVLC和CABAC熵编码码流的解码。而且,由于采用本发明所述的解决方案,使得熵解码器可以应用于实际的电路设计中,由于支持CABAC的解码,可以加快H.264在多媒体视频方面的应用,可以用于标清的数字存储和其他的实时应用,如视频存储、VOIP、可视电话等。
附图说明
图1为本发明熵解码器的硬件结构实现原理图;
图2为熵解码模式选择的原理图;
图3为对一个宏块的数据进行CAVLC解码的方法流程图;
图4为对一个4x4子块数据块进行CAVLC解码的方法流程图;
图5为对一个宏块的数据进行CABAC解码的方法流程图;
图6为对一个4x4子块或者8x8子块数据进行CABAC解码的方法流程图;
图7为对4x4子块中的参数的举例说明附表;
具体实施方式
下面参考说明书附图,具体说明本发明的实现过程。如附图1所示:本发明所述的基于H.264的熵解码器装置,该装置包括如下模块:
BSI取数模块1:负责从外部取得解码所需的码流数据,当接收到其他模块的取数请求时,返回相应长度的码流数据;
ue/se/te解码单元2:接收软件模块发送来的ue,se或者te解码请求,并返回解码后的参数值;
CAVLC残差解码模块3:以‘4X4块’为单位,根据软件模块解码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM;
软件模块4:对残差解码需要的一些全部和局部参数和变量进行解码,通过ue/se/te解码单元求解与CAVLC相关的参数,通过二进制算术解码单元求解与CABAC相关的参数,最终得到的参数再提供给CAVCL或CABAC残差解码模块使用;
二进制算术解码单元5:除了软件模块在解码与残差相关的参数时需要借助该模块以外,在进行CABAC残差解码的时候,CABAC残差解码模块向该模块发送解码请求,经解码,返回得到二进制结果;
熵解码控制模块6:控制整个解码流程,先控制软件模块求解相关的参数,负责向CAVLC残差解码模块或者CABAC残差解码模块发出开始解码信号,当接收到解码结束信号后,将解码得到的相应残差系数写入反扫描RAM;
CABAC残差解码模块7:以‘4X4’块或者‘8X8’块为单位,根据软件模块 解码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM.
反扫描RAM8:根据CAVLC残差解码模块或者CABAC残差解码模块发来的信号,存储经CAVLC残差解码模块或者CABAC残差解码模块解码得到的残差系数。
熵解码首先要确定编码码流的编码方式,编码方式的确定是依据编码模式标志得到,如附图2所示,当编码模式标志entropy_mode_flag=0时表示编码方式为CAVLC编码;当编码模式标志entropy_mode_flag=1时表示编码方式为CABAC编码,根据判断出的编码方式选择相应的解码方法。
下面结合附图1说明熵解码器的解码过程:
步骤1:确定了码流的编码方式之后,熵解码控制模块6根据编码方式决定解码的类型:即是对CAVLC编码码流解码还是对CABAC编码码流解码;如果是解CAVLC编码码流,则进入步骤2执行,如果是解CABAC编码码流,则进入步骤3执行;
步骤2:进行CAVLC解码;
步骤3:进行CABAC解码;
步骤4:步骤(2)或步骤(3)完成后,返回到步骤(1),继续解下一个片(slice)的数据。
如附图1所示,上述步骤(2)所述的进行CAVLC解码的具体步骤为:
步骤2.1:熵解码控制模块6向软件模块4发出开始信号,求解与解码有关的非残差语法元素,如mb_type,sub_mb_type,运动向量mvd_l0,mvd_l1等;
步骤2.2:软件模块4收到来自熵解码控制模块6的开始信号后,经由ue/se/te模块2并最终通过BSI取数模块1得到所需的编码数据流,解码得到所需的除宏块参数以及残差系数以外的其他语法元素;
步骤2.3:熵解码控制模块6收到软件模块4发出的结束信号后,向CAVLC残差解码模块3发出解残差开始信号;
步骤2.4:CAVLC残差解码模块3收到熵解码控制模块6发来的开始信号后开始残差解码,并通过BSI取数据模块1获得解码所需的编码数据,最终解码得到亮度和色度块的残差系数值;
步骤2.5:如果解码的不是片(slice)的最后一个宏块,则返回到步骤2.2,继续解下一个宏块,否则结束。
如附图1所示,步骤(3)所述的对CABAC解码的具体步骤为:
步骤3.1:对CABAC解码所需的上下文模型进行初始化,并初始化概率区间;
步骤3.2:熵解码解码控制模块6向软件模块4发开始信号,开始对残差系数以外其他语法元素如mb_type,sub_mb_type,运动向量mvd_l0,mvd_l1等解码,并求解残差解码中要用到的宏块参数和其他参数;
步骤3.3:软件模块4收到来自熵解码解码控制模块6的开始信号后,经由二进制算术解码单元5并最终通过BSI取数模块1得到所需的编码数据流,解码得到所需的宏块参数以及除残差系数以外的其他语法元素;
步骤3.4:熵解码控制模块6向CABAC残差解码模块7发出解残差开始信号;
步骤3.5:CABAC残差解码模块7收到熵解码控制模块6发来的开始信号后开始残差解码,同样经由二进制算术解码单元5并最终通过BSI取数模块1得到所需的编码数据流,最终解码得到亮度和色度块的残差系数值;
步骤3.6:如果解码的不是片(slice)的最后一个宏块,回到步骤3.2,否则结束。
下面参考图3说明对一个片数据的宏块进行CAVLC解码的流程:
步骤1:由软件模块完成求出与宏块解码相关的变量和参数,如mb_type、mb_skip_flag、sub_mb_type、mvd_l0、mvd_l1、ref_idx_l0、ref_idx_l1、mb_qp_delta、intra_chroma_pred_mode等;
步骤2:由步骤1得到解码时所需的当前宏块以及邻近宏块等解码所需的参数后,由于一个宏块包含一个16×16的亮度块和两个8×8的色度块Cb和Cr,所以下面按照先亮度后色度的顺序对宏块进行解码。
对亮度块进行解码:
进行亮度块解码时,由于亮度块包含16×16个像素点,解码时以4×4块为基本的解码单位,即每次对一个4×4块解码,共分16次完成一个16×16亮度块的解码。在每个16×16亮度块中,每个4×4块有一个直流系数,16个4×4亮度块共有16个直流系数;解码时首先对16个亮度的直流(DC)系数进行解码,然后对16个4×4亮度块的交流系数(AC)进行解码,每个4×4交流系数块有15个交流系数。
对色度块进行解码:
解码完16×16亮度块后,接着对两个8×8色度块解码,同样的以4×4块为基本的解码单位,同样先解码直流系数。每个8×8色度块有4个直流系数,分别完成对Cb和Cr块的直流系数的解码后,再对Cb和Cr块的交流系数进行解码,对两个色度块的解码顺序都是先Cb块后Cr块。
步骤3:完成对16×16亮度块和Cb及Cr色度块的解码之后,一个宏块的数据就解码完了,可以继续下一个宏块的解码。
下面参考图4以对一个亮度4×4块或色度4×4块残差系数进行CAVLC解码说明CAVLC残差解码的过程:
步骤401:确定所要解码的系数是亮度系数还是色度系数,是直流系数还是交流系数;
步骤402:如果色度直流系数为1,参数nC=1,是对色度直流系数进行解码,否则nC=(nA+nB)/2,其中nA,nB分别表示解码残差块的左边和正上方参考块中非零系数的个数。
步骤403:由于CAVLC是变长编码,采用的不是固定的码表,因此,根据步骤2得到的nC的值决定着进行解码时采用哪一个码表,以及是采用变长码表还是定长码表或者是否使用码表。
步骤404:查表求解numtrailingones,其中numtrailingones表示拖尾系数,即从最后一个高频残差系数开始往前连续遇到的1和-1的个数(1和-1之间可以包括0),numtrailingones的值不超过3。numtrailingones的作用在于,在进行编码的时候,对于4×4块中高频部分的系数多为1,0,-1的情况,编码的时候,可以只记录1,-1的个数以及符号位即可,而无需像其他的残差系数一样要对整个系数值level进行编码,提高了编码效率。
步骤405:对拖尾系数trailingones部分的系数符号进行解码,得到trailingones部分的幅值level的值,1或者-1。
步骤406:解除拖尾系数之外的其他非零系数的值level,加上步骤5中得到的拖尾系数部分的level值,得到4×4块中的非零系数值level[i],这里的I表示幅值level的序号。
步骤407:根据相应的码表求得TotalZeros的值,TotalZeros表示4×4中最后一个非零系数前零的个数。
步骤408:求各个非零系数得run的值,run表示各非零系数前零的个数,分别用run[i]表示,其中i是非零系数level的序号。
步骤409:结束:根据前面得到的level[i],run[i]的值从低频部分第一个系数就可以恢复16个4×4块的残差系数值。
下面举例说明numtrailingones,numcoeff,TotalZeros,level[j],run[j]的含义:如附图7所示为一个4×4块的16个残差系数:这里numtrailingones=3,numcoeff=6,TotalZeros=10,level[j],run[j]的值已经在图中注明。其中的符号i表示4×4子块中残差系数的序号,level[j],run[j]中的符号j表示非零系数level[j]和零行程run[j]的序号。
下面参考图5说明对一个片数据中的一个宏块进行CABAC解码的流程:
步骤1:对上下文模型和概率区间进行初始化;CABAC是自适应的二进制算术编码,所以无论是在解码还是编码时对它的上下文模型和概率区间都必须先进行初始化,才能保证解码时和编码时使用的是相同的上下文模型和概率区间;
步骤2:开始对残差系数以外其他语法元素,如mb_type,sub_mb_type,运动向量mvd_l0,mvd_l1等解码,并求解残差解码中要用到的宏块参数,由于这一部分需要占用较多地硬件资源,所以这里采用软件的方式完成;
步骤3:下面对一个残差宏块进行解码;一个宏块包含一个16×16的亮度块和两个8×8的色度块Cb和Cr,此处和CAVLC的解码顺序一样,仍然按照先亮度后色度的顺序对宏块进行解码;
步骤4:以4×4块或者8×8块为基本单位对亮度进行解码。如果有直流系数,先对亮度直流系数进行解码,一共16个亮度dc系数;然后以4×4块为基本单位,对剩余的亮度交流系数进行解码,共16个4×4交流系数块;如果只有交流系数,直接以4×4块或者8×8块为基本单位对交流系数进行解码。这样就完成了亮度块的解码过程;
步骤5:按照先DC系数后AC系数先Cb后Cr块的顺序对两个色度块Cb和Cr块进行解码,先解Cb和Cr块的DC系数,然后再解Cb和Cr块的AC系数,每个8×8色度块一共得到4个DC系数和60个AC系数;
步骤6:继续解下一个宏块。
下面参考图6以解一个4×4残差数据块为例来说明CABAC的解码过程:
步骤601:根据标志coded_block_flag的值决定是否需要对该4×4块进行解码。如果coded_block_flag=0,表示该4×4块中系数全为零,所以不必进行解码,当coded_block_flag=1时进行下一步;
步骤602:计算4×4块中非零系数的幅值coeffLevel[i],从低频到高频的顺序,以i表示系数的标号;
步骤603:计算非零系数的coeffLevel[i]的绝对值abs(coeffLevel[i]);
步骤604:计算非零系数的符号sign;
步骤605~606:由上面的得到的非零系数的符号决定非零系数的值;
步骤607:根据已有的残差系数的大小和位置信息,加上符号信息,对4×4块的16个残差系数进行恢复,得到4×4块的16个残差系数的值;
本发明所说的软件方式,是指利用嵌入式cpu代替硬件电路进行运算的方式,而不是单纯的指用计算机软件实现熵解码中的某些计算功能。
本发明所用的实例只是用来对上述解码器中所支持的解码功能的一种解释说明,并不代表本发明所要保护的范围仅限于此,凡采用本发明中所提及的方法和结构,或者采用对某些部分相同功能的替代方案,均在本发明所要求的保护范围,从事本行业的技术人员对此应予理解。

Claims (4)

1.基于H.264的熵解码器的实现方法,其特征在于:该方法采用了软硬件协同工作,将解码过程中占用大量资源的部分改用软件程序方法实现,包括如下步骤:
步骤1:熵解码控制模块(6)根据熵编码模式标志选择解码方式:即是对CAVLC编码码流进行解码还是对CABAC编码码流进行解码;
步骤2:根据步骤1选定的解码类型以片(slice)数据为单位对CAVLC或者CABAC编码码流进行解码;
步骤3:解码完成后,判断是否为CAVLC或者CABAC编码码流的最后一个片数据,若不是,返回步骤2继续对下一个片(Slice)的数据进行解码,否则,解码过程结束;
该方法步骤2中所述的根据选定的解码类型以片数据为单位对CAVLC编码码流进行解码,其中对CAVLC编码码流的解码还包括如下的具体步骤:
步骤2.1:熵解码控制模块(6)向软件模块(4)发出开始信号,开始求解与解码有关的变量和参数;
步骤2.2:软件模块(4)收到来自熵解码控制模块(6)的开始信号后,经由ue/se/te解码单元(2)并最终通过BSI取数模块(1)得到所需的编码数据流,经解码得到所需的宏块参数以及除残差系数以外的其他语法元素;
步骤2.3:熵解码控制模块(6)收到软件模块(4)发出的结束信号后,向CAVLC残差解码模块(3)发出解残差开始信号;
步骤2.4:CAVLC残差解码模块(3)收到熵解码控制模块(6)发来的开始信号后开始残差解码,并通过BSI取数据模块(1)获得解码所需的编码数据,得到亮度块和色度块的残差系数值;
步骤2.5:判断解码的是否为片数据的最后一个宏块,如果不是,则返回到 步骤2.1继续解下一个宏块,否则解码结束;
该方法步骤2所述的根据选定的解码类型以片数据为单位对CABAC编码码流进行解码,对CABAC编码码流的解码还包括如下的具体步骤:
步骤2.1′:对CABAC解码所需的上下文模型进行初始化,并初始化概率区间;
步骤2.2′:熵解码控制模块(6)向软件模块(4)发出开始信号,开始对除残差系数以外的其他语法元素、运动向量mvd_l0,mvd_l1解码,并求解残差解码中用到的宏块参数;
步骤2.3′:软件模块(4)收到来自熵解码控制模块(6)的开始信号后,经由二进制算术解码单元(5)并最终通过BSI取数模块(1)得到所需的编码数据流,解码得到所需的宏块参数以及除残差系数以外的其他语法元素;
步骤2.4′:熵解码控制模块(6)向CABAC残差解码模块(7)发出解残差开始信号;
步骤2.5′:CABAC残差解码模块(7)收到熵解码控制模块(6)发来的开始信号后开始残差解码,经由二进制算术解码单元(5)并最终通过BSI取数模块(1)得到所需的编码数据流,解码得到亮度(luma)和色度(chroma)块的残差系数值;
步骤2.6′:判断解码的宏块是否为片(slice)的最后一个宏块,如果不是,则返回到步骤2.1′继续解下一个宏块,否则解码结束。
2.根据权利要求1所述的基于H.264的熵解码器的实现方法,其特征在于:其特征在于:以片数据为单位对CAVLC编码码流进行解码是通过对组成片数据的每个宏块进行解码实现的,所述对单个宏块的解码包括如下的步骤:
步骤1:由软件模块求解与宏块解码相关的变量和参数; 
步骤2:根据上述步骤1得到解码所需的当前宏块以及邻近宏块解码所需的参数后,按照先亮度块后色度块的顺序对宏块进行解码;
步骤3:对亮度块进行解码;以4x4块为基本的解码单位,即每次对一个4x4亮度块进行块解码,先对亮度块的直流(DC)系数进行解码,然后再对亮度块的交流系数(AC)进行解码;
步骤4:解码完亮度块后,对色度块进行解码;以4x4块为基本的解码单位,按照先Cb块后Cr块的顺序,先解码色度块的直流系数,再解码色度块的交流系数;
步骤5:重复上述步骤,继续解下一个宏块。
3.根据权利要求1所述的基于H.264的熵解码器的实现方法,其特征在于:所述的以片数据为单位对CABAC编码码流进行解码是通过对组成片数据的每个宏块进行解码实现的,所述对单个宏块的解码包括如下的步骤:
步骤1:对上下文模型和概率区间进行初始化;
步骤2:开始对残差系数以外其他语法元素进行解码,并通过采用软件方法求解残差解码中要用到的宏块参数和其他参数;
步骤3:按照先亮度后色度的顺序对残差宏块进行解码;
步骤4:对亮度块的解码;以4x4块或者8x8块为基本单位,先对亮度直流系数进行解码,再对剩余的亮度交流系数进行解码,完成对亮度块的解码过程;
步骤5:对色度块的解码;按照先Cb后Cr块的顺序以4x4块为单位对两个色度块Cb和Cr块进行解码,先解Cb和Cr块的直流系数,然后再解Cb和Cr块的交流系数;
步骤6:重复上述步骤,继续解下一个宏块。
4.基于H.264的熵解码器装置,其特征在于,该装置包括如下模块: 
BSI取数模块:负责从外部取得解码所需的码流数据,当接收到其他模块的取数请求时,返回相应长度的码流数据;
ue/se/te解码单元:接收软件模块发送来的解码请求并返回解码后的参数值;
CAVLC残差解码模块:以‘4X4块’为单位,根据软件模块解码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM;
软件模块:对残差解码需要的参数和变量进行解码,通过ue/se/te解码单元求解与CAVLC相关的参数,通过二进制算术解码单元求解与CABAC相关的参数,最终得到的参数再提供给CAVCL或CABAC残差解码模块使用;
二进制算术解码单元:在解码与宏块有关的参数时,当收到软件模块发送来的解码请求,经解码返回得到的二进制结果;另外在进行CABAC残差解码的时,当收到CABAC残差解码模块发送来的解码请求时,经解码返回得到的二进制结果;
熵解码控制模块:控制整个解码流程,先控制软件模块求解相关的参数,负责向CAVLC残差解码模块或者CABAC残差解码模块发出开始解码信号,当接收到解码结束信号后,将解码得到的相应残差系数写入反扫描RAM;
CABAC残差解码模块:以‘4X4’块或者‘8X8’块为单位,根据软件模块解码得到的相应参数,对亮度和色度的残差系数进行解码,解码完成后向熵解码控制模块发出结束信号,解码出来的残差系数存入反扫描RAM;
反扫描RAM:存储经CAVLC残差解码模块或者CABAC残差解码模块解码得到的残差系数。 
CN 200610157417 2006-12-07 2006-12-07 基于h.264的熵解码器的实现方法及装置 Expired - Fee Related CN101198051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200610157417 CN101198051B (zh) 2006-12-07 2006-12-07 基于h.264的熵解码器的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610157417 CN101198051B (zh) 2006-12-07 2006-12-07 基于h.264的熵解码器的实现方法及装置

Publications (2)

Publication Number Publication Date
CN101198051A CN101198051A (zh) 2008-06-11
CN101198051B true CN101198051B (zh) 2011-10-05

Family

ID=39548146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610157417 Expired - Fee Related CN101198051B (zh) 2006-12-07 2006-12-07 基于h.264的熵解码器的实现方法及装置

Country Status (1)

Country Link
CN (1) CN101198051B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081781A (zh) * 2012-01-20 2014-10-01 弗兰霍菲尔运输应用研究公司 许可平行处理的编码构思、传送解多工器及视频比特流

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9467699B2 (en) 2008-12-03 2016-10-11 Hfi Innovation Inc. Method for performing parallel coding with ordered entropy slices, and associated apparatus
CN101836454B (zh) * 2008-12-03 2012-08-22 联发科技股份有限公司 对有序熵切片执行平行cabac码处理的方法及装置
CN101990094B (zh) * 2009-08-05 2012-11-21 炬力集成电路设计有限公司 一种码流分析方法和装置
BR112013012814B1 (pt) 2010-10-26 2019-10-08 Nec Corporation Dispositivo de decodificação de vídeo e método de decodificação de vídeo
CN101986708A (zh) * 2010-10-29 2011-03-16 北京中星微电子有限公司 一种视频解码方法及解码器
JP2012124838A (ja) * 2010-12-10 2012-06-28 Sony Corp 画像復号化装置と画像復号化方法および画像符号化装置と画像符号化方法並びにプログラム
FR2972588A1 (fr) 2011-03-07 2012-09-14 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
CN102355578B (zh) * 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种熵解码方法、装置
JP2013034162A (ja) 2011-06-03 2013-02-14 Sony Corp 画像処理装置及び画像処理方法
JP2013034163A (ja) 2011-06-03 2013-02-14 Sony Corp 画像処理装置及び画像処理方法
EP3930330B1 (en) * 2011-06-16 2023-06-07 GE Video Compression, LLC Entropy coding of motion vector differences
FR2977111A1 (fr) 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US9060173B2 (en) * 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9871537B2 (en) 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
FR2982446A1 (fr) 2011-11-07 2013-05-10 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
FR2982447A1 (fr) 2011-11-07 2013-05-10 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
CN103379331B (zh) * 2012-04-28 2018-10-23 南京中兴新软件有限责任公司 一种视频码流编解码方法和装置
CN105657421B (zh) * 2016-01-15 2018-08-31 珠海全志科技股份有限公司 8x8残差系数块编码方法及系统
CN106993190B (zh) * 2017-03-31 2019-06-21 武汉斗鱼网络科技有限公司 软硬件协同编码方法及系统
CN110958459B (zh) * 2018-09-26 2022-06-03 阿里巴巴集团控股有限公司 一种数据处理方法及其装置
CN110446047A (zh) * 2019-08-16 2019-11-12 苏州浪潮智能科技有限公司 视频码流的解码方法及装置
CN111818335B (zh) * 2020-07-03 2022-04-26 Tcl华星光电技术有限公司 一种熵编码方法和装置、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585495A (zh) * 2004-06-11 2005-02-23 上海大学 H.264/avc帧内预测模式的快速选择方法
CN1780398A (zh) * 2004-11-18 2006-05-31 上海乐金广电电子有限公司 Cavlc解码方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585495A (zh) * 2004-06-11 2005-02-23 上海大学 H.264/avc帧内预测模式的快速选择方法
CN1780398A (zh) * 2004-11-18 2006-05-31 上海乐金广电电子有限公司 Cavlc解码方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张力航等.软硬件协同设计技术在H.264解码器设计中的应用.《电子设计应用》.同济大学超大规模集成电路研究所,2006,(第9期),89-92,97+2. *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081781A (zh) * 2012-01-20 2014-10-01 弗兰霍菲尔运输应用研究公司 许可平行处理的编码构思、传送解多工器及视频比特流
US9930368B2 (en) 2012-01-20 2018-03-27 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
CN104081781B (zh) * 2012-01-20 2018-11-02 Ge视频压缩有限责任公司 一种编码器、解码器、编解码方法及用于传送解多工的方法
US10873766B2 (en) 2012-01-20 2020-12-22 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US10880577B2 (en) 2012-01-20 2020-12-29 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US10880579B2 (en) 2012-01-20 2020-12-29 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US10880578B2 (en) 2012-01-20 2020-12-29 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US10887625B2 (en) 2012-01-20 2021-01-05 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream
US11997319B2 (en) 2012-01-20 2024-05-28 Ge Video Compression, Llc Coding concept allowing parallel processing, transport demultiplexer and video bitstream

Also Published As

Publication number Publication date
CN101198051A (zh) 2008-06-11

Similar Documents

Publication Publication Date Title
CN101198051B (zh) 基于h.264的熵解码器的实现方法及装置
JP7368414B2 (ja) 画像予測方法および装置
CN111866512B (zh) 视频解码方法、视频编码方法、装置、设备及存储介质
RU2452128C2 (ru) Адаптивное кодирование информации заголовка видеоблока
CN103190147B (zh) 用于视频译码的语法元素的联合译码方法及设备
TWI527465B (zh) 已寫碼區塊旗標寫碼
CN103563378B (zh) 存储器高效的上下文建模
KR101697154B1 (ko) 영상 부호화 방법 및 컴퓨터로 읽을 수 있는 기록 매체
TWI574549B (zh) 用於解碼及編碼視訊資料之方法、視訊解碼及編碼裝置及用於解碼及編碼視訊資料之非暫時性電腦可讀儲存媒體
US7932843B2 (en) Parallel CABAC decoding for video decompression
KR100612015B1 (ko) 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
TW201742458A (zh) 二值化二次轉換指數
CN101621687B (zh) H.264到avs视频码流转换方法及其装置
RU2656827C2 (ru) Усовершенствованная сигнализация идентификаторов слоев для рабочих точек видеокодера
KR20140120891A (ko) 효율적인 변환 유닛 인코딩을 위한 방법 및 장치
WO2011100465A1 (en) Video coding with large macroblocks
CN103460698A (zh) 组合参考图片列表建构和映射
TW201444350A (zh) 方形區塊預測
KR20090028369A (ko) 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법
TW201309032A (zh) 用信號發送用於一葉層級編碼單元之子集的轉換係數的語法元素
CA2666055A1 (en) Refinement coefficient coding based on history of corresponding transform coefficient values
JP2011507450A (ja) 可変長符号化方法及び装置
Kalva et al. The VC-1 video coding standard
US9167258B2 (en) Fast mode determining method and apparatus in scalable video coding
KR20140081681A (ko) 영상의 부호화 방법 및 이를 이용하는 장치

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
CP01 Change in the name or title of a patent holder

Address after: 518057 Room 406, 4th Building, Phase I, Science and Technology Second Road Software Park, Nanshan High-tech Zone, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Shenyang electronic Limited by Share Ltd

Address before: 518057 Room 406, 4th Building, Phase I, Science and Technology Second Road Software Park, Nanshan High-tech Zone, Shenzhen City, Guangdong Province

Patentee before: Aike Chuangxin Microelectronic Co., Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111005

Termination date: 20201207

CF01 Termination of patent right due to non-payment of annual fee
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载