一种并行编码方法和装置的制造方法

文档序号:10578272阅读:271来源:国知局
一种并行编码方法和装置的制造方法
【专利摘要】本发明实施例提供了一种并行编码方法和装置,涉及视频编码技术领域。所述方法包括:将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。本发明解决了在先技术中如波形并行编码每行编码单元均对应一次初始化编码和一次结尾编码;而瓦片并行编码中不同区域之间不进行运动预测,且对于非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测,导致的编码效率较低的问题,取得了提高编码效率的有益效果。
【专利说明】
一种并行编码方法和装置
技术领域
[0001]本发明涉及视频编码技术领域,特别是涉及一种并行编码方法和装置。
【背景技术】
[0002]多核CPU(Central Processing Unit,中央处理器)的出现为人们的生活带来了巨大的改变。为了充分利用多核(PU的优势,启动多个线程对视频图像进行并行编码。
[0003]在先技术中,并行编码主要有两种:波形并行编码和瓦片并行编码。如图1,波形并行编码启动多个线程对四行编码单元进行并行编码,且每行编码单元均按照从左往右的顺序编码,每行编码单元对应独立的熵编码。其中,对于第四行第二个编码单元42,必须在第三行第三个编码单元33编码完成后再开始编码。瓦片编码首先将视频划分为多个互不重叠的矩形区域,然后启动多个线程对各区域进行并行编码。其中,每个区域对应一个独立的熵编码,各区域之间不进行运动预测。
[0004]可以看出,波形并行编码中每行编码单元均对应一次初始化编码和一次结尾编码,当视频图像比较大时,会导致编码效率的浪费。瓦片并行编码中不同区域之间阻断了运动预测,会导致降低编码效率;此外,当视频图像水平并行时,对于非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测,从而也会导致降低编码效率。

【发明内容】

[0005]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的并行编码方法和装置。
[0006]依据本发明的一个方面,提供了一种并行编码方法,包括:
[0007]将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0008]启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。
[0009]优选地,所述启动各线程对对应的编码组进行基于组间相邻列预测的并行编码的步骤,包括:
[0010]对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。
[0011]优选地,所述对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元,启动线程按行从左向右进行预测编码的步骤,包括:
[0012]判断当前编码单元在当前编码组中所处列的位置;
[0013]若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0014]若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码;
[0015]若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码。
[0016]优选地,还包括:
[0017]对各编码组的码流长度进行编码;
[0018]将编码后的码流长度按照编码组从左向右的顺序写入总码流;
[0019]将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0020]优选地,所述对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元,启动线程按行从左向右进行预测编码的步骤,包括:
[0021]判断当前编码单元在当前编码组中所处列的位置;
[0022]若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0023]若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码;
[0024]若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码。
[0025]优选地,还包括:
[0026]将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0027]依据本发明的另一方面,提供了一种并行编码装置,其特征在于,包括:
[0028]划分模块,用于将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0029]编码模块,用于启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。
[0030]优选地,所述编码模块,包括:
[0031]第一编码子模块,用于对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。
[0032 ]优选地,所述第一编码子模块,包括:
[0033]第一判断单元,用于判断当前编码单元在当前编码组中所处列的位置;
[0034]第一编码单元,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0035]第二编码单元,用于若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码;
[0036]第三编码单元,用于若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码。
[0037]优选地,还包括:
[0038]第一码流长度编码模块,用于对各编码组的码流长度进行编码;
[0039]第一码流长度写入模块,用于将编码后的码流长度按照编码组从左向右的顺序写入总码流;
[0040]第一码流写入模块,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0041 ]优选地,所述第一编码子模块,包括:
[0042]第二判断单元,用于判断当前编码单元在当前编码组中所处列的位置;
[0043]第四编码单元,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0044]第五编码单元,用于若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码;
[0045]第六编码单元,用于若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码。
[0046]优选地,还包括:
[0047]第二码流写入模块,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0048]本发明实施例具有如下优点:
[0049]根据本发明的一种并行编码方法和装置,可以将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。由此解决了在先技术中每行编码单元均对应一次初始化编码和一次结尾编码,不同区域之间不进行运动预测,当视频图像水平并行时,对于非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测,导致的编码效率较低的问题,取得了提高编码效率的有益效果。
[0050]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0051]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0052]图1示出了在先技术的波形并行编码示意图;
[0053]图2示出了根据本发明的一种并行编码方法实施例一的步骤流程图;
[0054]图2A示出了本发明实施例的并行编码示意图;
[0055]图3示出了根据本发明的一种并行编码方法实施例二的步骤流程图;
[0056]图4示出了根据本发明的一种并行编码方法实施例三的步骤流程图;
[0057]图5示出了根据本发明的一种并行编码装置实施例四的结构框图;
[0058]图6示出了根据本发明的一种并行编码装置实施例五的结构框图;
[0059]图7示出了根据本发明的一种并行编码装置实施例六的结构框图。
【具体实施方式】
[0060]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0061 ] 实施例一
[0062]参照图2,示出了根据本发明的一种并行编码方法实施例一的步骤流程图,具体可以包括如下步骤:
[0063]步骤101、将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0064]其中,图像是由像素组成的,图像可以用像素点数目来表示。通常情况下,用图像的宽和高所包含的像素点数目来表示图像。例如,1024*528表示图像宽和高的像素点数目分别为1024和528。
[0065]在实际应用中,通常以编码单元为单位对图像进行编码。其中,编码单元可以为多个像素点组成的矩形区域,例如,8*8个像素点组成的矩形区域可以作为一个编码单元,则,可以将大小为128*256的图像划分为16*32个大小为8*8的编码单元。当然,不同的编码标准对编码单元有不同的定义,也可以根据具体应用而设定。
[0066]本发明实施例在编码单元的基础上,将图像进一步划分为编码组。如图2A,图像有9列编码单元,将图像的编码单元按照列划分为3个编码组,其中,每个编码组包括3列编码单元。由于每列编码单元包括相同数目的编码单元,所以每个编码组包括相同数目的编码单元。
[0067]在实际应用中,图像的编码单元列数通常不是线程数的整数倍。在上述情况下,为了使得多线程对各编码组的总编码效率最高,各编码组包括的编码单元数目尽量相等或近似相等。当图像的编码单元的列数不是线程数的整数倍时,在编码组数目与线程数目相等的条件下,可以将编码单元尽量平分到各编码组中。例如,若图像有11列编码单元,线程数为3时,则将2个4列编码单元分别作为2个编码组,I个3列编码单元作为I个编码组,3个编码组对应3个线程。
[0068]可以理解,线程与编码组之间的对应关系可以根据具体应用设定。在本发明实施例中,按照从左向右的顺序将各编码组与各线程对应。
[0069]步骤102、启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。
[0070]在多核CPU中,可以启动多个线程对数据进行并行处理。在本发明实施例中,启动多个线程对划分好的各编码组进行并行编码。
[0071]在实际应用中,为了节约传输图像的带宽资源,在传输图像之前对图像进行压缩编码。预测编码是最常见的压缩编码,利用图像中像素之间的冗余性,根据相邻像素点的值预测当前像素点的值,并对预测得到的值与当前像素点的实际值的差值进行编码。
[0072]本发明实施例可以允许利用相邻编码组中的相邻编码单元,对编码组的编码单元进行预测编码。如图2A,第一编码组的列L3中的编码单元可以根据第二编码组的列L4中的编码单元进行预测编码,第二编码组的列L6中的编码单元可以根据第三编码组的列L7中的编码单元进行预测编码,第二编码组的列L4中的编码单元也可以根据第一编码组的列L3中的编码单元进行预测编码,第三编码组的列L7中的编码单元也可以根据第二编码组的列L6中的编码单元进行预测编码。
[0073]为了提高编码效率,各线程对编码组进行并行编码。在启动各编码组的编码前,需要对编码器进行初始化,为编码器设定一个初始值。在实际应用中,在开始编码当前编码组的第一行编码单元之前,可以将左相邻组中的相邻编码单元的算术编码内容作为当前编码器的初始值。初始值作为当前编码组的第一行编码单元的第一个编码单元的编码内容,从第一行编码单元的第二个编码单元开始进行编码。为了从左相邻组对应的线程中获取所述算术编码内容,需要进行线程间通信。对于各编码语言,可以采用对应的现有线程间通信方法,本发明实施例对线程间通信的具体方法不做限制。
[0074]可以理解,对于第一个编码组,编码器不进行初始化,直接从第一个编码单元开始进行编码。
[0075]优选地,步骤102可以包括子步骤1021:
[0076]子步骤1021、对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。
[0077]如图2A,对于第一编码组的各编码单元,启动线程按行从左向右进行预测编码,各编码单元对应的编码顺序为:编码单元11、编码单元12、编码单元13、编码单元21、编码单元22、编码单兀23、编码单兀31、编码单兀32、编码单兀33、编码单兀41、编码单兀42、编码单兀43、编码单元51、编码单元52、编码单元53、编码单元61、编码单元62、编码单元63、编码单元71、编码单元72、编码单元73。
[0078]在实际应用中,对于一编码单元,根据该编码单元的相邻编码单元进行预测编码。其中,该编码单元的相邻编码单元可以为当前编码组中的编码单元,也可以为当前编码组的相邻编码组中的编码单元。对于编码组中的最左侧列的编码单元和最右侧列的编码单元,分别可以采用左相邻编码组中的最右侧列的编码单元,右相邻编码组中的最左侧列的编码单元进行预测编码。
[0079]可以理解,对任一编码单元的编码,需要在该编码单元依赖的参考编码单元编码结束之后启动。
[0080]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0081 ] 实施例二
[0082]参照图3、示出了根据本发明的一种并行编码方法实施例二的步骤流程图,具体可以包括如下步骤:
[0083]步骤201、将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0084]步骤202、判断当前编码单元在当前编码组中所处列的位置;
[0085]本发明实施例中,根据当前编码单元的相邻编码单元,对当前编码单元进行预测编码。当前编码组包括多个编码单元列时,不同列编码单元的相邻编码单元属于不同的编码组。
[0086]其中,第一列编码单元的相邻编码单元包括该编码单元所属编码组的左相邻编码组中的编码单元,和该编码单元所属编码组中的编码单元。最后一列编码单元的相邻编码单元包括该编码单元所属编码组中的编码单元,和该编码单元所属编码组的右相邻编码组中的编码单元。中间列编码单元的相邻编码单元均为该编码单元所属编码组中的编码单
J L ο
[0087]步骤203、若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0088]本发明实施例中,对当前编码组进行编码之前,根据左相邻编码组的第一行中的最右侧编码单元,初始化熵编码器。具体的,将该最右侧编码单元的算术编码内容作为熵编码器的初始值。如图2A,在第一编码组的第一行中的最右侧编码单元13完成编码之后,启动第二编码组的编码,并将编码单元13的算术编码内容作为第二编码组的熵编码器的初始值。
[0089]如图2A,对第二编码组中的第一列L4中的编码单元24进行预测编码,需要依赖相邻编码单元,包括:左相邻编码单元23、左上相邻编码单元13、上相邻编码单元14、右上相邻编码单元15。其中,左相邻编码单元23、左上相邻编码单元13属于第一编码组。上相邻编码单元14、右上相邻编码单元15属于第二编码组。
[0090]根据上述依赖关系,需要在编码单元23完成编码之后,启动对编码单元24的编码。由于在同一编码组中,按行从左向右进行编码,所以在编码单元23完成编码时,编码单元13已经完成编码,启动编码单元24的编码时编码单元14、编码单元15均已完成编码。
[0091]可以看出,对第二编码组的预测编码,依赖于左相邻组第一编码组。
[0092]可以理解,当当前编码组为图像的最左侧编码组时,此时,对于当前编码组的第一列编码单元,根据上相邻编码单元、右上相邻编码单元,进行预测编码。
[0093]步骤204、若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码;
[0094]如图2A,对第二编码组中的最后一列L6中的编码单元26进行预测编码,需要依赖相邻编码单元,包括:左相邻编码单元25、左上相邻编码单元15、上相邻编码单元16、右上相邻编码单元17。其中,左相邻编码单元25、左上相邻编码单元15、上相邻编码单元16属于第二编码组,右上相邻编码单元17属于第三编码组。
[0095]根据上述依赖关系,需要在编码单元17编码完成之后,启动编码单元26的编码。由于在同一编码组中,按行从左向右进行编码,所以在启动编码单元26的编码时编码单元15、编码单元16、编码单元25均已完成编码。
[0096]可以看出,对第二编码组的预测编码,依赖于右相邻组第三编码组。
[0097]可以理解,当当前编码组为图像的最右侧编码组时,此时,对于当前编码组的最后一列编码单元,根据左相邻编码单元、左上相邻编码单元、上相邻编码单元,进行预测编码。
[0098]步骤205、若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0099]如图2A,对第二编码组中的中间列L5中的编码单元25进行预测编码,需要依赖相邻编码单元,包括:左相邻编码单元24、左上相邻编码单元14、上相邻编码单元15、右上相邻编码单元16。其中,左相邻编码单元24、左上相邻编码单元14、上相邻编码单元15、右上相邻编码单元16均属于第二编码组。
[0100]根据上述依赖关系,需要在编码单元24的编码完成之后,启动对编码单元25的编码。由于在同一编码组中,按行从左向右进行编码,所以在启动编码单元25的编码时编码单元14、编码单元15、编码单元24均已完成编码。
[0101]可以看出,对第二编码组的预测编码,依赖于第二编码组中的其他编码单元。
[0102]可以理解,对于处于图像边缘的编码单元,由于不存在部分相邻编码单元,所以根据存在的部分相邻编码单元,进行预测编码。
[0103]综上所述,对当前编码组的预测编码,依赖于左相邻编码组中与当前编码组相邻的编码单元、当前编码组中的编码单元以及右相邻编码组中与当前编码组相邻的编码单
J L ο
[0104]步骤206、对各编码组的码流长度进行编码;
[0105]对各编码组进行编码后,形成码流。对码流长度的编码可以采用现有技术,本发明实施例对码流长度的编码算法不做限制。
[0106]步骤207、将编码后的码流长度按照编码组从左向右的顺序写入总码流;
[0107]其中,将码流长度写入总码流之前,需要初始化总码流,将总码流的初始值设置为空。
[0108]将码流长度按照顺序写入总码流,从而使得并行解码时定位各编码组的起始位置。
[0109]步骤208、将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0110]其中,各编码组对应的码流顺序与码流长度的顺序一致。如图2A中的总码流可以为(第一编码组的码流长度,第二编码组的码流长度,第三编码组的码流长度,第一编码组的码流,第二编码组的码流,第三编码组的码流)。
[0111]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0112]且可以根据当前编码组的左相邻编码组和右相邻编码组中,与当前编码组相邻的编码单元进行预测编码,从而提高了编码效率。
[0113]实施例三
[0114]参照图4、示出了根据本发明的一种并行编码方法实施例三的步骤流程图,具体可以包括如下步骤:
[0115]步骤301、将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0116]步骤302、判断当前编码单元在当前编码组中所处列的位置;
[0117]步骤303、若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0118]与实施例二相比,本实施例采用了另一种不同的组间预测方式。
[0119]本发明实施例中,对当前编码组进行编码之前,根据左相邻编码组的第二行中的最右侧编码单元,初始化熵编码器。具体的,将该最右侧编码单元的算术编码内容作为熵编码器的初始值。如图2A中,在第一编码组的第二行中的最右侧编码单元23完成编码之后,启动第二编码组的编码,并将编码单元23的算术编码内容作为第二编码组的熵编码器的初始值。
[0120]如图2A,对第二编码组中的第一列L4中的编码单元24进行预测编码,需要依赖相邻编码单元,包括:左下相邻编码单元33、左相邻编码单元23、左上编码单元13、上相邻编码单元14、右上相邻编码单元15。其中,左下相邻编码单元33、左相邻编码单元23、左上编码单元13属于第一编码组。上相邻编码单元14、右上相邻编码单元15属于第二编码组。
[0121]根据上述依赖关系,需要在编码单元33完成编码之后,启动对编码单元24的编码。由于在同一编码组中,按行从左向右进行编码,所以在编码单元33完成编码时,编码单元13、23已经完成编码,启动编码单元24的编码时编码单元14、编码单元15均已完成编码。
[0122]可以看出,对第二编码组的预测编码,依赖于左相邻组第一编码组。
[0123]可以理解,当当前编码组为图像的最左侧编码组时,此时,对于当前编码组的第一列编码单元,根据上相邻编码单元、右上相邻编码单元,进行预测编码。
[0124]步骤304、若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码;
[0125]如图2A,对第二编码组中的最后一列L6中的编码单元26进行预测编码,需要依赖相邻编码单元,包括:左相邻编码单元25、左上相邻编码单元15、上相邻编码单元16。其中,左相邻编码单元25、左上相邻编码单元15、上相邻编码单元16属于第二编码组。
[0126]根据上述依赖关系,需要在编码单元25编码完成之后,启动编码单元26的编码。由于在同一编码组中,按行从左向右进行编码,所以在启动编码单元26的编码时编码单元15、编码单元16、编码单元25均已完成编码。
[0127]可以看出,对第二编码组的预测编码,不依赖于右相邻组第三编码组。
[0128]步骤305、若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码;
[0129]综上所述,对当前编码组的预测编码,依赖于左相邻编码组中与当前编码组相邻的编码单元和当前编码组中的编码单元。
[0130]步骤306、将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0131]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0132]且可以根据当前编码组的左相邻编码组中,与当前编码组相邻的编码单元进行预测编码,从而提高了编码效率。
[0133]实施例四
[0134]参照图5、示出了根据本发明的一种并行编码装置实施例四的结构框图,具体可以包括如下模块:
[0135]划分模块401,用于将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0136]编码模块402,用于启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。
[0137]优选地,编码模块402包括:
[0138]第一编码子模块,用于对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。
[0139]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0140]实施例五
[0141]参照图6、示出了根据本发明的一种并行编码装置实施例五的结构框图,具体可以包括如下模块:
[0142]划分模块501,用于将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0143]编码模块502,用于启动各线程对对应的编码组进行基于组间相邻列预测的并行编码;可以包括:
[0144]第一判断单元5021,用于判断当前编码单元在当前编码组中所处列的位置;
[0145]第一编码单元5022,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0146]第二编码单元5023,用于若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码;
[0147]第三编码单元5024,用于若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码。
[0148]第一码流长度编码模块503,用于对各编码组的码流长度进行编码;
[0149]第一码流长度写入模块504,用于将编码后的码流长度按照编码组从左向右的顺序写入总码流;
[0150]第一码流写入模块505,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0151]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0152]且可以根据当前编码组的左相邻编码组和右相邻编码组中,与当前编码组相邻的编码单元进行预测编码,从而提高了编码效率。
[0153]实施例六
[0154]参照图7、示出了根据本发明的一种并行编码装置实施例六的结构框图,具体可以包括如下模块:
[0155]划分模块601,用于将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程;
[0156]编码模块602,用于启动各线程对对应的编码组进行基于组间相邻列预测的并行编码;可以包括:
[0157]第二判断单元6021,用于判断当前编码单元在当前编码组中所处列的位置;
[0158]第四编码单元6022,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码;
[0159]第五编码单元6023,用于若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码;
[0160]第六编码单元6024,用于若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码。
[0161]第二码流写入模块603,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码流。
[0162]本实施例可以将图像的编码单元按列划分为M个编码组,并启动M个线程对各编码组进行基于组间相邻列预测的编码,可以减少编码器的初始化次数以及编码结尾,可以在相邻编码组的相邻列之间进行预测编码,从而提高了编码效率,此外,由于本发明实施例不按行划分编码组,所以不存在非第一行开始的区域中第一行编码单元,无法使用负的运动向量进行预测的问题,从而提高了编码效率。
[0163]且可以根据当前编码组的左相邻编码组中,与当前编码组相邻的编码单元进行预测编码,从而提高了编码效率。
[0164]对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0165]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0166]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0167]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0168]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0169]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
[0170]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0171]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的并行编码设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0172]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【主权项】
1.一种并行编码方法,其特征在于,包括: 将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程; 启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。2.根据权利要求1所述的方法,其特征在于,所述启动各线程对对应的编码组进行基于组间相邻列预测的并行编码的步骤,包括: 对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。3.根据权利要求2所述的方法,其特征在于,所述对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元,启动各线程按行从左向右进行预测编码的步骤,包括: 判断当前编码单元在当前编码组中所处列的位置; 若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码; 若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码; 若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码。4.根据权利要求3所述的方法,其特征在于,还包括: 对各编码组的码流长度进行编码; 将编码后的码流长度按照编码组从左向右的顺序写入总码流; 将各编码组对应的码流按照编码组从左向右的顺序写入总码流。5.根据权利要求2中所述的方法,其特征在于,所述对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元,启动各线程按行从左向右进行预测编码的步骤,包括: 判断当前编码单元在当前编码组中所处列的位置; 若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码; 若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码; 若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码。6.根据权利要求5所述的方法,其特征在于,还包括: 将各编码组对应的码流按照编码组从左向右的顺序写入总码流。7.一种并行编码装置,其特征在于,包括: 划分模块,用于将图像的编码单元按列均匀划分为M个编码组,所述M个编码组对应M个线程; 编码模块,用于启动各线程对对应的编码组进行基于组间相邻列预测的并行编码。8.根据权利要求7所述的装置,其特征在于,所述编码模块,包括: 第一编码子模块,用于对于当前编码组的各编码单元,根据所述编码单元在当前编码组、当前编码组的相邻编码组中的相邻编码单元的编码内容,启动各线程按行从左向右进行预测编码。9.根据权利要求8所述的装置,其特征在于,所述第一编码子模块,包括: 第一判断单元,用于判断当前编码单元在当前编码组中所处列的位置; 第一编码单元,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码; 第二编码单元,用于若当前编码单元在当前编码组的最后一列,则从当前编码组的右相邻编码组中获取当前编码单元的右上相邻编码单元的编码内容,从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元的编码内容,进行预测编码; 第三编码单元,用于若当前编码单元在当前编码组的内部列,则从当前编码组中获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码。10.根据权利要求9所述的装置,其特征在于,还包括: 第一码流长度编码模块,用于对各编码组的码流长度进行编码; 第一码流长度写入模块,用于将编码后的码流长度按照编码组从左向右的顺序写入总码流; 第一码流写入模块,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码流。11.根据权利要求8中所述的装置,其特征在于,所述第一编码子模块,包括: 第二判断单元,用于判断当前编码单元在当前编码组中所处列的位置; 第四编码单元,用于若当前编码单元在当前编码组的第一列,则从当前编码组的左相邻编码组中,获取当前编码单元的左下相邻编码单元、左相邻编码单元、左上编码单元的编码内容,从当前编码组中,获取当前编码单元的上相邻编码单元、右上相邻编码单元的编码内容,进行预测编码; 第五编码单元,用于若当前编码单元在当前编码组的最后一列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元进行预测编码; 第六编码单元,用于若当前编码单元在当前编码组的内部列,则从当前编码组中,获取当前编码单元的左相邻编码单元、左上相邻编码单元、上相邻编码单元、右上相邻编码单元进行预测编码。12.根据权利要求11所述的装置,其特征在于,还包括: 第二码流写入模块,用于将各编码组对应的码流按照编码组从左向右的顺序写入总码 流。
【文档编号】H04N19/119GK105939479SQ201610425871
【公开日】2016年9月14日
【申请日】2016年6月15日
【发明人】朱洪波
【申请人】北京奇艺世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1