CN109479136A - 用于比特率控制的系统和方法 - Google Patents

用于比特率控制的系统和方法 Download PDF

Info

Publication number
CN109479136A
CN109479136A CN201680087867.2A CN201680087867A CN109479136A CN 109479136 A CN109479136 A CN 109479136A CN 201680087867 A CN201680087867 A CN 201680087867A CN 109479136 A CN109479136 A CN 109479136A
Authority
CN
China
Prior art keywords
frame
coding
coding parameter
encoded
piece
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
Application number
CN201680087867.2A
Other languages
English (en)
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.)
SZ DJI Technology Co Ltd
Shenzhen Dajiang Innovations Technology Co Ltd
Original Assignee
Shenzhen Dajiang Innovations 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 Shenzhen Dajiang Innovations Technology Co Ltd filed Critical Shenzhen Dajiang Innovations Technology Co Ltd
Publication of CN109479136A publication Critical patent/CN109479136A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • 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
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • 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
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

提供了用于控制数据编码的比特率的技术。具体而言,可以使用这些技术,通过在对帧的每一片进行编码之后调整编码参数来将每帧的比特率保持在大约给定的最大比特大小或比特率或在给定的最大比特大小或比特率之下。这样的编码参数可以包括例如用于对所述片进行量化的量化索引。

Description

用于比特率控制的系统和方法
背景技术
视频和其他媒体内容的流传输在近几年越来越流行。典型地,视频数据或其它媒体内容在源处被编码(例如,压缩)成编码的(例如,压缩的)比特流,然后通过通信信道将其传送到接收机。每单位时间(例如,秒)用于对数据单元(例如,视频帧)进行编码的比特数被称为比特率。较高的比特率通常意味着较高的回放质量(例如,视觉质量)的编码比特流。然而,控制编码比特流的比特率以确保满足发送机、接收机和/或通信信道的各种约束是重要的。例如,可能希望将编码视频帧的比特率保持在某个最大比特率以下,以防止缓冲区溢出或适应带宽限制。
发明内容
根据一些实施例,提供了一种用于控制比特率的计算机实现的方法。该方法包括:确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的一个或多个片进行编码所允许的最大比特数量之间的差值,第一片使用第一编码参数进行编码;至少部分地基于计数(counter)更新编码参数阈值,所述计数指示用于编码所述一个或多个片的一个或多个编码参数达到或超过所述编码参数阈值的次数;至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
根据一些实施例,提供了一个或多个非暂时性计算机可读存储介质。所述存储介质存储计算机可执行指令,所述计算机可执行指令在由计算系统执行时将所述计算系统配置为执行操作,所述操作包括:确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的一个或多个片进行编码所允许的最大比特数量之间的差值,第一片使用第一编码参数进行编码;至少部分地基于计数更新编码参数阈值,所述计数指示用于编码所述一个或多个片的一个或多个编码参数达到或超过所述编码参数阈值的次数;至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
根据一些实施例,提供了一种计算机系统。所述计算机系统包括存储一个或多个计算机可执行指令的存储器以及一个或多个处理器,所述处理器被配置为访问所述存储器并执行所述计算机可执行指令以执行包括以下的步骤:确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的一个或多个片进行编码所允许的最大比特数量之间的差值,第一片使用第一编码参数进行编码;至少部分地基于计数更新编码参数阈值,所述计数指示用于编码所述一个或多个片的一个或多个编码参数达到或超过所述编码参数阈值的次数;以及至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
根据一些实施例,提供了一种用于控制比特率的计算机实现的方法。该方法包括:基于对直到且包括第一片的片进行编码所使用的累积比特数量与对所述片进行编码所允许的最大比特数量之间的差值,确定针对第一片的第一编码参数的预期调整;确定指示编码参数阈值与用于对所述片进行编码的编码参数之间的关系的指示符;至少部分地基于所述指示符来更新编码参数阈值;至少部分地基于更新后的编码参数阈值和所述预期调整来确定对所述第一编码参数的实际调整;以及将所述实际调整应用于第一编码参数,以确定用于对第二片进行编码的第二编码参数。
应当理解,可以单独地、共同地或彼此组合地理解本发明的不同方面。本文描述的本发明的各个方面可以应用于下面阐述的任何特定应用或任何其他类型的可移动和/或静止物体之间的数据通信。
通过阅读说明书、权利要求书和附图,本发明的其它目的和特征将变得明显。
附图说明
本发明的新颖特征在所附权利要求中具体阐述。通过参考下面的详细描述及其附图,将更好地理解本发明的特征和优点,所述详细描述中阐述了利用本发明的原理的说明性实施例,所述附图中:
图1示出了根据实施例的用于实现速率控制的示例性系统。
图2示出了根据实施例的用于要被编码的输入数据的示例性数据单元。
图3示出了根据实施例的用于利用速率控制对数据进行编码的示例过程。
图4示出了根据实施例的用于控制比特率的示例过程。
图5示出了根据实施例的用于控制比特率的示例性过程。
图6部分地示出了根据实施例的用于确定片的编码参数的示例性过程。
图7部分地示出了根据实施例的用于确定片的编码参数的示例性过程。
图8示出了根据实施例的用于利用速率控制对数据进行编码的示例性过程。
图9示出了根据实施例的用于移除片的高频系数的示例性过程。
图10示出了可以用于实施上文所描述的任何实体或组件的计算机系统的高层框图。
具体实施方式
本发明的系统、装置和方法提供了用于控制编码的视频或其他类型的数据的比特率的技术。具体而言,可以使用这些技术,通过在对帧的每一片进行编码之后调整编码参数来将每帧的比特率保持在大约给定的最大比特大小或比特率或在给定的最大比特大小或比特率之下。例如,如果片的编码导致累积比特大小超过所分配的最大累积比特大小,则相应地调整下一片的编码参数,以减少用于编码下一片的比特数;反之亦然。这样的编码参数可以包括例如用于量化下一片的量化索引,以及用于移除下一片的某些高频系数的截止(cutoff)索引。有利的是,可以使用所描述的技术来一次性完成(in a single pass)实现输入数据的速率控制,而无需预处理输入数据,从而节省了编码过程所需的时间和计算资源。编码参数和比特率可以以渐进方式调整,而不显著影响重构数据的质量。另外,可以基于片的编码顺序自适应地调整编码参数。
图1示出了根据实施例的用于实现速率控制的示例性系统100。系统100可以被配置为接收和编码输入数据102以产生输出数据108。例如,系统100可以被配置为接收视频作为输入数据,压缩该视频数据以产生一个或多个压缩比特流作为输出数据。在数据编码期间,系统100可以被配置为使用本文描述的技术来控制编码数据的比特大小(并因此控制比特率)。在各种实施例中,系统100的组件可由计算装置(例如,台式计算机、膝上型计算机、平板电脑、智能电话、安装盒)或诸如无人机(UAV)之类的可移动物体上的一个或多个处理器实现。一个或多个处理器可以包括ARM处理器、现场可编程门阵列(FPGA)、中央处理单元(CPU)、图形处理单元(GPU)等。在一些实施例中,系统100的组件可以使用硬件加速技术来实现。
系统100包括编码器104和速率控制器106。编码器104和速率控制器106可以由相同或不同的计算装置来实现。在一些实施例中,速率控制器106可以形成编码器104的组成部分;反之亦然。编码器104被配置为接收输入数据102,对输入数据102进行编码,并提供包括编码输入数据的输出数据108。输入数据可以包括文本、图像、图形对象、动画序列、录音、视频或需要编码的任何其他数据。在一些情况下,输入数据可以包括来自诸如视觉传感器(例如,相机、红外传感器)、麦克风、近距离传感器(例如,超声波、激光雷达)、位置传感器、温度传感器、触摸传感器等一个或多个传感器的感测数据。在一些情况下,输入数据可以包括来自用户的输入,诸如包括面部特征的生物测定信息、指纹扫描、视网膜扫描、语音录音、DNA样本等。
输入数据的编码对于数据的有效和/或安全传输或存储可能是必需的。输入数据的编码可涉及数据压缩、加密、差错编码、格式转换等。例如,诸如视频或音频的多媒体数据可以被压缩以减少通过网络传输的比特数。诸如财务信息和个人识别信息等敏感数据在传输或存储之前可以被加密以保护机密性和/或隐私。
可以使用任何合适的编码技术来编码输入数据。应用的编码类型可以取决于要编码的数据和特定编码要求。例如,可以使用有损压缩技术(例如,变换编码)来对诸如音频信号和图像数据(例如,静止图像或视频)等多媒体数据进行编码;而无损压缩技术可用于对文本和二进制数据(例如,可执行文件)进行编码。可以使用音频压缩方法来压缩音频信号,以及可以使用视频压缩方法压缩视频数据。在某些情况下,某些输入数据(例如,财务数据、医疗或个人信息)的编码可以由已建立的法律、法规或标准来管理。此外,可用的计算资源(例如,CPU、存储器、缓冲区容量)和/或网络环境(例如,带宽、安全性)会影响所执行的编码的类型。例如,配备有强大CPU的服务器计算机可以被配置为实现相对复杂的编码算法,而具有有限计算资源的移动装置可以被配置为实现相对简单的编码算法。作为另一示例,如果编码数据将在相对安全的环境中(例如,通过专用或防火墙保护的网络)传输,那么输入日期可以用具有相对较低安全级别的加密算法来加密。另一方面,如果编码数据将在不太安全的环境中(例如,通过互联网)传输,那么输入数据可以用具有相对高安全级别的加密算法加密。
在一些实施例中,编码器104可以实现一个或多个不同的编解码器。一个或多个编解码器中的每一个可以包括实现不同编码算法的代码、指令或计算机程序。可以选择合适的编解码器以基于诸如上面讨论的各种因素(包括输入数据的类型和/或源、编码数据的接收实体、计算资源的可用性、网络环境、业务要求、法规和标准等)对给定的输入数据集合进行编码。
在一个示例中,编码器可以被配置为对一系列视频帧进行编码。每个帧中的数据可以使用一系列步骤来编码。编码可以完全基于包含在帧内的空间信息(例如,帧内帧或I帧)。在这样的实施例中,编码步骤可以包括变换步骤、量化步骤和熵编码步骤。在变换步骤期间,原始输入数据被变换到适合于输入数据(例如,视频)的数据内容的不同域(例如,空间频域)。可以使用任何合适的变换编码技术,包括诸如离散余弦变换(DCT)或修改后的DCT的傅里叶型变换。以DCT为例,基于数据单元的大小确定DCT矩阵。数据单元可以包括4×4或8×8像素的块,16×16像素的宏块或任何合适的数据集合。然后使用矩阵乘法将DCT矩阵应用于数据单元,产生包括变换系数的变换矩阵。
在量化步骤中,可以例如通过将每个系数除以量化矩阵中的相应元素,然后将其舍入到最接近的整数值来对变换矩阵中的系数进行量化。量化矩阵可以使用量化参数(也被称为量化索引)来导出。例如,量化参数可以是量化矩阵的每个元素的值。作为另一示例,量化矩阵中的一些或所有元素可以与量化参数相乘(被缩放),并且缩放后的量化矩阵可以用于对变换矩阵进行量化。量化参数可以是在一定范围内(例如,在0和128之间且包括0和128)的整数。通常,量化参数的值越高,量化步长越大,并且量化矩阵中的元素值越大。这导致更多的变换系数被量化为零或接近零和更小,这意味着将需要更少的比特来编码量化后的系数。零或接近于零的系数越多,编码系数所需的比特就越少,导致由系数表示的数据单元的比特大小越小(因此比特率越低)。相反的情况也是如此,即,量化参数的较低值对应于较小的量化步长,对量化系数进行编码所需的比特数较多,且使用量化参数对数据单元进行编码的比特大小越大(因此比特率越高)。本文提供了用于通过改变用于对输入数据的一部分进行编码的量化参数来控制编码输入数据的比特率的技术。
在熵编码步骤中,以预定顺序扫描量化矩阵中的量化系数,并使用任何合适的编码技术进行编码。由于大多数非零DCT系数可能集中在矩阵的左上角,因此从左上角到右下角的锯齿形扫描图案是典型的。可以使用备选的扫描顺序,例如光栅扫描。扫描顺序可以被用于最大化实现长期运行连续零系数的概率。然后可以使用游程(run-length)编码、可变长度编码或任何其他熵编码技术对扫描的系数进行编码,以生成输出数据108。
上述编码过程可以用于主要基于包含在帧内帧中的空间信息来编码帧内帧(I帧)。另外地或备选地,编码器104可以被配置为利用帧之间的时间冗余,并基于根据先前帧或后续帧进行的前向和/或后向预测来编码帧间帧(例如,P帧或B帧)。在这样的实施例中,编码步骤可以包括预测步骤、变换步骤、量化步骤和熵编码步骤。在预测步骤中,可以通过估计相机和/或视频中的对象的运动,基于前一帧和/或后一帧来前向和/或后向预测帧。可以使用任何合适的运动估计技术来确定相邻帧之间的运动矢量,包括基于像素的方法(例如,块匹配)和基于特征的方法(例如,角点检测)。如果未找到对应数据单元(例如,宏块)的可接受匹配,则编码器可将数据单元编码为帧内数据单元,如上所述。否则,可以从其参照中减去预测帧,并且可以生成残差帧。如上所述,包括在残差帧中的数据可以以与帧内帧相似的方式进行空间编码。例如,可以对残差帧的一个或多个数据矩阵进行变换(例如,使用DCT)并进行量化。可以对残差帧的量化变换系数、运动矢量或相邻帧的运动矢量之间的差以及重构帧所需的任何其他合适的数据进行熵编码。如在帧内编码中那样,编码数据的比特率可以至少部分地由速率控制器提供的量化参数来控制。
仍然参照图1,速率控制器106可以被配置为通过向编码器104提供一个或多个编码参数110(也被称为速率控制参数)来控制输出数据的比特率。可以将比特率控制在某一范围内(例如,低于最大比特率,高于最小比特率)或接近目标平均比特率。备选地,可以控制比特率以根据帧的复杂度、带宽限制、缓冲区容量和其他因素而变化。在一些情况下,可以在诸如图片组(GOP)级别、帧级别、片级别、宏块级别、块级别、像素级别等一个或多个级别上实施速率控制。
编码参数可以包括一个或多个量化参数,用于控制编码过程的量化步骤,从而控制所得到的输出数据的比特率。量化参数可以包括例如量化步长、指示诸如在H.264或类似编码器中使用的QP等量化步长或与该量化步长相关的值、量化矩阵或其参照等。编码参数可以包括用于控制诸如预测步骤、变换步骤和/或熵编码步骤之类等编码过程的其他方面的参数。例如,编码参数可以包括用于在对系数进行熵编码之前移除某些高频系数的截止索引。编码参数的其它示例可以包括比特分配信息(例如,分配用于编码数据单元的最大值、最小值或目标比特)、帧速率、要变换和量化的数据单元的大小、用于确定是对数据单元(例如,宏块)进行编码还是跳过编码的运动检测阈值、用于速率失真优化的拉格朗日乘数、用于预测、变换和/或熵编码步骤的算法和参数等。
速率控制器106可以被配置为至少部分地基于关于输出数据108和/或编码器104的输出信息112来控制速率(例如,通过提供编码参数110)。输出信息可以由编码器104提供,或者可选地由速率控制器基于输出数据108导出。输出信息可以包括例如用于对数据单元(例如,帧、片、宏块)进行编码的比特数,用于对数据单元进行编码的参数(包括算法),编码器资源信息(例如,CPU/存储器使用情况、缓冲区使用情况)等。速率控制器可以使用此信息来调整用于一个或多个后续数据单元的一个或多个编码参数(例如,量化参数)。
速率控制器106可以可选地被配置为至少部分地基于关于输入数据108的输入信息114来控制速率。输入信息可以包括可以用于速率控制的输入数据的任何特性,诸如分辨率、尺寸、图像复杂度、纹理、亮度、色度、运动信息等。例如,高度复杂的输入数据可以用比不太复杂的输入数据更高的比特率来编码。
在一些实施例中,速率控制器106可以被配置为基于一个或多个速率控制阈值参数116来控制速率。阈值参数的值可以由用户、系统管理员、速率控制器106或任何其他组件或装置预定义和/或动态地更新。速率控制阈值参数可以用于导出编码参数110。在一些实施例中,用于确定用于编码给定片的编码参数的阈值可以根据片相对于帧的其他片的编码顺序而变化。图6-7中更详细地讨论示例性的阈值参数。
在一些实施例中,速率控制器106可以被配置为基于附加信息来控制速率。这样的信息可以包括来自被配置为接收、解码和/或回放或显示输出数据108(例如,解码器缓冲区使用、延迟、噪声、回放质量)的实体的解码器信息、当前计算环境(例如,网络带宽、工作负载)、用户指令或与速率控制相关的任何其他合适的信息。
输出数据108可以被存储在本地或远程数据存储器处和/或被提供给本地或远程解码器。输出数据108可以通过通信信道传输。示例性通信信道包括诸如因特网、存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、点对点(P2P)网络、Wifi网络、无线电通信等的有线或无线网络。
解码器可以被配置为执行与编码器的编码步骤相反的解码步骤,以便生成重构的数据。然后可以显示或回放重构的数据。例如,为了解码帧内编码的数据(例如,I帧),解码步骤包括执行编码器的相应熵编码、量化和变换步骤的逆处理的熵解码步骤(例如,使用可变长度解码)、逆量化步骤和逆变换步骤(例如,使用逆离散余弦变换(IDCT)。为了解码帧间编码数据(例如B帧或P帧),解码过程可以包括附加的运动补偿支持。
图2示出了根据实施例的用于要被编码的输入数据的示例性数据单元。如图所示,输入数据202可以包括多个帧204。例如,帧204可以表示视频流中的连续图像帧。每个帧204可以包括一个或多个片206。每个片206可以包括一个或多个宏块208。每个宏块208可以包括一个或多个块210。每个块210可以包括一个或多个像素212。每个像素212可以包括对应于一个或多个数据分量(例如亮度数据分量和色度数据分量)的一组或多组数据。数据单元可以指的是帧、片、宏块、块、像素或上述任一项构成的组。数据单元的大小(例如,像素数,尺寸)可以在不同的实施例中变化。例如,在一个示例中,帧204可以包括100个片206,每个片206包括10个宏块208,每个宏块208包括四(例如,2×2)个块210,每个块210包括64(例如,8×8)个像素212。
下面的讨论集中于包括单值像素数据的输入数据的编码。然而,应理解,这里讨论的技术可以扩展到输入数据,其中每个像素由对应于多个分量(例如色彩空间通道)的多个数据值表示。例如,图像数据块可以由相同大小的多个块表示,每个块包括与和图像数据相关联的色彩空间的特定分量或通道有关的像素数据。因此,YCbCr编码图像数据的8×8块可以由Y(亮度)数据的8×8块和对应于Cb和Cr通道的两个8×8块色度数据表示。这里讨论的编码步骤可以应用于每个亮度和色度数据块,以编码整个输入数据。
在各种实施例中,这里讨论的编码步骤可以应用于任一合适的数据级别或多个合适的数据级别。在某个数据级别应用编码步骤意味着在编码步骤被应用于下一个数据单元之前,对给定数据级别的整个数据单元整体进行编码。编码步骤可以在同一数据级别应用。例如,可以在块级别(例如,8×8像素块)、宏块级别(例如,16×16像素宏块)或在片级别应用变换步骤和/或量化步骤。备选地,可以在不同的数据级别执行不同的编码步骤。例如,可以在宏块级别执行变换步骤,可以在片级别执行量化步骤,并且可以在帧级别执行熵编码步骤。在这样的示例中,在整个变换后的片被量化之前,给定片内的所有宏块将被逐一变换,并且在对该量化系数进行熵编码之前,对帧内的所有片进行量化。
类似地,速率控制参数可适用于任一合适的数据级别或多个合适的数据级别。例如,单个量化参数可以用于块、宏块或片的量化。在一些实施例中,不同的速率控制参数可以与不同的编码操作相关联,这可以应用于不同的数据级别。例如,运动检测阈值可以用于宏块的运动检测,量化参数可以用于片的量化,并且在整个帧的熵编码期间可以使用另一速率控制参数。
图3图示了根据实施例的用于利用速率控制对数据进行编码的示例过程300。过程300可以由图1中讨论的系统100执行。要被编码的数据可以包括多个帧,每个帧包括多个片,诸如在图2中讨论的。在对片进行编码之前、期间和/或之后,编码参数可被初始化或更新以实现比特率控制。尽管在下面的讨论中速率控制主要应用在片级别,但是应理解,这里讨论的速率控制技术可以应用于任何合适的数据单元级别,例如宏块、块、帧等。
可以在配置有可执行指令的一个或多个计算机/控制系统的控制下执行过程300(或本文描述的任何其他过程,或其变型和/或组合)的一些或全部方面,并且过程300的一些或全部方面可以实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令,一个或多个计算机程序或一个或多个应用)。代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非暂时性的。描述操作的顺序不意图被解释为一种限制,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合以实现过程。
在框302处,初始化或调整用于对输入数据进行编码的一个或多个编码参数。部分或全部编码参数可用于速率控制。在一些实施例中,编码参数可以由速率控制器(诸如速率控制器106)提供,或者基于诸如存储在图1中讨论的数据库116中的配置数据来计算。编码参数可以包括在编码过程之前被初始化一次的全局常数,并且可以在整个输入数据的整个编码期间保持不变,如每帧、片或宏块或块的目标比特大小、最大比特大小和/或最小比特大小(例如,对于宏块,targetSizePerMb,maxSizePerMb或minSizePerMb)。在一些实施例中,给定每帧的最大比特大小,每个宏块的最大比特大小可以通过将每帧的最大比特大小除以帧中宏块的总数来计算。每个片的最大比特大小的量可以通过将每个宏块的最大比特大小与片中的宏块的数量相乘来计算。
编码参数还可以包括可以在每帧的编码之前或之后更新以控制比特率的全局变量(例如,阈值)。这样的参数的示例可以包括最小量化索引(minQIdx)、最大量化索引(maxQIdx)、初始量化索引(initialQIdx)、先前量化索引的平均(例如prevAveQIdx)、用于移除高频系数的一个或多个截止索引(例如cutoff_IdxL,cutoff_IdxC)、指示一个或多个编码参数与一个或多个编码参数阈值之间关系的计数的阈值(例如,maxQIdxReachedNum)、最大量化参数(maxQIdx)或最小量化参数(minQIdx)等等。
根据输入数据的表示,可以使用一个或多个截止索引。在单个分量表示中,每个像素可以由单个分量的单个值表示。可以只需要一个截止索引。在多分量表示中,每个像素可以由对应于多个分量(例如,亮度和色度分量)的多个值表示。这里,可以提供多个截止索引来编码多个分量值。例如,cutoff_idxL可以表示截止索引亮度系数,并且cutoff_idxC可以表示色度(例如,Cb,Cr)系数的截止索引。
指示符指示一个或多个编码参数与一个或多个编码参数阈值之间的关系。该指示符可以包括numMaxQIdxReached计数,该计数跟踪用于一个或多个片的量化的量化索引达到或超过给定最大量化索引(maxQIdx)的次数。在一些实施例中,当numMaxQIdxReached达到或超过给定阈值maxQIdReachedNum时,随后可以减小后续数据的比特率(例如,通过减小下一个数据单元的量化索引);反之亦然。因此,阈值maxQIdReachedNum可以被递增或递减以分别增加或减小比特率。截止索引可以增加或减小以分别增加或减小比特率。
在一些实施例中,对于不同类型的帧(例如,帧间帧或帧内帧),或者根据要编码的当前帧相对于输入数据中的其他帧的顺序,编码参数可以被不同地初始化或更新。例如,如果要编码的当前帧是输入数据的第一帧,则可以将初始量化索引(initialQIdx)、maxQIdxReachedNum阈值和截止索引初始化为以下预定义值:
initialQIdx=DEFAULT_QIDX[profileIdx]
maxQIdxReachedNum=10
cutoff_idxL=55
cutoff_idxC=55
在等式中,initialQIdx被设置为默认初始量化索引(DEFAULT_QIDX)阵列的元素,使用与不同类型的输入数据、编码器和/或规范相关联的简档索引(profileIdx)选择所述元素。分配给maxQIdxReachedNum、cutoff_idxL和cutoff_idxC的值仅被提供用于说明的目的,并且在其他实施例中可以是不同的值。
如果当前帧不是输入数据的第一帧,则编码参数可以至少部分地基于先前帧的编码来更新。例如,初始量化索引(initialQIdx)可以是先前量化索引的平均值。如果用于对先前帧进行编码的比特大小超过每帧的最大比特大小(例如,指示缓冲区溢出),则可以通过按照如下方式降低numQIdxReached计数的阈值maxQIdxReachedNum和截止索引来降低后续数据的比特率:
maxQIdxReachedNum-=2
cutoff_idxL-=5
cutoff_idxC-=5
换句话说,maxQIdxReachedNum按2递减,cutoff_idxL按递减,cutoff_idxC按5递减。上述递减值仅供说明之用。在各种实施例中,可以使用任何合适的正值。如果用于编码前一帧的比特大小不超过每帧的最大比特大小(例如,没有缓冲区溢出),则编码参数可以保持与前一帧相同。
在一些实施例中,可以在框302中初始化或更新最大量化参数(maxQIdx)或最小量化参数(minQIdx)。例如,maxQIdx可以被分配上面讨论的initialQIdx的值。
一旦设置了编码参数,过程300可以包括在框304-312中对当前帧的每一片进行编码,其中可以使用和/或更新在框302中配置的编码参数来控制比特率。在框304处,例如使用诸如DCT或修改后的DCT之类的傅里叶型变换来对当前片进行变换(例如,变换到空间频域)。在一个实施例中,当前片的每个宏块的每个8×8块被变换。可以将8×8DCT矩阵应用于每个8×8块,以产生包括用于8×8块的64个像素的64个变换系数的变换矩阵。如果片包括8个宏块并且每个宏块包括4个8×8块,则将8×8DCT矩阵应用于32个8×8块中的每一个,以产生64×32=2048个变换系数。
在框306处,对当前片的变换系数进行量化。量化可以包括将变换后的块矩阵(例如,对于8×8块)的每个系数除以相同维度的量化矩阵(例如,8×8量化矩阵)中的对应元素,然后舍入到最接近的整数值。对片进行量化可以包括对片的每个宏块的每个块变换矩阵进行量化。可以根据在框302和/或框314(下面讨论)中初始化或更新的一个或多个编码参数来执行框306中的量化的各方面。例如,可以使用量化索引(qIdx,也被称为量化参数)来导出量化矩阵。在一些实施例中,量化索引可以表示量化矩阵的元素值。在一些其他实施例中,量化索引可以表示用于计算或导出量化变换后的块矩阵所使用的量化矩阵的元素的标量。量化索引越高,系数越有可能被量化到零或接近零,导致较低的比特大小,进而导致较低的比特率。另一方面,可以使用较低的量化索引来增加比特率。通过改变量化索引,可以将不同片的比特率保持在预定的最大比特率以下或接近预定的最大比特率,或者达到或接近目标比特率。
在一些实施例中,可以基于当前片相对于帧中的其他片的顺序来确定量化索引。例如,如果当前片是帧的第一片,则可以在块302中为量化索引分配诸如上面设置的初始量化索引(initialQIdx)。如果当前片不是帧中的第一片,则可以在先前片的编码之后和当前片的编码之前,通过调整用于帧的先前片的编码的先前量化索引来确定当前片的量化索引,例如在框314中完成的。
在框308处,确定是否移除某些高频系数。如本文所使用的,截止或移除系数意味着用零替换系数或以其他方式将系数标记为零,使得其不被熵编码。截止或移除系数减少了需要编码的信息量,因此减少了编码信息所需的比特数(比特大小)。由于人眼对高频(进而对高频系数误差)没有对低频(进而对低频系数误差)敏感,因此较高频率系数可以比较低频率系数被更加粗略地量化或截止来降低比特率,而不显著地影响重构数据的质量(例如由峰值信噪比(PSNR)指示)。因此,除了使用量化索引之外,移除高频系数可以被用作用于控制比特率的另一种方法。
可以根据一个或多个截止相关的编码参数来执行高频系数的移除。截止相关的参数可以指示是否截止当前片的高频系数以及截止哪些系数。例如,截止指示符enCutoff可指示是否启用当前片的高频系数截止。截止相关的参数还可以包括一个或多个截止索引(例如,cutoff_idxL或cutoff_idxC)。截止索引可以指示使得具有大于或等于截止索引的索引的系数将被移除的索引。对于给定的变换/量化单元(例如,8×8块),单元的每个像素的系数可根据其频率被编索引,使得较高频率系数具有比较低频率系数更高的索引。因此,8×8块可以具有64个系数,其中最低频率系数具有索引0,而最高频率系数具有索引63。如果截止索引是60,则在一个示例中,具有大于60的索引(例如,61,62或63)的系数被移除。在另一个示例中,截止索引可以是包含性的,使得具有与截止索引(例如,60)相同的索引的系数也被移除。
例如,通过诸如在图1中讨论的速率控制器,截止相关的参数可以在框302或框314中被初始化或更新。截止相关参数的值可以根据当前片和/或当前帧的顺序而变化。例如,如框302所讨论的,根据当前帧是否是第一帧,截止相关参数可以被设置为不同的值。在一些情况下,可以根据当前片或帧的编码,针对下一片或帧动态地调整截止相关参数。例如,如框302所讨论的,如果编码后的当前帧的比特大小超过针对该帧分配的最大比特大小,则可以例如通过将enCutoff设置为真和/或通过减小一个或多个截止索引(使得更多的高频系数将被截止),而相应地调整截止相关的参数以减小下一个帧的比特率。类似地,在对当前片进行编码之后,如果对帧的直到且包括当前片的片进行编码所使用的累积比特数量超过最大比特大小,则可以例如通过将enCutoff设置为真和/或通过减小一个或多个截止索引来相应地调整截止相关参数以降低用于帧的下一片的比特率。当需要增加下一片或帧的比特率时,可以实现反向操作(例如,禁用enCutoff和/或增加一个或多个截止索引)。
如果在框308确定应该截止某些高频系数,则在框310,这些系数被替换为零或以其他方式被标记,以便不被编码到输出中。如在图9中进一步详细讨论的那样,在一些实施例中,可以以这样的方式来布置频率系数,以优化高频系数的移除。例如,可以从上到下布置系数行,其中每行对应于片的块。每行(块)中的系数从左到右布置,低频系数向左,高频系数向右。在这样的布置中,高于某个截止索引的高频系数的移除仅仅涉及移除某些系数列。在一些实施例中,框308-310可以是可选的,并且高频系数不被移除。
在框312处,对其余的系数进行熵编码。量化块中的系数可以以预定顺序进行扫描并使用任何合适的编码技术进行编码。扫描顺序可以是从可能集中了非零系数的低频系数到可能定位了零系数或接近零的系数的高频系数的锯齿形图案。这样的扫描顺序可以最大化实现长期运行的连续零系数的概率。然后可以使用游程编码、可变长度编码(例如,霍夫曼编码、算术编码)、差分编码、指数-哥伦布(Exponential-Golomb)编码、赖斯-古洛姆(Rice-Golumb)编码或任何其他合适的编码技术来对扫描的系数进行编码。在一些实施例中,使用不同的编码技术来编码不同类型的系数。例如,可以使用差分编码对DC系数进行编码,并且可以使用游程编码来对AC系数进行编码。作为另一示例,指数-哥伦布编码可以用于较小的码号(code numbers),赖斯-古洛姆编码可以用于较大的码号。
在框314处,可以基于当前片的编码来调整编码参数。被调整的编码参数可以包括被更新以考虑当前片的编码的各种运行统计量。例如,对当前帧中直到当前片的片进行编码所使用的累积总比特或平均比特可以用用于编码当前片的那些比特来更新。允许对当前帧中直到当前片的片进行编码的运行的最大比特总数可以递增编码当前片所允许的最大比特数。可以更新当前帧中的所有片的量化索引的运行总数和/或平均值,以考虑用于编码当前片的量化索引。可以更新指示当前帧内的编码片的量化索引已达到、超过或低于预定义的最大或最小索引的次数的计数,以考虑当前片的量化索引。
可以调整编码参数以控制同一帧中的下一片的比特率,或者如果当前片是帧中的最后一个片,则对下一帧进行控制。例如,可以至少部分地基于当前片的编码来确定下一片的量化索引。例如,可以调整当前片的量化索引以导出下一片的量化索引。可以至少部分地基于对当前帧的直到且包括当前片的一个或多个片进行编码所使用的累积比特数量与对该帧的一个或多个片进行编码所允许的最大比特数量之间的差来确定对当前量化索引的调整。例如,当累积比特数量超过最大比特数量时,则可以对当前量化索引应用正调整以获得将被用于对下一片进行编码的更高的量化索引,从而减少用于编码下一片的比特数(比特大小);反之亦然。
对先前的量化索引的调整可以通过诸如上限(最大量化索引)或下限(最小量化索引)的一个或多个阈值来进行限制或以其他方式进行修改。可以至少部分地基于帧中包括当前片的编码片的量化索引和给定限度之间的关系来确定量化索引的限度(例如,最大量化索引或最小量化索引)。例如,当当前量化索引达到或超过最大量化索引时,可以增加最大量化索引以允许后续片的较大量化索引(允许较低比特率)。如果当前量化索引未达到最大量化索引,则最大量化索引可保持相同或减小。作为另一示例,当当前量化索引达到或低于最小量化索引时,可以减小最小量化索引以允许后续片的较小量化索引(允许较高比特率)。如果当前量化索引没有达到或低于最小量化索引,则最小量化索引可保持相同或增加。
为了避免量化索引的快速变化,进而影响构建的数据的质量,量化索引限度可以以渐进或延迟的方式改变。并非立即响应于当前量化索引达到或超过限度而上移或下移限度,而是只有在重复达到或超过限度时才可以更新该限度。这确保了可配置窗口内的量化索引的稳定性。窗口的大小可以对应于跟踪编码片的量化索引达到或超过给定量化索引限度(例如,最大值或最小值)的次数的计数的阈值。只有当计数达到或超过给定的阈值时,才能更新该限度。在各种实施例中,计数可以跟踪连续的或不连续的达到或超过限度。
在一些实施例中,可以至少部分地基于对帧的直到且包括先前片的一个或多个片进行编码所使用的累积比特数量与对该帧的所述一个或多个片进行编码所允许的最大比特数量之间的差来确定对量化索引限度的调整。例如,当累积比特数量超过最大比特数量时,可以增加最大量化索引以允许更高的量化索引,从而减少用于对当前片和将来片进行编码的比特数(比特大小);反之亦然。也可以根据当前片的编码来更新用于下一片的其他编码参数(例如截止相关参数)。图4-8中进一步详细讨论了用于调整编码参数的示例性方法。
在框316处,确定在当前帧中是否存在要被编码的下一片。如果是,则过程300进行到框304,以便根据在框314中确定的编码参数来确定编码参数以开始编码下一片。如果确定在当前帧中不存在更多要编码的片,则过程300前进到框318,以便确定在输入数据中是否存在要被编码的下一个帧。
如果存在要被编码的下一帧,则过程300前进到框302,以便确定下一帧的帧编码参数。在一些实施例中,可以更新帧级别编码统计量。例如,可以更新对当前帧进行编码所使用的总比特数或对直到且包括当前帧的帧进行编码所使用的比特的累积数量。比特的数量可以与最大比特大小、最小比特大小和/或目标比特大小进行比较,并且可以在框302中相应地调整编码参数以控制比特率。根据所述比较,可以更新一个或多个编码参数以控制比特率。这样的编码参数可以包括截止相关参数、量化索引等。
如果确定没有剩余更多的帧将被编码,则过程300在框320处结束。在一些实施例中,框302和/或框314可以是可选的,并且编码参数在不同的帧或片上可以是相同的。
根据本发明的一个方面,可以在数据单元(例如,片)被编码时,通过更新编码参数来控制比特率。在一些实施例中,确定对帧的直到且包括帧的第一片的片进行编码所使用的累积比特数量与对帧的直到且包括帧的第一片的片进行编码所允许的最大比特数量之间的差值。第一片使用第一编码参数进行编码。用于第一编码参数的编码参数阈值可以基于指示符进行更新,所述指示符指示编码参数阈值与对直到且包括第一片的片进行编码所使用的编码参数之间的关系。关系指示符可以包括计数,该计数跟踪用于编码(例如,量化)片的编码参数(例如,量化索引)已达到或超过诸如上限或下限的给定编码参数阈值(例如,最大量化索引、最小量化索引或目标量化索引)的次数。可以基于所述差值和更新的编码参数阈值来确定用于编码帧的第二片的第二编码参数。
图4图示了根据实施例的用于控制比特率的示例过程400。在一些实施例中,过程400可以用于实现上述图3的框314。过程400的各方面可以由诸如图1中讨论的速率控制器来实现。
在框402处,确定对帧的一个或多个片进行编码所使用的累积比特数量(累积比特大小)和对所述一个或多个片进行编码所允许的最大比特数量(最大比特大小)之间的差值。使用诸如量化索引的至少一个编码参数来对帧的一个或多个片中的每一个进行编码。一个或多个编码片包括使用第一编码参数(例如,第一量化索引)进行编码的第一片。第一片可以是最近编码的片。如图2所示,每个片可以包括多个宏块。每个宏块可以包括多个块。每个块可以包括多个像素。
在框404处,至少部分地基于计数来更新编码参数阈值,所述计数指示先前片的编码参数达到或超过编码参数阈值的次数。在一个实施例中,计数跟踪量化索引用于分别对一个或多个片(包括第一片)进行编码(例如,量化)的次数。计数可以被配置为跟踪连续或不连续的事件。编码参数阈值可以表示自编码参数阈值上次被设置以来用于被编码的片(包括第一片)的上限或下限。例如,如果第一片是片6,并且在片3的编码之后设置了当前编码参数阈值,则编码参数阈值适用于限制片4、片5和片6的编码参数。在设置新的编码参数阈值之后,计数可以被刷新为零。在一些实施例中,编码参数可以是量化索引,并且编码参数阈值可以是用于限制量化索引的最大量化索引或最小量化索引。
可以基于计数与预定义计数阈值之间的关系而将编码参数阈值按预定义的值递增或递减。例如,当编码参数阈值表示量化索引的上限时,当计数等于或大于预定义的计数阈值(例如,10)时,上限可以递增预定义的值(例如,2)。另一方面,当计数小于或等于预定义的计数阈值(例如,0、10、20)时,上限可以保持相同或按预定义的量递减。作为另一示例,当编码参数阈值表示量化索引的下限时,当计数等于或大于预定义的计数阈值时,下限可以按预定义的值递减。
另外地或备选地,可以至少部分地基于对帧的一个或多个片进行编码所使用的累积比特数量(累积比特大小)和对所述一个或多个片进行编码所允许的最大比特数量(最大比特大小)之间的差值(在框402中计算)来更新编码参数阈值。例如,当差值超过某个预定义的比特阈值时,表示上限的编码参数阈值可以递增。否则,如果差值小于或等于预定义的比特阈值,则编码参数阈值可以递减或保持相同。比特阈值可以是常数或者可以基于变量值来计算。例如,比特阈值可以被计算为所允许的最大比特数的比率。
在框406,可以至少部分地基于对帧的一个或多个片进行编码所使用的累积比特数量和对所述一个或多个片进行编码所允许的最大比特数量之间的差值(在框402中确定)和更新的编码参数阈值(在框404中确定)来确定用于对帧的第二片进行编码的第二编码参数。第二片可以是在第一片的相同帧中的第一片之后要被编码的下一片,或在不同的帧中要被编码的下一片。确定第二编码参数可以包括至少部分地基于所述差值来确定对第一编码参数的预期调整。接下来,可以基于预期调整和更新后的编码参数阈值来确定第二编码参数。例如,如果期望的调整是正的,并且更新后的编码参数阈值是最大阈值,则第二编码参数可以是(1)将预期调整应用于第一编码参数的结果和(2)最高阈值中的最小值。另一方面,如果预期调整是负的,并且更新后的编码参数是最小阈值,则第二编码参数可以是(1)对第一编码参数应用预期调整的结果和(2)最低阈值中的最大值。换句话说,对第一编码参数的实际调整的绝对值可以小于预期调整的绝对值,因为它可能受编码参数阈值限制。然后可以使用第二编码参数来对帧的第二片进行编码。
图5示出了根据实施例的用于控制比特率的示例性过程500。在一些实施例中,过程500可以用于实现上述图3的框314。过程500的各方面可以由诸如图1中讨论的速率控制器来实现。
在框502处,至少部分地基于对直到且包括第一片的片进行编码所使用的累积比特数量与对所述片进行编码所允许的最大比特数量之间的差值,确定针对第一片的第一编码参数的预期调整。所述差值可以根据上述过程400的框402来确定。第一编码参数(诸如用于量化第一片的量化索引)可以用于对第一片进行编码。当累积比特数量大于所允许的最大数量时,对第一编码参数的预期调整可以为正。当累积比特数量等于或小于所允许的最大数量时,对第一编码参数的预期调整可以为零或负。在一些实施例中,差值越大,预期调整越大;反之亦然。备选地或附加地,可以基于累积比特大小与目标或最小比特大小的比较来确定预期调整。例如,当累积比特数量大于目标比特大小时,预期调整可以为正。
在框504处,确定指示编码参数阈值与对帧的直到且包括第一片的相应片进行编码所使用的一个或多个编码参数之间的关系的指示符。编码参数阈值可以表示上限、下限或目标阈值。在一些实施例中,关系指示符可以包括计数,该计数跟踪用于编码(例如量化)片的编码参数(例如,量化索引)已达到或超过诸如上限或下限的给定编码参数阈值(例如,最大量化索引、最小量化索引或目标量化索引)的次数。在备选示例中,计数可以跟踪编码参数落在给定编码参数阈值之上或之下的特定范围内的次数。计数可以仅跟踪连续(多于一次)达到或超过编码参数阈值的事件。备选地,计数或比率可跟踪达到或超过编码参数阈值的非连续事件。在另一示例中,关系指示符可以包括达到或超过给定编码参数阈值的编码参数的比率或百分比而不是计数。
在框506处,可以至少部分地基于在框504中确定的关系指示符来更新编码参数阈值。在一些实施例中,如果关系指示符指示先前编码参数的编码参数阈值过高或过低,则可以相应地更新编码参数阈值。例如,编码参数阈值可基于关系指示符与预定义计数阈值之间的比较而按预定义的值递增或递减。另外,可以基于对片进行编码所使用的累积比特数量与对片进行编码所允许的最大比特数量之间的差值来确定编码参数,诸如在过程400的框404中所讨论的。
在框508处,至少部分地基于更新后的编码参数阈值和所述预期调整来确定对所述第一编码参数的实际调整。一般情况下,实际调整可以与预期调整的符号相同,但实际调整的绝对值可以等于或小于预期调整的绝对值。实际调整的绝对值可以通过修改预期调整的绝对值来确定,使得当对第一编码参数应用实际调整时,结果不超过更新后的编码参数阈值。例如,如果第一编码参数、预期调整和更新后的最大阈值分别为5、4、8,则对第一编码参数应用预期调整的结果为9,大于最大阈值8。因此,实际调整可以设置为3,小于预期调整4,使得对第一编码参数应用实际调整的结果为8,等于或小于最大阈值8。另一方面,如果预期调整和第一编码参数的结果没有超过更新后的编码参数阈值(例如,如果预期调整是3或更小),则实际调整可以被设置为与预期调整相同。
在框510处,将实际调整应用于第一编码参数以确定用于编码第二片的第二编码参数。第二片可以是在第一片之后编码的下一片。第二片可以与第一片在相同的帧中。备选地,第二片可以在与第一片不同的帧中。第二编码参数可以是用于量化第二片的量化索引。
根据本发明的各方面,诸如量化索引的编码参数以渐进和延迟的方式被更新,以防止编码参数(例如,量化索引)的值的快速波动,从而补偿编码结果中的相对较小的变化,并且确保在可配置窗口期间,编码参数和/或重构数据的质量(例如,PSNR)保持相对稳定。另一方面,本文讨论的技术通过允许在指示实际需要改变的条件下(例如,当量化索引重复地达到最大量化索引阈值时和/或当累积比特差值很大时)更新编码参数,允许灵活且精确地控制比特率。
图6-7图示了根据实施例的用于在当前片的编码之后并且基于当前片的编码来确定下一片的编码参数的示例性过程600。具体地,过程600可以用于确定下一片的量化索引(qIdx)和截止相关参数(enCutoff)。在一些实施例中,过程600可以用于实现上面讨论的过程300(例如框314)、过程400或过程500的各个方面。过程600的各方面可以由图1中讨论的系统100的一些或全部组件来实现。
图6部分地示出了基于对直到并且包括当前片的片进行编码所使用的累积比特数量(numByteAccum)与一个或多个编码参数阈值(诸如最大比特大小(maxByteAccum)和/或目标比特大小(targetByteAccum))的比较,来确定对量化索引的预期调整(qIdxDelta)的示例性步骤。
在框602处,可以计算编码的宏块数量(numMbEnc)。numMbEnc可以表示当前帧中已经被编码的宏块(直到且包括当前片中的宏块)数量。在一个示例中,变量numMbEnc可以递增当前片中的宏块数量(sliceMbCount):
numMbEnc+=sliceMbCount;
在框604处,可以计算迄今为止编码的片的累积比特大小(numByteAccum)。在一个示例中,变量numByteAccum可以递增用于编码当前片的比特数量(realBytesCurSlice):
numByteAccum+=realBytesCurSlice;
在框606处,计算累积目标比特大小(targetByteAccum)、累积最大比特大小(maxByteAccum)以及累积比特大小和最大比特大小之间的差值(deltaNumByteAccum)。例如,targetByteAccum和maxByteAccum可以通过将编码的宏块数量(如在框602处计算的)分别与每个宏块的目标比特大小(targetSizePerMb)和每个宏块的最大比特大小(maxSizePerMb)相乘来计算:
targetBypteAccum=targetSizePerMb*numMbEnc;
maxByteAccum=maxSizePerMb*numMbEnc;
targetSizePerMb和maxSizePerMb可以分别基于每个帧或片的目标比特大小以及每个帧或片的最大比特大小来预定义或计算。例如,如果每帧的最大比特大小是12000字节,一帧中有100个片,并且每片有10个宏块,则每片的最大比特大小和每个宏块的最大比特大小分别是12000/100=120字节,120/10=12个字节。类似地,如果每帧的目标比特大小是10000字节,则每片的目标比特大小和每个宏块的目标比特大小分别是10000/100=100字节和100/10=10字节。
此外,可以计算编码片的累积比特大小与所允许的最大比特大小之间的差值(deltaNumByteAccum):
deltaNumByteAccum=numByteAccum-maxByteAccum;
例如,如果帧的三个片已经分别用95、110和127个字节编码,则累积编码比特大小numByteAccum是95+110+127=332个字节。累积目标比特大小targetBypteAccum是100*3=300个字节,并且累积最大比特大小maxByteAccum是120*3=360个字节。累积编码比特大小和最大比特大小之间的差值deltaNumByteAccum是332-360=-28个字节。
在框608-620处,使用上面计算的值来计算对下一片的量化索引(qIdxDelta)的预期调整。通常,当当前片的编码导致累积大小超过给定阈值(例如,maxByteAccum或targetByteAccum)时,则预期下一片的量化索引将增加(即,具有正的预期调整)以便减小编码下一片的比特大小,从而控制整个比特大小;反之亦然。
在框608处,确定差值deltaNumByteAccum是否大于maxByteAccum。如果deltaNumByteAccum>maxByteAccum(意味着numByteAccum大于maxByteAccum的两倍),则在框610处将qIdxDelta设置为预定义的值N1,其中N1是正数(例如,诸如10的正整数)。换句话说,相对于当前的量化索引,下一片的量化索引预期增加N1。应了解,上面的deltaNumByteAccum和maxByteAccum之间的比较仅用于说明目的。在一些其他实施例中,deltaNumByteAccum可以与Z x maxByteAccum进行比较,其中Z可以是除1之外的任何正数(例如,1.5、2、2.5)。
否则,在框612处确定numByteAccum是否大于maxByteAccum。如果是,意味着numByteAccum大于maxByteAccum但小于maxByteAccum的两倍,则在框614处将qIdxDelta设置为另一个预定义的值N2,其中N2是正数(例如,正整数3)。换句话说,相对于当前的量化索引,下一片的量化索引预期增加N1
如果在框612处确定nmByteAccume<=maxByteAccum,则在框616处,确定numByteAccum是否大于targetByteAccum。如果numByteAccum>targetByteAccum,则在框614处将qIdxDelta设置为另一个预定义的值N3,其中N3是正数(例如,诸如正整数1)。换句话说,相对于当前的量化索引,下一片的量化索引预期增加N3。在一些实施例中,numByteAccum和maxByteAccum或targetByteAccum之间的差值越大,qIdxDelta的值越大。因此,例如,N1可以大于N2(其大于N1)。在一些其它实施例中,N1可以不大于N2,并且N2可以不大于N3
如果在框616处确定numByteAccum<=targetByteAccum,则在框620处,将qIdxDelta设置为在框620处的另一个预定义的值N4,其中N4是负数(例如,负整数-2)。换句话说,相对于当前的量化索引,下一片的量化索引预期会减少|N4|。
在一些实施例中,只计算maxByteAccum和targetByteAccum中的一个,并将其用于与numByteAccum进行比较以确定qIdxDelta。在一些其他实施例中,numByteAccum可以与诸如最小累积比特大小(minByteAccum)的附加阈值进行比较。例如,如果numByteAccum小于minByteAccum,则下一片的量化索引可以递减(qIdxDelta<0),以增加整体比特率。
继续进行过程600,图7示出了使用图6中的框中计算出的至少一些值来确定下一片的编码参数的示例性步骤。例如,确定下一片的量化索引。可选地,也可以为下一片计算截止相关参数。
在框622-626处,计算指示用于对帧的片进行编码的量化索引连续达到或超过给定最大量化索引(maxQIdx)的次数的计数(numMaxQIdxReached)。另外,该计数可以指示编码片的累积比特大小超过最大累积比特大小或目标累积比特大小的次数。在框622处,确定(1)当前(已编码的)片的量化索引(qIdx)是否等于maxQIdx,以及(2)量化索引的预期调整是否为正。如上所述,当编码数据的累积比特大小超过最大累积比特大小或目标累积比特大小时,预期调整通常为正。如果是,则在框624处,将计数numMaxQIdxReached递增预定义的量,诸如1。否则,如果条件(1)或条件(2)为假,则在框626处将计数numMaxQIdxReached设置为零。在一些替代实施例中,可以在框622中仅测试条件(1)和(2)中的一个。
在框628-638处,基于当前的maxQIdx来确定量化索引的最大阈值(maxQIdx)。例如,可以通过根据各种条件将老的maxQIdx按预定量递增或递减来导出新的maxQIdx。可以提高最大阈值以允许更高的量化索引被用于将来的片,从而降低整体比特率。如果编码片(包括前一片)的累积比特大小太高(例如,超过最大或目标比特大小),则最大阈值的增加可能是必要的。另一方面,可以降低最大阈值以减少要用于将来片的较高量化索引,从而增加总体比特率以便实现更高质量的重构数据(例如,PSNR)。当编码片(包括前一片)的累积比特大小足够低(例如,低于最大或目标比特大小)时,最大阈值的降低可能是期望的。当不需要调整时(例如,当比特率不需要调整时),新的maxQIdx可以被设置为与老的maxQIdx相同。
在框628处,确定编码片的累积比特大小(numByteAccum)与最大累积比特大小(maxByteAccum)之间的比特差值(deltaNumByteAccum)是否大于最大累积比特大小(maxByteAccum)。如果deltaNumByteAccum>maxByteAccum(意味着numByteAccum大于maxByteAccum的两倍),则在框630处maxQIdx递增预定义的值N5,其中N5是正数(例如,正整数10)。
否则,在框632处确定(1)在框624或626处确定的计数(numMaxQIdxReached)是否大于预定义的计数阈值N6,其中N6是正数(例如,正整数5,在本文其他地方也被称为maxQIdxReachedNum);以及(2)比特差值(deltaNumByteAccum)大于阈值,例如常数或最大累积比特大小的预定比率(例如,maxByteAccum/K1,其中K1是正整数,如16)。如果是,则maxQIdx在框634处递增预定义值N7,其中N7是正数(例如,正整数2)。在一些实施例中,numByteAccum和maxByteAccum之间的差值越大,则maxQIdx递增越多,因此N5大于N7。在一些其他实施例中,N5可以小于或等于N7。上述框632中的条件(1)和(2)确保,如果不存在框628中的条件为真的极端情况,则maxQIdx的值以渐进方式更新。例如,如果(1)或(2)为假,那么maxQIdx保持不变。
如果在框632处确定numMaxQIdxReached小于或等于N6,或者如果deltaNumByteAccum不大于maxByteAccum/K1,则在框636处,确定numMaxQIdxReached是否等于零。如果是,则在框638处maxQIdx按预定义值N8递减,其中N8是正数(例如,正整数2)。
接下来,可通过将比特差值(deltaNumByteAccum)与预定义的比特阈值(诸如常数或最大累积比特大小的预定比率(例如,maxByteAccum/K2,其中K2是一个正整数,如8))相比较,来可选地确定截止相关参数。如果deltaNumByteAccum大于比特阈值(例如,maxByteAccum/K2),则启用截止以移除将被编码的下一片的高频系数,从而降低整体比特率。例如,指示是否启用截止的标志(enCutoff)可以被设置为真,并且可以在框642处将截止索引(cutoff_idx)设置为预定义值N9,其中N9是小于或等于宏块或任何量化单元(例如,64)中的像素数量的正整数(例如,60)。可选地,可以基于当前和/或先前片的编码来确定截止索引N9的值。在一些情况下,比特差值(deltaNumByteAccum)越大,越多的高频系数将被截止,以保存用于编码先前片的比特,因此截止索引越低。比特差值(deltaNumByteAccum)越小,越少的高频系数将被截止,因此截止索引越高。在一些实施例中,可针对将被编码的不同类型的数据(例如,用于亮度数据的cutoff_idxL以及用于色度数据的cutoff_idxC)来确定多于一个的截止索引。在一些实施例中,截止相关参数中的一些或全部可以不在对每个片进行编码之后进行更新。而是,它们可以在每个帧的编码之后被更新。
在一些实施例中,预定义的比特阈值可以根据当前片或下一片相对于帧的其他片被编码的顺序而变化。例如,预定义的比特阈值可以增加或减小,使得随着更多的片被编码,截止高频系数变得更困难或更容易。
在框644处,确定将被编码的下一片的量化索引。下一片的量化索引可以通过取以下值中的最小值来获得:(1)当前片的量化索引(preQIdx)和对其的预期调整(qIdxDelta)之和;以及(2)上面计算的最大量化索引阈值(maxQIdx)。在一些实施例中,下一片的量化索引可受到其他阈值(例如最小量化索引阈值)的限制。例如,下一片的量化索引可以是以下值中的最大值:(1)当前片的量化索引与预期调整之和;以及(2)最小量化索引阈值。最小量化索引阈值可以以与本文针对最大量化索引阈值所描述的类似方式来更新。例如,可以使用计数来跟踪量化索引达到或低于最小量化索引阈值的次数。如果计数超过某个计数阈值和/或累积比特大小小于目标或最小累积比特大小,则可以降低最小量化索引阈值。
在各种实施例中,对于不同的片,取决于当前或下一片相对于帧中的其他片被编码的顺序,上面使用的各种预定义值中的一些或全部(例如N1-N9、K1和K2)可以保持不变或变化。例如,与先前编码的片不同,对于后面的编码片,可以增加K1(在框632中)和/或K2(在框640中),使得在maxByteAccum针对后面的编码片增加时,maxByteAccum/K1和/或maxByteAccum/K2保持相对不变。对于后面的编码片,预期调整qIdxDelta(例如,来自框610、614、618和620的N1、N2、N3和/或N4)可以增加或减少。对于后面的编码片,对maxQIdx(例如,框630、634和638的N5、N7和/或N8)的调整可以增加或减少。框632中的计数阈值N5可以增大或减小,以增大或减小maxQIdx将可能保持相同的窗口的大小。如上所述,也可以通过增大或减小maxByteAccum/K1的值来增大或减小窗口的大小。另外,截止相关参数可以基于片的编码顺序来确定。例如,用于在框640中启用截止的阈值maxByteAccum/K2可以随着maxByteAccum增大而增大(例如,通过保持K2为常数,以比maxByteAccum的增大更慢的速率减小K2或者增大K2),从而使得对后面的片启用截止比对先前的片更加困难。相反地,框640中的maxByteAccum/K2的值可以随着maxByteAccum的增大而减小(例如通过以比maxByteAccum的增大更快的速率增大K2,从而使得对后面的片启用截止比对先前的片更加容易。框642中的截止索引N9可以针对后面的编码片增大或减小,以便增大或减小针对后面编码数据的比特率。
图8图示了根据实施例的用于利用速率控制对数据进行编码的示例性过程800。过程800的各个方面可以由图1中讨论的系统100的组件来实现。
在框802处,使用第一量化索引来量化帧的第一片。
在框804处,可以至少部分地基于在第一片之后将被编码的第二片的编码顺序来调整一个或多个编码参数阈值。编码参数阈值可以包括可以用于确定第二片的编码参数的任何预定义和可配置的值(例如,图6-7的过程600中的N1-N9、K1和K2)。编码参数阈值还可以包括本文讨论的最大量化索引阈值(例如,过程600中的maxQIdx)。编码参数阈值可以根据第二片相对于帧的其他片的编码顺序而增大、减小或保持相同。举例来说,当第二片是经编码的帧的片的前半部分或前四分之一部分时,编码参数阈值可能不同于当第二片是经编码的片的后半部分或最后四分之一部分时。对于给定片(例如,第二片),一些阈值可能增大,而另一些阈值可能保持不变或减小。
在框806处,至少部分地基于经调整的一个或多个编码参数来确定用于量化第二片的第二量化索引,诸如图3-7中所描述的。如本文所描述的,第二量化索引的确定还可以至少部分地基于第一片的编码结果。
在框808处,确定一个或多个截止参数。截止参数可以至少部分地基于编码参数阈值(例如,图7中的K2和N9)来确定。在一些实施例中,框808可以是可选的。
在框810处,使用在框806中确定的第二量化索引来量化第二片。
在框812处,然后使用在框808中确定的截止参数来移除第二片的所得量化系数的高频系数。
图9示出根据实施例的用于移除片的高频系数的示例性过程900。具体地,可以以特定方式来布置片的系数,以便于有效地移除某些高频系数。如本文所讨论的,截止或移除系数意味着用零替换系数或以其他方式标记系数,使得该系数不被编码在输出中。
在图示的示例中,片包括N个块,并且每个块包括8×8像素。已经量化了片的每个块(例如,使用由速率控制器提供的量化索引),导致8×8的系数块。示例性的系数块包括块0902和块N-1904。对于每个块,它的64个系数可以根据它们的频率以升序(即从低频到高频)排列。在一些实施例中,低频系数集中在块的左上角,高频系数集中在块的右下方。因此,如块0902和块N-1904所示,块的系数可以从左上角到右下角以Z字形模式扫描。扫描以频率升序形成块的系数列表。在备选实施例中,块的系数可以以诸如光栅扫描模式等某种其他模式进行扫描。
片的N个块的有序系数可以被布置在表格906中。该表具有N行,每行对应于该片的一个块。因此,行0包括块0的系数,行1包括块1的系数,依此类推。行N-1包括块N-1的系数。每行中的系数按照频率的升序排列。因此,表格的每一列包括有序系数列表中的特定索引的系数。例如,列0包括所有N个块中的最低频率系数,列1包括所有N个块中的下一个最低频率系数,以此类推。列63包括所有N个块中的最高频率系数。
本文所描述的块系数的这种排列有助于有效地实现移除块中的某些高频系数。要移除或截止高于某个频率索引cutoff_idx的高频系数,可以简单地移除列cutoff_idx左侧的所有列。例如,如果cutoff_idx是60,则列61-63(在图9中作为阴影区域示出)可以作为整体被移除。实现表的整个列的这种移除可能比实现从各个块中移除高效系数更有效。在一些实施例中,可以使用并行处理或硬件加速技术来有效地实现高频系数的移除。
此外,如本文所述的块系数的布置可以有助于对剩余系数进行有效的熵编码。例如,可以按照表格906中所示的模式从上到下和从左到右扫描系数。因此,在列1中的系数被扫描之前,列0中的系数从上到下被扫描,等等。因此,在扫描块的较高频率系数之前,扫描片的块中的较低频率系数。这样的扫描顺序可以最大化实现长期运行的连续零系数的概率。然后可以使用游程编码、可变长度编码(例如,霍夫曼编码、算术编码)、差分编码、指数-哥伦布(Exponential-Golomb)编码、赖斯-古洛姆(Rice-Golumb)或任何其他合适的编码技术来对扫描的系数进行编码。
本发明的系统、装置和方法提供了用于控制编码的视频或其他类型的数据的比特率的技术。具体而言,可以使用这些技术,通过在对帧的每一片进行编码之后调整编码参数来将每帧的比特率保持在大约给定的最大比特大小或比特率或在给定的最大比特大小或比特率之下。这样的编码参数可以包括例如用于量化下一片的量化索引,以及用于移除下一片的某些高频系数的截止(cutoff)索引。有利的是,本文描述的速率控制技术可以一次性完成控制编码数据的比特率,而无需首先对输入数据进行预处理,由此节省了编码过程所需的时间和计算资源。编码参数和比特率可以以渐进方式调整,而不显著影响重构数据的质量。另外,可以基于片的编码顺序自适应地调整编码参数。
图10示出了可以用于实施上文所描述的任何实体或组件的计算机系统的高层框图。图10所示的子系统经由系统总线1075互连。附加的子系统包括打印机1003、键盘1006、固定盘1007以及耦合到显示器适配器1004的监视器1009。外围设备和耦合到I/O控制器1000的输入/输出(I/O)设备可以通过本领域已知的任何数量的手段(例如串行端口)连接到计算机系统。例如,串行端口1005或外部接口1008可用于将计算机装置连接到诸如因特网的广域网、鼠标输入装置或扫描仪。经由系统总线1075的互连允许处理器1002与每个子系统通信,并且控制来自系统存储器1001或固定盘1007的指令的执行以及子系统之间的信息交换。系统存储器1001和/或固定盘可以体现为计算机可读介质。
用于包含代码或代码的部分的存储介质和计算机可读介质可以包括本领域中已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于以用于存储和/或传输诸如计算机可读指令、数据结构、程序模块或其他数据的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质,包括RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储装置、数据信号、数据传输或可用于存储或传输所需信息并可以通过计算机进行访问的任何其他介质。基于本文提供的公开内容和教导,本领域的普通技术人员将意识到实现各种实施例的其他方式和/或方法。
以上描述是说明性的而不是限制性的。本发明的许多变化对于本领域技术人员在阅读本公开内容后可能变得显而易见。因此,本发明的范围可以不是参照上面的描述来确定,而是可以参考未决的权利要求及其全部范围或等同物来确定。
应当理解,本发明的任何实施例可以以使用硬件(例如,专用集成电路或现场可编程门阵列)和/或使用具有模块化或集成方式的通用可编程处理器的计算机软件的控制逻辑的形式来实现。如本文所使用的,处理器包括单核处理器、同一集成芯片上的多核处理器或单个电路板上的或连成网络的多个处理单元。基于本文所提供的公开和教导,本领域的普通技术人员将知道和理解用于使用硬件和/或硬件和软件的结合来实现本发明的其它方式和/或方法。
本申请中所描述的任何软件组件或功能均可以被实现为要由使用任何合适的计算机语言(例如,Java、C、C++、C#、Objective-C、Swift等)或使用例如常规或面向对象的技术的脚本语言(比如,Perl或Python的)的处理器执行的软件代码。软件代码可以被存储为用于存储和/或传输的计算机可读介质上的一系列指令或命令。合适的非暂时性计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、诸如硬盘驱动器或软盘的磁介质、或诸如光盘(CD)或DVD(数字多功能盘)等光介质、闪存等。计算机可读介质可以是这种存储装置或传输装置的任意组合。
也可以使用适合于经由包括因特网在内符合各种协议的有线、光学和/或无线网络进行传输的载波信号来编码和发送这样的程序。因此,根据本发明的实施例的计算机可读介质可以使用利用这样的程序而被编码的数据信号来创建。利用程序代码编码而成的计算机可读介质可以与兼容装置一起打包,或者(例如,经由因特网下载)与其它装置分开提供。任何这样的计算机可读介质可驻留在单个计算机产品(例如,硬盘驱动器、CD或整个计算机系统)上或位于单个计算机产品内,并且可以存在于系统或网络内的不同计算机产品之上上或内部。计算机系统可以包括监控器、打印机或用于向用户提供本文提及的任何结果的其它合适的显示器。
可以利用包括可以被配置为执行这些步骤的一个或多个处理器的计算机系统来完全或部分地执行本文描述的任何方法。因此,实施例可以涉及如下这样的计算机系统,所述计算机系统被配置为潜在地利用执行相应步骤或相应的步骤组的不同组件来执行本文所描述的任何方法的步骤。虽然本文中的方法的步骤是以编号的步骤呈现的,但是可以在同一时间处执行本文中的方法的多个步骤,或者可以以不同的顺序来执行本文的方法的步骤。此外,这些步骤的一部分可以与其它方法的其它步骤的一部分一起使用。此外,步骤的全部或部分可以是可选的。另外,任何方法的任何步骤可以利用模块、单元、电路或用于执行这些步骤的其它装置来执行。
在不脱离本发明的实施例的精神和范围的情况下,可以以任何合适的方式来组合特定实施例的具体细节。然而,本发明的其它实施例可能涉及与每个单独方面有关的具体实施例,或者这些单独方面的具体组合。
本发明的示例性实施例的上述描述是为了说明和描述的目的而提供的。其不旨在穷举或将本发明限制为所描述的精确形式,并且鉴于上述教导,许多改型和变型是可能的。
除非另有明确指示,否则,“一”或“该”的描述旨在表示“一个或多个”。除非另有明确指示,否则,使用“或”旨在表示“包容性的或”而非“排他性的或”。

Claims (31)

1.一种用于控制比特率的计算机实现的方法,包括:
确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的所述一个或多个片进行编码所允许的最大比特数量之间的差值,所述第一片使用第一编码参数进行编码;
至少部分地基于计数来更新编码参数阈值,所述计数指示用于对所述一个或多个片进行编码的一个或多个编码参数达到或超过所述编码参数阈值的次数;以及
至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
2.根据权利要求1所述的方法,其中,使用对应的编码参数对所述帧的所述一个或多个片中的每一片进行编码。
3.根据权利要求1所述的方法,其中,所述第一编码参数和所述第二编码参数是量化参数。
4.根据权利要求1所述的方法,其中,所述帧的每一片包括多个宏块。
5.根据权利要求1所述的方法,还包括:至少部分地基于所述差值来确定对所述第一编码参数的预期调整。
6.根据权利要求5所述的方法,其中确定所述第二编码参数包括:至少部分地基于所述预期调整来确定对所述第一编码参数的实际调整。
7.根据权利要求6所述的方法,其中,当所述累积比特数量大于所允许的最大比特数量时,对所述第一编码参数的预期调整为正。
8.根据权利要求6所述的方法,其中当所述累积比特数量小于所允许的最大比特数量时,对所述第一编码参数的预期调整为负。
9.根据权利要求1所述的方法,其中所述计数指示所述一个或多个编码参数达到或超过所述编码参数阈值的连续次数。
10.根据权利要求1所述的方法,其中,所述编码参数阈值表示所述第一编码参数的上限,并且所述更新后的编码参数阈值表示所述第二编码参数的上限。
11.根据权利要求1所述的方法,其中更新所述编码参数阈值包括:如果所述计数等于或大于预定义的计数阈值,并且所述累积比特数量与所述最大比特数量之间的差值超过预定义的比特阈值,则将所述编码参数阈值递增预定义的值。
12.根据权利要求11所述的方法,其中,所述预定义的值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
13.根据权利要求11所述的方法,其中,所述预定义的比特阈值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
14.根据权利要求1所述的方法,其中更新所述编码参数阈值包括:如果所述计数小于预定义的计数阈值,或者如果所述累积比特数量与所述最大比特数量之间的差值不超过预定义的比特阈值,则将所述编码参数阈值按预定义的值递减。
15.根据权利要求14所述的方法,其中,所述预定义的值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
16.根据权利要求14所述的方法,其中,所述预定义的比特阈值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
17.根据权利要求1所述的方法,还包括:至少部分地基于所述差值,移除所述帧的第二片的频率系数的预定义的集合。
18.根据权利要求17所述的方法,其中,所述预定义的集合是至少部分地基于确定所述差值超过预定义的比特阈值来确定的。
19.根据权利要求18所述的方法,其中,所述预定义的比特阈值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
20.用于存储计算机可执行指令的一个或多个非暂时性计算机可读存储介质,所述计算机可执行指令在由计算系统执行时配置所述计算系统执行操作,所述操作包括:
确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的所述一个或多个片进行编码所允许的最大比特数量之间的差值,所述第一片使用第一编码参数进行编码;
至少部分地基于计数来更新编码参数阈值,所述计数指示用于对所述一个或多个片进行编码的一个或多个编码参数达到或超过所述编码参数阈值的次数;以及
至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
21.根据权利要求20所述的一个或多个非暂时性计算机可读存储介质,其中所述操作还包括:至少部分地基于所述差值来确定对所述第一编码参数的预期调整。
22.根据权利要求21所述的一个或多个非暂时性计算机可读存储介质,其中确定所述第二编码参数包括:至少部分地基于所述预期调整来确定对所述第一编码参数的实际调整。
23.根据权利要求20所述的一个或多个非暂时性计算机可读存储介质,其中更新所述编码参数阈值包括:如果所述计数等于或大于预定义的计数阈值,并且所述累积比特数量与所述最大比特数量之间的差值超过预定义的比特阈值,则将所述编码参数阈值递增预定义的值。
24.根据权利要求23所述的一个或多个非暂时性计算机可读存储介质,其中所述预定义的值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
25.根据权利要求23所述的一个或多个非暂时性计算机可读存储介质,其中所述预定义的比特阈值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
26.根据权利要求20所述的一个或多个非暂时性计算机可读存储介质,其中更新所述编码参数阈值包括:如果所述计数小于预定义的计数阈值,或者如果所述累积比特数量与所述最大比特数量之间的差值不超过预定义的比特阈值,则将所述编码参数阈值按预定义的值递减。
27.根据权利要求26所述的一个或多个非暂时性计算机可读存储介质,其中所述预定义的值根据所述第一片或第二片相对于所述帧的其他片被编码的顺序而变化。
28.根据权利要求20所述的一个或多个非暂时性计算机可读存储介质,其中所述操作还包括:至少部分地基于所述差值,移除所述帧的第二片的频率系数的预定义的集合。
29.根据权利要求28所述的一个或多个非暂时性计算机可读存储介质,其中,所述预定义的集合是至少部分地基于确定所述差值超过预定义的比特阈值来确定的。
30.一种计算机系统,包括:
存储器,存储一个或多个计算机可执行指令;以及
一个或多个处理器,被配置为访问所述存储器并执行所述计算机可执行指令以执行包括以下的步骤:
确定对帧的直到且包括第一片的一个或多个片进行编码所使用的累积比特数量与对所述帧的所述一个或多个片进行编码所允许的最大比特数量之间的差值,所述第一片使用第一编码参数进行编码;
至少部分地基于计数来更新编码参数阈值,所述计数指示用于对所述一个或多个片进行编码的一个或多个编码参数达到或超过所述编码参数阈值的次数;以及
至少部分地基于所述差值和更新后的编码参数阈值来确定用于对所述帧的第二片进行编码的第二编码参数。
31.一种用于控制比特率的计算机实现的方法,包括:
基于对直到且包括第一片的片进行编码所使用的累积比特数量与对所述片进行编码所允许的最大比特数量之间的差值,确定针对第一片的第一编码参数的预期调整;
确定指示编码参数阈值与对所述片进行编码所使用的编码参数之间的关系的指示符;
至少部分地基于所述指示符来更新编码参数阈值;
至少部分地基于所述更新后的编码参数阈值和所述预期调整来确定对所述第一编码参数的实际调整;以及
将所述实际调整应用于第一编码参数,以确定用于对第二片进行编码的第二编码参数。
CN201680087867.2A 2016-08-04 2016-08-04 用于比特率控制的系统和方法 Pending CN109479136A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/093280 WO2018023554A1 (en) 2016-08-04 2016-08-04 System and methods for bit rate control

Publications (1)

Publication Number Publication Date
CN109479136A true CN109479136A (zh) 2019-03-15

Family

ID=61073148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680087867.2A Pending CN109479136A (zh) 2016-08-04 2016-08-04 用于比特率控制的系统和方法

Country Status (3)

Country Link
US (2) US10887365B2 (zh)
CN (1) CN109479136A (zh)
WO (1) WO2018023554A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114820610A (zh) * 2022-06-29 2022-07-29 数聚(山东)医疗科技有限公司 基于图像处理的新材料医疗器械缺陷检测方法
WO2022262294A1 (zh) * 2021-06-15 2022-12-22 华为技术有限公司 视频流传输方法以及相关通信装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6727011B2 (ja) * 2016-04-14 2020-07-22 キヤノン株式会社 画像符号化装置及びその制御方法
EP3531700B1 (en) * 2016-10-18 2022-04-06 Panasonic Intellectual Property Management Co., Ltd. Image coding method, transmission method and image coding device
WO2021211290A1 (en) * 2020-04-16 2021-10-21 Alibaba Group Holding Limited Bitrate control method for video coding
US11584389B2 (en) * 2020-04-17 2023-02-21 Zoox, Inc. Teleoperations for collaborative vehicle guidance
US20230078190A1 (en) * 2021-09-15 2023-03-16 Synaptics Incorporated Image compression method and apparatus

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060280242A1 (en) * 2005-06-13 2006-12-14 Nokia Corporation System and method for providing one-pass rate control for encoders
CN1902939A (zh) * 2004-01-05 2007-01-24 汤姆森许可贸易公司 数字画面序列的编码方法和解码方法以及编码设备
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
JP2007135045A (ja) * 2005-11-11 2007-05-31 Matsushita Electric Ind Co Ltd 圧縮符号化装置、圧縮符号化方法、および記録媒体
CN101159867A (zh) * 2007-03-31 2008-04-09 红杉树(杭州)信息技术有限公司 一种基于片的自适应码率控制方法
CN102067610A (zh) * 2008-06-16 2011-05-18 杜比实验室特许公司 基于视频编码的切片依赖性的码率控制模型适配

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190723B2 (en) * 2002-03-27 2007-03-13 Scientific-Atlanta, Inc. Digital stream transcoder with a hybrid-rate controller
US8879857B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Redundant data encoding methods and device
WO2008007929A1 (en) * 2006-07-14 2008-01-17 Samsung Electronics Co., Ltd Method and apparatus for encoding and decoding video signal of fgs layer by reordering transform coefficients
US7573405B2 (en) * 2006-12-29 2009-08-11 Texas Instruments Incorporated System updating accumulated statistics coding variable values after multiple encodings
CN101217615B (zh) * 2007-12-27 2011-04-06 北京中星微电子有限公司 一种压缩图像比特率控制的方法及装置
US8913661B2 (en) * 2010-02-19 2014-12-16 Skype Motion estimation using block matching indexing
US9313526B2 (en) * 2010-02-19 2016-04-12 Skype Data compression for video
US8527649B2 (en) * 2010-03-09 2013-09-03 Mobixell Networks Ltd. Multi-stream bit rate adaptation
GB2488830B (en) * 2011-03-10 2015-07-29 Canon Kk Method and device for encoding image data and method and device for decoding image data
WO2013067435A1 (en) * 2011-11-04 2013-05-10 Huawei Technologies Co., Ltd. Differential pulse code modulation intra prediction for high efficiency video coding
WO2013070970A2 (en) * 2011-11-08 2013-05-16 General Instrument Corporation Method of determining binary codewords for transform coefficients
US9462021B2 (en) * 2012-09-24 2016-10-04 Google Technology Holdings LLC Methods and devices for efficient adaptive bitrate streaming
WO2014120368A1 (en) * 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US10264268B2 (en) * 2015-04-07 2019-04-16 Shenzhen Boyan Technology Ltd. Pre-encoding for high efficiency video coding
US20180027244A1 (en) * 2016-07-21 2018-01-25 Mediatek Inc. Video encoding apparatus with video encoder adaptively controlled according to at least transmission status of communication link and associated video encoding method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1902939A (zh) * 2004-01-05 2007-01-24 汤姆森许可贸易公司 数字画面序列的编码方法和解码方法以及编码设备
US20060280242A1 (en) * 2005-06-13 2006-12-14 Nokia Corporation System and method for providing one-pass rate control for encoders
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
JP2007135045A (ja) * 2005-11-11 2007-05-31 Matsushita Electric Ind Co Ltd 圧縮符号化装置、圧縮符号化方法、および記録媒体
CN101159867A (zh) * 2007-03-31 2008-04-09 红杉树(杭州)信息技术有限公司 一种基于片的自适应码率控制方法
CN102067610A (zh) * 2008-06-16 2011-05-18 杜比实验室特许公司 基于视频编码的切片依赖性的码率控制模型适配

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022262294A1 (zh) * 2021-06-15 2022-12-22 华为技术有限公司 视频流传输方法以及相关通信装置
CN114820610A (zh) * 2022-06-29 2022-07-29 数聚(山东)医疗科技有限公司 基于图像处理的新材料医疗器械缺陷检测方法
CN114820610B (zh) * 2022-06-29 2022-09-06 数聚(山东)医疗科技有限公司 基于图像处理的新材料医疗器械缺陷检测方法

Also Published As

Publication number Publication date
WO2018023554A1 (en) 2018-02-08
US10887365B2 (en) 2021-01-05
US20210152621A1 (en) 2021-05-20
US20190166180A1 (en) 2019-05-30

Similar Documents

Publication Publication Date Title
CN109479136A (zh) 用于比特率控制的系统和方法
CN104885455B (zh) 一种用于视频编码的计算机实现的方法及装置
CN104811714B (zh) 使用平面表达的增强帧内预测编码
JP6245888B2 (ja) エンコーダおよび符号化方法
US10757428B2 (en) Luma and chroma reshaping of HDR video encoding
US11356672B2 (en) System and method for controlling video coding at frame level
US20220086454A1 (en) System and method for reducing video coding fluctuation
US11451799B2 (en) Transmission bit-rate control in a video encoder
US11012718B2 (en) Systems and methods for generating a latent space residual
US11134250B2 (en) System and method for controlling video coding within image frame
US20150146776A1 (en) Video image encoding device, video image encoding method
CN108141602A (zh) 视频运动补偿装置和方法
JP6491628B2 (ja) 映像符号化方法、映像符号化装置及び映像符号化プログラム
KR102059842B1 (ko) 일반화된 그래프 파라미터를 이용하여 그래프 기반 변환을 수행하는 방법 및 장치
JP2019102861A (ja) 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム
CN113973205A (zh) 基于视频内容特征的码率控制比特分配方法及存储介质
CN105706447B (zh) 动画图像编码设备、动画图像解码设备、动画图像编码方法以及动画图像解码方法
WO2011161823A1 (ja) 動画像符号化方法および復号方法
KR101583870B1 (ko) 이미지 인코딩 시스템, 디코딩 시스템 및 그 제공방법
US11330258B1 (en) Method and system to enhance video quality in compressed video by manipulating bit usage
US20220201319A1 (en) Moving image encoding device, moving image compression device, moving image encoding method, and program
KR20150096353A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190315