CN113473136B - 视频编码器及其码率控制装置 - Google Patents

视频编码器及其码率控制装置 Download PDF

Info

Publication number
CN113473136B
CN113473136B CN202010239566.5A CN202010239566A CN113473136B CN 113473136 B CN113473136 B CN 113473136B CN 202010239566 A CN202010239566 A CN 202010239566A CN 113473136 B CN113473136 B CN 113473136B
Authority
CN
China
Prior art keywords
unit
value
current
quantized
satd
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.)
Active
Application number
CN202010239566.5A
Other languages
English (en)
Other versions
CN113473136A (zh
Inventor
董馨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Actions Technology Co Ltd
Original Assignee
Actions Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Actions Technology Co Ltd filed Critical Actions Technology Co Ltd
Priority to CN202010239566.5A priority Critical patent/CN113473136B/zh
Publication of CN113473136A publication Critical patent/CN113473136A/zh
Application granted granted Critical
Publication of CN113473136B publication Critical patent/CN113473136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock

Abstract

本发明涉及了一种视频编码器及其码率控制装置,该码率控制装置包括:控制模块及分别与控制模块相连的输入存储模块、计算模块和输出存储模块,而且,计算模块包括多个不同计算类型的计算单元,其中,输入存储模块,用于在控制模块的调度下,输入并存储前一帧的编码信息及码率控制参数信息;控制模块,用于通过对多个计算单元进行分时复用,对前一帧的编码信息及码率控制参数信息进行计算,以生成当前帧的当前BU单元的量化值;输出存储模块,用于在控制模块的调度下,存储并输出当前BU单元的量化值。实施本发明的技术方案,硬件开销小,可实施性好。

Description

视频编码器及其码率控制装置
技术领域
本发明涉及视频处理领域,尤其涉及一种视频编码器及其码率控制装置。
背景技术
H.264是国际标准化组织(International Organization for Standardization,ISO)和国际电信联盟(International Telecommunication Union,ITU)共同提出的继动态图象专家组4(MPEG4,Moving Pictures Experts Group4)之后的新一代数字视频压缩格式。其编码流程主要包括6个部分:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编解码和码率控制。H.264标准的主要目标是:与其它现有的视频标准相比,在相同的带宽下提供更加优秀的图像质量。通过该标准,在同等图像质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右。
在视频通信中,经过压缩后的码流需要在网络上传输,必须适应低带宽的网络传输需求,因此码率控制成为了编码过程必不可少的环节。码率控制的主要任务是采集缓冲区状态和图像活动等信息,来给每帧图像分配一定的比特数,使得输出码率能控制在给定的标准上,并使图像的失真最小。
目前针对H.264编码器码率控制的算法研究有很多种,但是大多都是从软件算法层面去对码率和峰值信噪比(Peak Signal to Noise Ratio,PNSR)的优化,会把算法用到的模型和参数都设计得比较复杂,没有更多地考虑硬件实现的可实施性。H.264编码目前在各行各业应用广泛,但是软件编码性能很难满足应用中的要求,因此硬件实现尤为重要。
发明内容
本发明要解决的技术问题在于,针对现有技术存在的码率控制硬件可实施性差的缺陷,提供一种视频编码器及其码率控制装置。
本发明解决其技术问题所采用的技术方案是:构造一种视频编码器的码率控制装置,包括:控制模块及分别与所述控制模块相连的输入存储模块、计算模块和输出存储模块,而且,所述计算模块包括多个不同计算类型的计算单元,其中,
所述输入存储模块,用于在所述控制模块的调度下,输入并存储前一帧的编码信息及码率控制参数信息;
所述控制模块,用于通过对多个所述计算单元进行分时复用,对前一帧的编码信息及所述码率控制参数信息进行计算,以生成当前帧的当前BU单元的量化值,其中,当前帧的第一个BU单元的量化值为当前帧的量化初始值,且所述当前帧的量化初始值与前一帧的各个BU单元的量化值的平均值相关;
所述输出存储模块,用于在所述控制模块的调度下,存储并输出所述当前BU单元的量化值。
优选地,所述计算单元包括:加法器、减法器、乘法器、除法器。
优选地,所述除法器为多周期除法器。
优选地,所述控制模块包括:
SATD计算单元,用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率不小于0时,根据当前帧的前一BU单元的SATD(Sum of AbsoluteTransformed Difference,残差变换绝对值和)值及前一帧的SATD值,预测出当前BU单元的SATD值;
纹理码率计算单元,用于根据当前BU单元的SATD值、前一帧的SATD值、当前帧未分配的编码码率,确定当前BU单元的纹理信息的编码码率;
量化步长计算单元,用于根据码率量化模型系数、当前BU单元的SATD值及所述当前BU单元的纹理信息的编码码率,计算当前BU单元的量化步长;
第一量化值计算单元,用于根据所述量化步长计算当前BU单元的量化值;
钳位单元,用于对所述量化值进行钳位处理。
优选地,所述SATD计算单元包括:
第一计算子单元,用于根据公式1计算当前BU单元的SATD预测值:
k=1,SATD'p[k]=(1-b)*BUPFSATD[k]+b*BUPFSATD[k+1]
k=Nunit,SATD'p[k]=(1-a)*BUPFSATD[k]+a*BUCFSATD[k-1]
others,SATD'p[k]=(1-a-b)*BUPFSATD[k]+a*BUCFSATD[k-1]+b*BUPFSATD[k+1]公式1;
其中,a、b分别为权重系数,Nunit为当前帧的BU单元的数量,BUCFSATD为当前帧的前一BU单元的SATD值,BUPFSATD为前一帧的SATD值,SATD'p[k]为当前BU单元的SATD预测值,k指第k个BU单元;
第二计算子单元,用于根据公式2对所计算的SATD预测值进行修正,以获取当前BU单元的SATD值:
SATDp[k]=η[k]*SATD'p[k]
其中,η[k]为调节系数。
优选地,所述纹理码率计算单元包括:
第三计算子单元,用于根据公式3计算当前BU单元的编码码率:
其中,BUTargetBits[k]为当前BU单元的编码码率,FRAMELeftBits为当前帧未分配的编码码率;
第四计算子单元,用于根据公式4计算当前BU单元的纹理信息的编码码率:
Rt[k]=max(BUTargetBits[k]-BUHeaderBits[k],BUMINTargetBits)
公式4
其中,Rt[k]为当前BU单元的纹理信息的编码码率,BUHeaderBits[k]为当前BU单元的头信息的编码码率,BUMINTargetBits为预设的BU单元编码可分配到的最小编码码率。
优选地,所述量化步长计算单元包括:
第五计算子单元,用于根据公式5计算当前BU单元的量化步长:
其中,Qstep[k]为当前BU单元的量化步长,C[k]为当前BU单元的码率量化模型系数。
优选地,所述控制模块还包括:
模型更新单元,用于在对当前BU单元编码结束后,根据公式6更新下一BU单元的码率量化模型系数:
其中,C[k+1]为下一BU单元的码率量化模型系数,RR,i为当前BU单元的第i个ROI(region of intereset,感兴趣区域)的编码码率,RN为当前BU单元的非ROI的编码码率,QPstepR,i[k]为当前BU单元的第i个ROI的量化步长,Nmbunit为当前BU单元的宏块数量。
优选地,所述钳位单元包括:
第一钳位子单元,用于根据前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值,对所述量化值进行第一钳位处理;
第二钳位子单元,用于根据当前帧的量化初始值及所设置的相对于量化初始值的量化变化幅度最大值,对第一钳位处理后的量化值进行第二钳位处理;
第三钳位子单元,用于根据所设置的量化最小值和量化最大值,对第二钳位处理后的量化值进行第三钳位处理。
优选地,所述控制模块还包括:
第二量化值计算单元,用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率小于0时,根据当前帧的前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值,计算当前帧的当前BU单元的量化值,其中,当前帧的第一个BU单元的量化值为所设置的当前帧的量化初始值,且所述当前帧的量化初始值与前一帧的各个BU单元的量化值的平均值相关。
优选地,所述控制模块还包括:
第三量化值计算单元,用于在码率控制开关为开状态,且目标编码码率不大于0时,根据当前帧的量化初始值及所设置的BU单元允许量化变化的幅度值,计算当前帧的各个BU单元的量化值,其中,所述BU单元允许量化变化的幅度值是通过比较前一帧的实际编码率与目标编码率而确定的。
优选地,所述控制模块还包括:
第四量化值计算单元,用于在码率控制开关为关状态时,将当前帧的量化初始值作为当前帧的各个BU单元的量化值。
优选地,所述控制模块还包括:
量化值调整单元,用于判断当前BU单元的各个宏块是否在ROI内,对于ROI内的宏块,根据当前BU单元的量化值及所设置的ROI量化变化幅度值,确定ROI内的宏块所对应的量化值,其中,ROI量化变化幅度值与前一帧的ROI的编码码率相关;对于ROI外的宏块,将当前BU单元的量化值确定为ROI外的宏块所对应的量化值。
本发明还构造一种视频编码器,包括:
前处理装置,用于对各个宏块逐一进行前处理;
以上所述的码率控制装置;
熵编码装置,用于根据所述量化值对所述BU单元的各个宏块逐一进行编码;
而且,所述前处理装置、所述码率控制装置及所述熵编码装置流水执行。
优选地,还包括:
RAM,用于存储前一BU单元的编码信息。
实施本发明的技术方案,控制模块通过控制输入存储模块和输出存储模块来实现计算模块的输入、输出信息的调度,并对输入、输出信息进行存储。而且,在码率计算过程中,控制模块通过对计算模块中的各个计算单元采用分时复用来对前一帧的编码信息及码率控制参数信息进行计算,从而生成当前帧的当前BU单元的量化值,硬件开销小。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图中:
图1是本发明视频编码器实施例一的逻辑结构图;
图2是本发明码率控制装置实施例一的逻辑结构图;
图3是本发明码率控制装置实施例二的逻辑结构图。
具体实施方式
下面结合附图详细说明本发明的具体实施方式。
在此记载的具体实施方式/实施例为本发明的特定的具体实施方式,用于说明本发明的构思,均是解释性和示例性的,不应解释为对本发明实施方式及本发明范围的限制。除在此记载的实施例外,本领域技术人员还能够基于本申请权利要求书和说明书所公开的内容采用显而易见的其它技术方案,这些技术方案包括采用对在此记载的实施例的做出任何显而易见的替换和修改的技术方案,都在本发明的保护范围之内。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合,且以下实施例中的步骤顺序仅为举例,在不冲突的情况下可以调整。
首先说明的是,本申请以一个宏块行为单位实现码率控制,即,一个宏块行为一个BU单元(Basic Unit,基本单元),一个BU单元的大小为图像宽*16像素,一帧图像包含有Nunit个BU单元,且Nunit=imageHeight/16,其中,imageHeight为一帧图像的高度。另外,在一个BU单元中,将16x16的像素块定义为一个MB(宏块),那么,一个BU单元中包含的宏块数量为MBPerRow。
图1是本发明视频编码器实施例一的逻辑结构图,该实施例的视频编码器包括前处理装置10、码率控制装置20和熵编码装置30,其中,前处理装置10用于对各个宏块逐一进行前处理;码率控制装置20用于计算BU单元的量化值,以对所述BU单元进行码率控制;熵编码装置30用于根据所述量化值对所述BU单元的各个宏块逐一进行编码。而且,前处理装置、所述码率控制装置及所述熵编码装置流水执行。应理解,视频编码器还包括有模式预测模块(未示出)及去方块滤波模块(未示出),结合图1,该视频编码器主要分为三级流水完成,第一级为图像的前处理、第二级为码率控制和模式预测、第三级为熵编码和去方块滤波。
在一个优选实施例中,视频编码器还进一步包括RAM,该RAM用于存储前一BU单元的编码信息。也就是说,在每对一BU单元编码后,可将该BU单元的编码信息存放在RAM中。当需要对下一BU单元进行码率控制时,便直接从RAM中读取前一帧的编码信息,这样便不用额外分配地址空间来存放此类信息,减少由于读写此类信息带来的系统带宽,降低了对系统的带宽需求。
图2是本发明视频编码器的码率控制装置实施例一的逻辑结构图,该实施例的码率控制装置20包括控制模块21及分别与控制模块21连接的计算模块22、输入存储模块23和输出存储模块24,而且,计算模块包括多个不同计算类型的计算单元。而且,输入存储模块23用于在控制模块21的调度下,输入并存储前一帧的编码信息及码率控制参数信息;控制模块21用于通过对多个所述计算单元进行分时复用,对前一帧的编码信息及所述码率控制参数信息进行计算,以生成当前帧的当前BU单元的量化值,其中,当前帧的第一个BU单元的量化值为当前帧的量化初始值,且所述当前帧的量化初始值与前一帧的各个BU单元的量化值的平均值相关;输出存储模块24用于在控制模块21的调度下,存储并输出当前BU单元的量化值。
进一步地,控制模块21还用于通过对多个所述计算单元进行分时复用,对前一帧的编码信息、当前帧的前一BU单元的编码信息及所述码率控制参数信息进行计算,以生成当前帧的当前BU单元的量化值。而且,在计算当前BU单元的量化值时,由于前一BU单元的最后一个宏块还没完成编码,为了减少不必要的等待时间,可用前一BU单元的倒数第二个宏块的编码信息替代最后一个宏块的编码信息,软件仿真结果基本无差异,而且,这样可保证整个视频编码器的流水级完整性。
关于量化值(quantization parameter,QP),需说明的是,其反映了空间细节压缩情况,例如,若QP小,则说明大部分的细节都会被保留;若QP增大,则说明一些细节丢失,码率降低,但图像失真加强和质量下降。也就是说,QP和比特率成反比的关系,而且随着视频源复杂度的提高,这种反比关系会更明显。
关于帧的量化初始值(framInitQP),需说明的是,当前一帧编码完成后,可计算出该前一帧的各个BU单元的量化值的平均值,再根据该平均值确定下一帧的量化初始值。
该实施例的码率控制装置可通过硬件实现,具体地,控制模块21通过控制输入存储模块23和输出存储模块24来实现计算模块22的输入、输出信息的调度,并对输入、输出信息进行存储。而且,在码率计算过程中,控制模块21通过对计算模块22中的各个计算单元采用分时复用来对前一帧的编码信息及码率控制参数信息进行计算,从而生成当前帧的当前BU单元的量化值,节省了硬件开销。
结合图2,在计算模块22中,各个计算单元包括加法器221、减法器222、乘法器223、除法器224。而且,优选地,为了易于硬件实现,乘法器223为定点计算的乘法器,除法器224为定点计算的除法器。另外,除法器224为多周期除法器,这样可减少码率控制装置的面积,降低成本,从而节省硬件开销。
结合图2,在控制模块21中,控制选择逻辑单元通过对加法器221、减法器222、乘法器223、除法器224进行分时复用,来实现以下功能:计算SATD;计算纹理码率;计算量化步长;更新模型系数;计算调节系数η等。
在一个可选实施例中,控制模块21包括SATD计算单元、纹理码率计算单元、量化步长计算单元和第一量化值计算单元。其中,SATD计算单元,用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率不小于0时,根据当前帧的前一BU单元的SATD值及前一帧的SATD值,预测出当前BU单元的SATD值;纹理码率计算单元用于根据当前BU单元的SATD值、前一帧的SATD值、当前帧未分配的编码码率,确定当前BU单元的纹理信息的编码码率;量化步长计算单元用于根据码率量化模型系数、当前BU单元的SATD值及所述当前BU单元的纹理信息的编码码率,计算当前BU单元的量化步长;第一量化值计算单元用于根据所述量化步长计算当前BU单元的量化值,具体地,量化步长与量化值的关系可按H.264标准进行换算;钳位单元用于对所述量化值进行钳位处理。
关于该实施例,需说明的是,码率控制参数包括有:码率控制开关(rc_enable)、目标编码码率(frameTargetBits)、当前帧未分配的编码码率(frameLeftBits)。其中,码率控制开关(rc_enable)由用户根据其网络带宽情况设置,并保存在寄存器中,其有开和关两个状态;目标编码码率(frameTargetBits)由用户根据实际需求及网络带宽情况设置,并保存在寄存器中;当前帧未分配的编码码率(frameLeftBits),其为目标编码率扣除编码已分配的比特数,也即,未分配的编码可用比特数。
还需说明的是,该实施例使用SATD(Sum of Absolute Transformed Difference,hadamard变换后再绝对值求和)替代MAD(Sum of Absolute Difference,绝对误差和)来做BU单元的复杂度测度,而且,由于在模式预测模块中本身就需要计算SATD值,所以,采用这种方法,能够在选出最佳模式的同时得到SATD值,不用等待最佳预测结果之后再重新计算MAD值,不需要重新计算MAD值,节约了硬件成本,减少了编码时间。在该实施例中,若用户打开了码率控制开关,设置了目标码率,且当前帧未分配的编码码率不小于0,则在计算当前帧的当前BU单元的量化值时,不但使用前一帧的SATD值,还使用前一BU单元的SATD值,即,在进行SATD测度时,采用对当前帧的前个BU单元的SATD测度BUCFSATD和前一帧的SATD测度BUPFSATD来做双线性算法预测。这样,不但使得图像匹配精度高、码率控制更精准,还可节省硬件开销。.
在一个具体实施例中,SATD计算单元包括第一计算子单元和第二计算子单元,纹理码率计算单元包括第三计算子单元和第四计算子单元,量化步长计算单元包括第五计算子单元,其中:
第一计算子单元,用于根据公式1计算当前BU单元的SATD预测值:
k=1,SATD'p[k]=(1-b)*BUPFSATD[k]+b*BUPFSATD[k+1]
k=Nunit,SATD'p[k]=(1-a)*BUPFSATD[k]+a*BUCFSATD[k-1]
others,SATD'p[k]=(1-a-b)*BUPFSATD[k]+a*BUCFSATD[k-1]+b*BUPFSATD[k+1]公式1;
其中,a、b分别为权重系数,例如,a=2/16,b=1/16,Nunit为当前帧的BU单元的数量,Others表示k为除1和Nunit之外的其它值,BUCFSATD为当前帧的前一BU单元的SATD值,BUPFSATD为前一帧的SATD值,SATD′p[k]为当前BU单元的SATD预测值;
求得当前BU单元的SATD预测值后,考虑到预测误差影响,用η系数对SATD′p[k]做偏差调节,这样可减小预测误差。
第二计算子单元,用于根据公式2对所计算的SATD预测值进行修正,以获取当前BU单元的SATD值:
SATDp[k]=η[k]*SATD'p[k]
其中,η[k]为调节系数。
另外,一个BU单元的编码数据由两部分构成:一部分是BU单元的头信息(BUheader);另一部分是BU单元的纹理信息(BU texture)。而且,由于BU单元的头信息的信息量占比少,所以在预测当前BU单元的头信息的编码码率时,可采用前一帧的相应位置的BU单元的头信息的真实编码码率来做预测,即,当前BU单元的头信息的编码码率BUHeaderBits[k]=BUPFHeaderBits[k]。另外,在计算纹理信息的编码码率时,先计算出当前BU单元的编码码率,再根据当前BU单元的编码码率及当前BU单元的头信息的编码码率,计算出纹理信息的编码码率,具体地:
第三计算子单元,用于根据公式3计算当前BU单元的编码码率:
其中,BUTargetBits[k]为当前BU单元的编码码率,FRAMELeftBits为当前帧未分配的编码码率。关于FRAMELeftBits,还需说明的是,在用硬件实现本发明的码率控制方法时,由于硬件化流水作业缘由,前一BU单元的最后一个宏块(MB)可能还没有完成编码工作,所以FRAMELeftBits是不包含前个BU单元最后一个宏块的,也就是说,在码率统计时,会有一个宏块的延迟。这样,硬件化时FRAMELeftBits的真实预测值如公式3-1所示:
FRAMELeftBits=FRAMELeftBits-BitsMB[MBPerRow-1]公式3-1
其中,MBPerRow为一个BU单元中包含的宏块的数量;BitsMB[k]表示k个宏块编码已分配的比特数。
第四计算子单元,用于根据公式4计算当前BU单元的纹理信息的编码码率:
Rt[k]=max(BUTargetBits[k]-BUHeaderBits[k],BUMINTargetBits)
公式4
其中,Rt[k]为当前BU单元的纹理信息的编码码率,BUHeaderBits[k]为当前BU单元的头信息的编码码率,BUMINTargetBits为预设的BU单元编码可分配到的最小编码码率,max(val1,val2)表示取val1、val2两者中的较大值。
第五计算子单元,用于根据公式5计算当前BU单元的量化步长:
其中,Qstep[k]为当前BU单元的量化步长,C[k]为当前BU单元的码率量化模型系数。
在一个具体实施例中,钳位单元包括:第一钳位子单元、第二钳位子单元和第三钳位子单元,其中:
第一钳位子单元用于根据前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值,对所述量化值进行第一钳位处理,具体地,根据公式7-1对所计算出的量化值进行相邻BU单元量化变化的限定:BUQP[k]=clip3(BUQP[k-1]-RCDDquant,BUQP[k-1]+RCDDquant,BUQP[k])公式7-1
其中,clip3(min,max,val)表示将数值val嵌位在min~max之间,RCDDquant为相邻BU单元间允许量化变化幅度的最大值,且其由软件通过比较前一帧的实际编码率与目标编码率而确定,并设置在寄存器中。
第二钳位子单元用于根据当前帧的量化初始值及所设置的相对于量化初始值的量化变化幅度最大值,对第一钳位处理后的量化值进行第二钳位处理,具体地,根据公式7-2对第一钳位处理后的量化值进行相对应量化初始值的量化变化的限定:
BUQP[k]=clip3(FRAMEInitQP-RCMaxQPChange,FRAMEInitQP+RCMaxQPChange,BUQP[k])
公式7-2
其中,RCMaxQPChange为相对于量化初始值的量化变化幅度最大值,且由用户通过寄存器设置。
第三钳位子单元用于根据所设置的量化最小值和量化最大值,对第二钳位处理后的量化值进行第三钳位处理,具体地,根据公式7-3对第二钳位处理后的量化值进行量化限值的限定:
BUQP[k]=clip3(RCMinQP,RCMaxQP,BUQP[k])公式7-3
其中,RCMinQP为量化最小值,且由用户通过寄存器设置;RCMaxQP为量化最大值,且由用户通过寄存器设置。
进一步地,控制模块还包括模型更新单元,该模型更新单元用于在对当前BU单元编码结束后,根据公式6更新下一BU单元的码率量化模型系数:
其中,C[k+1]为下一BU单元的码率量化模型系数,RR,i为当前BU单元的第i个ROI的编码码率,RN为当前BU单元的非ROI的编码码率,QPstepRi[k]为当前BU单元的第i个ROI的量化步长,Nmbunit为当前BU单元的宏块数量。在此需说明的是,当需要更新C[k]参数时,最后一个宏块还没完成编码,因此采用了倒数第二宏块的信息来代替,为了使更新的C[k]值更准确,在更新的C[k]值结果乘了一个系数。
进一步地,控制模块还包括第二量化值计算单元、第三量化值计算单元和第四量化值计算单元,其中,
第二量化值计算单元用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率小于0时,根据当前帧的前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值(RCDDquant),计算当前帧的当前BU单元的量化值,其中,当前帧的第一个BU单元的量化值为所设置的当前帧的量化初始值,且所述当前帧的量化初始值与前一帧的各个BU单元的量化值的平均值相关。具体地,可根据公式8计算当前帧的当前BU单元的量化值:
BUQP[k]=BUQP[k-1]+RCDDquant 公式8
第三量化值计算单元用于在码率控制开关为开状态,且目标编码码率不大于0时,根据当前帧的量化初始值及所设置的BU单元允许量化变化的幅度值,计算当前帧的各个BU单元的量化值,其中,所述BU单元允许量化变化的幅度值是通过比较前一帧的实际编码率与目标编码率而确定的。具体地,可根据公式9计算当前帧的各个BU单元的量化值:
BUQP[k]=min(frameIntQP+BU_delta_QP,RCMaxQP) 公式9
其中,BU_delta_qp为BU单元允许量化变化的幅度值。
第四量化值计算单元用于在码率控制开关为关状态时,将当前帧的量化初始值作为当前帧的各个BU单元的量化值。
进一步地,控制模块还包括量化值调整单元,该量化值调整单元用于判断当前BU单元的各个宏块是否在ROI内,对于ROI内的宏块,根据当前BU单元的量化值及所设置的ROI量化变化幅度值,确定ROI内的宏块所对应的量化值,其中,ROI量化变化幅度值与前一帧的ROI区域的编码码率相关;对于ROI外的宏块,将当前BU单元的量化值确定为ROI外的宏块所对应的量化值。
关于ROI量化变化幅度值(ROI_QPdelta),其可由软件根据前一帧的ROI的编码码率计算生成,然后通过寄存器配置给硬件编码引擎。在一个具体实现方式中,ROI内量化值是BUQP-ROI_Qpdelta,这样,ROI_Qpdelta为一自适应性可变的值,相比较于使用一固定值,有利于降低码率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何纂改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (14)

1.一种视频编码器的码率控制装置,其特征在于,包括:控制模块及分别与所述控制模块相连的输入存储模块、计算模块和输出存储模块,而且,所述计算模块包括多个不同计算类型的计算单元,其中,
所述输入存储模块,用于在所述控制模块的调度下,输入并存储前一帧的编码信息及码率控制参数信息;
所述控制模块,用于通过对多个所述计算单元进行分时复用,对前一帧的编码信息及所述码率控制参数信息进行计算,以生成当前帧的当前BU单元的量化值,其中,当前帧的第一个BU单元的量化值为当前帧的量化初始值,且所述当前帧的量化初始值与前一帧的各个BU单元的量化值的平均值相关;
所述输出存储模块,用于在所述控制模块的调度下,存储并输出所述当前BU单元的量化值;
所述控制模块包括:
SATD计算单元,用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率不小于0时,根据当前帧的前一BU单元的SATD值及前一帧的SATD值,预测出当前BU单元的SATD值;
纹理码率计算单元,用于根据当前BU单元的SATD值、前一帧的SATD值、当前帧未分配的编码码率,确定当前BU单元的纹理信息的编码码率;
量化步长计算单元,用于根据码率量化模型系数、当前BU单元的SATD值及所述当前BU单元的纹理信息的编码码率,计算当前BU单元的量化步长;
第一量化值计算单元,用于根据所述量化步长计算当前BU单元的量化值;
钳位单元,用于对所述量化值进行钳位处理。
2.根据权利要求1所述的视频编码器的码率控制装置,其特征在于,所述计算单元包括:加法器、减法器、乘法器、除法器。
3.根据权利要求2所述的视频编码器的码率控制装置,其特征在于,所述除法器为多周期除法器。
4.根据权利要求1所述的视频编码器的码率控制装置,其特征在于,所述SATD计算单元包括:
第一计算子单元,用于根据公式1计算当前BU单元的SATD预测值:
k=1,SATD'p[k]=(1-b)*BUPFSATD[k]+b*BUPFSATD[k+1]
k=Nunit,SATD'p[k]=(1-a)*BUPFSATD[k]+a*BUCFSATD[k-1]
others,SATD'p[k]=(1-a-b)*BUPFSATD[k]+a*BUCFSATD[k-1]+b*BUPFSATD[k+1]公式1;
其中,a、b分别为权重系数,Nunit为当前帧的BU单元的数量,BUCFSATD为当前帧的前一BU单元的SATD值,BUPFSATD为前一帧的SATD值,SATD'p[k]为当前BU单元的SATD预测值,k指第k个BU单元;
第二计算子单元,用于根据公式2对所计算的SATD预测值进行修正,以获取当前BU单元的SATD值:
SATDp[k]=η[k]*SATD'p[k]
其中,η[k]为调节系数。
5.根据权利要求2所述的视频编码器的码率控制装置,其特征在于,所述纹理码率计算单元包括:
第三计算子单元,用于根据公式3计算当前BU单元的编码码率:
其中,BUTargetBits[k]为当前BU单元的编码码率,FRAMELeftBits为当前帧未分配的编码码率;
第四计算子单元,用于根据公式4计算当前BU单元的纹理信息的编码码率:
Rt[k]=max(BUTargetBits[k]-BUHeaderBits[k],BUMINTargetBits)
公式4
其中,Rt[k]为当前BU单元的纹理信息的编码码率,BUHeaderBits[k]为当前BU单元的头信息的编码码率,BUMINTargetBits为预设的BU单元编码可分配到的最小编码码率。
6.根据权利要求5所述的视频编码器的码率控制装置,其特征在于,所述量化步长计算单元包括:
第五计算子单元,用于根据公式5计算当前BU单元的量化步长:
其中,Qstep[k]为当前BU单元的量化步长,C[k]为当前BU单元的码率量化模型系数。
7.根据权利要求6所述的视频编码器的码率控制装置,其特征在于,所述控制模块还包括:
模型更新单元,用于在对当前BU单元编码结束后,根据公式6更新下一BU单元的码率量化模型系数:
其中,C[k+1]为下一BU单元的码率量化模型系数,RR,i为当前BU单元的第i个ROI的编码码率,RN为当前BU单元的非ROI的编码码率,QPstepR,i[k]为当前BU单元的第i个ROI的量化步长,Nmbunit为当前BU单元的宏块数量。
8.根据权利要求1所述的视频编码器的码率控制装置,其特征在于,所述钳位单元包括:
第一钳位子单元,用于根据前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值,对所述量化值进行第一钳位处理;
第二钳位子单元,用于根据当前帧的量化初始值及所设置的相对于量化初始值的量化变化幅度最大值,对第一钳位处理后的量化值进行第二钳位处理;
第三钳位子单元,用于根据所设置的量化最小值和量化最大值,对第二钳位处理后的量化值进行第三钳位处理。
9.根据权利要求1-3任一项所述的视频编码器的码率控制装置,其特征在于,所述控制模块还包括:
第二量化值计算单元,用于在码率控制开关为开状态,目标编码码率大于0,且当前帧未分配的编码码率小于0时,根据当前帧的前一BU单元的量化值及所设置的相邻BU单元间允许量化变化幅度的最大值,计算当前帧的当前BU单元的量化值。
10.根据权利要求1-3任一项所述的视频编码器的码率控制装置,其特征在于,所述控制模块还包括:
第三量化值计算单元,用于在码率控制开关为开状态,且目标编码码率不大于0时,根据当前帧的量化初始值及所设置的BU单元允许量化变化的幅度值,计算当前帧的各个BU单元的量化值,其中,所述BU单元允许量化变化的幅度值是通过比较前一帧的实际编码率与目标编码率而确定的。
11.根据权利要求1-3任一项所述的视频编码器的码率控制装置,其特征在于,所述控制模块还包括:
第四量化值计算单元,用于在码率控制开关为关状态时,将当前帧的量化初始值作为当前帧的各个BU单元的量化值。
12.根据权利要求1所述的视频编码器的码率控制装置,其特征在于,所述控制模块还包括:
量化值调整单元,用于判断当前BU单元的各个宏块是否在ROI内,对于ROI内的宏块,根据当前BU单元的量化值及所设置的ROI量化变化幅度值,确定ROI内的宏块所对应的量化值,其中,ROI量化变化幅度值与前一帧的ROI的编码码率相关;对于ROI外的宏块,将当前BU单元的量化值确定为ROI外的宏块所对应的量化值。
13.一种视频编码器,其特征在于,包括:
前处理装置,用于对各个宏块逐一进行前处理;
权利要求1-12任一项所述的码率控制装置;
熵编码装置,用于根据所述量化值对所述BU单元的各个宏块逐一进行编码;
而且,所述前处理装置、所述码率控制装置及所述熵编码装置流水执行。
14.根据权利要求13所述的视频编码器,其特征在于,还包括:
RAM,用于存储前一BU单元的编码信息。
CN202010239566.5A 2020-03-30 2020-03-30 视频编码器及其码率控制装置 Active CN113473136B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010239566.5A CN113473136B (zh) 2020-03-30 2020-03-30 视频编码器及其码率控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010239566.5A CN113473136B (zh) 2020-03-30 2020-03-30 视频编码器及其码率控制装置

Publications (2)

Publication Number Publication Date
CN113473136A CN113473136A (zh) 2021-10-01
CN113473136B true CN113473136B (zh) 2024-02-09

Family

ID=77865972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010239566.5A Active CN113473136B (zh) 2020-03-30 2020-03-30 视频编码器及其码率控制装置

Country Status (1)

Country Link
CN (1) CN113473136B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116567237A (zh) * 2022-01-27 2023-08-08 腾讯科技(深圳)有限公司 视频编码及解码方法、装置、计算机设备和存储介质
CN116055738B (zh) * 2022-05-30 2023-10-20 荣耀终端有限公司 视频压缩方法及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101494776A (zh) * 2009-02-13 2009-07-29 北京邮电大学 一种h.264码率控制方法
CN101534439A (zh) * 2008-03-13 2009-09-16 中国科学院声学研究所 一种低功耗并行的小波变换的vlsi结构
CN103533365A (zh) * 2012-07-04 2014-01-22 珠海扬智电子科技有限公司 比特率控制方法与比特率控制系统
CN103686172A (zh) * 2013-12-20 2014-03-26 电子科技大学 低延迟视频编码可变比特率码率控制方法
CN106657855A (zh) * 2016-12-16 2017-05-10 西北工业大学 一种适用于无人机spi接口视频码率控制方法
CN108012149A (zh) * 2017-12-19 2018-05-08 四川九洲电器集团有限责任公司 一种视频编码中码率控制的方法
WO2018155996A1 (ko) * 2017-02-24 2018-08-30 주식회사 칩스앤미디어 오프라인 cabac을 지원하는 비디오 코딩 프로세스의 비트 예측 기반 비트 레이트 컨트롤 방법 및 그 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031774B2 (en) * 2005-01-31 2011-10-04 Mediatek Incoropration Video encoding methods and systems with frame-layer rate control
US20070025441A1 (en) * 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
JP4915350B2 (ja) * 2008-01-16 2012-04-11 日本電気株式会社 エントロピ符号化器、映像符号化装置、映像符号化方法および映像符号化プログラム
TWI428022B (zh) * 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
TWI394462B (zh) * 2010-06-22 2013-04-21 Univ Nat Taiwan 基於視覺感知的位元-失真最佳化位元分配的位元率控制方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101534439A (zh) * 2008-03-13 2009-09-16 中国科学院声学研究所 一种低功耗并行的小波变换的vlsi结构
CN101494776A (zh) * 2009-02-13 2009-07-29 北京邮电大学 一种h.264码率控制方法
CN103533365A (zh) * 2012-07-04 2014-01-22 珠海扬智电子科技有限公司 比特率控制方法与比特率控制系统
CN103686172A (zh) * 2013-12-20 2014-03-26 电子科技大学 低延迟视频编码可变比特率码率控制方法
CN106657855A (zh) * 2016-12-16 2017-05-10 西北工业大学 一种适用于无人机spi接口视频码率控制方法
WO2018155996A1 (ko) * 2017-02-24 2018-08-30 주식회사 칩스앤미디어 오프라인 cabac을 지원하는 비디오 코딩 프로세스의 비트 예측 기반 비트 레이트 컨트롤 방법 및 그 장치
CN108012149A (zh) * 2017-12-19 2018-05-08 四川九洲电器集团有限责任公司 一种视频编码中码率控制的方法

Also Published As

Publication number Publication date
CN113473136A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
US5241383A (en) Pseudo-constant bit rate video coding with quantization parameter adjustment
JP3208039B2 (ja) 画像符号化データのレート変換装置
CA2179876C (en) Method for controlling the output flow rate of a coder of digital data representative of sequences of images
RU2414093C2 (ru) Способ и устройство, и программа кодирования/декодирования видео
JP5351040B2 (ja) 映像符号化規格に対応した映像レート制御の改善
JP3818679B2 (ja) 一連の画像を表わすディジタル信号を符号化する方法および装置
KR100484148B1 (ko) 개선된 비트율 제어 방법과 그 장치
KR101210528B1 (ko) 인터 또는 인트라 모드에서 비디오 화상을 코딩하기 위한 방법 및 디바이스
EP1067798A2 (en) Apparatus, method and computer program product for transcoding a coded moving picture sequence
US20040252768A1 (en) Computing apparatus and encoding program
US20080049837A1 (en) Image Processing Apparatus, Program for Same, and Method of Same
US5592225A (en) Device and method for controlling coding
WO2000045602A1 (en) Optimal encoding scheme for motion compensated video
US20060165168A1 (en) Multipass video rate control to match sliding window channel constraints
KR20040077774A (ko) 화상 정보 부호화 장치 및 방법, 및 화상 정보 복호 장치및 방법
CN113473136B (zh) 视频编码器及其码率控制装置
JP2001145113A (ja) 画像情報変換装置及び方法
JP2001160967A (ja) 画像符号化方式変換装置及び符号化レート変換装置
KR100601615B1 (ko) 네트워크 대역폭에 적응적인 영상 압축 장치
JPWO2003084243A1 (ja) 画像圧縮符号化装置及び方法、プログラム
KR20000053028A (ko) 움직임 보상을 이용한 예측 코딩 방법 및 장치
JP4042597B2 (ja) 画像符号化装置及び方法、プログラム、記録媒体
JPWO2002080567A1 (ja) 画像信号量子化装置およびその方法
JPH06225276A (ja) 動画像符号化におけるプリフィルタ制御方法および装置
KR101336445B1 (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
GR01 Patent grant
GR01 Patent grant