CN101998141A - 视频数据的打包、编解码方法及装置及系统 - Google Patents
视频数据的打包、编解码方法及装置及系统 Download PDFInfo
- Publication number
- CN101998141A CN101998141A CN201010135828XA CN201010135828A CN101998141A CN 101998141 A CN101998141 A CN 101998141A CN 201010135828X A CN201010135828X A CN 201010135828XA CN 201010135828 A CN201010135828 A CN 201010135828A CN 101998141 A CN101998141 A CN 101998141A
- Authority
- CN
- China
- Prior art keywords
- decoding
- strip
- finished
- slice
- bit stream
- 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 80
- 238000004806 packaging method and process Methods 0.000 title abstract description 10
- 239000000945 filler Substances 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 13
- 238000009792 diffusion process Methods 0.000 abstract description 3
- 238000012856 packing Methods 0.000 description 34
- 238000012545 processing Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种视频数据的打包方法及装置,其主要包括:首先,获取待发送的条带集,所述的条带集包括一个或多个条带;之后,根据条带集中的各条带之间的编码方式对条带集中包含的一个或多个条带进行打包操作。本发明实施例由于采用了根据条带之间的编码方式对视频流进行打包处理的实现方案,从而可以保证在通过对打包后的数据包进行视频流传输的过程中,可以有效处理网络丢包及误差扩散的现象,提高视频编解码系统的性能。
Description
技术领域
本发明涉及视频通信技术领域,尤其涉及一种视频数据传输技术。
背景技术
在视频编解码系统中,可以将图像划分成若干图像块或者宏块,并以块或宏块为单位进行运动估计,将运动估计后的残差进行变换、量化,最后对量化系数进行熵编码,将熵编码后得到的信息写入码流中。
在码流中包含了连续图像编码信息,并可称其为视频流。为将所述视频流发送给解码端,则在编码端还需要对所得到的视频流经过数据分组、归类等打包处理将其分成若干含有编码数据的数据包,以便通过数据包经特定网络将相应的视频流传输至解码端。其中,打包处理的目的在于将视频流进行分割以便其可以适合在相应网络中传输。
在视频编解码系统中,解码端在接收到编码端发来的视频流对应的数据包之后会以一定规则将数据包中的内容以一定方式组合起来,并经反量化、反变换、运动补偿处理后得到重建图像。
在视频编码过程中,在将图像分割成宏块后还可以将宏块以一定组织方式组合在一起称之为slice(条带),且相应的条带可以组合为相应的条带集。此时,若可以针对相应的条带或条带集采用合理的打包处理方式,则将有效处理网络丢包及误差扩散的现象。
目前,在H.264标准,针对条带及条带集采用的打包方式包括:将编码条带数据得到的码流将被封装在一个NAL(网络提取层)单元中,并将单个NAL单元打成一个数据包。在AVS标准中,采用的打包方式包括:首先将码流中每两个相邻的起始码前缀(0x000001)之间的数据转换为一个NAL单元,然后,再将单个NAL单元打成一个数据包。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
在上述针对视频流的打包方式中,未考虑条带的划分方式及图像中条带的组合关系等因素,使得相应的打包方式处理网络丢包及抗误差的能力大大降低,进而导致视频传输性能下降。
发明内容
本发明的实施例提供了一种视频流传输的方法及装置,以有效提高抗网络丢包及抗误差的能力,及解码性能,改善视频传输效果。
本发明实施例提供了一种视频数据的打包方法,包括:
获取待发送的条带集,所述的条带集包括一个或多个条带;
根据条带集中的各条带之间的编码方式对条带集中包含的一个或多个条带进行打包操作。
本发明实施例提供了一种视频数据的打包装置,包括:
条带集获取单元,用于获取待发送的条带集,所述的条带集包括一个或多个条带;
打包操作单元,用于根据所述条带集获取单元获取的条带集中的各条带之间的编码方式对条带集中包含的一个或多个条带进行打包操作。
一种视频编码的方法,包括:
在编码条带过程中,在宏块数据编码结束后写入熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块。
一种视频编码装置,包括:
条带编码单元,用于对当前条带进行编码操作;
熵编码填充符号写入单元,用于在所述条带编码单元编码条带过程中,在宏块数据编码结束后写入熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块。
一种视频解码的方法,包括:
在解码条带过程中,在宏块数据解码结束后读取熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;
读取熵编码填充符号后,检测条带解码是否结束。
一种视频解码装置,包括:
熵编码填充符号读取单元,用于在解码条带过程中,在宏块数据解码结束后读取熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;
判断单元,用于在所述熵编码填充符号读取单元读取到的熵编码填充符号后,检测条带解码是否结束。
一种视频编码的方法,包括:
在条带熵编码结束后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
一种视频编码装置,包括:
条带编码单元,用于对当前条带进行编码操作;
码流填充单元,用于在所述条带编码单元结束针对条带的熵编码后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
一种视频解码的方法,包括:
在解码条带过程中,在宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束,所述指定位置根据编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目确定。
一种视频解码装置,包括:
解码单元,用于对当前条带进行解码操作;
解码判断单元,用于在所述解码单元在完成宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束,其中,所述指定位置根据编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目确定。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例由于采用了根据条带之间的编码方式对视频流进行打包处理的实现方案,从而可以保证在通过对打包后的数据包进行视频流传输的过程中,可以有效处理网络丢包及误差扩散的现象,提高视频编解码系统的性能。本发明实施例中,由于在编码条带过程中,向码流中写入了相应的结束参数信息,从而使得在解码端可以快速、准确识别出条带结束点,从而提高解码的准确性,进一步提高了视频编解码系统的性能。
附图说明
图1为本发明实施例中的条带集划分示意图;
图2为本发明实施例提供的装置的结构示意图;
图3为本发明实施例提供的一种编解码装置及系统的结构示意图;
图4为本发明实施例提供的另一种编解码装置及系统的结构示意图。
具体实施方式
本发明实施例中,在获取待发送的包含一个或多个条带的条带集后,可以根据条带集中的各条带之间的编码方式对条带集中包含的一个或多个条带进行打包操作。其中,所述的编码方式可以但不限于包括独立编码方式或非独立编号方式等。
本发明实施例中,具体可以根据条带集参数的设置情况以及网络传输条件等,以条带集或者条带集中的若干条带为单位进行打包,所述的条带集中包含一个或多个条带,所述的条带可以包括按照扫描顺序连续的宏块,例如,按照光栅扫描顺序连续的宏块。其中,相应的条带集参数可以包括但不仅限于:用于标识当前条带是否属于当前条带集的参数,或者,用于标识当前条带集中条带是否具有编解码独立性的参数(即对条带编码过程中是否采用了独立编码方式进行编码的参数),以及其它与当前条带集打包相关的参数,等等。
本发明实施例中,根据条带集参数对条带集进行打包操作的过程具体可以包括:若条带集中均为采用独立编码方式编码的条带,则将条带集中的各条带分别各自独立封装于一个数据包中;若条带集中包含至少一个采用非独立编码方式编码的条带,即条带集中包含未采用独立编码方式编码的条带,则将条带集中的各条带组合封装于一个数据包中。
在上述打包处理过程中,当需要在一个数据包中封装一个条带集中的多个条带时,则还可以根据当前网络带宽情况进行打包处理,具体可以为:首先,可以根据当前网络带宽确定一个数据包中可以封装的条带数目,之后,根据所述可以封装的条带数目,将条带集中的条带封装于一个或多个符合当前网络带宽传输要求的数据包中。
进一步地,本发明实施例中,可以采用的打包方式包括:
当网络带宽可保证将条带集中所有条带一起打包传输时,则根据当前条带集参数的设置,可以将条带集中的所有条带作为一个整体进行打包。当网络带宽不能保证将条带集中所有条带一起打包时,或者,根据当前条带集参数确定不适合将整个条带集一起打包时,则可以根据网络带宽的情况对条带集进行适当分组,将条带集中的若干条带分开进行打包,即以条带集中的若干个条带为单位进行打包。
其中,在当网络带宽可保证条带集中所有条带一起打包的情况下,若当前条带集中的至少一个条带与其他条带之间不具有编解码独立性(即未采用独立编码方式进行编码,而是采用条带之间依赖其他条带的数据的编码方式进行编码),则可以将当前条带集中的所有条带作为一个整体进行打包。否则,即当前条带集中所有条带之间具有编码独立性,可以将条带集中的各个条带单独进行打包,即在丢掉单个包时也不影响针对条带集中其它数据包的解码,以保证相应的抗误码性能。
本发明实施例中,若需要对条带集中多于一个数目的条带一起打包,则相对于现有技术中采用的打包处理方式,需要在原有基于单个条带打包模式的基础上进行相应的操作,以适应新的打包形式的需求;例如,对于基于起始码前缀的码流(如AVS视频流等),可以不再将条带之间的起始码分割去掉,只去掉第一个条带前的起始码,对于需要封装于同一数据包中的该条带集中的其他条带,则保留相应的条带起始码,之后,将多个条带映射成一个NAL单元;或者,对于基于NAL单元的码流,不再将单个条带映射成一个NAL单元,而是将需要的多个条带一起组合成一个NAL单元。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括本发明实施例中描述的全部或部分处理步骤,其中,所述的存储介质可以但不限于为:ROM/RAM、磁碟或光盘等。
为便于对本发明实施例的理解,下在将结合附图对本发明实施例的具体实施方式进行详细说明。
假设,采用以下两个相关参数标识条带集:
(1)slice_set_index参数:即条带集序号,用于标识图像内的不同条带集,具有相同slice_set_index值的条带属于同一条带集;
(2)slice_independency参数:即条带独立性标志,用于标识当前条带集内各条带是否具有编解码独立性,例如,可以采用slice_independency值为1时表示当前条带内宏块编解码时只能使用本条带内的数据,slice_independency值为0时表示当前条带内宏块编解码时可以使用本幅图像内具有相同slice_set_index的条带数据,即同一条带集中的其他条带对应的数据。
相应的条带集划分的方式可以参照图1所示,其中,A,B0,C,B1,D,B2,E为各个条带;Row 0~Row 7为图像中的8个宏块行,0~7为宏块行在图像中的垂直位置;Col 0~Clo 7为图像中8个宏块列,0~7为宏块列在图像中的水平位置。
假设A,C,D同属一个条带集,B0,B1,B2属于另一个条带集,条带E属于第三个条带集;则可以令A,C,D三个条带slice_set_index为0,B0,B1,B2三条带slice_set_index为1;E的slice_set_index为2;
各条带对应的slice_independency值可以设置为:A,C,D三个条带的slice_independency值分别设置为1,1,1,B0,B1,B2三个条带的slice_independency值分别设置为:0,0,0;条带E独自属于一个条带集,故其slice_independency值可以设置为1。
根据上述slice_independency值的设置可知:A,C,D三个条带中任一条带内宏块的解码处理不能使用其他两个条带的数据;B0,B1,B2三个条带中任一条带内宏块的解码处理可以使用其他两个条带的数据;E条带内宏块的解码处理不能使用其它条带的数据。
针对图1所示的图像,当网络带宽可保证条带集中所有条带一起打包时,具体可以采用以下打包处理方式对各条带进行打包:
(1)针对条带A,C,D的打包方式
由于条带集1中的三个条带A,C,D编解码具有独立性,因此可以将A,C,D三个条带任意组合进行打包;若为了保证一定的抗误码性能,则可以将A,C,D分开进行打包,这样,若其中任意一个包丢失将不会影响针对其它包的解码操作;
(2)针对条带B0,B1,B2的打包方式
由于条带集2中的三个条带B0,B1,B2编解码不具有独立性,因此可以将B0,B1,B2三个条带整体进行打包;例如,对于AVS的码流,只需将B0条带码流前的起始码前缀去掉,到B2条带的数据结束为止,映射成一个NAL单元;对于以NAL为单元的H.264标准中,则可以将条带B0,B1,B2的数据组合成一个NAL单元;
(3)针对条带E的打包方式
由于条带E独自成为一个条带集,且其编码具有独立性,故可以对其单独进行打包。
本发明实施例还提供了一种视频数据的打包装置,其具体实现结构如图2所示,可以包括以下处理单元:
(1)条带集获取单元,用于获取待发送的条带集,所述的条带集包括一个或多个条带,其中,所述的条带可以为按照扫描顺序连续的宏块,如按照光栅扫描顺序连续的宏块等;
(2)打包操作单元,用于根据所述条带集获取单元获取的条带集中的各条带之间的编码方式对条带集中包含的一个或多个条带进行打包操作;
该打包操作单元具体可以包括以下至少一个单元:
第一打包处理单元,用于在条带集中均为采用独立编码方式编码的条带时,将条带集中的各条带分别各自独立封装于一个数据包中;
第二打包处理单元,用于在条带集中包含至少一个采用非独立编码方式编码的条带(即条带集中包含未采用独立编码方式编码的条带)时,将条带集中的各条带组合封装于一个数据包中。
可选地,为灵活适应网络带宽对数据传输的要求,相应的第二打包处理单元具体可以包括以下单元:
条带数目确定单元,用于根据当前网络带宽确定一个数据包中可以封装的条带数目,以便于根据该条带数目确定数据包的大小;
打包执行单元,用于根据所述条带数据确定单元确定的数据包中可以封装的条带数目,将条带集中的条带封装于一个或多个数据包中,即以所述条带数目个条带为单位进行数据包的封装操作。
可选地,针对不同的码流,该第二打包处理单元可以包括:
基于起始码前缀的码流打包单元,用于将多个条带中的第一个条带的起始码前缀去掉,其他条带的起始码前缀保留,再将多个条带映射称为一个NAL单元;
或者,
基于NAL单元的码流打包单元,用于将需要组合打包的若干个条带数据组合成一个NAL单元。
另外,在一些视频编解码技术中,在编码过程中,写入码流中的条带数据的比特长度具有不可预测的特性,从而使得解码端无法准确获知码流中条带数据的长度,使得解码过程无法可靠地进行解码操作
为此,本发明实施例还提供了一种视频数据的编解码方案,以使得在视频数据处理过程中,可以在对相应的数据进行编码或解码处理过程中,能够准确确定当前条带是否编码或解码结束。
现有技术中,在CABAC编码条带结束时,需要在条带结尾写入1比特结束当前条带编码,若只在条带编码结束时写入该比特,解码端只能在条带最后一个宏块解码结束后读取该比特,但解码端无法获知当前解码宏块是否是当条带的最后一个宏块,故只能在每个宏块解码结束后读取一比特,然后进行条带解码结束判断。根据CABAC编解码特性,若在错误的位置读取该比特则可能导致比特流指针偏移错误,从而可能导致条带解码提前(即仍存在未被解码的宏块的情况)结束。
为此,本发明实施例中,在编码端编码条带过程中,可以在宏块数据编码结束后写入熵编码填充符号,其中,相应的宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块,即除了需要在条带的最后一个宏块编码结束后写入熵编码填充符号外,还需要在条带中的最后一个宏块之前的至少一个宏块编码结束后写入相应的熵编码填充符号。
在上述写入熵编码填充符号的操作过程中,对于条带中的最后一个宏块之前的至少一个宏块,具体可以在编码一宏块或一宏块行或指定数目宏块后,写入熵编码填充符号。其中,若采用指定数目宏块后写入相应的熵编码填充符号,则可以根据在编解码端预先设置该指定数目宏块的具体数目。
在写入熵编码填充符号的操作过程中,对于条带中的最后一个宏块,在在码流中写入的熵编码填充符号后,若字节不对齐,则还可以进行比特填充处理,并在填充至字节对齐位置处结束编码。例如,在写入一比特’1’后,判断字节是否对齐,若字节不对齐则写入比特’0’至字节对齐为止结束编码,若字节对齐,则结束条带编码。
相应的熵编码填充符号可以为一比特填充符号,也可以为多比特填充符号。可选地,还可以将条带中的最后一个宏块之前的宏块对应的熵编码填充符号的值与条带中的最后一个宏块对应的熵编码填充符号的值相反;例如,若条带最后一编码宏块(即最后一个宏块)的熵编码填充符号的值为预先设定好的数值,且为’0’或’1’;则条带非最后一编码宏块(即最后一个宏块之前的宏块)的所述熵编码填充符号的值为预先设定好的数值与条带最后一编码宏块的所述熵编码填充符号的值相反,为’1’或’0’。
与上述编码端处理过程对应,本发明实施例中,在解码端解码条带过程中,可以在宏块数据解码结束后读取熵编码填充符号,同样,相应的宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;并在读取到的熵编码填充符号后,检测条带解码是否结束,若条带解码未结束,则继续解码条带中的下一个宏块,直到条带解码结束。
其中,检测条带解码是否结束的操作过程可以采用以下任一处理方式:
(1)处理方式一
若当前比特流指针位于字节对齐处,则判断比特流指针下一字节对齐处是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针下一字节对齐处是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;
(2)处理方式二
若当前比特流指针位于字节对齐处,则判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则条带解码结束,否则,条带解码未结束;
(3)处理方式三
若当前比特流指针位于字节对齐处,则判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则判断比特流指针下一字节对齐处是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针下一字节对齐处是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;若不等于填充模板,则条带解码未结束。
下面将对该实施例的具体实现过程进行详细地说明。
(1)编码端
在编码端,针对一宏块或一宏块行或指定数目宏块后编码结束之后写入一比特信息作为CABAC填充比特(即熵编码填充符号),该CABAC填充比特可以记为:cabac_mb_stuffing_bit。
在编码端,若条带编码结束,则执行条带编码结束的操作,该条带编码结束的操作过程记为:is_end_of_slice();该is_end_of_slice()的具体过程可以包括:在条带数据结尾写入1比特’1’,并判断字节是否对齐,若字节已对齐则结束当前条带编码,否则,填充比特’0’至字节对齐为止条带编码结束。
其中,编码端在条带中的最后一个宏块编码结束后写入的CABAC填充比特的值为预先约定好的数值,可以为’0’或’1’,条带中的其它宏块编码结束时所写入的CABAC填充比特数值则不做规定,若为提高编码效率,则条带中的其它宏块编码结束时所写入的数值可以与条带中的最后一个宏块对应的CABAC填充比特数值相反。例如,条带中最后一个宏块的CABAC填充比特数值为’1’,则条带其它宏块的CABAC填充比特的值应为’0’。
(2)解码端
在解码端,解码完一宏块或一宏块行或指定数目宏块后读取所述CABAC填充比特cabac_mb_stuffing_bit,并执行解码端条带判断操作is_end_of_slice(),该过程具体可以包括:若当前字节已对齐则判断当前比特流指针后32位是否为0x80000001(即1个字节加了24比特的起始码),若是,则当前条带解码结束,否则,继续解码下一宏块;若当前字节未对齐,则判断当前比特流指针后至字节对齐处的内容是否等于填充模板stuffing pattern并且从字节对齐处开始的24比特是否为起始码0x000001,若是,则当前条带解码结束,否则,继续解码下一宏块,其中,所述stuffing pattern为1<<(7-n),其中n为码流指针在当前字节的位置偏移,数值范围为0~7。
通过上述处理过程可以看出,由于编码端在针对一个宏块或一个宏块行或指定数目的宏块编码结束后写入了相应的CABAC填充比特,使得在解码端执行的针对一个宏块或一个宏块行或指定数目的宏块解码结束后可以读取相应的CABAC填充比特,因而,不会导致条带中的最后一个宏块(即条带结束宏块)的编码及解码特殊化。这样,当解码端解码完一个宏块或一个宏块行或指定数目的宏块且读取完相应的CABAC填充比特后,比特流指针位置与编码端的一致,故可以使用采用上述is_end_of_slice()操作进行条带解码结束判断,并可以保证判断结果的准确性。
本发明实施例还提供了一种视频编码装置,其具体实现结构如图3所示,可以包括:
条带编码单元501,用于对当前条带进行编码操作;
熵编码填充符号写入单元502,用于在所述条带编码单元501编码条带过程中,在宏块数据编码结束后写入熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块。其中,相应的熵编码填充符号可以但不限于为一比特信息,且对于条带中的最后一个宏块之前的至少一个宏块,可以在编码一宏块或一宏块行或指定数目宏块后,写入相应的熵编码填充符号。。
本发明实施例还提供了一种视频解码装置,其具体实现结构仍参照图3所示,可以包括:
熵编码填充符号读取单元503,用于在解码条带过程中,在宏块数据解码结束后读取熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;
判断单元504,用于在所述熵编码填充符号读取单元503读取到的熵编码填充符号后,检测条带解码是否结束;
进一步地,该判断单元具体可以包括:
第一判断操作单元5041,用于在当前比特流指针位于字节对齐处的情况下,判断比特流指针下一字节对齐处是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针下一字节对齐处是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;
第二判断操作单元5042,用于在当前比特流指针位于字节对齐处的情况下,判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则条带解码结束,否则,条带解码未结束;或者,第三判断操作单元5043,用于在当前比特流指针位于字节对齐处的情况下,判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则通知所述第一判断操作单元;若不等于填充模板,则条带解码未结束。
本发明实施例还提供了编解码系统,仍参照图3所示,由相应的的视频编码装置及相应的视频解码装置组成,且相应的视频编码装置及视频解码装置具体采用的编码及解码过程在之前的方法实施例中已经详细描述,故在此不再一一详述。
本发明实施例中,为使得解码端能够正确解码,还提供了一种视频编解码处理方案。在该方案中:
(1)编码端
编码端在条带熵编码结束后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
进一步地,在条带数据码流的填充操作过程中,可以先计算上述可能写入码流的最大比特数目减去条带编码结束操作写入码流中的比特数目后获得的差值,之后,在码流中填充该差值对应的比特数目;例如,可以使用比特’0’或’1’进行相应的填充条带数据的操作。
(2)解码端
解码端在解码条带过程中,在宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束(即是否已经到达条带结尾处理),其中,相应的指定位置为比特流指针当前位置之后的若干指定比特位,且相应的若干指定比特位即为编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目。可选地,在解码端,该若干指定比特位可以为预先设定好的数值。
在完成条带解码是否结束的判断后,便可以根据相应的检测判断结果做进一步地条带解码操作。
以CABAC编码为例,本发明实施例在编码端具体可以根据CABAC编码特性计算出条带编码结束时写入编码结束符号后可能写入码流的最大比特数目,之后,编码端在针对条带的各个宏块进行编码过程中,若当前编码宏块为条带的最后一个宏块,则根据上述可能写入码流的最大比特数目填充码流,其中,填充写入码流的比特数值(“0”或“1”)可由编码端自行决定,然后进行is_end_of_slice()操作。
对应的,仍以CABAC解码为例,在解码端解码条带,并解码完一宏块后,在比特流指针所指当前位置之后若干比特位开始进行is_end_of_slice()操作,以判断条带解码是否结束,相应的若干比特位为上述可能写入码流的最大比特数目。
采用上述编解码方案的原理在于:CABAC编解码的算术引擎精度是有限的,因此条带编码结束写入编码结束符号后算术引擎所能写入码流中的比特数目是有限的。根据这一特性在该实施例中便可以在条带编码结束时写入额外的填充比特,这样,解码端解码完一个宏块后便可以获知比特流指针需从何处开始进行条带解码结束判断。例如,可能写入码流的最大比特数目为34,编码端条带编码结束写入结束符号后,算术引擎向码流中写入了3比特信息,为此,编码端再此之后再额外写入34-3=31比特信息;这样,解码端每解码完一个宏块后,相应的比特流指针便可以从当前位置34个比特为之后进行条带解码结束判断,从而可以准确判断当前条带解码是否结束。
本发明实施例还提供了一种视频编码装置,其具体实现结构如图4所示,具体可以包括:
条带编码单元601,用于对当前条带进行编码操作;
码流填充单元602,用于在所述条带编码单元601结束针对条带的熵编码后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
对应的,本发明实施例还提供了一种视频解码装置,其具体实现结构仍参照图4所示,具体可以包括:
解码单元603,用于对当前条带进行解码操作;
解码判断单元604,用于在所述解码单元603在完成宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束,其中,所述指定位置根据编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目确定。
本发明实施例还提供了编解码系统,仍参照图4所示,由相应的视频编码装置及相应的视频解码装置组成,且相应的视频编码装置及视频解码装置具体采用的编码及解码过程在之前的方法实施例中已经详细描述,故在此不再一一详述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
综上所述,由于采用了根据条带集参数(即条带集编码方式)对包含一个或多个条带的条带集进行打包处理,从而可以提高抗网络丢包及抗误差的能力,改善视频传输效果;例如,当条带集中的各个条带之间采用独立编码方式进行编码时,则可以将条带集中的各条带分别打包到不同的数据包中,从而可以提高视频传输过程中的抗丢包的能力。进一步地,在将多个条带打包到一个数据包的过程中还可以根据网络带宽进行打包,从而使得打包后的数据包可以很好地适应网络传输环境。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (17)
1.一种视频编码的方法,其特征在于,包括:
在编码条带过程中,在宏块数据编码结束后写入熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块。
2.根据权利要求1所述方法,其特征在于,所述写入熵编码填充符号的操作包括:
对于条带中的最后一个宏块之前的至少一个宏块,在编码一宏块或一宏块行或指定数目宏块后,写入所述熵编码填充符号。
3.根据权利要求1所述方法,其特征在于,所述写入熵编码填充符号的操作包括:对于条带中的最后一个宏块,在在码流中写入的熵编码填充符号后,若字节不对齐,则进行比特填充至字节对齐为止。
4.根据权利要求1、2或3所述方法,其特征在于,所述熵编码填充符号为一比特填充符号。
5.根据权利要求1、2或3所述方法,其特征在于,所述写入熵编码填充符号的操作包括:
将条带中的最后一个宏块之前的宏块对应的熵编码填充符号的值与条带中的最后一个宏块对应的熵编码填充符号的值相反。
6.一种视频编码装置,其特征在于,包括:
条带编码单元,用于对当前条带进行编码操作;
熵编码填充符号写入单元,用于在所述条带编码单元编码条带过程中,在宏块数据编码结束后写入熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块。
7.一种视频解码的方法,其特征在于,包括:
在解码条带过程中,在宏块数据解码结束后读取熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;
读取熵编码填充符号后,检测条带解码是否结束。
8.根据权利要求7所述方法,其特征在于,所述读取熵编码填充符号的操作包括:在解码完一宏块或一宏块行或指定数目宏块后,读取所述熵编码填充符号。
9.根据权利要求7所述方法,其特征在于,所述熵编码填充符号为一比特填充符号。
10.根据权利要求7、8或9所述方法,其特征在于,所述检测条带解码是否结束的操作包括:
若当前比特流指针位于字节对齐处,则判断比特流指针后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针后是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;
或者,
若当前比特流指针不位于字节对齐处,则判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,<<为左移符号,若等于填充模板,则条带解码结束,否则,条带解码未结束;
或者,
若当前比特流指针不位于字节对齐处,则判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,并且判断比特流指针下一字节对齐处是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针下一字节对齐处是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;若不等于填充模板,则条带解码未结束。
11.一种视频解码装置,其特征在于,包括:
熵编码填充符号读取单元,用于在解码条带过程中,在宏块数据解码结束后读取熵编码填充符号,所述宏块包含条带中的最后一个宏块及最后一个宏块之前的至少一个宏块;
判断单元,用于在所述熵编码填充符号读取单元读取到的熵编码填充符号后,检测条带解码是否结束。
12.根据权利要求11所述装置,其特征在于,所述判断单元包括:
第一判断操作单元,用于在当前比特流指针位于字节对齐处的情况下,判断比特流指针下一字节对齐处是否为起始码,若是,则条带解码结束,否则,条带解码未结束;或者,判断比特流指针下一字节对齐处是否为0x80,并且0x80后是否为起始码,若是,则条带解码结束,否则,条带解码未结束;
第二判断操作单元,用于在当前比特流指针位于字节对齐处的情况下,判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则条带解码结束,否则,条带解码未结束;或者,第三判断操作单元,用于在当前比特流指针位于字节对齐处的情况下,判断当前比特流指针后至字节对齐处的内容是否等于填充模板,所述填充模板为1<<(7-n),其中n为码流指针在当前字节的位置偏移,若等于填充模板,则通知所述第一判断操作单元;若不等于填充模板,则条带解码未结束。
13.一种视频编码的方法,其特征在于,包括:
在条带熵编码结束后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
14.根据权利要求13所述方法,其特征在于,所述条带数据码流的填充操作包括:
计算所述可能写入码流的最大比特数目减去条带编码结束操作写入码流中的比特数目后获得的差值,并在码流中填充该差值对应的比特数目。
15.一种视频编码装置,其特征在于,包括:
条带编码单元,用于对当前条带进行编码操作;
码流填充单元,用于在所述条带编码单元结束针对条带的熵编码后,根据条带熵编码结束时熵编码可能写入码流的最大比特数目进行条带数据码流的填充操作。
16.一种视频解码的方法,其特征在于,包括:
在解码条带过程中,在宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束,所述指定位置根据编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目确定。
17.一种视频解码装置,其特征在于,包括:
解码单元,用于对当前条带进行解码操作;
解码判断单元,用于在所述解码单元在完成宏块数据解码结束后,在比特流指针在比特流指针当前位置后指定位置检测条带解码是否结束,其中,所述指定位置根据编码端在条带熵编码结束时熵编码可能写入码流的最大比特数目确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010135828 CN101998141B (zh) | 2008-06-19 | 2008-06-19 | 视频数据的打包、编解码方法及装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010135828 CN101998141B (zh) | 2008-06-19 | 2008-06-19 | 视频数据的打包、编解码方法及装置及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810129023 Division CN101394551A (zh) | 2007-09-17 | 2008-06-19 | 视频数据的打包、编解码方法及装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101998141A true CN101998141A (zh) | 2011-03-30 |
CN101998141B CN101998141B (zh) | 2013-06-05 |
Family
ID=43787608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010135828 Active CN101998141B (zh) | 2008-06-19 | 2008-06-19 | 视频数据的打包、编解码方法及装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101998141B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105791837A (zh) * | 2014-12-24 | 2016-07-20 | 北京数码视讯科技股份有限公司 | 一种视频数据编码方法、解码方法、转码方法及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1498503A (zh) * | 2001-03-20 | 2004-05-19 | ����ɭ�绰�ɷ�����˾ | 非编码宏块的游程长度编码 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100369476C (zh) * | 2002-06-29 | 2008-02-13 | 中兴通讯股份有限公司 | 一种视频码流传输处理方法 |
EP1908289A4 (en) * | 2005-04-13 | 2011-01-26 | Nokia Corp | METHOD, DEVICE AND SYSTEM FOR PROVIDING EFFECTIVE GRAIN SCALING AND DECODING OF FINE GRAIN (FGS) OF VIDEO DATA |
CN100459717C (zh) * | 2005-04-20 | 2009-02-04 | 华为技术有限公司 | 基于h.264的压缩视频传输误码消除方法 |
JP4182442B2 (ja) * | 2006-04-27 | 2008-11-19 | ソニー株式会社 | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 |
CN101198053B (zh) * | 2006-12-08 | 2010-05-19 | 中兴通讯股份有限公司 | 一种编码器中的视频数据自适应分割装置 |
-
2008
- 2008-06-19 CN CN 201010135828 patent/CN101998141B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1498503A (zh) * | 2001-03-20 | 2004-05-19 | ����ɭ�绰�ɷ�����˾ | 非编码宏块的游程长度编码 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105791837A (zh) * | 2014-12-24 | 2016-07-20 | 北京数码视讯科技股份有限公司 | 一种视频数据编码方法、解码方法、转码方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101998141B (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101394551A (zh) | 视频数据的打包、编解码方法及装置及系统 | |
US11825081B2 (en) | Reference picture list handling | |
US6768775B1 (en) | Video CODEC method in error resilient mode and apparatus therefor | |
KR101353128B1 (ko) | 부가적인 네트워크 추상화 계층 (nal) 들을 사용하여 멀티미디어 데이터를 보호하는 방법 | |
CN105392008B (zh) | 一种预测编、解码方法和相应的编、解码器和电子设备 | |
CN1787641B (zh) | 图像信息解码方法和图像信息编码方法 | |
KR100992002B1 (ko) | 계층화된 미디어 비트스트림의 패킷화 | |
WO2008051380B1 (en) | Picture identification for multi-view video coding | |
CN103096047A (zh) | 一种分片层参数集解码及编码方法和装置 | |
RU2014143786A (ru) | Буферизация видео с низкой задержкой при кодировании видео | |
RU2011105660A (ru) | Способ и устройство для синхронизации сильно сжатых данных улучшающего слоя | |
CN104935944B (zh) | 一种视频数据编码、解码的方法和装置 | |
JP2017519467A5 (zh) | ||
CN102055963A (zh) | 一种视频编码、解码方法及编码、解码装置 | |
US20110058613A1 (en) | Method and apparatus for generating bitstream based on syntax element | |
KR100357266B1 (ko) | 데이터 분할 기법을 이용한 영상 부호화 전송방법 | |
KR20050074812A (ko) | 전송 에러가 발생한 지점을 탐지하여 바르게 디코딩된데이터를 복원하는 디코딩 방법 및 그 디코딩 장치 | |
CA2630532A1 (en) | Video compression encoder | |
JP4907039B2 (ja) | 信号符号化方法 | |
CN101998141B (zh) | 视频数据的打包、编解码方法及装置及系统 | |
CN104754341A (zh) | 一种视频数据编码、解码的方法和装置 | |
CN103152126B (zh) | 基于前向纠错保护编码的数据封装方法和装置 | |
CN114788282A (zh) | 与子图像相关的视频编码 | |
KR100327412B1 (ko) | 에러 정정을 위한 영상 부호화 및 복호화 방법 | |
CN102724553A (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 |