CN100481953C - 一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 - Google Patents
一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 Download PDFInfo
- Publication number
- CN100481953C CN100481953C CN 200510110913 CN200510110913A CN100481953C CN 100481953 C CN100481953 C CN 100481953C CN 200510110913 CN200510110913 CN 200510110913 CN 200510110913 A CN200510110913 A CN 200510110913A CN 100481953 C CN100481953 C CN 100481953C
- Authority
- CN
- China
- Prior art keywords
- slice
- unit
- current
- information
- decoding
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 239000000872 buffer Substances 0.000 claims abstract description 16
- 238000012805 post-processing Methods 0.000 claims abstract description 4
- 230000003139 buffering effect Effects 0.000 claims description 18
- 238000001914 filtration Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 12
- 230000006835 compression Effects 0.000 abstract description 11
- 238000007906 compression Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 239000004744 fabric Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 238000012958 reprocessing Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供一种对于视频码流判断图像边界及预读图像数据的解码方法和装置,在视频压缩标准中采用灵活宏块排序(FMO)和任意条带顺序(ASO)技术时判断图像边界及预读码流中一幅图像数据。通过判断当前条带是属于当前图像还是下一幅图像,并将读出的条带头和条带数据存放在不同的缓冲区中,记录预读条带在缓存中的位置,之后再进行当前图像解码。本发明技术方案在解码一幅图像之前就能正确判断该图像与下一幅图像的边界,从而在解码之前能正确读取当前解码图像的全部条带内容,能够实现按照宏块光栅扫描的顺序进行解码,减少解码与后处理的延迟。
Description
技术领域
本发明涉及视频压缩标准采用灵活宏块排序FMO和任意条带顺序ASO技术时的解码方法和装置,特别是如何判断图像边界以及如何预读码流的图像数据的解码方法和装。
背景技术
条带(slice)结构是信源编码中的关键技术之一,广泛应用于许多视频压缩标准中,如AVS,H.264,MPEG2等。当信源编码中采用结构化条带(structured slice)技术时,可很好地适应网络通信中良好的差错控制和灵活操作的要求。在结构化条带技术中包含许多重要概念,如灵活宏块排序FMO(Flexible Macroblock Ordering)和任意条带顺序ASO(AbitrarySlice Order)等,但对解码工作而言,当采用FMO和ASO机制时,按条带在视频码流中的顺序解码不能保证一定对应按宏块光栅扫描顺序解码。
图像的编码方式:
在视频压缩标准中,图像是以宏块(macroblock)为单位进行编码的,宏块是16 x 16(像素)大小的正方形区域,以176 x 144大小的图像为例(如图1所示),该图像共包含99个宏块。图1中,宏块在一幅图像内的序号依图中箭头所示顺序递增,这种方式称按光栅扫描的顺序编号(0、1、…、98)。与编码过程对应,解码过程也以宏块为单位进行,解码后的宏块内容按图1所示次序放置以保证解码图像的正确。
视频码流的结构和组织:
在视频压缩标准(如AVS、H.264)中,原始的图像文件经过编码以后的二进制文件称为码流,码流中信息的基本组成单位是条带(slice),条带按图2所示的分层结构组织。在视频码流中,一幅图像的信息是由几个条带组成,每个条带包含条带头(slice header)和条带数据(slice data)两部分。
条带头包含了该条带内第一个宏块或所有宏块共有的信息,条带数据由整数个宏块构成(图3中以8个宏块为例),条带内宏块的放置有两种方式,分别如图3(a)和图3(b)所示。在图3(a)中,以宏块序号自然数递增的方式放置(k是条带内第一个宏块的序号);图3(b)中,条带内原先依自然数递增的宏块序号经过某种映射(MAP)操作后,条带内的宏块编号由k,k+1,……k+7变为i0,i1,……i7,且i0,i1,……i7并不一定按1的步长递增,从而条带内的宏块放置不再具有任何规律,这种方式称为多条带群灵活宏块排序(FlexibleMacroblock Ordering)方式。
任意条带顺序技术(Arbitrary slice order):
任意条带顺序技术(ASO)是指条带在码流中的放置顺序并不一定严格遵守条带的第一个宏块的序号单调递增的限制,也就是说编码器和解码器可以以任意的顺序发送和接受一幅图像的所有条带,如图4(a)所示,一幅图像内的宏块划分为条带#1,条带#2,条带#3三个不同的条带,图4(b)中采用ASO技术,图4(a)中的三个条带(视频码流)到达解码器的顺序为条带#2,条带#1,条带#3。
在采用多条带群灵活宏块排序FMO和任意条带顺序ASO技术时,如果仍采用从码流中顺序读条带并解码的方式不能保证解码宏块的序号是以光栅扫描顺序递增的,而若采用预先将一幅图像中所有的条带读出并暂存,结合预知的映射(MAP)关系以及条带头中的某些信息可实现按宏块光栅扫描顺序解码。在视频码流解码过程中,在一幅图像完全解码完毕之前,一幅图像所包含总的条带数是事先未知的,所以正确判断图像边界成为按宏块光栅扫描顺序解码工作的关键。
视频码流的信息单元:条带单元和非条带单元:
在视频压缩标准中,视频码流由各种类型的信息单元所组成。信息单元可以分为两类:一类是前面介绍的条带单元,包含了真正压缩的视频内容;另一类为非条带单元,包含了相关的其他附加信息。在信息单元的单元头中包含了信息单元类型的信息,因此只要解码信息单元的单元头就可判定该信息单元是条带单元还是非条带单元。
目前已公开的判断图像边界(下一幅图像开始)并解码一幅图像的方法的流程图如图5 所示,包括以下步骤如下:
1)开始,初始化已解码宏块个数i=0;
2)读一个视频码流的信息单元;
3)解码该信息单元的单元头,若为条带单元则跳到步骤4),否则解码当前非条带单元的全部内容,返回步骤2);
4)读出当前信息单元中的条带;
5)对已读出条带,解码该条带并累计解码宏块个数i,
6)解码宏块个数i是否等于该图像所包含的总宏块数?如果此时i等于一幅图像所包含的总宏块数,则当前图像解码已经结束(即码流中接下来的信息属于下一幅图像),否则返回步骤2)。
上述判断图像边界及解码方法所应用的装置示意图如图6所示:
整个判断图像边界及解码装置由以下模块和单元组成:
1.信息单元单元头解码模块,解码信息单元的头信息;
2.信息单元类型判别模块,若为条带单元,则读出该信息单元中的条带信息,否则解码该信息单元并继续读下一个信息单元;
3.条带头解码模块,用来解码条带头;
4.宏块解码模块,实现宏块解码;
5.图像结束判别模块,用于判断当前图像是否结束,包括以下单元:
(1)解码宏块个数累加单元,累计已解码宏块的个数;
(2)图像的总宏块数与已解码宏块数比较单元,若当前已解码的宏块数与图像的总宏块数相等则当前图像结束。
7.复原图像帧/场存储器,由于按条带在码流中的顺序解码条带,所以解码后的宏块要经过暂存后才能进行滤波等其他后处理;
8.图像后处理模块,用于按照光栅扫描顺序进行的宏块滤波及图像缩放、增强等后续操作;
9.图像显示和存储模块,用于图像的显示和存储。
这些现有技术的相关资料有:
1)ITU-T(国际电信联盟)的视频编码专家组VCEG(video coding experts group)和ISO/IEC(国际标准化组织)的运动图像专家组MPEG(moving picture expert group)共同组建的联合视频组(Joint Video Team)参考软件JM85版本。
从图6可看出,这种解码方法和装置按条带在码流中的顺序依次解码,也不预读图像数据。
发明内容
本发明提出一种在视频压缩标准中采用灵活宏块排序(FMO)和任意条带顺序(ASO)技术时判断图像边界及预读码流中一幅图像数据的解码方法和装置。实现此方法的关键是在顺序读码流中的条带信息时,如何判断当前条带是属于当前图像还是下一幅图像,并将读出的条带头和条带数据存放在不同的缓冲区中,记录预读条带在缓存中的位置。
多条带对于视频码流中判断图像边界及预读条带的解码方法描述如下:
本发明解码方法的流程图如图7所示。包括以下步骤:
1)开始,搜索当前图像的第一个信息单元的起始位置;
2)读当前信息单元并解码信息单元头;
3)判断当前信息单元是否为条带单元,若为条带单元,则跳到步骤4),否则解码该非条带单元并搜索下一个信息单元的起始位置,返回步骤2);
4)解码第一个条带的条带头的全部信息;
5)将解出的第一个条带头放在条带头缓冲区中,记录存放位置;
6)将第一个条带的条带数据暂存于条带数据缓冲区,记录存放位置;
7)搜索下一个信息单元的起始位置;
8)读当前信息单元并解码当前信息单元头;
9)当前信息单元是否为条带单元,若是则继续执行后续步骤;若为标明图像边界的信息单元,则跳到步骤15);否则解码该非条带单元信息,返回步骤7);
10)解码当前条带单元中的条带头的前几个字节以获得该条带的是否属于当前图像的信息;
11)根据读取的当前条带信息和第一个条带的信息判断当前条带是否属于当前图像,若属于则继续执行后续步骤,否则跳到步骤15);
12)解码条带头的剩余字节;
13)并将解出的条带头放在条带头缓冲区中,记录存放位置;
14)将当前条带单元的条带数据暂存于条带数据缓冲区中,记录存放位置,返回步骤7);
15)当前图像解码。
如图8所示,其中步骤15)当前图像解码可按照宏块光栅扫描顺序解码当前图像直到解码宏块总数等于一幅图像包含的总宏块数为止。具体包括以下步骤:
1)将读码流文件指针返回前一个信息单元结束位置,此时当前图像的所有条带已全部读出;
2)初始化解码宏块序号i=0;
3)解码宏块i,i递增1;
4)判断i是否等于一幅图像包含的总宏块数,若是则当前图像解码结束,否则转步骤3)。上述解码方法所应用的装置示意图如图9所示:
整个解码装置包括以下模块和单元:
1.信息单元搜索模块,搜索信息单元的起始位置;
2.信息单元单元头解码模块,解码信息单元单元头信息;
3.信息单元类型判别模块,若为条带单元,则读出该信息单元中的条带信息,若为标明图像边界的信息单元,则当前图像所有条带的预读过程结束,否则解码该非条带单元并继续搜索下一个信息单元;
4.部分条带头解码模块,解码条带头的部分字节,用于判断当前条带是否属于当前图像;
5.条带判别模块,判断当前条带是否属于当前图像,若属于则解码条带头剩余字节并继续读当前图像的下一个条带;否则当前图像所有条带的预读过程结束;
6.剩余条带头解码模块,解码条带头的剩余字节;
7.已读出条带缓存模块,包括以下单元:
(1)条带头缓存单元,用来暂存解码后的条带头信息。
(2)条带数据缓存单元,用于暂存读出的条带数据。
8.宏块解码模块,实现解码宏块的功能;
9.图像后处理模块,用于按照光栅扫描顺序进行的宏块滤波及图像缩放、增强等后续操作;
10.图像显示和存储模块,用于图像的显示和存储。
本发明技术方案在解码一幅图像之前就能正确判断该图像与下一幅图像的边界,从而在解码之前能正确读取当前解码图像的全部条带内容,能够实现按照宏块光栅扫描的顺序进行解码,减少解码与后处理的延迟。
附图说明
图1为一包含99个大小为16x16像素宏块的图像;
图2为一幅图像的分层结构组织结构;
图3(a)、图3(b)为条带内宏块的放置方式;
图4(a)、图4(b)为任意条带顺序示意图;
图5为目前已公开的判断图像边界并解码一幅图像的方法的流程图;
图6为目前已公开的判断图像边界并解码一幅图像的装置;
图7为本发明技术方案流程图;
图8为本发明技术方案当前图像解码流程图;
图9为本发明技术方案中解码方法所应用的装置;
图10为本发明实施例一解码方法的流程图;
图11为本发明实施例一解码装置示意图;
图12为本发明实施例二解码方法的流程图;
图13为本发明实施例二解码装置示意图;
图14为本发明实施例三解码方法的流程图;
图15为本发明实施例三解码装置示意图;
具体实施方式
实施例一:H.264中判断图像边界及预读一幅图像数据的解码
在H.264中,采用多条带灵活宏块排序(FMO)技术时,条带内按自然数递增的宏块序号经过映射(MAP)操作后,条带内的宏块序号可能仍满足按自然数递增的规律也可能变得毫无规律可言。而在采用任意条带顺序ASO时,由于条带到达解码器的顺序是任意的,即使条带内的宏块序号按自然数递增,也不能保证按条带在码流中的顺序解码一定对应按宏块光栅扫描的顺序解码。
为了实现按宏块光栅扫描顺序的解码,一种方法是将一幅图像的所有条带内容在解码之前全部读出并暂存,这时如何判断图像边界成为能否正确解码的关键。
正如前面所述,视频码流中的一幅图像由几个条带构成,条带包括条带头和条带数据两部分,条带头中包含了条带中所有宏块所共有的信息,其中的某些信息对一幅图像的所有条带是相同的,而对不同的图像来说这些信息可能是不一样的,于是我们可以通过从条带头中解码这些信息来判断当前条带是否属于当前解码图像。
在视频压缩标准H.264中,所有信息单元都称为网络适配层NAL(network adaptationlayer)单元,而条带单元则是视频编码层VCL(video coding layer)单元。每个NAL单元都包含整数的字节数,其中有一个字节的头部和其余的有效载荷信息。在头部信息中,包含一个错误标志位、NAL单元的性质表示以及NAL类型,错误标志位用来标示接受到的NAL单元是否有错误,NAL单元的性质表示位主要用于表示NAL单元在码流中的重要程度,一般对解码的影响越大,其数值越大。NAL类型规定了NAL单元的数据内容,从大的方面讲,NAL单元分为两种,一种即VCL NAL单元,包含了视频图像压缩后的信息,即前面提到的条带单元,另一种是非VCL NAL单元,也即前面提到的非条带单元,主要包含了相关的附加信息,如Sequence parameter set、图画参数集(picture parameter set)等。
在H.264视频码流中,图画参数集(picture parameter set)语法结构,这一语法结构规定了一幅图像中所有条带所共有的信息。一个视频序列中的不同图像可能采用不同的图画参数集语法结构,而具体采用何种图画参数集语法结构是由条带头(slice header())语法结构中的语法元素pic_parameter_set_id决定的。对同一幅图像的所有条带的条带头来说,其语法元素pic_parameter_set_id都是相同的,即一幅图像的所有条带采用相同的图画参数集语法结构,但对同一视频序列的不同图像来说,pic_parameter_set_id可能相同也可能不同,于是可将pic_parameter_set_id作为判别当前所读条带是否属于当前图像的条件之一。此外,在每个条带的条带头中还有first_mb_in_slice语法元素,它规定了该条带中第一个宏块的序号,同一幅图像的不同条带,firet_mb_in_slice是不同的,但对于不同图像的条带,first_mb_in_slice可能是相同的,于是可将first_mb_in_slice作为判别当前所读条带是否属于当前图像的另外一个条件。
除了上述两个条件之外,在每个条带的条带头中还有编码类型(slice_type)和frame_num两个语法元素。Slice_type规定了当前条带的编码方法,在H.264中,条带的编码方法共有5种,不同slice_type的取值对应的不同编码方法如下表1所示。
表1 slice_type不同取值对应的不同编码方法
Slice_type | 条带编码方法 |
0 | P(P slice) |
1 | B(B slice) |
2 | I(P slice) |
3 | SP(SP slice) |
4 | SI(SI slice) |
5 | P(P slice) |
6 | B(B slice) |
7 | I(I slice) |
8 | SP(SP slice) |
9 | SI(SI slice) |
在H.264中规定,当一幅图像的某个条带的slice_type在5~9之间取值时,说明这幅图像的所有条带的编码方法完全相同,当当前图像的第一个条带的slice_type大于4且当前所读条带的slice_type不等于第一个条带的slice_type(或Slice_type—5)时,可知当前条带属于下一幅图像,于是可用slice_type作为判断当前条带是否属于当前图像的条件之一。
同其他的视频压缩标准一样,H.264中也采用了运动补偿方法。所谓运动补偿,就是将当前编码宏块进一步划分成更小的块,然后在已编码过的图像中搜索与当前编码块最匹配的块并计算当前编码块与最匹配块中对应像素的差值,得到预测误差块。已编码过的且用于运动补偿的图像通常称为参考帧。在H.264码流中,所有图像都有一个编号,每个参考帧之后出现的那一幅图像,其编号都会递增,这个编号由条带头中的语法元素frame_num表示,因此当当前所读条带与第一个条带的frame_num不同时,说明当前条带属于下一幅图像,于是frame_num也可作为判别当前条带是否属于当前图像的条件之一。
解码过程中,如何判断当前条带是否属于当前编码图像的方法如下:读码流中的一个条带并暂存,然后解码条带头的前几个字节,根据这些信息判断当前条带是否属于当前解码图像,如果属于当前解码图像则要将其条带头中的所有信息全部解出,存放在缓冲区中的某个位置,对条带头中某些参数,比如frame_num,field_pic_flag,bottom_field_flag等对一幅图像中的所有条带来说是一样的,这些参数可放在同一块内存中;对某些参数而言,比如量化参数QP等对同一幅图像的不同条带可能不一样,所以这些参数放在缓冲区中的不同位置,需要使用不同的指针来记录这一位置。对于未解码的条带数据,仍存放在最初存放条带信息的位置,因为解码过程中不同条带数据要不断切换使用,所以也需要不同指针来指示条带数据在内存中的位置。
通过以上说明,在H.264码流中,具体判别图像边界及预读图像数据的方法的流程图如图10所示,具体描述如下:
1)开始,搜索当前图像的第一个NAL单元的起始位置;
2)读当前NAL单元并解码当前NAL单元头;
3)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤4),否则解码该NAL单元信息,并继续搜索下一个NAL单元的起始位置,返回步骤2);
4)解码第一个条带的条带头;
5)将条带头放在条带头缓冲区中,记录存放位置;
6)将第一个条带的条带数据暂存于条带数据缓冲区中,记录存放位置;
7)搜索下一个NAL单元的起始位置;
8)读当前NAL单元并解码单元头;
9)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤10),否则解码该NAL单元信息,返回步骤7);
10)解码当前NAL单元中的条带的条带头中的四个语法元素:first_mb_in slioo,pic_parameter_set_id,Slice_type,frame_num;
11)判断是否满足下述四个条件之一:①当前所读条带的pic_parameter_set_id不等于第一个条带的pic_parameter_set_id;②当前所读条带的first_mb_in_slice等于第一个条带的first_mb_in_slice;③第一个条带的Slice_type大于4且当前所读条带的Slice_type不等于第一个条带的Slice_type(或Slice_type—5);④当前所读条带的frame_num不等于第一个条带的frame_num;若上述四个条件均不满足,说明当前条带属于当前图像,顺序执行步骤12);若上述四个条件至少有一个满足,说明当前条带属于下一幅图像,跳到步骤15);
12)将当前条带的条带头中的剩余信息全部解出;
13)将条带头放在条带头缓冲区中,记录存放位置;
14)将当前条带的条带数据暂存于条带数据缓冲区中,记录存放位置,返回步骤7);
15)当前图像解码,可按照宏块光栅扫描顺序解码当前图像直到解码宏块总数等于一幅图像包含的总宏块数为止。具体如图8所示,包括以下步骤:
1)读码流文件指针返回前一个信息单元结束位置,此时当前图像的所有条带已全部读出;
2)初始化解码宏块序号i=0;
3)解码宏块i,i递增1;
4)判断i是否等于一幅图像包含的总宏块数,若是则当前图像解码结束,否则转步骤3)。上述实施例一所应用的装置如图11所示,整个解码装置包括以下模块和单元:
1.NAL单元搜索模块,搜索NAL单元的起始位置;
2.NAL单元头解码模块,解码NAL单元的头信息;
3.NAL单元类型判别模块,若为VCL NAL单元,则读出该NAL单元中的条带信息,否则解码该NAL单元并继续搜索下一个NAL单元;
4.部分条带头解码模块,解码条带头中的前四个语法元素,包括以下单元:
(1)frame_num解码单元,解码条带头中的语法元素frame_num;
(2)Slice_type解码单元,解码条带头中的语法元素Slice_type;
(3)first_mb_in_slice解码单元,解码条带头中的语法元素first_mb_in_slice;
(4)pic_parameter_set_id解码单元,解码条带头中的语法元素pic_parameter_set_id。
5.条带判别模块,用条带头前四个语法元素判断当前条带是否属于当前图像,若属于则解码条带头剩余字节;否则当前图像所有条带的预读过程结束;
6.条带头剩余字节解码模块,解码条带头的剩余字节;
7.已读出条带缓存模块,包括以下单元:
(1)条带头缓存单元,用来暂存解码后的条带头信息;
(2)条带数据缓存单元,用于暂存读出的条带数据。
8.宏块解码模块,实现解码宏块的功能;
9.环路滤波模块,用来对解码宏块进行滤波;
10.图像显示和存储模块,用于图像的显示和存储。
实施例二:H.264中判断图像边界及预读一幅图像数据的解码
在H.264视频流中,每个条带具有pic_order_cnt_lsb语法元素,用于确定图像的实际显示顺序。对不同解码图像来说,pic_order_cnt_lsb是不同的,于是pic_order_cnt_lsb可作为判断当前条带是否属于当前图像的条件。在H.264视频流中,含有序列参数集(Sequence parameter set)语法结构,这一语法结构规定了同一视频序列(sequence)中所有图像共有的信息,H.264中最多有32个不同的序列参数集,每一幅图像使用哪个序列参数集是由图画参数集(picture parameter set)语法结构中的语法元素seq_parameter_set_id决定的。在序列参数集语法结构中含有语法元素pic_order_cnt_type,只有pic_order_cnt_type等于0时,pic_order_cnt_lsb才会出现在视频码流的条带头中,于是当编码器与解码器一致约定,参数集语法结构中的语法元素pic_order_cnt_type等于0时,只用pic_order_cnt_lsb就可判断当前所读条带是否属于当前图像。
通过上述说明,在视频流中的图像所采用的序列参数集语法结构中的语法元素pic_order_cnt_type等于0的前提下,用pic_order_cnt_lsb判断图像边界及预读图像数据的方法的流程图如图12所示,包括以下步骤:
1)开始,搜索当前图像的第一个NAL单元的起始位置;
2)读当前NAL单元并解码单元头;
3)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤4),否则解码该NAL单元信息,继续搜索下一个NAL单元的起始位置,返回步骤2);
4)解码第一个条带的条带头,
5)将条带头放在条带头缓冲区中,记录存放位置;
6)将第一个条带的条带数据暂存于条带数据缓冲区中,记录存放位置;
7)搜索下一个NAL单元的起始位置;
8)读当前NAL单元并解码单元头;
9)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤10),否则解码该NAL单元信息,返回步骤7);
10)解码当前NAL单元中的条带的条带头中的语法元素直到语法元素pic_order_cnt_lsb解出为止;
11)判断当前所读条带的pic_order_cnt_lsb是否与第一个条带的pic_order_cnt_lsb相同,如果是,则说明当前条带属于当前图像,顺序执行步骤12);否则说明当前条带属于下一幅图像,跳到步骤15);
12)解码当前条带的条带头中的剩余信息,
13)将条带头放在条带头缓冲区中,
14)将当前条带的条带数据暂存于条带数据缓冲区中,记录存放位置,返回步骤7);
15)当前图像解码。该步骤同实施例一。
上述解码方法实施例所应用的装置如图13所示,包括以下模块:
1.NAL单元搜索模块,搜索NAL单元的起始位置;
2.NAL单元头解码模块,解码NAL单元的头信息;
3.NAL单元类型判别模块,若为VCL NAL单元,则读出该NAL单元中的条带信息,否则解码该NAL单元并继续搜索下一个NAL单元;
4.部分条带头解码模块,解码条带头中直到pic_order_cnt_lsb为止的所有语法元素;
5.条带判别模块,若当前条带的pic_order_cnt_lsb等于第一个条带的pic_order_cnt_lsb,则当前条带属于当前图像,解码条带头剩余字节;否则当前图像所有条带的预读过程结束;
6.条带头剩余字节解码模块,解码条带头的剩余字节。
7.已读出条带缓存模块,包括以下单元:
(1)条带头缓存单元,用来暂存解码后的条带头信息;
(2)条带数据缓存单元,用于暂存读出的条带数据。
8.宏块解码模块,实现解码宏块的功能;
9.环路滤波模块,用来对解码宏块进行滤波;
10.图像显示和存储模块,用于图像的显示和存储。
实施例三:H.264中判断图像边界及预读一幅图像数据的解码
在H.264中,NAL类型共有32种取值,当NAL类型等于9时,NAL单元的内容为Accessunit delimiter,此种NAL单元可以被选择用来标示下一幅图像的开始。当Access unitdelimiter NAL单元在码流中出现时,说明码流中接下来的内容属于下一幅图像,所以如果编码方和解码方一致约定,在下一幅图像开始之前总会有Access unit delimiter NAL单元出现的前提下,可以用Access unit delimiter NAL单元判断图像的边界。
用Access unit delimiter NAL单元在码流中的出现判断图像边界及预读图像数据的方法的流程图如图14所示,包括以下步骤:
1)搜索当前图像的第一个NAL单元的起始位置;
2)读当前NAL单元并解码单元头;
3)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤4),否则解码该NAL单元信息并存储,继续搜索下一个NAL单元的起始位置,返回步骤2);
4)解码当前条带的条带头,将条带头放在条带头缓冲区中,记录存放位置;
5)将当前条带的条带数据暂存于条带数据缓冲区中,记录存放位置;
6)搜索下一个NAL单元的起始位置;
7)读当前NAL单元并解码单元头;
8)判断当前NAL单元是否为VCL NAL单元,如果是,则返回步骤4),若为Access unitdelimiter NAL单元则执行步骤9),否则解码NAL单元剩余信息并存储后返回步骤6);
9)当前图像解码。该步骤同实施例一。
上述解码方法实施例所应用的装置示意图如图15所示,包括以下模块:
1.NAL单元搜索模块,搜索NAL单元的起始位置;
2.NAL单元头解码模块,解码NAL单元的头信息;
3.NAL单元类型判别模块,若为Access unit delimiter NAL单元,则表明当前图像结束;
4.条带头解码模块,解码条带头信息;
5.已读出条带缓存模块,包括以下单元:
(1)条带头缓存单元,用来暂存解码后的条带头信息;
(2)条带数据缓存单元,用于暂存读出的条带数据。
6.宏块解码模块,实现解码宏块的功能;
7.环路滤波模块,用于对解码宏块进行滤波;
8.图像显示和存储模块,用于图像的显示和存储。
Claims (14)
1、一种对于视频码流判断图像边界及预读图像数据的解码方法,其特征在于包括以下步骤:
1)搜索信息单元的起始位置,解码信息单元单元头信息;
2)信息单元类型判别步骤,若为条带单元,则读出该信息单元中的条带信息,否则解码该非条带单元并继续搜索下一个信息单元;
3)解码条带头的部分或全部字节,判断当前条带是否属于当前图像;
4)若属于则解码条带头剩余字节并继续读当前图像的下一个条带;否则当前图像所有条带的预读过程结束;
5)已读出条带缓存步骤,分别暂存解码后的条带头信息和条带数据;
6)根据所述暂存条带头信息和条带数据,进行当前图像解码。
2、根据权利要求1所述的解码方法,其特征在于:在所述步骤2)信息单元类型判别过程中,若信息单元为标明图像边界的信息单元,则当前图像所有条带的预读过程结束。
3、根据权利要求1所述的解码方法,其特征在于:所述信息单元为NAL单元,所述条带单元为VCL NAL单元。
4、根据权利要求1所述的解码方法,其特征在于所述解码方法具体包括以下步骤:
1)搜索当前图像的第一个信息单元的起始位置;
2)读当前信息单元并解码信息单元头;
3)判断当前信息单元是否为条带单元,若为条带单元,则跳到步骤4),否则解码该非条带单元并搜索下一个信息单元的起始位置,返回步骤2);
4)解码第一个条带的条带头的全部信息;
5)将解出的第一个条带头放在条带头缓冲区中,记录存放位置;
6)将第一个条带的条带数据暂存于条带数据缓冲区,记录存放位置;
7)搜索下一个信息单元的起始位置;
8)读当前信息单元并解码当前信息单元头;
9)判断当前信息单元是否为条带单元,若是则继续执行后续步骤;否则解码该非条带单元信息,返回步骤7);
10)解码当前条带单元中的条带头的前几个字节以获得该条带的是否属于当前图像的信息;
11)根据读取的当前条带信息和第一个条带的信息判断当前条带是否属于当前图像,若属于则继续执行后续步骤,否则跳到步骤15);
12)解码条带头的剩余信息;
13)将解出的条带头放在条带头缓冲区中,记录存放位置;
14)将当前条带单元的条带数据暂存于条带数据缓冲区中,记录存放位置,返回步骤7);
15)当前图像解码。
5、根据权利要求4所述的的解码方法,其特征在于:所述步骤10)中,解码当前NAL单元中的条带的条带头中的信息为以下四个语法元素:
first_mb_in_slice,pic_parameter_set_id,Slice_type,frame_num。
6、根据权利要求5所述的的解码方法,其特征在于:所述步骤11)中根据读取的当前条带信息和第一个条带的信息判断当前条带是否属于当前图像,具体包括:a.判断是否满足下述四个条件之一:①当前所读条带的pic_parameter_set_id不等于第一个条带的pic_parameter_set_id;②当前所读条带的first_mb_in_slice等于第一个条带的first_mb_in_slice;③第一个条带的Slice_type大于4且当前所读条带的Slice_type不等于第一个条带的Slice_type或Slice_type—5;④当前所读条带的frame_num不等于第一个条带的frame_num;b.若上述四个条件均不满足,说明当前条带属于当前图像,顺序执行步骤12);c.若上述四个条件至少有一个满足,则跳至步骤15)。
7、根据权利要求4所述的的解码方法,其特征在于:所述步骤10)中,解码当前NAL单元中的条带的条带头中的语法元素直到语法元素pic_order_cnt_lsb解出为止,所述步骤11)中判断当前所读条带的pic_order_cnt_lsb是否与第一个条带的pic_order_cnt_lsb相同,如果是,则顺序执行步骤12);否则跳到步骤15)。
8、根据权利要求4所述的解码方法,其特征在于:所述步骤9)中,当当前信息单元不是条带单元时,还包括一判断当前信息单元是否为标明图像边界的单元的步骤,若是标明图像边界的单元,则跳至步骤15),否则解码该非条带单元信息,返回步骤7)。
9、根据权利要求2所述的解码方法,其特征在于所述解码方法具体包括以下步骤:
1)搜索当前图像的第一个NAL单元的起始位置;
2)读当前NAL单元并解码单元头;
3)判断当前NAL单元是否为VCL NAL单元,如果是,则执行步骤4),否则解码该NAL单元信息并存储,继续搜索下一个NAL单元的起始位置,返回步骤2);
4)解码当前条带的条带头,将条带头放在条带头缓冲区中,记录存放位置;
5)将当前条带的条带数据暂存于条带数据缓冲区中,记录存放位置;
6)搜索下一个NAL单元的起始位置;
7)读当前NAL单元并解码单元头;
8)判断当前NAL单元是否为VCL NAL单元,如果是,则返回步骤4),若为Access unitdelimiter NAL单元则执行步骤9),否则解码NAL单元剩余信息并存储后返回步骤6);
9)当前图像解码。
10、权利要求1至9中任一权利要求所述的解码方法,其特征在于:所述当前图像解码包括以下步骤:
1)将读码流文件指针返回前一个信息单元结束位置,此时当前图像的所有条带已全部读出;
2)初始化解码宏块序号i=0;
3)解码宏块i,i递增1;
4)判断i是否等于一幅图像包含的总宏块数,若是则当前图像解码结束,否则转步骤3)。
11、一种对于视频码流判断图像边界及预读图像数据的解码装置,其特征在于包括以下模块:
信息单元搜索模块,用于搜索信息单元的起始位置;
信息单元单元头解码模块,用于解码信息单元单元头信息;
信息单元类型判别模块,若为条带单元,则读出该信息单元中的条带信息,否则解码该非条带单元并继续搜索下一个信息单元;
部分条带头解码模块,解码条带头的部分字节,用于判断当前条带是否属于当前图像;
条带判别模块,判断当前条带是否属于当前图像,若属于则解码条带头剩余字节并继续读当前图像的下一个条带;否则当前图像所有条带的预读过程结束;
剩余条带头解码模块,解码条带头的剩余字节;
已读出条带缓存模块,包括以下单元:
条带头缓存单元,用来暂存解码后的条带头信息,
条带数据缓存单元,用于暂存读出的条带数据,
宏块解码模块,实现解码宏块的功能;
图像后处理模块,用于按照光栅扫描顺序进行后续操作;
图像显示和存储模块,用于图像的显示和存储。
12、根据权利要求11所述的解码装置,其特征在于:所述部分条带头解码模块,用于解码条带头中的前四个语法元素,包括以下单元:
frame_num解码单元,解码条带头中的语法元素frame_num;
Slice_type解码单元,解码条带头中的语法元素Slice_type;
first_mb_in_slice解码单元,解码条带头中的语法元素first_mb_in_siice;
pic_parameter_set_id解码单元,解码条带头中的语法元素pic_parameter_set_id;
所述条带判别模块,用条带头前四个语法元素判断当前条带是否属于当前图像,若属于则解码条带头剩余字节;否则当前图像所有条带的预读过程结束。
13、根据权利要求11所述的解码装置,其特征在于:所述部分条带头解码模块,用于解码条带头中直到pic_order_cnt_lsb为止的所有语法元素;
所述条带判别模块,用于判断若当前条带的pic_order_cnt_lsb等于第一个条带的pic_order_cnt_lsb,则当前条带属于当前图像,继续解码条带头剩余字节;否则当前图像所有条带的预读过程结束。
14、一种对于视频码流判断图像边界及预读图像数据的解码装置,其特征在于包括以下模块:
NAL单元搜索模块,搜索NAL单元的起始位置;
NAL单元头解码模块,解码NAL单元的头信息;
NAL单元类型判别模块,若为Access unit delimiter NAL单元,则表明当前图像结束;
条带头解码模块,解码条带头信息;
已读出条带缓存模块,包括以下单元:
条带头缓存单元,用来暂存解码后的条带头信息;
条带数据缓存单元,用于暂存读出的条带数据;
宏块解码模块,实现解码宏块的功能;
环路滤波模块,用于对解码宏块进行滤波;
图像显示和存储模块,用于图像的显示和存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510110913 CN100481953C (zh) | 2005-11-29 | 2005-11-29 | 一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510110913 CN100481953C (zh) | 2005-11-29 | 2005-11-29 | 一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1980392A CN1980392A (zh) | 2007-06-13 |
CN100481953C true CN100481953C (zh) | 2009-04-22 |
Family
ID=38131358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510110913 Expired - Fee Related CN100481953C (zh) | 2005-11-29 | 2005-11-29 | 一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100481953C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102595123B (zh) * | 2011-01-14 | 2014-06-04 | 华为技术有限公司 | 条带编码方法及装置、条带解码方法及装置 |
US9001883B2 (en) * | 2011-02-16 | 2015-04-07 | Mediatek Inc | Method and apparatus for slice common information sharing |
TWI650995B (zh) * | 2012-01-30 | 2019-02-11 | 南韓商三星電子股份有限公司 | 視訊解碼裝置、視訊編碼方法及非暫態電腦可讀記錄媒體 |
CN103686179B (zh) * | 2012-09-26 | 2019-05-07 | 中兴通讯股份有限公司 | 使用参数集的编码、解码方法及装置、电子设备 |
EP3381190B1 (en) * | 2016-08-04 | 2021-06-02 | SZ DJI Technology Co., Ltd. | Parallel video encoding |
CN110213650B (zh) * | 2019-05-17 | 2022-02-15 | 芯原微电子(成都)有限公司 | 一种软件快速搜索视频码流中同步字的方法及装置 |
CN110765138B (zh) * | 2019-10-31 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
-
2005
- 2005-11-29 CN CN 200510110913 patent/CN100481953C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1980392A (zh) | 2007-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103718557B (zh) | 用于解码视频的方法 | |
CN101228795B (zh) | 针对加权预测的可分级视频解码方法及设备 | |
CN101653000B (zh) | 用于包含多视点视频编码的参考图像管理的方法 | |
KR101023365B1 (ko) | 화상 복호 장치 및 화상 복호 방법 | |
CN107995494B (zh) | 视频图像数据的压缩方法与解压方法、计算机装置、计算机可读存储介质 | |
CN104106264B (zh) | 元数据辅助的视频解码 | |
CN101485208A (zh) | 多视图视频的编码和解码方法及装置 | |
JP3544852B2 (ja) | 映像符号化装置 | |
CN100508585C (zh) | 用于控制数字视频比特流逆向播放的装置和方法 | |
US20070140348A1 (en) | Video encoding method and apparatus, and video decoding method and apparatus | |
CN1121673A (zh) | 视频解压缩处理器中存储器的定址方法及装置 | |
US20060171680A1 (en) | Image processing apparatus and method | |
CN103281529A (zh) | 图像信息解码设备和方法、图像信号编码设备和方法及程序 | |
MXPA05004627A (es) | Almacenamiento de imagenes en memoria intermedia para referencias de prediccion y para visualizacion. | |
CN101455085A (zh) | 图像解码装置 | |
CN101115195B (zh) | 视频码流的宏块级耦合的解码和环路滤波方法和装置 | |
CN100481953C (zh) | 一种对于视频码流判断图像边界及预读图像数据的解码方法和装置 | |
CN101472176A (zh) | 基于边界强度因子进行去块效应滤波的解码方法和装置 | |
CN101005627B (zh) | 图像译码方法、图像译码装置 | |
US6178203B1 (en) | Method and apparatus for two-row decoding of MPEG video | |
CN100361152C (zh) | 检测水印的方法和设备 | |
CN117221604B (zh) | 用于视频编解码中的高级语法的方法和设备 | |
CN100488253C (zh) | 视频码流的跨多个条带的解码方法及其装置 | |
JPH1023424A (ja) | 動画像圧縮データ復号装置 | |
JP5317738B2 (ja) | 記録装置 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090422 Termination date: 20111129 |