CN116233462A - 视频编码方法、视频编码系统及视频编码器 - Google Patents
视频编码方法、视频编码系统及视频编码器 Download PDFInfo
- Publication number
- CN116233462A CN116233462A CN202310215594.7A CN202310215594A CN116233462A CN 116233462 A CN116233462 A CN 116233462A CN 202310215594 A CN202310215594 A CN 202310215594A CN 116233462 A CN116233462 A CN 116233462A
- Authority
- CN
- China
- Prior art keywords
- frame
- prediction
- inter
- motion estimation
- video
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000002457 bidirectional effect Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 10
- 239000013598 vector Substances 0.000 description 49
- 238000013139 quantization Methods 0.000 description 16
- 230000009466 transformation Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 230000006872 improvement Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003068 static effect Effects 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种视频编码方法、视频编码系统及视频编码器,该视频编码方法包括使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。该视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块。该视频编码器包括硬件驱动、硬件编码器、内存和视频编码系统。本发明的技术方案能够复用相同的运动估计模块,充分利用硬件资源来提高编码效率,且能够适用于所有视频编码标准。
Description
技术领域
本发明涉及视频编码技术领域,尤其涉及一种视频编码方法、视频编码系统及视频编码器。
背景技术
对于双向预测的帧,我们称之为B-Frame(bi-directional interpolatedprediction frame,B帧,又称双向预测内插编码帧)。B-Frame有2个参考帧,一个前向参考帧和一个后向参考帧,当前帧的待编码块会分别在前向参考帧和后向参考帧中选出一个最优匹配块,然后两个最优匹配块加权平均,得到最终的匹配块。具体参考关系如图1所示,Fn-1为Fn的前向参考帧,Fn+1为Fn的后向参考帧。
对于前向预测的帧,我们称之为P-Frame(predictive-frame,P帧,又称前向预测编码帧)。P-Frame只能进行前向参考,可以只有一个前向参考帧,也可以有多个前向参考帧,例如当前P-Frame有两个前向参考帧时,待编码块会分别在两个前向参考帧中各找出一个最优匹配块,然后将两个最优匹配块进行进一步的对比,选出最终的最优匹配块。具体参考关系如图2所示,Fn-2为Fn的第一个前向参考帧,Fn-1为Fn的第一个前向参考帧。
下表1是在开源编码器x265(用于编码符合高效率视频编码(HEVC/H.265)标准的视频的开源自由软件及函数库)上分析的B-Frame对编码效率的影响,B-Frame数量表示在2个P-Frame之间插入多少个B-Frame,不论插入多少个B-Frame,编码效率的提升都大于13%,可见支持B-Frame对提升编码效率非常可观。
B-Frame数量 | 编码效率提升 |
1 | 13.42% |
2 | 16.26% |
3 | 18.31% |
4 | 17.44% |
表1:B-Frame数量与编码效率提升的关系
为了支持B-Frame,有如下两种实现方案:方案一:B-Frame的两个参考方向均复用P-Frame的运动估计模块。方案二:增加一个运动估计模块,B-Frame的前向参考帧与P-Frame复用相同的运动估计模块,B-Frame的后向参考帧使用一个运动估计模块。
采用方案一的编码器,编码速度会非常慢,虽然不需要额外增加硬件资源,但是性能太差,不具备实用价值。
采用方案二的编码器,不影响编码速度,尽管需要额外增加硬件资源,但考虑到B-Frame对编码效率的提升较大,硬件资源的增加在可接受的范围内。在编码P-Frame时,如果仅支持单前向预测,那么新增的运动估计模块完全处于空闲状态,浪费了硬件资源。
由上述两个方案的编码器可知,如果该编码器不支持B-Frame,虽然比较节省面积,但是对编码效率的影响较大。如果该编码器支持B-Frame,则必须额外增加一个运动估计模块。那么在编码P-Frame时,额外增加的运动估计模块会完全处于空闲状态,浪费硬件资源。
发明内容
本发明的目的之一是为了克服现有技术中的不足,针对现有技术中存在的在编码器中增加运动估计模块会大大增加硬件资源影响编码效率的问题,提供一种视频编码方法、视频编码系统及视频编码器。
为实现以上目的,本发明通过以下技术方案实现:
第一方面,本发明提供了一种视频编码方法,所述视频编码方法包括:
使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;
使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
在本申请的一个优选实施例中,对所述P帧进行的双前向帧间预测具体为:
使用所述两个运动估计模块中的第一运动估计模块对所述P帧进行第一个参考帧的P帧第一前向预测,使用所述两个运动估计模块中的第二运动估计模块对所述P帧进行第二个参考帧的P帧第二前向预测;
其中,在所述视频码流中,所述第一个参考帧和所述第二个参考帧均位于所述P帧之前。
在本申请的一个优选实施例中,对所述B帧进行的所述前向帧间预测、所述后向帧间预测和所述双向帧间预测具体为:
使用所述两个运动估计模块中的第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测;
使用所述两个运动估计模块中的第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测;
使用所述第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,同时使用所述第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测;
其中,在所述视频码流中,所述前向参考帧位于所述B帧之前,所述后向参考帧位于所述B帧之后。
在本申请的一个优选实施例中,在对所述P帧和所述B帧进行帧间预测之前,还包括:
判断视频码流中帧的类型;
若所述类型为P帧,则对所述P帧进行所述双前向帧间预测和帧内预测;
若所述类型为B帧,则对所述B帧进行所述前向帧间预测或所述后向帧间预测、所述双向帧间预测和帧内预测;
若所述类型为I帧,则对所述I帧进行帧内预测。
在本申请的一个优选实施例中,在对所述P帧、B帧、I帧进行所述帧内预测之后,还包括:
根据当前帧的类型,分别对所述P帧、所述B帧和所述I帧进行模式判决;
针对所述P帧,比较所述双前向帧间预测和所述帧内预测的结果,得到对应的第一最优模式结果;
针对所述B帧,比较所述前向帧间预测、所述后向帧间预测、所述双向帧间预测和所述帧内预测的结果,得到对应的第二最优模式结果;
针对所述I帧,将所述帧内预测的结果作为第三最优模式结果;
根据所述当前帧的类型,将所述第一最优模式结果、所述第二最优模式结果或所述第三最优模式结果编入所述视频码流中。
在本申请的一个优选实施例中,对所述P帧进行模式判决具体包括:
通过使用所述两个运动估计模块中的第一运动估计模块对所述P帧进行第一个参考帧的P帧第一前向预测,得到所述P帧第一前向预测对应的P帧第一绝对误差和值;
通过使用所述两个运动估计模块中的第二运动估计模块对所述P帧进行第二个参考帧的P帧第二前向预测,得到所述P帧第二前向预测对应的P帧第二绝对误差和值;
通过对所述P帧进行的帧内预测,得到对应的P帧第三绝对误差和值;
通过比较所述P帧第一绝对误差和值、所述P帧第二绝对误差和值和所述P帧第三绝对误差和值,将最小的数值作为所述P帧对应的所述第一最优模式结果。
在本申请的一个优选实施例中,对所述B帧进行模式判决具体包括:
通过使用所述两个运动估计模块中的第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,得到所述B帧前向预测对应的B帧第一绝对误差和值;
通过使用所述两个运动估计模块中的第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测,得到所述B帧后向预测对应的B帧第二绝对误差和值;
通过使用所述第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,同时使用所述第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测,得到B帧双向预测对应的B帧第三绝对误差和值;
通过对所述B帧进行的帧内预测,得到对应的B帧第四绝对误差和值;
通过比较所述B帧第一绝对误差和值、所述B帧第二绝对误差和值、所述B帧第三绝对误差和值和所述B帧第四绝对误差和值,将最小的数值作为所述B帧对应的所述第二最优模式结果。
第二方面,本发明提供了一种视频编码系统,所述视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块;
所述第一帧间预测控制模块用于使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;
所述第二帧间预测控制模块用于使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
第三方面,本发明提供了一种视频编码器,包括硬件驱动、硬件编码器、内存和如第二方面所述的视频编码系统,所述硬件编码器分别与所述硬件驱动、所述内存和所述视频编码系统连接;
所述硬件驱动用于向所述硬件编码器传输视频码流、所述视频码流中P帧对应的第一个参考帧和第二个参考帧、以及所述视频码流中B帧对应的前向参考帧和后向参考帧;
所述硬件编码器包括两个运动估计模块;
所述视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块,所述第一帧间预测控制模块用于使用所述两个运动估计模块对视频码流中的P帧进行双前向帧间预测,所述第二帧间预测控制模块用于使用所述两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测;
所述内存用于存储所述视频码流中所述P帧和所述B帧的重构帧。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的视频编码方法。
第五方面,本发明提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的视频编码方法。
本发明所公开的视频编码方法、视频编码系统及视频编码器,使得P帧的第二个参考帧和B帧的后向参考帧能够复用相同的运动估计模块,充分利用硬件资源来提高编码效率,且能够适用于所有视频编码标准。
附图说明
本发明借助于以下附图进行描述:
图1是现有技术中,B帧参考帧的示意图;
图2是现有技术中,P帧参考帧的示意图;
图3是本发明中实施例1的视频编码方法中,复用硬件资源对B帧进行双向预测和和对P帧双前向预测的示意图;
图4是本发明中实施例1的视频编码方法的基本流程图;
图5是本发明中实施例1的视频编码方法的整体流程图;
图6是本发明中实施例1的视频编码方法中,对P帧进行模式判决的具体流程图;
图7是本发明中实施例1的视频编码方法中,对B帧进行模式判决的具体流程图;
图8是本发明中实施例2的视频编码系统的示意图;
图9是本发明中实施例3的视频编码器的内部示意图;
图10是本发明中实施例3的视频编码器中,运动补偿及变换量化单元的工作示意图;
图11是本发明中实施例3的视频编码器进行编码工作时的简要示意图。
具体实施方式
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
实施例1
本发明实施例1公开了一种视频编码方法,通过复用硬件资源同时实现了双前向预测和双向预测。
本实施例1的视频编码方法包括:使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
具体来说,如果在视频编码器中只设置一个运动估计模块,此时该运动估计模块在一段时间内只能搜索出一个参考块,也就只能串行的去搜索参考块,那么就会大大降低编码速度。如果在视频编码器中增加多个运动估计模块,确实能够支持多前向预测或者双向预测,在运动估计的过程中为待编码块找到多个参考块,但由于运动估计模块是整个编码器中最耗时、占用硬件资源最多的模块,增加多个运动估计模块又会大大增加硬件资源。因此,在权衡编码质量、编码速度、硬件资源等因素之后,在本实施例1中,视频编码器仅额外增加一个运动估计模块,如图3所示,通过复用两个运动估计模块实现对当前帧的双前向预测和双向预测,这样本实施例1的视频编码方法能够适用于诸多视频格式的编码标准,如H264和HEVC等编码标准,这些编码标准均支持对当前帧的多前向预测和双向预测。多前向预测表示当前帧可以有多个前向参考帧,在做运动估计时,在每个前向参考帧中各搜索出一个参考块;双向预测表示当前帧可以有一个前向参考帧和一个后向参考帧,在做运动估计时,当前帧中的每个待编码块都可以有一个前向参考块和一个后向参考块。
在视频码流中,帧的类型有I帧(Intraframe Frame帧内编码帧)、P帧、B帧等,由于I帧不需要进行帧间预测,故只对P帧和B帧进行帧间预测。参见图3,在对P帧进行双前向帧间预测以及对B帧进行双向帧间预测时,两个运动估计模块同时工作,对P帧进行双前向帧间预测中的一个帧间预测与对B帧进行的前向帧间预测可以复用其中一个运动估计模块,对P帧进行双前向帧间预测中的另一个帧间预测与对B帧进行的后向帧间预测可以复用另一个运动估计模块。通过上述对运动估计模块的复用方式对视频码流的当前帧进行编码,充分利用了硬件资源,提高了编码效率。
在本实施例1的视频编码方法中,视频编码器中的两个运动估计模块分别为第一运动估计模块ME0和第二运动估计模块ME1。
故在图3中,本实施例1的视频编码方法使用第一运动估计模块ME0和第二运动估计模块ME1对P帧进行的双前向帧间预测具体是指,使用两个运动估计模块中的第一运动估计模块ME0对P帧进行第一个参考帧的P帧第一前向预测,使用两个运动估计模块中的第二运动估计模块ME1对P帧进行第二个参考帧的P帧第二前向预测。其中,在视频码流中,第一个参考帧和第二个参考帧均位于P帧之前,第一参考帧和第二参考帧之间的顺序并无严格限定,两者之间的先后顺序可以根据实际情况灵活配置。
同样地,在图3中,本实施例1的视频编码方法使用第一运动估计模块ME0和第二运动估计模块ME1对B帧进行的前向帧间预测、后向帧间预测和双向帧间预测具体是指:使用两个运动估计模块中的第一运动估计模块ME0对B帧进行前向参考帧的B帧前向预测;使用两个运动估计模块中的第二运动估计模块ME1对B帧进行后向参考帧的B帧后向预测;使用第一运动估计模块ME0对B帧进行前向参考帧的B帧前向预测,同时使用第二运动估计模块ME1对B帧进行后向参考帧的B帧后向预测。其中,在视频码流中,前向参考帧位于B帧之前,后向参考帧位于B帧之后。
由图3可知,对P帧进行第一个参考帧的P帧第一前向预测和对B帧进行前向参考帧的B帧前向预测复用了第一运动估计模块ME0,对P帧进行第二个参考帧的P帧第二前向预测和对B帧进行后向参考帧的B帧后向预测复用了第二运动估计模块ME1。此处,“第一”和“第二”仅为了方便说明实施例1的视频编码方法而作的区分,并非表示两个运动估计模块的结构和工作原理不同。在复用第一运动估计模块ME0和第二运动估计模块ME1对P帧和B帧进行帧间预测时,针对P帧,在当前帧的前方具有第一个参考帧和第二个参考帧,通过第一运动估计模块ME0为当前帧的待编码块在第一个参考帧选出一个最优匹配块,通过第二运动估计模块ME1为当前帧的待编码块在第二个参考帧中选出另一个最优匹配块,然后将两个最优匹配块进行加权平均计算,得到P帧最终的匹配块;针对B帧,在当前帧的前方和后方分别具有前向参考帧和后向参考帧,通过第一运动估计模块ME0为当前帧的待编码块在前向参考帧中选出一个最优匹配块,通过第二运动估计模块ME1为当前帧的待编码块在后向参考帧中选出另一个最优匹配块,然后将两个最优匹配块进行加权平均计算,得到B帧最终的匹配块。在整个帧间预测的过程中,第一运动估计模块ME0和第二运动估计模块ME1均能够同时执行对P帧和B帧的帧间预测工作,相比于在视频编码器中只设置一个运动估计模块的方案和虽然设置多个运动估计模块但在编码时不复用增加的运动估计模块的方案,本实施例1的视频编码方法使得两个运动估计模块在编码时始终被复用而处于工作状态,不会出现空闲状态,充分利用的视频编码器中的硬件资源,还能提高编码效率。
在本实施例1的视频编码方法中,对P帧和B帧进行帧间预测之前还需要对视频码流中当前帧的类型进行判断。
参见图4,本实施例1的视频编码方法包括:
S100:判断视频码流中当前帧的类型;若当前帧的类型为P帧,则依次执行S200和S400;若当前帧的类型为B帧,则依次执行S300和S400;若当前帧的类型为I帧,则直接执行S400;
S200:使用设置于视频编码器中的两个运动估计模块对P帧进行双前向帧间预测;
S300:使用设置于视频编码器中的两个运动估计模块对B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测;
S400:对当前帧进行帧内预测。
具体来说,在本实施例1的视频编码方法中,视频编码器具有第一运动估计模块ME0和第二运动估计模块ME1,视频编码器接收到的视频码流中具有当前帧的编码配置信息,该编码配置信息包含各个帧的帧类型信息,针对待编码的当前帧,需要对其类型进行判别,即执行S100确定待编码的当前帧是P帧、B帧还是I帧,并针对P帧和B帧分别进行帧间预测和帧内预测,而针对I帧直接进行帧内预测即可。
在当前帧的类型为P帧时,只能进行前向帧间预测,不能进行后向帧间预测,故通过执行S200对P帧进行双前向帧间预测。参见图3,在接收的视频码流中,P帧的参考帧均位于P帧之前,为第一个参考帧和第二个参考帧,在视频码流中第一个参考帧、第二个参考帧、P帧依次排列。利用第一运动估计模块ME0进行第一个参考帧的P帧第一前向预测,利用第二运动估计模块ME1进行第二个参考帧的P帧第二前向预测,分别在第一个参考帧和第二个参考帧中找到与当前帧的待编码块对应的一个运动矢量(mv,motion vector)和一个预测块。
在当前帧的类型为B帧时,既可以进行前向帧间预测,也可以进行后向帧间预测,还可以进行双向帧间预测,其中前向帧间预测和后向帧间预测均为单向帧间预测。通过执行S300对B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。参见图3,在接收的视频码流中,B帧的参考帧均位于B帧之前和之后,为前向参考帧和后向参考帧,在视频码流中前向参考帧、B帧、后向参考帧依次排列。利用第一运动估计模块ME0进行前向参考帧的B帧前向预测,利用第二运动估计模块ME1进行后向参考帧的B帧后向预测,分别在前向参考帧和后向参考帧中找到与当前帧的待编码块对应的一个运动矢量和一个预测块。再利用第一运动估计模块ME0和第二运动估计模块ME1同时进行B帧前向预测和B帧后向预测,在前向参考帧和后向参考帧中找到与当前帧的待编码块对应的两个运动矢量和两个预测块,再对两个预测块进行加权平均,得到最终的一个预测块。
在完成P帧和B帧的帧间预测后,无论当前帧是P帧、B帧还是I帧,都需要执行S400进行帧内预测。在这之后,本实施例1的视频编码方法需要对帧间预测和帧内预测得到的预测结果进行计算,选出对于当前帧最优的结果作为选择参考帧的依据。
参见图5,本实施例1的视频编码方法包括:
S100:判断视频码流中当前帧的类型;若当前帧的类型为P帧,则依次执行S200和S400;若当前帧的类型为B帧,则依次执行S300和S400;若当前帧的类型为I帧,则直接执行S400;
S200:使用设置于视频编码器中的两个运动估计模块对P帧进行双前向帧间预测;
S300:使用设置于视频编码器中的两个运动估计模块对B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测;
S400:对当前帧进行帧内预测;
S500:根据当前帧的类型,分别对P帧、B帧和I帧进行模式判决;若当前帧为P帧,则执行S600;若当前帧为B帧,则执行S700;若当前帧为I帧,则执行S800;
S600:针对P帧,比较双前向帧间预测和帧内预测的结果,得到对应的第一最优模式结果;
S700:针对B帧,比较前向帧间预测、后向帧间预测、双向帧间预测和帧内预测的结果,得到对应的第二最优模式结果;
S800:针对I帧,将帧内预测的结果作为第三最优模式结果;
S900:根据当前帧的类型,将第一最优模式结果、第二最优模式结果或第三最优模式结果编入视频码流中。
具体来说,本实施例1的视频编码方法在完成对P帧和B帧的帧间预测以及对P帧、B帧和I帧的帧内预测之后,需要针对不同类型的帧进行模式判决,选择最优的预测模式(即执行S600、S700、S800),从而使得当前帧中待编码块的编码质量尽可能更高,这样当前帧的重构帧中的重构图像与当前帧的原始图像之间像素差尽可能小,视频码流在传输过程的数据损失更少,再现视频的质量更高。
针对不同类型的帧,模式判决的步骤略有差异。
参见图6,本实施例1的视频编码方法执行S600对P帧进行模式判决具体包括:
S601:通过使用两个运动估计模块中的第一运动估计模块ME0对P帧进行第一个参考帧的P帧第一前向预测,得到P帧第一前向预测对应的P帧第一绝对误差和值;
S602:通过使用两个运动估计模块中的第二运动估计模块ME1对P帧进行第二个参考帧的P帧第二前向预测,得到P帧第二前向预测对应的P帧第二绝对误差和值;
S603:通过对P帧进行的帧内预测,得到对应的P帧第三绝对误差和值;
S604:通过比较P帧第一绝对误差和值、P帧第二绝对误差和值和P帧第三绝对误差和值,将最小的数值作为P帧对应的第一最优模式结果。
其中,S601、S602和S603的执行并无先后顺序,S604最后执行。
具体来说,P帧的第一个参考帧标记地址ref0_addr_P,第二个参考帧标记地址ref1_addr_P。对当前帧进行编码就是对当前帧中各个编码块进行编码。在对当前帧的待编码块进行帧间预测的过程中,针对P帧,使用第一运动估计模块ME0进行第一个参考帧ref0_addr_P的P帧第一前向预测得到P帧第一运动矢量P_mv0,从第一个参考帧ref0_addr_P中读取P帧第一参考块,然后计算出当前帧的待编码块与第一个参考帧ref0_addr_P的P帧第一参考块之间的P帧第一绝对误差和(sad,sum ofabsolute difference)值P_sad0;再使用第二运动估计模块ME1进行第二个参考帧ref1_addr_P的P帧第二前向预测得到P帧第二运动矢量P_mv1,从第二个参考帧ref1_addr_P中读取P帧第二参考块,然后计算出当前帧的待编码块与第二个参考帧ref1_addr_P的P帧第二参考块之间的P帧第二绝对误差和值P_sad1。在完成帧间预测后对当前帧进行帧内预测,得到P帧第三绝对误差和值P_sad2。最后比较P帧第一绝对误差和值P_sad0、P帧第二绝对误差和值P_sad1和P帧第三绝对误差和值P_sad2的大小,选取最小的数值作为选取预测模式和参考帧的依据。如果P帧第一绝对误差和值P_sad0最小,则最优预测模式为前向帧间预测(即P帧第一前向预测),最优参考帧为第一个参考帧ref0_addr_P,最优运动矢量为P帧第一运动矢量P_mv0,对应的第一最优模式结果即为{前向帧间预测,ref0_addr_P,P_mv0};如果P帧第二绝对误差和值P_sad1最小,则最优预测模式为前向帧间预测(即P帧第二前向预测),最优参考帧为第二个参考帧ref1_addr_P,最优运动矢量为P帧第二运动矢量P_mv1,对应的第一最优模式结果即为{前向帧间预测,ref1_addr_P,P_mv1};如果P帧第三绝对误差和值P_sad2最小,则最优预测模式为帧内预测,不需要选择最优参考帧,没有最优运动矢量,对应的第一最优模式结果即为{帧内预测,0,0}。
参见图7,本实施例1的视频编码方法执行S700对B帧进行模式判决具体包括:
S701:通过使用两个运动估计模块中的第一运动估计模块ME0对B帧进行前向参考帧的B帧前向预测,得到B帧前向预测对应的B帧第一绝对误差和值;
S702:通过使用两个运动估计模块中的第二运动估计模块ME1对B帧进行后向参考帧的B帧后向预测,得到B帧后向预测对应的B帧第二绝对误差和值;
S703:通过使用第一运动估计模块ME0对B帧进行前向参考帧的B帧前向预测,同时使用第二运动估计模块ME1对B帧进行后向参考帧的B帧后向预测,得到B帧双向预测对应的B帧第三绝对误差和值;
S704:通过对B帧进行的帧内预测,得到对应的B帧第四绝对误差和值;
S705:通过比较B帧第一绝对误差和值、B帧第二绝对误差和值、B帧第三绝对误差和值和B帧第四绝对误差和值,将最小的数值作为B帧对应的第二最优模式结果。
其中,S701、S702和S703的执行并无先后顺序,S704在S701、S702和S703都执行完毕后再执行,S705最后执行。
具体来说,B帧的前向参考帧标记地址ref0_addr_B,第二个参考帧标记地址ref1_addr_B。对当前帧进行编码就是对当前帧中各个编码块进行编码。在对当前帧的待编码块进行帧间预测的过程中,针对B帧,使用第一运动估计模块ME0进行前向参考帧ref0_addr_B的B帧前向预测得到B帧第一运动矢量B_mv0,从前向参考帧ref0_addr_B中读取B帧前向参考块,然后计算出当前帧的待编码块与前向参考帧ref0_addr_B的B帧前向参考块之间的B帧第一绝对误差和值B_sad0;再使用第二运动估计模块ME1进行后向参考帧ref1_addr_B的B帧后向预测得到B帧第二运动矢量B_mv1,从后向参考帧ref1_addr_B中读取B帧后向参考块,然后计算出当前帧的待编码块与后向参考帧ref1_addr_B的B帧后向参考块之间的B帧第二绝对误差和值B_sad1;再同时使用第一运动估计模块ME0进行B帧前向预测和第二运动估计模块ME1进行B帧后向预测,根据得到的B帧第一运动矢量B_mv0和B帧第二运动矢量B_mv1,分别从前向参考帧ref0_addr_B和后向参考帧ref1_addr_B中读取B帧前向参考块和B帧后向参考块,然后计算出当前帧的待编码块与前向参考帧ref0_addr_B的B帧前向参考块之间以及与后向参考帧ref1_addr_B的B帧后向参考块之间的B帧第三绝对误差和值B_sad3。在完成帧间预测后对当前帧进行帧内预测,得到B帧第四绝对误差和值B_sad2。最后比较B帧第一绝对误差和值B_sad0、B帧第二绝对误差和值B_sad1、B帧第三绝对误差和值B_sad3和B帧第四绝对误差和值B_sad2的大小,选取最小的数值作为选取预测模式和参考帧的依据。如果B帧第一绝对误差和值B_sad0最小,则最优预测模式为前向帧间预测(即B帧前向预测),最优参考帧为前向参考帧ref0_addr_B,最优运动矢量为B帧第一运动矢量B_mv0,对应的第二最优模式结果即为{前向帧间预测,ref0_addr_B,B_mv0};如果B帧第二绝对误差和值B_sad1最小,则最优预测模式为后向帧间预测(即B帧后向预测),最优参考帧为后向参考帧ref1_addr_B,最优运动矢量为B帧第二运动矢量B_mv1,对应的第二最优模式结果即为{后向帧间预测,ref1_addr_B,B_mv1};如果B帧第三绝对误差和值B_sad3最小,则最优预测模式为双向帧间预测(即同时进行B帧前向预测和B帧后向预测),最优参考帧为前向参考帧和后向参考帧的集合(ref0_addr_B,ref1_addr_B),最优运动矢量为B帧第一运动矢量和B帧第二运动矢量的集合(B_mv0,B_mv1),对应的第二最优模式结果即为{双向帧间预测,(ref0_addr_B,ref1_addr_B),(B_mv0,B_mv1)};如果B帧第四绝对误差和值B_sad2最小,则最优预测模式为帧内预测,不需要选择最优参考帧,没有最优运动矢量,对应的第二最优模式结果即为{帧内预测,0,0}。
在得到当前帧的第一最优模式结果、第二最优模式结果或第三最优模式结果之后,通过执行S900,在当前帧是P帧时只将第一最优模式结果编入待编码信息中,在当前帧是B帧时只将第二最优模式结果编入待编码信息中,在当前帧是I帧时只将第三最优模式结果编入待编码信息中。同时,针对模式判决过程中产生的各个绝对误差和值,将其作为残差进行变换、量化得到编码系数。然后将待编码信息和编码系数一起进行熵编码后写入视频码流中。在需要重构图像时,对视频码流中的编码系数进行反变换、反量化、重构,并基于待编码信息,得到当前帧的重构帧(包含重构图像)。该重构帧也会作为视频码流中后续帧的参考帧使用。
实施例2
本发明实施例2公开了一种视频编码系统,用于执行本实施例1公开的视频编码方法,通过复用硬件资源同时实现了双前向预测和双向预测。
参见图8,本实施例2的视频编码系统10包括第一帧间预测控制模块11和第二帧间预测控制模块12;第一帧间预测控制模块11用于使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;第二帧间预测控制模块12用于使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
具体来说,本实施例2的视频编码系统10可以设置在视频编码器中。如果在视频编码器中只设置一个运动估计模块,此时该运动估计模块在一段时间内只能搜索出一个参考块,也就只能串行的去搜索参考块,那么就会大大降低编码速度。如果在视频编码器中增加多个运动估计模块,确实能够支持多前向预测或者双向预测,在运动估计的过程中为待编码块找到多个参考块,但由于运动估计模块是整个编码器中最耗时、占用硬件资源最多的模块,增加多个运动估计模块又会大大增加硬件资源。因此,在权衡编码质量、编码速度、硬件资源等因素之后,在本实施例2中,视频编码器仅额外增加一个运动估计模块,通过复用两个运动估计模块实现对当前帧的双前向预测和双向预测,这样本实施例2的视频编码系统10能够适用于诸多视频格式的编码标准,如H264和HEVC等编码标准,这些编码标准均支持对当前帧的多前向预测和双向预测。多前向预测表示当前帧可以有多个前向参考帧,在做运动估计时,在每个前向参考帧中各搜索出一个参考块;双向预测表示当前帧可以有一个前向参考帧和一个后向参考帧,在做运动估计时,当前帧中的每个待编码块都可以有一个前向参考块和一个后向参考块。
在视频码流中,帧的类型有I帧(Intraframe Frame帧内编码帧)、P帧、B帧等,由于I帧不需要进行帧间预测,故只对P帧和B帧进行帧间预测。在对P帧进行双前向帧间预测以及对B帧进行双向帧间预测时,两个运动估计模块同时工作,通过第一帧间预测控制模块11对P帧进行双前向帧间预测中的一个帧间预测与通过第二帧间预测控制模块12对B帧进行的前向帧间预测可以复用其中一个运动估计模块,通过第一帧间预测控制模块11对P帧进行双前向帧间预测中的另一个帧间预测与通过第二帧间预测控制模块12对B帧进行的后向帧间预测可以复用另一个运动估计模块。通过上述对运动估计模块的复用方式对视频码流的当前帧进行编码,充分利用了硬件资源,提高了编码效率。
实施例3
本发明实施例3公开了一种视频编码器,通过复用硬件资源同时实现了双前向预测和双向预测。
参见图9,本实施例3的视频编码器包括硬件驱动、硬件编码器、内存和本申请实施例2公开的视频编码系统,硬件编码器分别与硬件驱动、内存和视频编码系统连接。
在硬件编码器中,设有运动补偿及变换量化单元、SAD SRAM(Sum ofAbsoluteDifference Static Random-Access Memory,绝对误差和值静态随机存取存储器)、帧间预测单元、帧内预测单元、模式判决单元、熵编码SRAM和熵编码单元。在帧间预测单元中,设有第一运动估计模块ME0、第二运动估计模块ME1和双向预测模块。视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块,第一帧间预测控制模块用于使用两个运动估计模块对视频码流中的P帧进行双前向帧间预测,第二帧间预测控制模块用于使用两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
在本实施例3的视频编码器中,运动补偿及变换量化单元分别与硬件驱动、内存、SAD SRAM、帧内预测单元、第一运动估计模块ME0、第二运动估计模块ME1及熵编码SRAM连接,帧间预测单元与SAD SRAM连接,模式判决单元分别与双向预测模块和帧内预测单元连接,熵编码单元分别与熵编码SAD SRAM和内存连接,各个单元和模块之间可以传输数据。
具体地,硬件驱动用于驱动硬件编码器对视频码流进行编码工作,具体用于向硬件编码器传输视频码流中各个帧的编码配置信息,编码配置信息包括帧类型信息等,帧类型信息表明待编码的当前帧是I帧、P帧还是B帧。还用于向运动补偿及变换量化单元传输P帧的第一个参考帧的地址ref0_addr_P和第二个参考帧的地址ref1_addr_P、B帧的前向参考帧的地址ref0_addr_B和后向参考帧的地址ref1_addr_B,第一个参考帧的地址ref0_addr_P和前向参考帧的地址ref0_addr_B表示复用第一运动估计模块ME0,第二个参考帧的地址ref1_addr_P和后向参考帧的地址ref1_addr_B表示复用第二运动估计模块ME1;而I帧没有参考帧,故I帧的参考帧为无效值,不标识地址。
帧间预测单元用于进行P帧和B帧的帧间预测,在接收硬件驱动传输的视频码流的编码配置信息后,先对当前帧的帧类型进行判断。若当前帧为I帧,则帧间预测单元结束流程,启动帧内预测单元对I帧进行帧内预测。若当前帧为P帧,则启动第一运动估计模块ME0对P帧进行第一个参考帧ref0_addr_P的P帧第一前向预测,将得到的P帧第一运动矢量P_mv0传输至运动补偿及变换量化单元,启动第二运动估计模块ME1对P帧进行第二个参考帧ref1_addr_P的P帧第二前向预测,将得到的P帧第二运动矢量P_mv1传输至运动补偿及变换量化单元。若当前帧为B帧,则启动第一运动估计模块ME0对B帧进行前向参考帧ref0_addr_B的B帧前向预测,将得到的B帧第一运动矢量B_mv0传输至运动补偿及变换量化单元,启动第二运动估计模块ME1对B帧进行后向参考帧ref1_addr_B的B帧后向预测,将得到的B帧第二运动矢量B_mv1传输至运动补偿及变换量化单元,启动双向预测模块控制第一运动估计模块ME0对B帧进行前向参考帧ref0_addr_B的B帧前向预测,同时控制第二运动估计模块ME1对B帧进行后向参考帧ref1_addr_B的B帧后向预测,将得到的B帧第一运动矢量B_mv0和B帧第二运动矢量B_mv1传输至运动补偿及变换量化单元。
参见图10,运动补偿及变换量化单元用于在对P帧和B帧进行帧间预测的过程中,接收第一运动估计模块ME0发送的P帧第一运动矢量P_mv0和B帧第一运动矢量B_mv0,然后从P帧的第一个参考帧的地址ref0_addr_P中读取参考块,计算出P帧的待编码块与第一个参考帧ref0_addr_P之间的P帧第一绝对误差和值P_sad0,从B帧的前向参考帧的地址ref0_addr_B中读取参考块,计算出B帧的待编码块与前向参考帧ref0_addr_B之间的B帧第一绝对误差和值B_sad0;接收第二运动估计模块ME1发送的P帧第二运动矢量P_mv1和B帧第二运动矢量B_mv1,然后从P帧的第二个参考帧的地址ref1_addr_P中读取参考块,计算出P帧的待编码块与第二个参考帧ref1_addr_P之间的P帧第二绝对误差和值P_sad1,从B帧的后向参考帧的地址ref1_addr_B中读取参考块,计算出B帧的待编码块与后向参考帧ref1_addr_B之间的B帧第二绝对误差和值B_sad1。在运动补偿及变换量化单元接收到第一运动估计模块ME0和第二运动估计模块ME1同时发送的B帧第一运动矢量B_mv0和B帧第二运动矢量B_mv1时,表明此时双向预测模块启动工作,运动补偿及变换量化单元分别从B帧的前向参考帧的地址ref0_addr_B和B帧的后向参考帧的地址ref1_addr_B中读取各自的参考块,计算出B帧的待编码块与前向参考帧ref0_addr_B及后向参考帧ref1_addr_B之间的B帧第三绝对误差和值B_sad3。然后,运动补偿及变换量化单元将P帧对应的P帧第一绝对误差和值P_sad0和P帧第二绝对误差和值P_sad1、B帧对应的B帧第一绝对误差和值B_sad0、B帧第二绝对误差和值B_sad1和B帧第三绝对误差和值B_sad3传输至SAD SRAM,并且将以上数据作为残差进行变换、量化后得到编码系数,再对编码系数进行反变换、反量化、重构,得到重构图像。最后将P帧对应的P帧第一绝对误差和值P_sad0和P帧第二绝对误差和值P_sad1、B帧对应的B帧第一绝对误差和值B_sad0、B帧第二绝对误差和值B_sad1和B帧第三绝对误差和值B_sad3、编码系数及重构图像这些数据传输至熵编码SRAM。
SAD SRAM用于存储运动补偿及变换量化单元针对视频码流中各个帧产生的大量的绝对误差和值,并将第一运动估计模块ME0和第二运动估计模块ME1通过比较各个帧进行帧间预测后得到的不同运动矢量的绝对误差和值得到各个帧各自最优的运动矢量以及最小绝对误差和值传输至帧间预测单元。
帧内预测单元用于对I帧、P帧和B帧进行帧内预测,分别得到P帧第三绝对误差和值P_sad2、B帧第四绝对误差和值B_sad2以及I帧的第三最优模式结果。
模式判决单元用于比较帧内预测单元和帧间预测单元的预测结果,得到P帧、B帧和I帧分别对应的第一最优模式结果、第二最优模式结果和第三最优模式结果,并将第一最优模式结果、第二最优模式结果和第三最优模式结果及相关的帧类型信息、参考帧地址信息、运动矢量信息和sad值绝对误差和值信息传输至熵编码SRAM。
具体来说,针对当前帧(帧类型为P帧还是B帧只影响参考帧地址的后缀标识和运动矢量及绝对误差和值的前缀标识),假设:
①第一运动估计模块ME0得到的待编码块的最优运动矢量为best_mv0,对应的最小绝对误差和值为min_sad0;
②第二运动估计模块ME1所得到的待编码块的最优运动矢量为best_mv1,对应的最小绝对误差和值为min_sad1;
③帧内预测得到的待编码块的最优帧内预测模式为best_mode,对应的最小绝对误差和值为min_sad2;
④直接将双向预测得到的运动矢量记为(best_mv0,best_mv1),对应的双向预测的绝对误差和值记为min_sad3。
则模式判决单元的判决方法为:
①当前帧为I帧时,没有帧间预测,直接选择帧内预测的第三最优模式结果作为最优结果;
②当前帧为P帧时,比较min_sad0、min_sad1、min_sad2的大小。
a)如果min_sad0最小,则第一最优模式结果为:最优预测模式为前向帧间预测,最优参考帧为第一个参考帧ref0_addr_P,最优运动矢量为best_P_mv0;
b)如果min_sad1最小,则第一最优模式结果为:最优预测模式为前向帧间预测,最优参考帧为第二个参考帧ref1_addr_P,最优运动矢量为best_P_mv1;
c)如果min_sad2最小,则第一最优模式结果为:最优预测模式为帧内预测的best_P_mode。
③当前帧为B帧时,比较min_sad0、min_sad1、min_sad2、min_sad3的大小。
a)如果min_sad0最小,则第二最优模式结果为:最优预测模式为前向帧间预测,最优参考帧为前向参考帧ref0_addr_B,最优运动矢量为best_B_mv0;
b)如果min_sad1最小,则第二最优模式结果为:最优预测模式为后向帧间预测,最优参考帧为后向参考帧ref1_addr_B,最优运动矢量为best_B_mv1;
c)如果min_sad2最小,则第二最优模式结果为:最优预测模式为帧内预测的best_B_mode;
d)如果min_sad3最小,则第二最优模式结果为:最优预测模式为双向帧间预测,最优参考帧为前向参考帧和后向参考帧的集合(ref0_addr_B,ref1_addr_B),最优运动矢量为B帧第一运动矢量和B帧第二运动矢量的集合(best_B_mv0,best_B_mv1)。
熵编码SRAM用于缓存熵编码单元的待编码信息,包括由运动补偿及变换量化单元所产生的P帧对应的P帧第一绝对误差和值P_sad0和P帧第二绝对误差和值P_sad1、B帧对应的B帧第一绝对误差和值B_sad0、B帧第二绝对误差和值B_sad1和B帧第三绝对误差和值B_sad3、编码系数及重构图像这些数据,由模式判决单元产生的第一最优模式结果、第二最优模式结果和第三最优模式结果及相关的帧类型信息、参考帧地址信息、运动矢量信息和sad值绝对误差和值信息这些待编码信息。
熵编码单元用于从熵编码SRAM中读取信息进行熵编码,并将编码的视频码流写入内存。
内存用于存储视频码流中当前帧的重构帧,该重构帧也会作为后续帧的参考帧使用。
本实施例3的视频编码器对视频码流进行编码的过程可以通过图11所示的视频码流中各个帧之间的参考关系进行简单说明。其中,I0表示帧内预测帧I帧(视频序列的第一帧一定是I帧),P0、P1、P2表示P帧,B0、B1、B2表示B帧;箭头指向当前帧的参考帧,指向前方的是前向参考帧,指向后方的是后向参考帧;假设当前正在编码P1:利用第一运动估计模块ME0搜索P1的第一个前向参考帧I0,利用第二运动估计模块ME1搜索P1的第二个前向参考帧P0;接下来编码B2(由于B2要参考P1,所以编码顺序上看,是先编码P1,再编码B2):利用第一运动估计模块ME0搜索B2的前向参考帧P0,利用第二运动估计模块ME1搜索B2的后向参考帧P1;接下来编码B3:利用第一运动估计模块ME0搜索B3的前向参考帧P0,利用第二运动估计模块ME1搜索B3的后向参考帧P1;接下来编码P2:利用第一运动估计模块ME0搜索P2的第一个前向参考帧P0,利用第二运动估计模块ME1搜索P2的第二个前向参考帧P1。以此类推对视频码流中余下帧进行编码。
采用本实施例3的视频编码器,充分利用了硬件编码器中的硬件资源,提高了编码效率。
实施例4
本发明实施例4公开了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如实施例1公开的视频编码方法。
实施例5
本发明实施例5公开了一种计算机程序产品,计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行如实施例1公开的视频编码方法。
本发明所公开的视频编码方法、视频编码系统及视频编码器,使得P帧的第二个参考帧和B帧的后向参考帧能够复用相同的运动估计模块,充分利用硬件资源来提高编码效率,且能够适用于所有视频编码标准。
需要理解的是,以上对本发明的具体实施例进行的描述只是为了说明本发明的技术路线和特点,其目的在于让本领域内的技术人员能够了解本发明的内容并据以实施,但本发明并不限于上述特定实施方式。凡是在本发明权利要求的范围内做出的各种变化或修饰,都应涵盖在本发明的保护范围内。
Claims (11)
1.一种视频编码方法,其特征在于,所述视频编码方法包括:
使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;
使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
2.根据权利要求1所述的视频编码方法,其特征在于,对所述P帧进行的双前向帧间预测具体为:
使用所述两个运动估计模块中的第一运动估计模块对所述P帧进行第一个参考帧的P帧第一前向预测,使用所述两个运动估计模块中的第二运动估计模块对所述P帧进行第二个参考帧的P帧第二前向预测;
其中,在所述视频码流中,所述第一个参考帧和所述第二个参考帧均位于所述P帧之前。
3.根据权利要求1所述的视频编码方法,其特征在于,对所述B帧进行的所述前向帧间预测、所述后向帧间预测和所述双向帧间预测具体为:
使用所述两个运动估计模块中的第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测;
使用所述两个运动估计模块中的第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测;
使用所述第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,同时使用所述第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测;
其中,在所述视频码流中,所述前向参考帧位于所述B帧之前,所述后向参考帧位于所述B帧之后。
4.根据权利要求1所述的视频编码方法,其特征在于,在对所述P帧和所述B帧进行帧间预测之前,还包括:
判断视频码流中帧的类型;
若所述类型为P帧,则对所述P帧进行所述双前向帧间预测和帧内预测;
若所述类型为B帧,则对所述B帧进行所述前向帧间预测或所述后向帧间预测、所述双向帧间预测和帧内预测;
若所述类型为I帧,则对所述I帧进行帧内预测。
5.根据权利要求4所述的视频编码方法,其特征在于,在对所述P帧、B帧、I帧进行所述帧内预测之后,还包括:
根据当前帧的类型,分别对所述P帧、所述B帧和所述I帧进行模式判决;
针对所述P帧,比较所述双前向帧间预测和所述帧内预测的结果,得到对应的第一最优模式结果;
针对所述B帧,比较所述前向帧间预测、所述后向帧间预测、所述双向帧间预测和所述帧内预测的结果,得到对应的第二最优模式结果;
针对所述I帧,将所述帧内预测的结果作为第三最优模式结果;
根据所述当前帧的类型,将所述第一最优模式结果、所述第二最优模式结果或所述第三最优模式结果编入所述视频码流中。
6.根据权利要求5所述的视频编码方法,其特征在于,对所述P帧进行模式判决具体包括:通过使用所述两个运动估计模块中的第一运动估计模块对所述P帧进行第一个参考帧的P帧第一前向预测,得到所述P帧第一前向预测对应的P帧第一绝对误差和值;
通过使用所述两个运动估计模块中的第二运动估计模块对所述P帧进行第二个参考帧的P帧第二前向预测,得到所述P帧第二前向预测对应的P帧第二绝对误差和值;
通过对所述P帧进行的帧内预测,得到对应的P帧第三绝对误差和值;
通过比较所述P帧第一绝对误差和值、所述P帧第二绝对误差和值和所述P帧第三绝对误差和值,将最小的数值作为所述P帧对应的所述第一最优模式结果。
7.根据权利要求5所述的视频编码方法,其特征在于,对所述B帧进行模式判决具体包括:通过使用所述两个运动估计模块中的第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,得到所述B帧前向预测对应的B帧第一绝对误差和值;
通过使用所述两个运动估计模块中的第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测,得到所述B帧后向预测对应的B帧第二绝对误差和值;
通过使用所述第一运动估计模块对所述B帧进行前向参考帧的B帧前向预测,同时使用所述第二运动估计模块对所述B帧进行后向参考帧的B帧后向预测,得到B帧双向预测对应的B帧第三绝对误差和值;
通过对所述B帧进行的帧内预测,得到对应的B帧第四绝对误差和值;
通过比较所述B帧第一绝对误差和值、所述B帧第二绝对误差和值、所述B帧第三绝对误差和值和所述B帧第四绝对误差和值,将最小的数值作为所述B帧对应的所述第二最优模式结果。
8.一种视频编码系统,其特征在于,所述视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块;
所述第一帧间预测控制模块用于使用设置于视频编码器中的两个运动估计模块对视频码流中的P帧进行双前向帧间预测;
所述第二帧间预测控制模块用于使用设置于视频编码器中的两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测。
9.一种视频编码器,其特征在于,包括硬件驱动、硬件编码器、内存和如权利要求8所述的视频编码系统,所述硬件编码器分别与所述硬件驱动、所述内存和所述视频编码系统连接;
所述硬件驱动用于向所述硬件编码器传输视频码流、所述视频码流中P帧对应的第一个参考帧和第二个参考帧、以及所述视频码流中B帧对应的前向参考帧和后向参考帧;
所述硬件编码器包括两个运动估计模块;
所述视频编码系统包括第一帧间预测控制模块和第二帧间预测控制模块,所述第一帧间预测控制模块用于使用所述两个运动估计模块对视频码流中的P帧进行双前向帧间预测,所述第二帧间预测控制模块用于使用所述两个运动估计模块对视频码流中的B帧分别进行前向帧间预测、后向帧间预测和双向帧间预测;
所述内存用于存储所述视频码流中所述P帧和所述B帧的重构帧。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的视频编码方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的视频编码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310215594.7A CN116233462A (zh) | 2023-03-06 | 2023-03-06 | 视频编码方法、视频编码系统及视频编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310215594.7A CN116233462A (zh) | 2023-03-06 | 2023-03-06 | 视频编码方法、视频编码系统及视频编码器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116233462A true CN116233462A (zh) | 2023-06-06 |
Family
ID=86574770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310215594.7A Pending CN116233462A (zh) | 2023-03-06 | 2023-03-06 | 视频编码方法、视频编码系统及视频编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116233462A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116962685A (zh) * | 2023-09-21 | 2023-10-27 | 杭州爱芯元智科技有限公司 | 视频编码方法、装置、电子设备及存储介质 |
-
2023
- 2023-03-06 CN CN202310215594.7A patent/CN116233462A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116962685A (zh) * | 2023-09-21 | 2023-10-27 | 杭州爱芯元智科技有限公司 | 视频编码方法、装置、电子设备及存储介质 |
CN116962685B (zh) * | 2023-09-21 | 2024-01-30 | 杭州爱芯元智科技有限公司 | 视频编码方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101422422B1 (ko) | Dmvd 처리 향상을 위한 시스템 및 방법 | |
US9538197B2 (en) | Methods and systems to estimate motion based on reconstructed reference frames at a video decoder | |
JP5373626B2 (ja) | 複数の動きベクトル・プレディクタを使用して動きベクトルを推定する方法、装置、エンコーダ、デコーダ及びデコーディング方法 | |
US9215475B2 (en) | Method and apparatus for motion estimation using combined reference bi-prediction | |
CN101513071B (zh) | 用于确定解码视频块中的期望失真的方法及设备 | |
JP5081305B2 (ja) | フレーム間予測符号化の方法および装置 | |
US20100086052A1 (en) | Method and an apparatus for processing a video signal | |
US8462849B2 (en) | Reference picture selection for sub-pixel motion estimation | |
US20170041629A1 (en) | Methods and apparatus for uni-prediction of self-derivation of motion estimation | |
WO2010086041A1 (en) | Method and apparatus for coding and decoding a video signal | |
CN116233462A (zh) | 视频编码方法、视频编码系统及视频编码器 | |
CN112004097B (zh) | 帧间预测方法、图像处理装置以及计算机可读存储介质 | |
CN113709498B (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
CN111510726B (zh) | 一种编解码方法及其设备 | |
US20230412793A1 (en) | Inter-prediction on non-dyadic blocks | |
JP7387806B2 (ja) | 画像復号装置、画像復号方法及びプログラム | |
CN117615129B (zh) | 帧间预测方法、装置、计算机设备及存储介质 | |
US20240137510A1 (en) | Recursive prediction unit in video coding | |
CN113727119B (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
US20100232511A1 (en) | Motion compensator, motion compensating method, and motion-compensated video decoder implementing the same | |
CN118018739A (zh) | 一种视频数据处理方法及电子设备 | |
KR100507440B1 (ko) | 영상 신호 압축 방법 및 상기 방법을 수행하는 비디오인코더 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201203, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Granfei Intelligent Technology Co.,Ltd. Address before: Room 201, No. 2557, Jinke Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201203 Applicant before: Gryfield Intelligent Technology Co.,Ltd. Country or region before: China |