CN104811696A - 一种视频数据的编码方法和装置 - Google Patents
一种视频数据的编码方法和装置 Download PDFInfo
- Publication number
- CN104811696A CN104811696A CN201510185227.2A CN201510185227A CN104811696A CN 104811696 A CN104811696 A CN 104811696A CN 201510185227 A CN201510185227 A CN 201510185227A CN 104811696 A CN104811696 A CN 104811696A
- Authority
- CN
- China
- Prior art keywords
- coding
- layer
- coding unit
- video
- flowing water
- 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例提供了一种视频数据的编码方法和装置,该方法包括:在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。一方面,可以兼容帧级并行、WPP并行等并行方案,大大提高并行度,提高CPU的利用率,另一方面,可以提前跳过一些不必要的CU划分和计算,进而大大提高了编码效率。
Description
技术领域
本发明涉及编码的技术领域,特别是涉及一种视频数据的编码方法和一种视频数据的编码装置。
背景技术
随着互联网的普及,多媒体尤其视频成为内容的主要的承载媒介,而且视频正在朝着高清-超清的方向发展,视频传输占据了网络传输大部分带宽,在给用户带来丰富体验的同时是存储和传输压力,因此对视频的压缩很重要。
当前的视频编码标准普遍采用有损的率失真(Rate Distortion)压缩方法,采用基于块的预测-变换混合编码框架。
要得到好的RD性能,往往带来编码计算复杂度的成倍增加,而分辨率越大,编码的复杂度也相应增大。
同时当前服务器的CPU(Central Processing Unit,中央处理器)的单核主频提升越来越困难,被迫朝着多核或者重核的方向发展,并行计算能力大幅提高,目前主流服务器的CPU一般都在16核及以上,如何有效的利用上这些多核资源来帮助提高视频编码速度以及提升压缩效率(RD性能)变得越来越重要。
目前的并行方案有如下几种:
1、把一个长视频序列切成多个短的视频序列;
2、帧级并行;
3、SLICE/TILE并行;
4、WPP(wavefront parallel processing,波前并行运算)并行。
但是,上述几种并行方案的并行度较低,CPU利用率较低,编码效率较低。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种视频数据的编码方法和相应的一种视频数据的编码装置。
为了解决上述问题,本发明实施例公开了一种视频数据的编码方法,包括:
在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
优选地,所述在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果的步骤包括:
针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
优选地,所述预编码结果还包括第一参考帧;
所述在所述至少部分视频编码层中所述对多个编码单元进行模式决策的步骤包括:
计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;其中,所述第二失真率配置有第一系数;
若是,则获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
若否,则进入下一视频编码层,返回执行所述计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真的步骤,直至遍历完所述至少部分视频编码层;
其中,所述第一参考帧用于在第一编码流水中,其他编码单元的模式决策。
优选地,所述在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果的步骤还包括:
当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
优选地,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤包括:
针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
判断所述第三率失真是否小于所述第四率失真;其中,所述第四失真率配置有第二系数;
若是,则将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
若否,则进入下一视频编码层,返回执行所述获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的步骤,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
优选地,所述最佳编码参数包括位移矢量,所述采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码的步骤包括:
当所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
在最佳的整像素的第二预设范围内进行分像素运动估计。
优选地,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
优选地,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
当第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;
若否,则回收当前帧的图像数据;
若是,则将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
优选地,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
当下一组视频数据未完成预编码时,阻塞第二编码流水。
本发明实施例还公开了一种视频数据的编码装置,包括:
第一编码模块,用于在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
第二编码模块,用于在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
优选地,所述第一编码模块包括:
划分子模块,用于针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
模式决策子模块,用于在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
优选地,所述预编码结果还包括第一参考帧;
所述模式决策子模块包括:
第一计算子模块,用于计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
第一判断子模块,用于判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;若是,则调用第一重构子模块,若否,则调用第一进入子模块;其中,所述第二失真率配置有第一系数;
第一重构子模块,用于获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
第一进入子模块,用于进入下一视频编码层,返回调用第一计算子模块,直至遍历完所述至少部分视频编码层;
其中,所述第一参考帧用于在第一编码流水中,其他编码单元的模式决策。
优选地,所述第一编码模块还包括:
第一阻塞子模块,用于当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
优选地,所述第二编码模块包括:
获取子模块,用于针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
编码子模块,用于采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
第二计算子模块,用于计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
第二判断子模块,用于判断所述第三率失真是否小于所述第四率失真;若是,则调用写码流子模块,若否,则调用第二进入子模块;其中,所述第四失真率配置有第二系数;
写码流子模块,用于将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
第二进入子模块,用于进入下一视频编码层,返回调用获取子模块,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
优选地,所述最佳编码参数包括位移矢量,所述编码子模块包括:
第一运动估计子模块,用于在所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
第二运动估计子模块,用于在最佳的整像素的第二预设范围内进行分像素运动估计。
优选地,所述第二编码模块还包括:
第二重构子模块,用于获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
优选地,所述第二编码模块还包括:
第三判断子模块,用于在第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;若否,则调用回收子模块,若否,则调用缓存子模块;
回收子模块,用于回收当前帧的图像数据;
缓存子模块,用于将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
优选地,所述第二编码模块还包括:
第二阻塞子模块,用于在下一组视频数据未完成预编码时,阻塞第二编码流水。
本发明实施例包括以下优点:
本发明实施例采用分层决策,即在第一编码流水中,对每一组视频数据进行预编码,在第二编码流水中,在预编码的基础上进行正常编码,一方面,可以兼容帧级并行、WPP并行等并行方案,大大提高并行度,提高CPU的利用率,另一方面,可以提前跳过一些不必要的CU划分和计算,进而大大提高了编码效率。
附图说明
图1是一种第三代视频压缩标准HEVC的编码框架和流程示意图;
图2是一种编码单元结构及编码树其CU-Tree的示例图;
图3是一种编码单元的预测单元结构示例图;
图4是一种编码单元CU的变换单元TU结构示例图;
图5是一种编码单元CU的四叉划分以及编码单元CU划分为变换单元TU的示例图;
图6是本发明的一种视频数据的编码方法实施例的步骤流程图;
图7是本发明的一种双流水编码的示意图;
图8是一种视频数据组GOP的结构示意图;
图9是一种决策模式RDO的流程示意图;
图10是本发明的一种视频数据的编码装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
不同的编码标准都致力于RD性能的提升,尤其是第三代视频压缩标准,如HEVC(Overview of the High Efficiency Video Coding)(H.265)/AVS2/VP9,为了提高编码性能,提供了大尺寸可变块的灵活编码框架,大大的扩展了块尺寸范围,其比第二代视频压缩标准如H.264复杂度提高4~10倍。
为了有效的进行数据的压缩,HEVC采用了灵活的方式进行块结构的表示:编码单元(Coding Unit,CU)、预测单元(Prediction Unit,PU),变换单元(Tradnsform Unit,TU),其中编码单元(CU)包括最大编码单元(LCU)。
以HEVC为例,其编码框架主要包含帧内预测、运动估计和补偿、帧间预测,(反)变换-量化、熵编码、去块效应滤波、样本自适应滤波等模块,如图1所示,这些模块都是在把帧划分为LCU的基础上进行的。
编码单元(CU)是进行模式决策(Rate Distortion Optimization,RDO,拉格朗日率失真优化)和编码的基本单元,编码单元(CU)的尺寸包括64x64、32x32、16x16、8x8等等,本发明实施例中以64x64作为最大的编码单元LCU,8x8作为最小编码单元,则可以将每种尺寸的划分称之为视频编码层。
如图2所示,CU采用四叉树迭代划分结构,以编码树形结构组织成CU-Tree(编码树)。其中,节点(split_flag)1代表可以将当前层的编码单元继续往下划分,节点0代表不能将当前层的编码单元继续往下划分,如图2右侧的CU-Tree中第二层中的两个节点0对应左侧左上角和左下角、尺寸为32x32的整块视频数据。
如图3所示,CU可以根据预测模式进一步划分为不同PU分割块,其中,图3下面是四种AMP(Asymmetric Motion Partition)划分。
如图4所示,CU还可以按照残差四叉树(Residual Quad Tree,RQT)组织变换单元,变换核尺寸从32x32到4x4,HEVC支持对CU最多三层的TU划分。同样地,每个CU对应一个最佳的TU-Tree,这种新的灵活的四叉树迭代划分编码结构平均能带来13.7%的码率节省。
编码的过程可以指对一帧图像数据的每个LCU通过RDO选择最佳的CU-Tree,以及每个CU的编码参数cu_param(包括CU预测模式、预测块划分、运动参数、量化参数、CU对应的TU-tree划分结构等),利用这些编码参数对其进行预测、变换、量化、熵编码以及滤波等操作。
HEVC提供了相当丰富的可选模式,提升了编码性能,但是也带来了复杂度的大幅度增加。
如图5所示,编码单元(CU)向下划分的4个子CU相互之间是独立的,比方说当前编码单元大小是64x64,如果其划分成4个32x32的子编码单元,那么每个子编码单元内部是否划分和最终划分到哪一层是相互独立的。所以在一个LCU内部编码单元存在2x24x24=29=512种可能的划分方式,同时HEVC的RQT技术使得对每一个CU,会尝试往下3层的TU划分即25种TU划分可能。
每一种模式的RD过程涉及预测、运动估计、子像素插值、(反)变换、预测相关的系数扫描、(反)量化甚至RDOQ、熵编码、滤波等一系列编码操作。因此一个LCU完整的RDO模式决策过程是非常复杂的。
要得到好的RD性能,就需要解决复杂度的成倍提高的导致编码速度过慢的问题。
目前主流的个人电脑的CPU一般都在2核及以上,主流服务器CPU一般都在16核及以上,有效地利用上这些多核资源的关键问题在于并行。
在视频编码方面,主要有4个层次的并行(不考虑快速算法),以HEVC为例:
1、把一个长视频序列切成多个短的视频序列;
如几分钟一段,利用多进程并行的方式对每段短视频编码,这种方式的需要小心控制切分和组合,不能有效的进行整体的码率控制,且不适用于直播或者要求延迟短的应用场景。
2、帧级并行;
用多个线程同时编码不同的帧,因为在编码过程中需要利用时域的相关性,例如运动估计时,需要搜索范围内的参考像素已经编码和重构好,尤其是hierarchical-B编码结构下,帧之间的依赖更大,因此并行度受限,同时并行编码的帧过多时,需要缓存的参考帧也增多,一般2~5帧并行比较合适。
3、SLICE/TILE并行;
把一帧切成几个小的独立图像,这些独立小图像分别用线程来编码,这种方式往往会有较大的性能损失,而且在切分边界处容易有块效应,这种方式适合超高清视频。
4、WPP并行;
图像帧的LCU行并行,支持每行启动一个线程,例如,1080p一帧支持最多17个行线程,但是因为编码有空域相关性,下一行LCU需要比其上一行LCU延迟至少2个LCU单元,一旦有一个LCU延迟大,该LCU行下面的所有行线程都会被阻塞,因此并行度同样受限。
在CPU核足够多时,可以把上述方法都结合起来,从而提高并行度。一般再允许延迟时间较大的视频编转码应用里,把1、3、4结合起来效果较好。
然而,如果对延迟有一定的限制要求,以及CPU核足够多的情况下,其并行度较低,CPU利用率较低,编码效率较低。
因此,提出了本发明实施例的核心构思之一的利用双流水编码框架,提供一种更低尺度上的并行,即在LCU的RDO模式决策过程进行双流水(pipeline)并行,具体通过设立两个编码流程流水,一个前向(Lookahead)流水,一个正常编码(Encoding)流水,将一个LCU的完整RDO模式决策过程划分为两部分。至少的部分层的模式决策在Lookahead里进行,然后在其基础上,把剩余层的模式决策过程在Encoding流水中进行,以进一步提高视频数据编码并行度,提高CPU的利用率,提前跳过一些不必要的CU划分和计算,提高编码效率。
参照图6,示出了本发明的一种视频数据的编码方法实施例的步骤流程图,具体可以包括如下步骤:
步骤601,在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;
其中,所述预编码结果可以包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
需要说明的是,双流水,即第一编码流水(Lookahead)、第二编码流水(Encoding),可以理解为两趟编码,在每一趟编码里面都可以应用帧级并行、WPP并行等并行方案。
其中,如图7所示,第一编码流水(Lookahead)可以比第二编码流水线(Encoding)提前,如一个GOP(group of picture,图像数据组),即第二编码流水(Encoding)可以比第一编码流水(Lookahead)延时,一个GOP。而第二编码流水(Encoding)是正常编码,由于第一编码流水(Lookahead)的参考帧并非第二编码流水(Encoding)的参考帧,则可以称之为近似编码。
为使本领域技术人员更好地理解本发明实施例,在本说明书中,将HEVC编码作为编码方式的一种示例进行说明。
在本发明实施例中,可以初始化第一编码流水(Lookahead)和第二编码流水线(Encoding),按照显示顺序(poc)依次输入编码帧(视频数据),缓存直到一个GOP完成,编码是逐GOP进行的。
在第一编码流水(Lookahead)中,可以按照编码顺序对每一组(GOP)中的所有视频数据帧的每个LCU依次编码。
以HEVC RA(random access)默认配置编码过程为例,RA下一个GOP默认为8帧图像数据,按照分层hierarchical-B组织,如下图8所示,图像数据的编码顺序为B8-B4-B2-b1-b3-B6-b5-b7,其中最低层B8称为GPB(Generalized P and B Picture)帧,低层的B4B2B6为参考B帧(ReferencedB Picture),高层的b1b3b5b7为非参考b帧(Non-referenced B Picture),视频数据序列的第一帧为I帧,IDR(IDR or Intra Picture)帧属于I帧。
在本发明的一种优选实施例中,步骤601可以包括如下子步骤:
子步骤S11,针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
子步骤S12,在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
在本发明实施例中,可以将一帧图像数据划分为多个LCU(如64x64),尝试当前层所有可选模式,即进行模式决策RDO,得到其最佳编码参数cu_param,最佳编码参数cu_param可以包括以下的一种或多种:
predmode(预测模式),partsize(块大小),qp,(量化参数),is_skip(是否跳过),merge_idx(merge模式索引),inter_dir(预测方向),ref_idx(参考帧索引),mv(运动矢量),tu_split(RQT下TU是否划分),intra_luma_mode(帧内亮度预测模式),intra_chroma_mode(帧内速度预测模式)。
在HEVC中,LCU的模式决策RDO过程一般采用分层进行,可以先进行上层CU的模式决策RDO,再做其子CU的模式决策RDO,也可以先进行下层CU的模式决策RDO,再做其所属上层CU的模式决策RDO,本发明实施例对此不加以限制。
从编码LCU的码流结果来看,编码是从上往下迭代划分的,当上层CU的split_flag为1时,可以尝试编码下一层的子CU。
在本发明实施例中,在第二编码流水线(Encoding)中,可以进行GOP的帧类型决策和部分LCU的上/下层CU划分模式决策,如进行上2层的CU64x64和CU32x32的模式决策RDO,分别得到两种CU尺寸下的最佳编码参数cu64_param和4个cu32_param。
当然,本领域技术人员可以根据实际情况设定具体的视频编码层的层数如CU16x16、CU8x8等等,本发明实施例对此不加以限制。
需要说明的是,本发明实施例中的模式决策RDO可以包括简化模式决策RDO,相比模式决策RDO,简化模式决策RDO可以对残差仅计算SATD(残Sum Of Absolute Transformed Difference,差变换绝对值和),不进行完整的变换量化熵编码,只求整像素的运动矢量mv,而不必插值求分像素运动矢量mv等等,本领域技术人员可以根据实际情况设定简化模式决策RDO,本发明实施例对此不加以限制。
在本发明的一种优选实施例中,所述预编码结果还可以包括第一参考帧,所述第一参考帧可以用于在第一编码流水中,其他编码单元的模式决策;
则在本发明实施例中,子步骤S12可以包括如下子步骤:
子步骤S121,计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
子步骤S122,判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;若是,则执行子步骤S123;若否,则执行子步骤S124;其中,所述第二失真率配置有第一系数α0,α0≥1;
子步骤S123,获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
子步骤S123,进入下一视频编码层,返回执行子步骤S121,直至遍历完所述至少部分视频编码层。
在本发明实施例中,如果服务器的内存足够,可以保存最佳编码模式下重构块作为第一编码流水(Lookahead)里接下来的参考帧/块。
当然,也可以不保留重构帧,则可以用源图像数据当成参考图像,虽然可能选的模式上有一定的差异,但是这个是在第一编码流水(Lookahead)中的预编码,得到的模式是辅助正常编码流程,因此可以接受,本发明实施例对此不加以限制。
如图9所示,以一个B帧的CU的RDO编码过程为例:对一个尺寸为2Nx2N的CU,其块像素集设为S,会先在当前层依次尝试帧间INTER_2Nx2N模式,包括通过merge模式或运动估计得到参考帧和运动矢量(mv),从而得到参考预测块P,利用当前块减去参考块后可得到残差块(RES=S-P),再对残差块进行RQT TU-Tree的尝试和选择,进行变换和量化后,再对残差重构,得到RES’,将其加到预测块P可以得到重构S’,则可以得到CU在该模式下的失真D(distortion可以是源S和重构S’的差的平方和SSE或者差的绝对值和SAD),以及对残差和参数编码后的比特数R(rate),就可以求得其编码的率失真RDcost=D+λR。再对该CU判断是否满足Early SKIP提前跳过模式的条件,若满足,则直接跳过当前CU层接下来的模式决策过程;否则,接着用同样的方法尝试SKIP模式、INTER_Nx2N模式、INTER_2NxN模式、AMP模式以及INTRA_2Nx2N和PCM模式的率失真RDcostx,x代表前面的模式。从前面尝试的模式中,选最佳的(即RDcost最小的),这就得到了当前CU在该层的最佳编码参数cu_param以及率失真RDcost。
其中,图9中的虚线框可以表示如果存在该模式,则尝试,否则跳过。
需要说明的是,在本发明实施例中,下层的CU模式决策是依赖于上层的CU模式决策,因此,若上层CU模式决策没有满足提前跳出条件,则尝试下一层CU模式决策。
如果当前帧是参考B帧,则可以比较率失真,选择率失真小的重构块对重构块进行滤波和扩边等操作,存储作为接下来第一编码流水(Lookahead)里编码帧的参考帧。
当然,滤波和扩边等操作可以省略,直接存储作为接下来第一编码流水(Lookahead)里编码帧的参考帧,本发明实施例对此不加以限制。
在本发明的一种优选实施例中,步骤101还可以包括如下子步骤:
子步骤S21,当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
在具体实现中,若第一编码流水(Lookahead)在预编码一组视频数据(GOP),则可以开始准备下一组视频数据(GOP)的预编码,当前组的视频数据写入缓存,以准备第二编码流水(Encoding)的编码。
若缓存的视频数据的帧数超过允许的帧数阈值delay_thres时,则可以阻塞该第一编码流水(Lookahead),以暂停视频数据的与编码,直到低于阈值,以减少内存占用,保证服务器的性能稳定。
步骤102,在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
在第二编码流水(Encoding)等第一编码流水(Lookahead)编码完当前组的视频数据(GOP),则可以开始对当前组的视频数据(GOP)进行编码,在第一编码流水(Lookahead)完成的部分的模式决策RDO的基础上,继续接下来的模式决策RDO过程。
在本发明的一种优选实施例中,步骤102可以包括如下子步骤:
子步骤S31,针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
子步骤S32,采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
子步骤S33,计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
子步骤S34,判断所述第三率失真是否小于所述第四率失真;若是,则执行子步骤S35,若否,则执行子步骤S36;其中,所述第四失真率配置有第二系数α2,α2≥1;
子步骤S35,将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
子步骤S36,进入下一视频编码层,返回执行子步骤S31,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数可以包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
在具体实现中,在第二编码流水(Encoding)中,以第一编码流水(Lookahead)对CU64x64和CU32x32进行预编码为例,第二编码流水(Encoding)在CU64x64和CU32x32的最佳编码参数的基础上进行编码,,分别得到不划分以及划分CU对应的RDCost,设为Jcost64和Jcost32,如果Jcost64<Jcost32,则将CU64x64的编码参数作为整个LCU的最终编码参数,结束该LCU的编码;否则分别对4个CU32x32编码参数采用第一编码流水(Lookahead)得到的最佳编码参数,尝试对每个CU32x32划分为4个CU16x16,进行如图9所示的模式决策RDO,四叉迭代划分到最低层CU,得到最佳CU-Tree和相应的编码参数。
编码的结果可以是码流,这里得到的这些编码参数最后还需要经过熵编码写成01比特流-码流。
当然,上述迭代的编码方法只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他编码方法,例如,对一个LCU,所有CU-Tree的可能有2^4*2^4*2=512种可能组合,从里面选一个最好的编码。本发明实施例对此不加以限制。另外,除了上述编码方法外,本领域技术人员还可以根据实际需要采用其它编码方法,本发明实施例对此也不加以限制。
在本发明的一种优选实施例中,所述最佳编码参数可以包括位移矢量mv,则在本发明实施例中,子步骤S32进一步可以包括如下子步骤:
子步骤S321,当所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
子步骤S322,在最佳的整像素的第二预设范围内进行分像素运动估计。
运动估计的可以指从参考重构帧里找到和当前块最匹配的块,这两者之间的位移就是位移矢量mv。
但是,第一编码流水(Lookahead)里的参考帧和第一编码流水(Lookahead)里的参考帧有差异,所以在第一编码流水(Lookahead)中在第一编码流水(Lookahead)得到的最佳位移矢量mv的周围进行小范围的搜索匹配,就可能找到更匹配的块。
在得到这个新的更好的整像素位移矢量mv之后,需要对参考帧进行分像素插值,在其周围进行分像素匹配。
第一编码流水(Lookahead)的作用之一,可以是把完整的编码过程的一部分提前尝试,也就是本来一个LCU要完整编码,它需要尝试64X64大小的CU的模式决策RDO选取最佳模式,再分为四个32x32CU,分别求每个32X32CU的最佳模式;再对每个32X32CU,划分为4个16X16CU,如此迭代下去。
如果这些CU的模式决策过程能在第一编码流水(Lookahead)提前得到了近似的最佳编码参数,例如,对一个CU本来要在参考帧一个64x64范围进行运动估计,如果在第一编码流水(Lookahead)中得到了一个最佳的运动矢量mv,那么在第二编码流水(Encoding)中,则可以在这个最佳的运动矢量mv周围进行3x3范围的运动估计就可以了,大大减少了运动估计的计算量,进而加快了第二编码流水(Encoding)的速度。
进一步而言,第一编码流水(Lookahead)可以是辅助编码,例如对一个尺寸为64x64的CU,在第一编码流水(Lookahead)中预编码后得到的该CU是帧间预测,预测方向为双向BI,划分为两个64x32的预测单元(PU1,PU2),同时这两个PU的运动参数{refidx0,mv0,refidx1,mv1}和{refidx0’,mv0’,refidx1’,mv1’}。
那么,在第二编码流水(Encoding)时,就可以在第一编码流水(Lookahead)得到的这些参数的基础上,对mv0mv1mv0’mv1’(假设第一编码流水(Lookahead)只进行整像素搜索,这些mv是整像素的)的周围进行小范围如3x3的精细整像素匹配尝试,以及分像素运动估计。
当然,如果想在第一编码流水(Lookahead)里多计算一些,可以在第一编码流水(Lookahead)进行分像素运动估计,在第二编码流水(Encoding)时,直接用这些mv也是可以的,本发明实施例对此不加以限制。
在本发明的一种优选实施例中,步骤102还可以包括如下子步骤:
子步骤S41,获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
在具体实现中,参考帧是正常编码流程中的参考帧,是和解码一致的,第二编码流水(Encoding)中的参考帧是准确的,因为它是利用编码参数能重构出来的,在解码端也能得到的。
重构块是编码过程中用来当参考帧,可以结合运动估计提供参考作用,例如,给了一个参考帧和运动矢量mv后,那么根据这个mv在参考帧里找到对应的块就是参考块P,再加上残差的重构块RES’就可以得到重构块S’。
如果当前重构块是参考帧,则进行扩边并缓存到参考帧队列。
在本发明的一种优选实施例中,步骤102还可以包括如下子步骤:
子步骤S51,当第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;若否,则执行子步骤S52,若是,则执行子步骤S53;
子步骤S52,回收当前帧的图像数据;
子步骤S53,将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
如果在第一编码流水(Lookahead)选择利用源图像作为参考帧,那么输入帧就是源图像数据,也就是可能会被参考,则可以等整个输入帧编码完成,判断该输入帧是否还会用于第一编码流水(Lookahead)接下来的参考预测。
例如,每一个帧图像数据在编码时,可以预先定义最多允许参考那些帧,若一帧图像数据最多就被接下来的两个GOP的图像数据参考,当编码第三个GOP时,那么这帧图像数据不会再被参考到了。
如果不再用,则回收,否则缓存到第一编码流水(Lookahead)的参考帧队列,以方便参考帧管理。
在本发明的一种优选实施例中,步骤102还可以包括如下子步骤:
子步骤S28,当下一组视频数据未完成预编码时,阻塞第二编码流水。
在具体实现中,第二编码流水(Encoding)查询第一编码流水(Lookahead)下一个GOP是否编码完,若已经编码完,则开始编码下一个GOP,否则,阻塞直到第一编码流水(Lookahead)编码完一个GOP。
为使本领域技术人员更好地理解本发明实施例,以下通过具体的示例来说明本发明实施例中双流水的编码方法。
一、在Lookahead流水的一个GOP编码中,进行最上面的三层预编码:
1、针对一帧图像数据的每个LCU(CU_64×64,其中,CU之后参数的为块的尺寸),划分为4个CU_32×32,每个CU_32×32划分为4个CU_16×16;
2、分别对CU_64×64、4个CU_32×32、16个CU_16×16进行RDO,每个CU都有最佳编码参数;
3、查找RDCost最小的重构块;
如,若RDCost_CU_64×64<α0RDCost_4个CU_32×32,则以CU_64×64对应的重构块作为参考帧;
若RDCost_CU_64×64>α0RDCost_4个CU_32×32,即比较每个RDCost_CU_32×32与其对应的RDCost_4个CU_16×16的大小;
若RDCost_CU_32×32<α0RDCost_4个CU_16×16则以CU_32×32对应的重构块作为参考帧,反之,则以4个CU_16×16对应的重构块作为参考帧。
二、在Encoding流水中:
1、通过迭代查找RDCost最小的编码块;
1.1、针对一帧图像的每个LCU(CU_64×64),先划分4个CU_32×32,用Lookahead流水得到的LCU的最佳编码参数对LCU进行编码,用Lookahead流水得到的CU_32×32的最佳编码参数对CU_32×32进行编码;
1.2、若RDCost_CU_64×64<α2RDCost_4个CU_32×32,则以CU_64×64的编码结果写入码流,反之,将每个CU_32×32划分为4个CU_16×16;
1.3、用Lookahead流水得到的CU_16×16的最佳编码参数对CU_16×16进行编码;
1.4、若RDCost_CU_32×32<α2RDCost_4个CU_16×16,则以CU_32×32的编码结果写入码流,反之,将每个CU_316×16划分为4个CU_8×8;
1.5、对每个CU_8×8进行RDO,获得编码参数,然后用该编码参数对CU_8×8进行编码;
1.6、若RDCost_CU_16×16<α2RDCost_4个CU_8×8,则以CU_16×16的编码结果写入码流,反之,以CU_8×8的编码结果写入码流。
2、用RDCost最小的编码块对应的重构块组成参考帧。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图10,示出了本发明的一种视频数据的编码装置实施例的结构框图,具体可以包括如下模块:
第一编码模块1001,用于在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
第二编码模块1002,用于在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
在本发明的一种优选实施例中,所述第一编码模块1001可以包括如下子模块:
划分子模块,用于针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
模式决策子模块,用于在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
在本发明的一种优选实施例中,所述预编码结果还可以包括第一参考帧;
所述模式决策子模块可以包括如下子模块:
第一计算子模块,用于计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
第一判断子模块,用于判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;若是,则调用第一重构子模块,若否,则调用第一进入子模块;其中,所述第二失真率配置有第一系数;
第一重构子模块,用于获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
第一进入子模块,用于进入下一视频编码层,返回调用第一计算子模块,直至遍历完所述至少部分视频编码层;
其中,所述第一参考帧用于在第一编码流水中,其他编码单元的模式决策。
在本发明的一种优选实施例中,所述第一编码模块1001还可以包括如下子模块:
第一阻塞子模块,用于当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
在本发明的一种优选实施例中,所述第二编码模块1002可以包括如下子模块:
获取子模块,用于针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
编码子模块,用于采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
第二计算子模块,用于计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
第二判断子模块,用于判断所述第三率失真是否小于所述第四率失真;若是,则调用写码流子模块,若否,则调用第二进入子模块;其中,所述第四失真率配置有第二系数;
写码流子模块,用于将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
第二进入子模块,用于进入下一视频编码层,返回调用获取子模块,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
在本发明的一种优选实施例中,所述最佳编码参数可以包括位移矢量,所述编码子模块可以包括如下子模块:
第一运动估计子模块,用于在所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
第二运动估计子模块,用于在最佳的整像素的第二预设范围内进行分像素运动估计。
在本发明的一种优选实施例中,所述第二编码模块1002还可以包括如下子模块:
第二重构子模块,用于获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
在本发明的一种优选实施例中,所述第二编码模块1002还可以包括如下子模块:
第三判断子模块,用于在第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;若否,则调用回收子模块,若否,则调用缓存子模块;
回收子模块,用于回收当前帧的图像数据;
缓存子模块,用于将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
在本发明的一种优选实施例中,所述第二编码模块1002还可以包括如下子模块:
第二阻塞子模块,用于在下一组视频数据未完成预编码时,阻塞第二编码流水。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种视频数据的编码方法和一种视频数据的编码装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (18)
1.一种视频数据的编码方法,其特征在于,包括:
在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
2.根据权利要求1所述的方法,其特征在于,所述在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果的步骤包括:
针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
3.根据权利要求2所述的方法,其特征在于,所述预编码结果还包括第一参考帧;
所述在所述至少部分视频编码层中所述对多个编码单元进行模式决策的步骤包括:
计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;其中,所述第二失真率配置有第一系数;
若是,则获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
若否,则进入下一视频编码层,返回执行所述计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真的步骤,直至遍历完所述至少部分视频编码层;
其中,所述第一参考帧用于在第一编码流水中,其他编码单元的模式决策。
4.根据权利要求2或3所述的方法,其特征在于,所述在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果的步骤还包括:
当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
5.根据权利要求1所述的方法,其特征在于,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤包括:
针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
判断所述第三率失真是否小于所述第四率失真;其中,所述第四失真率配置有第二系数;
若是,则将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
若否,则进入下一视频编码层,返回执行所述获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的步骤,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
6.根据权利要求5所述的方法,其特征在于,所述最佳编码参数包括位移矢量,所述采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码的步骤包括:
当所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
在最佳的整像素的第二预设范围内进行分像素运动估计。
7.根据权利要求5所述的方法,其特征在于,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
8.根据权利要求5所述的方法,其特征在于,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
当第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;
若否,则回收当前帧的图像数据;
若是,则将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
9.根据权利要求5或6或7或8所述的方法,其特征在于,所述在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码的步骤还包括:
当下一组视频数据未完成预编码时,阻塞第二编码流水。
10.一种视频数据的编码装置,其特征在于,包括:
第一编码模块,用于在第一编码流水中,对每一组视频数据进行预编码,以获得预编码结果;所述预编码结果包括每组内每一帧视频数据在至少部分视频编码层中划分的编码单元的最佳编码参数;
第二编码模块,用于在第二编码流水中,当每一组视频数据预编码完成时,根据所述最佳编码参数对组内每一帧视频数据进行编码。
11.根据权利要求10所述的装置,其特征在于,所述第一编码模块包括:
划分子模块,用于针对每组内每一帧视频数据的每一块最大编码单元,在至少部分视频编码层中划分为多个编码单元;
模式决策子模块,用于在所述至少部分视频编码层中所述对多个编码单元进行模式决策,以获得最佳编码参数。
12.根据权利要求11所述的装置,其特征在于,所述预编码结果还包括第一参考帧;
所述模式决策子模块包括:
第一计算子模块,用于计算当前视频编码层中的编码单元的第一率失真,和/或,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;
第一判断子模块,用于判断在当前视频编码层中的编码单元的第一率失真是否小于,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元的第二率失真;若是,则调用第一重构子模块,若否,则调用第一进入子模块;其中,所述第二失真率配置有第一系数;
第一重构子模块,用于获取当前的视频编码层中编码单元对应的第一重构块,以组成第一参考帧;
第一进入子模块,用于进入下一视频编码层,返回调用第一计算子模块,直至遍历完所述至少部分视频编码层;
其中,所述第一参考帧用于在第一编码流水中,其他编码单元的模式决策。
13.根据权利要求10或11所述的装置,其特征在于,所述第一编码模块还包括:
第一阻塞子模块,用于当缓存的已完成预编码的视频数据的帧数超过预设的帧数阈值时,阻塞第一编码流水。
14.根据权利要求10所述的装置,其特征在于,所述第二编码模块包括:
获取子模块,用于针对组内每一帧视频数据的每一块最大编码单元,获取在当前视频编码层中的编码单元,以及,由当前视频编码层中的编码单元划分的在下一视频编码层中的编码单元;
编码子模块,用于采用编码参数对当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层中的编码单元进行编码;
第二计算子模块,用于计算编码后的,当前视频编码层中的编码单元的第三率失真、由当前编码单元划分的在下一视频编码层中的编码单元的第四率失真;
第二判断子模块,用于判断所述第三率失真是否小于所述第四率失真;若是,则调用写码流子模块,若否,则调用第二进入子模块;其中,所述第四失真率配置有第二系数;
写码流子模块,用于将编码后的当前视频编码层中的编码单元和所述编码参数写入码流;
第二进入子模块,用于进入下一视频编码层,返回调用获取子模块,直至遍历完所有视频编码层;
其中,所述编码单元进行编码的编码参数包括在第一编码流水中对所述编码单元进行模式决策获得的最佳编码参数,或者,在第二编码流水中对所述编码单元进行模式决策获得的编码参数。
15.根据权利要求14所述的装置,其特征在于,所述最佳编码参数包括位移矢量,所述编码子模块包括:
第一运动估计子模块,用于在所述位移矢量为整像素时,在所述当前视频编码层中的编码单元,和/或,由当前编码单元划分的在下一视频编码层的第一预设范围内进行整像素运动估计;
第二运动估计子模块,用于在最佳的整像素的第二预设范围内进行分像素运动估计。
16.根据权利要求14所述的装置,其特征在于,所述第二编码模块还包括:
第二重构子模块,用于获取写入码流的编码单元对应的第二重构块,以组成第二参考帧;
其中,所述第二参考帧用于在第二编码流水中,其他编码单元的编码。
17.根据权利要求14所述的装置,其特征在于,所述第二编码模块还包括:
第三判断子模块,用于在第一编码流水中的参考帧为源图像数据,且,当前帧的图像数据编码完成时,判断当前帧的图像数据是否应用于第一编码流水中的参考预测;若否,则调用回收子模块,若否,则调用缓存子模块;
回收子模块,用于回收当前帧的图像数据;
缓存子模块,用于将当前帧的图像数据缓存到第一编码流水中的参考帧队列。
18.根据权利要求14或15或16或17所述的装置,其特征在于,所述第二编码模块还包括:
第二阻塞子模块,用于在下一组视频数据未完成预编码时,阻塞第二编码流水。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510185227.2A CN104811696B (zh) | 2015-04-17 | 2015-04-17 | 一种视频数据的编码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510185227.2A CN104811696B (zh) | 2015-04-17 | 2015-04-17 | 一种视频数据的编码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104811696A true CN104811696A (zh) | 2015-07-29 |
CN104811696B CN104811696B (zh) | 2018-01-02 |
Family
ID=53696147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510185227.2A Active CN104811696B (zh) | 2015-04-17 | 2015-04-17 | 一种视频数据的编码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104811696B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306937A (zh) * | 2015-11-17 | 2016-02-03 | 福州瑞芯微电子股份有限公司 | 一种vp9熵解码计算方法和装置 |
CN106534849A (zh) * | 2016-12-30 | 2017-03-22 | 杭州当虹科技有限公司 | 一种快速的hevc帧间编码方法 |
CN107197296A (zh) * | 2017-06-22 | 2017-09-22 | 华中科技大学 | 一种基于COStream的HEVC并行编码方法和系统 |
CN108206954A (zh) * | 2016-12-16 | 2018-06-26 | 北京金山云网络技术有限公司 | 一种视频编码方法及装置 |
CN109151477A (zh) * | 2017-06-28 | 2019-01-04 | 华为技术有限公司 | 一种图像数据的编码、解码方法及装置 |
CN109286816A (zh) * | 2018-09-12 | 2019-01-29 | 天津大学 | 一种hevc优化帧内预测分块的方法 |
CN111770339A (zh) * | 2020-07-22 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、设备及存储介质 |
CN111901597A (zh) * | 2020-08-05 | 2020-11-06 | 杭州当虹科技股份有限公司 | 一种基于视频复杂度的cu级qp分配算法 |
CN112911284A (zh) * | 2021-01-14 | 2021-06-04 | 北京博雅慧视智能技术研究院有限公司 | 一种视频编码中跳过模式实现方法及实现电路 |
JP2022013601A (ja) * | 2020-06-29 | 2022-01-18 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ビデオコーディング方法、装置、電子機器及び記憶媒体 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150719A (zh) * | 2006-09-20 | 2008-03-26 | 华为技术有限公司 | 并行视频编码的方法及装置 |
WO2009042943A2 (en) * | 2007-09-26 | 2009-04-02 | Qualcomm Incorporated | Efficient transformation techniques for video coding |
CN103246499A (zh) * | 2013-05-28 | 2013-08-14 | 西安电子科技大学 | 图像并行化处理装置和方法 |
CN103414895A (zh) * | 2013-07-29 | 2013-11-27 | 复旦大学 | 一种适用于hevc标准的编码器帧内预测装置及方法 |
CN103517071A (zh) * | 2012-06-21 | 2014-01-15 | 佳能株式会社 | 图像编码设备和图像编码方法 |
-
2015
- 2015-04-17 CN CN201510185227.2A patent/CN104811696B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150719A (zh) * | 2006-09-20 | 2008-03-26 | 华为技术有限公司 | 并行视频编码的方法及装置 |
WO2009042943A2 (en) * | 2007-09-26 | 2009-04-02 | Qualcomm Incorporated | Efficient transformation techniques for video coding |
CN103517071A (zh) * | 2012-06-21 | 2014-01-15 | 佳能株式会社 | 图像编码设备和图像编码方法 |
CN103246499A (zh) * | 2013-05-28 | 2013-08-14 | 西安电子科技大学 | 图像并行化处理装置和方法 |
CN103414895A (zh) * | 2013-07-29 | 2013-11-27 | 复旦大学 | 一种适用于hevc标准的编码器帧内预测装置及方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306937A (zh) * | 2015-11-17 | 2016-02-03 | 福州瑞芯微电子股份有限公司 | 一种vp9熵解码计算方法和装置 |
CN105306937B (zh) * | 2015-11-17 | 2018-03-27 | 福州瑞芯微电子股份有限公司 | 一种vp9熵解码计算方法和装置 |
CN108206954A (zh) * | 2016-12-16 | 2018-06-26 | 北京金山云网络技术有限公司 | 一种视频编码方法及装置 |
CN106534849B (zh) * | 2016-12-30 | 2019-07-16 | 杭州当虹科技股份有限公司 | 一种快速的hevc帧间编码方法 |
CN106534849A (zh) * | 2016-12-30 | 2017-03-22 | 杭州当虹科技有限公司 | 一种快速的hevc帧间编码方法 |
CN107197296B (zh) * | 2017-06-22 | 2019-08-13 | 华中科技大学 | 一种基于COStream的HEVC并行编码方法和系统 |
CN107197296A (zh) * | 2017-06-22 | 2017-09-22 | 华中科技大学 | 一种基于COStream的HEVC并行编码方法和系统 |
CN109151477A (zh) * | 2017-06-28 | 2019-01-04 | 华为技术有限公司 | 一种图像数据的编码、解码方法及装置 |
CN109151477B (zh) * | 2017-06-28 | 2020-08-07 | 华为技术有限公司 | 一种图像数据的编码、解码方法及装置 |
CN109286816A (zh) * | 2018-09-12 | 2019-01-29 | 天津大学 | 一种hevc优化帧内预测分块的方法 |
JP2022013601A (ja) * | 2020-06-29 | 2022-01-18 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ビデオコーディング方法、装置、電子機器及び記憶媒体 |
JP7101753B2 (ja) | 2020-06-29 | 2022-07-15 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ビデオコーディング方法、装置、電子機器及び記憶媒体 |
US11700373B2 (en) | 2020-06-29 | 2023-07-11 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method for coding video and related device |
CN111770339A (zh) * | 2020-07-22 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、设备及存储介质 |
CN111901597A (zh) * | 2020-08-05 | 2020-11-06 | 杭州当虹科技股份有限公司 | 一种基于视频复杂度的cu级qp分配算法 |
CN112911284A (zh) * | 2021-01-14 | 2021-06-04 | 北京博雅慧视智能技术研究院有限公司 | 一种视频编码中跳过模式实现方法及实现电路 |
CN112911284B (zh) * | 2021-01-14 | 2023-04-07 | 北京博雅慧视智能技术研究院有限公司 | 一种视频编码中跳过模式实现方法及实现电路 |
Also Published As
Publication number | Publication date |
---|---|
CN104811696B (zh) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104811696A (zh) | 一种视频数据的编码方法和装置 | |
KR102085174B1 (ko) | 영상 복호화 방법 및 컴퓨터로 읽을 수 있는 기록 매체 | |
CN106851304B (zh) | 用于解码运动画面的设备 | |
KR102435393B1 (ko) | 참조 유닛 결정 방법 및 장치 | |
KR102127401B1 (ko) | 비디오 신호의 처리 방법 및 장치 | |
CN114286101B (zh) | 一种视频编解码方法及设备 | |
CN110024384A (zh) | 基于帧间预测模式处理视频的方法和用于该方法的设备 | |
KR20180019688A (ko) | 픽처 예측 방법 및 픽처 예측 장치 | |
GB2501835A (en) | Generating a set of motion vector predictors where determination of temporal predictors is dependent on selected spatial predictors | |
CN103139564A (zh) | 使用不对称分区的公共合并候选组编码/解码视频的方法 | |
CN104602021A (zh) | 用于对活动图片进行解码的装置 | |
KR20190072450A (ko) | 분산 처리 환경에서의 학습 파라미터의 압축 및 전송을 제공하는 방법 및 장치 | |
Wang et al. | Paralleling variable block size motion estimation of HEVC on CPU plus GPU platform | |
CN104918047B (zh) | 一种双向运动估计的排除方法和装置 | |
KR20230003054A (ko) | 코딩 및 디코딩 방법, 장치 및 그 기기 | |
US20220417550A1 (en) | Method and apparatus for constructing motion information list in video encoding and decoding and device | |
KR101842551B1 (ko) | 모션 파티션 모드 판정 방법 및 부호화기 | |
KR20140031974A (ko) | 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치, 화상 복호 장치, 화상 부호화 프로그램 및 화상 복호 프로그램 | |
US10743009B2 (en) | Image processing apparatus and image processing method | |
KR20130122566A (ko) | 깊이 정보를 이용한 움직임 벡터 예측을 위한 3차원 영상의 부호화 방법 및 장치, 및 복호화 방법 및 장치 | |
CN111246216B (zh) | 一种基于三角预测的视频编解码方法及设备 | |
RU2797353C1 (ru) | Способ, аппарат и устройство кодирования и декодирования | |
CN112055220B (zh) | 一种编解码方法、装置及其设备 | |
Wang et al. | uAVS2—Fast encoder for the 2nd generation IEEE 1857 video coding standard | |
KR20240100392A (ko) | 비디오 코딩에서 아핀 병합 모드에 대한 후보 도출 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |