CN110692244B - 基于最大概率符号的二进制位串编译 - Google Patents
基于最大概率符号的二进制位串编译 Download PDFInfo
- Publication number
- CN110692244B CN110692244B CN201880035986.2A CN201880035986A CN110692244B CN 110692244 B CN110692244 B CN 110692244B CN 201880035986 A CN201880035986 A CN 201880035986A CN 110692244 B CN110692244 B CN 110692244B
- Authority
- CN
- China
- Prior art keywords
- probability
- symbol
- binary
- bits
- string
- 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
Links
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/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/124—Quantisation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/149—Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
-
- 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/169—Methods 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/18—Methods 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 a set of transform coefficients
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- 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/169—Methods 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/184—Methods 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 bits, e.g. of the compressed video stream
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
确定要用来对二值化视频数据进行编码的比特数包括:接收表示所述二值化视频数据的二进制位串,所述二进制位串的每个二进制位存储符号;以及确定存储在每个二进制位中的所述符号是否是能够用于对所述二值化视频数据进行编码的概率模型的最大概率符号。响应于确定存储在每个二进制位中的所述符号是所述最大概率符号,可以基于所述二进制位串的大小来更新所述概率模型,以确定要用来对所述二值化视频数据进行编码的所述比特数。否则,通过所述二进制位串的存储不是所述概率模型的最大概率符号的符号的二进制位的数目来确定所述比特数。在更新所述概率模型之后,使用所述比特数来将所述二值化视频数据编码到比特流。
Description
背景技术
数字视频流可以使用一系列帧或静止图像来表示视频。数字视频能够被用于各种应用,例如包括视频会议、高清视频娱乐、视频广告或用户生成的视频的共享。数字视频流能够包含大量数据并消耗用于处理、发送或者存储视频数据的计算设备的大量的计算或通信资源。已提出各种方法来减少视频流中的数据的量,所述各种方法包括编码或解码技术。
发明内容
根据本公开的实施方式的用于基于概率模型的概率变化来对二值化视频数据进行编码的方法包括接收表示所述二值化视频数据的二进制位串。所述二进制位串包括各自存储符号的二进制位。所述方法还包括将存储在所述二进制位中的一个二进制位中的所述符号识别为当前符号。所述方法还包括确定所述当前符号是否是所述概率模型的最大概率符号。所述方法还包括,响应于确定所述当前符号不是所述最大概率符号,更新所述概率中的至少一个概率。所述概率包括与所述概率模型的最大概率符号相关联的第一概率和与所述概率模型的最小概率符号相关联的第二概率。所述方法还包括,在更新所述概率之后,确定所述第二概率是否大于所述第一概率。所述方法还包括,响应于确定所述第二概率大于所述第一概率,切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是所述概率模型的新的最大概率符号并且反映所述最大概率符号是所述概率模型的新的最小概率符号。所述方法还包括使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的第一比特数。所述方法还包括使用所述第一比特数来将所述二值化视频数据编码到比特流。
根据本公开的实施方式的用于基于概率模型的概率变化来对二值化视频数据进行编码的装置包括处理器,所述处理器被配置成执行存储在非暂时性存储介质中的指令。所述指令包括用于接收表示所述二值化视频数据的二进制位串的指令。所述二进制位串包括各自存储符号的二进制位。所述指令还包括用于将存储在所述二进制位中的一个二进制位中的所述符号识别为当前符号的指令。所述指令还包括用于确定所述当前符号是否是所述概率模型的最大概率符号的指令。所述指令还包括用于进行如下操作的指令:响应于确定所述当前符号不是所述最大概率符号,通过减小与所述概率模型的最大概率符号相关联的第一概率并增加与所述概率模型的最小概率符号相关联的第二概率来更新所述概率。所述指令还包括用于在更新所述概率之后确定所述第二概率是否大于所述第一概率的指令。所述指令还包括进行如下操作的指令:响应于所述第二概率大于所述第一概率的确定:切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是所述概率模型的新的最大概率符号并且反映所述最大概率符号是所述概率模型的新的最小概率符号,使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的第一比特数,并且使用所述第一比特数来将所述二值化视频数据编码到比特流。所述指令还包括进行如下操作的指令:响应于确定所述第二概率不大于所述第一概率:基于所述第一概率或所述第二概率中的至少一个概率来确定要用来对所述二值化视频数据进行编码的第二比特数,并且使用所述第二比特数来将所述二值化视频数据编码到所述比特流。
根据本公开的实施方式的用于基于概率模型的概率变化来对二值化视频数据进行编码的方法包括接收表示所述二值化视频数据的二进制位串。所述二进制位串包括各自存储符号的二进制位。所述方法还包括基于存储在所述二进制位中的一个二进制位中的当前符号不是概率模型的最大概率符号的确定来更新能够用于对所述二值化视频数据进行编码的概率模型。所述方法还包括确定所述经更新的概率模型是否反映:与所述最大概率符号相比,存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述概率模型的最小概率符号的概率较大。所述方法还包括,在确定所述经更新的概率模型反映所述较大概率之后,基于与所述最小概率符号相关联的概率来确定要用来对所述二值化视频数据进行编码的第一比特数。所述方法还包括使用所述第一比特数来将所述二值化视频数据编码到比特流。
根据本公开的实施方式的用于基于概率模型的概率变化来对二值化视频数据进行编码的装置包括处理器,所述处理器被配置成执行存储在非暂时性存储介质中的指令。所述指令包括用于接收表示所述二值化视频数据的二进制位串的指令,所述二进制位串包括各自存储符号的二进制位。所述指令还包括用于在单个时钟周期中基于所述二进制位串的大小或所述二进制位串的存储不是概率模型的最大概率符号的符号的二进制位的数目来更新能够用于对所述二值化视频数据进行编码的概率模型,经更新的概率模型反映要用来对所述二值化视频数据进行编码的比特数。所述指令还包括用于在更新所述概率模型之后使用所述比特数来将所述二值化视频数据编码到所述比特流的指令。
在对实施例、所附权利要求书和附图的以下详细描述中公开本公开的这些和其它方面。
附图说明
本文描述参考在下面描述的附图,其中,相同的附图标记在若干视图中自始至终指代相同的部分。
图1是视频编码和解码***的简图。
图2是能够实现发送站或接收站的计算设备的示例的框图。
图3是待编码并随后解码的典型视频流的图。
图4是根据本公开的实施方式的编码器的框图。
图5是根据本公开的实施方式的解码器的框图。
图6是用于将二值化视频数据编译为比特流的技术的示例的流程图。
图7是用于针对每个二进制位存储概率模型的最大概率符号的二进制位串来确定要用来对二值化视频数据进行编译的比特数的技术的示例的流程图。
图8是用于使用查找表的元素来更新概率模型的最大概率符号的概率的技术的示例的流程图。
图9是用于针对一些二进制位不存储概率模型的最大概率符号的二进制位串来确定要用来对二值化视频数据进行编译的比特数的技术的示例的流程图。
图10是用于确定概率模型的最大概率符号和概率模型的最小概率符号的概率变化的技术的示例的流程图。
图11是熵编码组件的框图。
图12是熵解码组件的框图。
图13是反映基于概率模型的给定状态来对概率模型的最大概率符号或最小概率符号进行编译所需要的比特数的表的图。
图14是反映针对概率模型的最大概率符号和最小概率符号的概率变化的表的图示。
具体实施方式
视频压缩方案可以包括:将各个图像或帧分成较小的部分(诸如块),以及使用限制在输出中针对各个块包括的信息的技术来生成输出比特流。能够对编码比特流进行解码以根据有限的信息重新创建源图像。典型的视频压缩和解压缩技术使用熵编译来进一步减少将视频数据编码到比特流或者从比特流对视频数据进行解码所需要的比特数。例如,熵编译可以包括使用算术编译等来减少在该数据被变换和量化之后需要编码到比特流的数据的量。
算术编译技术的一个示例是上下文自适应二进制算术编译(CABAC)。在CABAC中,待编码或解码的符号的每个可能的值与待编码或者解码的下一个符号将具有相同值的概率相关联。例如,对于三个符号的串AAB,该串的给定符号的值为A的概率是大约66%并且该串的给定符号的值为B的概率是大约33%。待编码或解码的符号的值的概率分布能够被用于减少待编码或解码的数据的量,诸如通过使用较少数目的比特来对较多可能的符号进行编译并且使用较大数目的比特来对较少可能的符号进行编码。例如,如果已知串中的大多数符号的值是A,则能够使用一比特的一小部分来对具有值A的每个符号进行编码,诸如而不是通常被用于对值进行编码的1比特。
能够将与视频编译方面相关联的符号的值(例如,量化变换系数、运动矢量差等)存储在二进制位串中,其中,二进制位串的每个二进制位存储这些值中的一个值。不同值的概率在每个二进制位被处理之后改变。例如,CABAC引擎能够基于存储在已经被处理的二进制位中的符号值来调整存储在当前二进制位中的符号值的概率。因此,如果特定符号值的长串被编译,则CABAC引擎能够调整该特定符号值的概率,以反映它比它最初更有可能出现。
然而,这也可以意味着:存储在当前二进制位中的符号值的编译取决于与先前编译的二进制位相关联的信息。在使用硬件组件来执行熵编译的情况下,当前二进制位对先前编译的二进制位的依赖性将数据吞吐量限制为每时钟周期处理一个二进制位。假定单个二进制位串可以包括大量的二进制位,并且对每个视频块来说可以有大量的二进制位串要编码,则例如,对视频数据进行熵编译可能要花费较长时间。
本公开的实施方式通过基于存储在二进制位串的二进制位中的最大概率符号的数目对表示二值化视频数据的二进制位串进行熵编译来解决诸如此类的问题。处理表示二值化视频数据的二进制位串的二进制位,以确定每个二进制位是否存储能够用于对二值化视频数据进行编译的概率模型的最大概率符号。如果存储在二进制位串的每个二进制位中的符号是最大概率符号,则基于二进制位串的大小来更新概率模型,以确定要用来对二值化视频数据进行编译的第一比特数。然而,如果存储在二进制位串的每个二进制位中的符号不是最大概率符号,则基于二进制位串的存储不是最大概率符号的二进制位的数目来更新概率模型,以确定要用来对二值化视频数据进行编译的第二比特数。
概率模型具有反映对概率模型的最大概率符号和概率模型的最小概率符号中的每一个符号进行编译所需要的比特数的状态。在确定存储在当前二进制位中的符号是最大概率符号时,概率模型的状态增加,使得最大概率符号的概率增加并且最小概率符号的概率减小。在确定存储在当前二进制位中的符号是最小概率符号时,概率模型的状态减小,使得最大概率符号的概率减小并且最小概率符号的概率增加。在处理二进制位串的最后二进制位之后,与概率模型的最终状态相关联的比特数被用于确定要用来对二值化视频数据进行编译的比特数。在至少一些情况下,因此能够在单个时钟周期中处理多个二进制位,从而提高用于使用算术编译技术来对二值化视频数据进行编译的速度。
在本文中最初参考能够在其中实现用于对二值化视频数据进行编译的技术的***来描述用于对二值化视频数据进行编译的技术的进一步细节,如图1至图5中所示。图1是视频编码和解码***100的简图。发送站102例如能够是具有诸如图2中描述的硬件的内部配置的计算机。然而,发送站102的其它实现方式是可能的。例如,发送站102的处理能够被分布在多个设备之间。
网络104能够连接发送站102和接收站106,以用于进行视频流的编码和解码。具体地,能够在发送站102中对视频流进行编码,并且能够在接收站106中对经编码的视频流进行解码。网络104能够是例如因特网。网络104也能够是局域网(LAN)、广域网(WAN)、虚拟专用网(VPN)、蜂窝电话网络,或将视频流从发送站102转移到此示例中的接收站106的任何其它手段。
在一个示例中,接收站106能够是具有诸如图2中描述的硬件的内部配置的计算机。然而,接收站106的其它适合的实现方式是可能的。例如,接收站106的处理能够被分布在多个设备之间。
视频编码和解码***100的其它实施方式是可能的。例如,一种实施方式能够省略网络104。在另一实施方式中,视频流能够被编码,并且然后被存储以用于在稍后的时间发送到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或某个通信途径)接收经编码的视频流并且存储该视频流以用于稍后解码。在示例实施方式中,实时传输协议(RTP)被用于通过网络104发送经编码的视频。在另一实施方式中,可以使用除RTP以外的传输协议(例如,基于超文本转移协议的(基于HTTP的)视频流协议)。
当被用在视频会议***中时,例如,发送站102和/或接收站106可以包括如下所述的对视频流进行编码和解码的能力。例如,接收站106可能是视频会议参与者,所述视频会议参与者从视频会议服务器(例如,发送站102)接收经编码的视频比特流,以对他或她自己的视频流进行解码和查看,并且进一步对其进行编码并将经编码的视频比特流发送到视频会议服务器,以用于由其它参与者进行解码和查看。
图2是能够实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200能够实现图1的发送站102和接收站106中的一个或两个。计算设备200能够为包括多个计算设备的计算***的形式,或者一个计算设备(例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等)的形式。
计算设备200中的处理器202能够是常规的中央处理单元。替代地,处理器202能够是能够操纵或者处理现存或此后开发的信息的另一类型的一个或多个设备。例如,尽管所公开的实施方式能够利用如所示的一个处理器(例如,处理器202)来实践,但是能够通过使用多于一个处理器来实现速度和效率方面的优势。
在一个实施方式中,计算设备200中的存储器204能够是只读存储器(ROM)设备或随机存取存储器(RAM)设备。然而,其它适合类型的存储设备能够被用作存储器204。存储器204能够包括由处理器202使用总线212来访问的代码和数据206。存储器204能够进一步包括操作***208和应用程序210,所述应用程序210包括许可处理器202执行本文中所述的技术的至少一个程序。例如,应用程序210能够包括应用1至N,所述应用1至N进一步包括执行本文所描的技术的视频编译应用。计算设备200还能够包括辅助存储装置214,其能够例如是与移动计算设备一起使用的存储卡。因为视频通信会话可以包含大量信息,所以它们能够被整个地或部分地存储在辅助存储装置214中并被按需加载到存储器204中以用于进行处理。
计算设备200还能够包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是触敏显示器,其将显示器与能够操作感测触摸输入的触敏元件相组合。显示器218能够经由总线212被耦合到处理器202。除了显示器218之外或作为显示器218的替代方案,还能够提供许可用户对计算设备200进行编程或者以其它方式使用计算设备200的其它输出设备。当输出设备是显示器或者包括显示器时,能够以各种方式(包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器(诸如有机LED(OLED)显示器))实现该显示器。
计算设备200还能够包括以下设备或者与所述设备通信:图像感测设备220(例如,相机)或现存或此后开发的能够感测图像(诸如操作计算设备200的用户的图像)的任何其它图像感测设备220。图像感测设备220能够被定位成使得它被指向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴能够被配置成使得视场包括与显示器218直接相邻并且显示器218从中可见的区域。
计算设备200还能够包括以下设备或者与所述设备通信:声音传感设备222(例如,麦克风)或现存或此后开发的能够感测计算设备200附近的声音的任何其它声音感测设备。声音感测设备222能够被定位成使得它被指向操作计算设备200的用户并且能够被配置成接收由用户在该用户操作计算设备200的同时做出的声音,例如,语音或其它发言。
尽管图2将计算设备200的处理器202和存储器204描绘为被集成到一个单元中,但是能够利用其它配置。处理器202的操作能够能够跨越可直接地或者跨越局域网或其它网络耦合的多个机器(其中单独的机器能够具有一个或多个处理器)分布。存储器204能够跨越多个机器(诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器)分布。尽管在这里被描绘为一条总线,但是计算设备200的总线212能够由多条总线组成。另外,辅助存储装置214能够被直接耦合到计算设备200的其它组件或者能够经由网络访问,并且能够包括诸如存储卡这样的集成单元或诸如多个存储卡这样的多个单元。因此能够按照多种各样的配置来实现计算设备200。
图3是待编码并随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一个等级处,视频序列302包括许多相邻帧304。虽然三个帧被描绘为相邻帧304,但是视频序列302能够包括任何数目的相邻帧304。然后,能够将相邻帧304进一步细分成单独的帧,例如,帧306。在下一个等级处,能够将帧306划分成一系列平面或区段308。例如,区段308能够例如是许可并行处理的帧的子集。区段308也能够是可将视频数据分成单独的颜色的帧的子集。例如,彩***数据的帧306能够包括辉度平面和两个色度平面。可以以不同的分辨率对区段308进行采样。
无论帧306是否被划分成区段308,都可以将帧306进一步细分成块310,所述块310能够包含例如与帧306中的16x16个像素相对应的数据。还能够将块310布置成包括来自像素数据的一个或多个区段308的数据。块310还能够是任何其它适合的大小,诸如4x4个像素、8x8个像素、16x8个像素、8x16个像素、16x16个像素或更大。除非另外指出,否则在本文中能够以互换的方式使用术语块和宏块。
图4是根据本公开的实施方式的编码器400的框图。诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序,能够如上所述在发送站102中实现编码器400。计算机软件程序能够包括机器指令,当由诸如处理器202这样的处理器执行所述机器指令时,所述机器指令使发送站102以图4中描述的方式对视频数据进行编码。编码器400还能够作为包括在例如发送站102中的专用硬件被实现。在一个特别期望的实施方式中,编码器400是硬件编码器。
编码器400具有在前向路径(通过实连接线示出)中执行各种功能以使用视频流300作为输入来产生经编码或压缩的比特流420的以下级:内/间预测级402、变换级404、量化级406和熵编码级408。编码器400还可以包括重建路径(通过虚连接线示出),以重建用于对将来的块进行编码的帧。在图4中,编码器400具有在重建路径中执行各种功能的以下级:去量化级410、逆变换级412、重建级414和环路滤波级416。编码器400的其它结构变型能够被用于对视频流300进行编码。
当视频流300被呈现用于进行编码时,能够以块为单位处理各个相邻帧304,诸如帧306。在内/间预测级402处,能够使用帧内预测(也称作内预测)或帧间预测(也称作间预测)来对各个块进行编码。在任何情况下,能够形成预测块。在内预测的情况下,预测块可以由当前帧中的先前经编码和重建的样本形成。在间预测的情况下,预测块可以由一个或多个先前构建的参考帧中的样本形成。
接下来,能够在内/间预测级402处将预测块从当前块中减去以产生残差块(也称作残差)。变换级404使用基于块的变换来在例如频域中将残差变换成变换系数。量化级406使用量化器值或量化等级来将变换系数转换成离散量子值,该离散量子值被称为量化变换系数。例如,变换系数可以除以量化值并被截断。
量化变换系数然后由熵编码级408进行熵编码。熵编码系数以及用于对块进行解码的其它信息(其可以包括例如诸如用于指示所用预测的类型、变换类型、运动矢量、量化器值等的语法元素)然后被输出到压缩比特流420。能够使用各种技术来格式化压缩比特流420,所述各种技术诸如可变长度编译(VLC)或算术编译。压缩比特流420也能够被称为编码视频流或编码视频比特流,并且将在本文中以可互换方式使用这些术语。
重建路径(通过虚连接线示出)能够被用于确保编码器400和解码器500(在下面针对图5进行描述)使用相同的参考帧来对压缩比特流420进行解码。重建路径执行与在解码过程(在下面针对图5进行描述)期间进行的功能类似的功能,其包括在去量化级410处对量化变换系数进行去量化以及在逆变换级412处对去量化变换系数进行逆变换以产生导数残差块(也称作导数残差)。在重建级414处,能够将在内/间预测级402处预测的预测块添加到导数残差以创建重建块。能够将环路滤波级416应用于重建块以减少诸如块效应这样的失真。
编码器400的其它变型能够被用于对压缩比特流420进行编码。在一些实施方式中,基于非变换的编码器能够针对某些块或帧在没有变换级404的情况下直接量化残余信号。在一些实施方式中,编码器能够使量化级406和去量化级410被组合在公共级中。
图5是根据本公开的实施方式的解码器500的框图。例如,通过提供存储在存储器204中的计算机软件程序,能够在接收站106中实现解码器500。计算机软件程序能够包括机器指令,当由诸如处理器202这样的处理器执行所述机器指令时,所述机器指令使接收站106以图5中所述的方式对视频数据进行解码。解码器500还能够用包括在例如发送站102或接收站106中的硬件来实现。
类似于上面讨论的编码器400的重建路径,解码器500在一个示例中包括执行各种功能以从压缩比特流420产生输出视频流516的以下级:熵解码级502、去量化级504、逆变换级506、内/间预测级508、重建级510、环路滤波级512和去块滤波级514。解码器500的其它结构变型能够被用于对压缩比特流420进行解码。
当压缩比特流420被呈现以用于解码时,压缩比特流420内的数据元素能够由熵解码级502解码以产生一组量化变换系数。去量化级504(例如,通过将量化变换系数乘以量化器值)对量化变换系数进行去量化,并且逆变换级506对去量化变换系数进行逆变换以产生能够与在编码器400中由逆变换级412所创建的导数残差相同的导数残差。使用从压缩比特流420解码的标头信息,解码器500能够使用内/间预测级508来创建与在编码器400中创建的相同的预测块(例如,在内/间预测级402处)。
在重建级510处,能够将预测块添加到导数残差以创建重建块。能够将环路滤波级512应用于重建块以减少块效应。能够将其它滤波应用于重建块。在此示例中,去块滤波级514被应用于重建块以减少块失真,并且结果作为视频流516输出。输出视频流516也能够被称为解码视频流,并且将在本文中以可互换方式使用这些术语。解码器500的其它变型能够被用于对压缩比特流420进行解码。在一些实施方式中,解码器500能够在没有去块滤波级514的情况下产生输出视频流516。
现在针对图6至图10来描述用于对二值化视频数据进行编译的技术。为了便于说明,关于图6至图10所述的技术被各自描绘并被描述为一系列步骤或操作。然而,根据本公开的步骤或操作能够各种次序和/或同时发生。附加地,可以使用本文未呈现和描述的其它步骤或操作。此外,实现根据所公开的主题的技术可能不需要所有图示的步骤或操作。
图6是用于将二值化视频数据编译成比特流的技术600的示例的流程图。技术600例如能够作为可由诸如发送站102或接收站106这样的计算设备执行的软件程序被实现。例如,软件程序能够包括机器可读指令,所述机器可读指令可被存储在诸如存储器204这样的存储器或辅助存储装置214中,并且当由处理器(诸如处理器202)执行时,所述机器可读指令可以使计算设备执行技术600。能够使用专用硬件或固件来实现技术600。例如,被配置成执行技术600以对视频数据进行编码或解码的硬件组件。如上面所说明的,一些计算设备可以具有多个存储器或处理器,并且能够使用多个处理器、存储器或以上两者来分发技术600中描述的操作。
在602处,接收二进制位串。二进制位串表示待编译的二值化视频数据。二进制位串包括各自存储符号的二进制位。二进制位串的每个符号对应于二值化视频数据的一部分。二值化视频数据可以表示变换块的量化的变换系数。那些量化变换系数被二值化,以将量化变换系数值转换成二进制值符号。例如,可以将语法元素二值化成一个或多个二进制值符号,所述一个或多个二进制值符号各自被存储在二进制位串的单独的二进制位中。可以将二值化视频数据表示为码字,例如,一元码字、截断一元码字、指数哥伦布码字等。
在604处,做出关于存储在二进制位串的每个二进制位中的符号是否是能够用于对二值化视频数据进行编译的概率模型的最大概率符号的确定。概率模型可以例如是或者以其它方式指代上下文或上下文模型,诸如H.264视频编译标准中所描述的。概率模型反映存储在二进制位串的二进制位中的二进制值是‘1’还是‘0’的概率。诸如基于最近编译的二值化视频数据或在空间上与待编译的当前二值化视频数据邻近(诸如在视频块内)的其它二值化视频数据的概率,从多个可用的概率模型中选择概率模型。概率模型可以是被选择用于对二进制位串的一个二进制位或多个二进制位进行编译的概率模型。
二进制位串的每个二进制位与概率模型相关联。概率模型具有当根据该概率模型对存储在二进制位中的符号进行编码或者解码时被更新的状态或概率。概率模型具有最大概率符号和最小概率符号。最大概率符号是最可能使用概率模型来编译的二进制值,然而最小概率符号是最不可能使用概率模型来编译的二进制值。概率模型因此反映存储在二进制位串的二进制位中的符号是最大概率符号的统计概率。
确定存储在二进制位串的每个二进制位中的符号是否是最大概率符号能够包括扫描存储在每个二进制位串中的符号并且将它们与最大概率符号相比较。这例如可以是使用概率模型的预处理步骤。确定存储在二进制位串的每个二进制位中的符号是否是最大概率符号因此还能够包括选择概率模型并识别其最大概率符号。例如,可以使用不同的概率模型来对一组运动矢量差与一组量化变换系数的关系进行编码。
在606处,响应于确定存储在二进制位串的每个二进制位中的符号是最大概率符号,基于二进制位串的大小来确定要用来对二值化视频数据进行编译的比特数。基于二进制位串的大小来确定要用来对二值化视频数据进行编译的比特数包括基于二进制位串的大小来更新概率模型。
如上所述,概率模型具有当根据该概率模型对存储在二进制位中的符号进行编码或者解码时被更新的概率。更新概率模型使对二进制值符号进行编译所需要的比特数改变。例如,在处理当前二进制位之前,符号是概率模型的最大概率符号的概率可以反映需要0.1538个比特来对最大概率符号进行编译。然而,响应于确定存储在当前二进制位中的符号是最大概率符号,能够更新概率模型以增加根据该概率模型编译的符号是最大概率符号的概率。结果,例如,可以更新符号是最大概率符号的概率,以反映现在需要0.1429个比特来对最大概率符号进行编译。
因为已确定了二进制位串的每个二进制位存储最大概率符号,所以能够一次更新概率模型以确定对最大概率符号进行编译所需要的比特数,而不是基于每个单独的二进制位递增地更新概率。也就是说,如果每个二进制位被单独地处理,则将以其它方式进行的概率模型的更新能够被组合,以基于二进制位大小(例如,基于存储在二进制位串的二进制位中的最大概率符号的数目)来计算对最大概率符号进行编译所需要的比特数。在下面关于图7描述用于基于二进制位串的大小来确定要用来对二值化视频数据进行编译的比特数的实现方式和示例。
替代地,在608处,响应于确定存储在二进制位串的每个二进制位中的符号不是最大概率符号,基于存储在二进制位串的二进制位中的最小概率符号的数目来确定要用来对二值化视频数据进行编译的比特数。基于二进制位串的存储不是最大概率符号的符号的二进制位的数目来确定要用来对二值化视频数据进行编译的比特数包括基于二进制位串的存储不是最大概率符号的符号的二进制位的数目来更新概率模型。
因为已确定了二进制位串的至少一个二进制位不存储最大概率符号,所以二进制位串的不存储最大概率符号的二进制位的数目被确定。因此基于不存储最大概率符号的二进制位的数目来更新概率模型,以确定最大概率符号的新概率。例如,在处理当前二进制位之前,符号是概率模型的最大概率符号的概率可以反映需要0.4675个比特来对最大概率符号进行编译并且需要2个比特来对最小概率符号进行编译。然而,响应于确定存储在当前二进制位中的符号不是最大概率符号,能够更新概率模型以增加根据概率模型编译的符号不是最大概率符号的概率。结果,例如,可以更新符号是最大概率符号的概率,以反映现在需要0.48个比特来对最大概率符号进行编译并且需要1.75个比特来对最小概率符号进行编译。
以这种方式更新概率模型还可以包括确定概率模型的最小概率符号的概率大于最大概率符号的概率。在这样的情况下,最小概率符号能够变成概率模型的新的最大概率符号,并且最大概率符号能够变成概率模型的新的最小概率符号。在下面关于图9描述用于基于存储在二进制位串的二进制位中的最小概率符号的数目来确定要用来对二值化视频数据进行编译的比特数的实施方式和示例。
在610处,使用在606处确定的比特数或在608处确定的比特数来对二值化视频数据进行编译。例如,在二进制位串的每个二进制位存储最大概率符号的编码期间,二值化视频数据被编码到比特流的具有与基于二进制位串的大小而确定的比特数相等的大小的空间。在另一示例中,在二进制位串的每个二进制位不存储最大概率符号的编码期间,二值化视频数据被编码到比特流的具有与基于不存储最大概率符号的二进制位的数目而确定的比特数相等的大小的空间。
可以在至少一些情况下在单个时钟周期中确定要用来对二值化数据进行编译的比特数。例如,技术600能够包括在访问查找表之前基于存储在二进制位串的二进制位中的最大概率符号和/或最小概率符号的数目来确定概率模型将处于的状态。技术600然后可以包括访问访问一次查找表,以基于经更新的状态信息来确定要用来对二进制位串进行编译的比特数。也就是说,因为根据同一概率模型来对二进制位串的每个二进制位进行编译并且能够通过在编译之前更新概率模型来确定要用来对二进制位串进行编译的比特数,所以可以需要少至一个时钟周期来对二进制位串进行编译。这可以特别是二进制位串的每个二进制位存储相同的二进制值符号的情况。
在一些实施方式中,在二进制位串的每个二进制位存储最大概率符号或最小概率符号的情况下,除了在二进制位串的末尾处的最后二进制位存储相反的符号,能够与二进制位串的二进制位的其余部分不同地处理该最后二进制位。例如,二进制位串的原始二进制位(例如,各自存储最大概率符号或最小概率符号的二进制位)是二进制位串的第一部分并且可以被称为前缀,而在末尾处的存储相反的符号的二进制位是二进制位串的第二部分并且可以被称为后缀。
在这样的实施方式中,技术600能够包括在604处的确定之前识别前缀和后缀的操作。604处的确定然后能够包括确定前缀的每个二进制位是否存储相同的符号(例如,最大概率符号或最小概率符号)以及后缀是否存储相反的符号。如果是这样的话,则可以分别处理前缀和后缀(例如,适用时,使用606或608处的操作)。在一些实施方式中,处理前缀可以使最大概率符号和最小概率符号切换,例如,如在下面关于图10所描述的。在一些实施方式中,处理后缀可以使最大概率符号和最小概率符号切换。在一些实施方式中,处理前缀可以引起第一这样的较换,并且处理后缀可以引起第二这样的切换。
在一些实施方式中,二值化视频数据可以被用于指示用于编码到比特流的一个或多个视频块的显著性图。例如,能够为待编码到比特流的每个变换块指定显著性图。显著性图能够诸如根据用于编码的扫描次序来指示对应变换块内的非零系数。变换块中的每个系数通过存储二进制值符号的二进制位来表示。例如,当二进制位存储0时,通过该二进制位表示的系数是零。然而,当二进制位存储1时,通过该二进制位表示的系数是非零。如果系数是非零,则另一标志被用于指示该二进制位是否表示变换块的最后非零系数。
可以为显著性图定义最多N(例如15)个上下文。基于二进制位表示的系数的位置(例如,以扫描次序)定义每个二进制位的上下文。每个上下文因此相反地映射到一个或多个系数。能够通过此逆映射来确定将被用于重要性映射编译的上下文以及每个上下文将被使用的次数。
能够将变换块表示为(Run、Level、Last)值的元组,其中Run反映在下一个非零系数之前变换块中出现的零系数的数目,Level反映紧接在Run之后的非零系数,并且Last反映Level是否是变换块中的最后的非零系数。针对给定(Run、Level)对来计算待使用以对每个系数标志进行编译的比特数将使每个这样的标志被相继地处理,这是因为在这些对的各项之间可能存在依赖性(例如,具有跨越用于变换块的多个系数索引共享上下文的性质)。
替代地,能够基于初始扫描位置和第N个系数的扫描位置以及在该第N个系数之前的Run来计算在给定Run期间访问每个上下文的次数。能够定义一组二进制位串,其中每个二进制位串包括存储值0的二进制位的前缀和存储值1的非零系数的二进制位的后缀。一个这样的二进制位串可以例如是通过技术600处理的二进制位串。例如,能够执行技术600以确定对变换块的显著性图的子集进行编译所需要的比特数。能够用于对用于显著性图的变换块系数进行编译的N个上下文中的每一个上下文能够被存储在硬件寄存器中,以提高处理性能。因此可以在N个周期中处理显著性图,其中N表示变换块中的非零系数的数目。
在一些实施方式中,经编码的二值化视频数据可以用于指示用于编码到比特流的一个或多个视频块的系数等级。例如,在H.264中,为前缀和后缀指定不同的非零系数的系数等级。对于前缀,使用截断一元码,其表示从1到15的系数等级。对于后缀,使用指数哥伦布码,其表示大于或等于16的系数等级。后缀通常在不使用概率建模作为旁路二进制位的情况下被编码,并且因此,使用一个比特来编译。
相反地,每个前缀使用两个上下文。第一上下文被用于二进制位串的第一二进制位,而第二上下文被用于二进制位串的每个其它二进制位。因为这些上下文彼此独立,所以能够并行处理第一二进制位和这些二进制位的其余部分。例如,能够将前缀的第一二进制位分成二进制位串的第一部分,并且能够将前缀的剩余二进制位分成二进制位串的第二部分。能够使用技术600来并行处理第一部分和第二部分,使得能够在一个时钟周期中处理整个二进制位串。
图7是技术700的示例的流程图,该技术700用于针对每个二进制位存储概率模型的最大概率符号的二进制位串来确定要用来对二值化视频数据进行编译的比特数。可以将技术700作为用于对二值化视频数据进行编译的技术的一部分来执行。例如,技术700能够表示在图6中所示的技术600的606处所执行的操作。
在702处,确定二进制位串的每个二进制位存储要用来对由二进制位串表示的二值化视频数据进行编译的概率模型的最大概率符号。该确定例如可以反映在图6中所示的技术600的604处做出的确定。这样,在一些实施方式中,能够从技术700中省略702处的确定。
在704处,生成查找表。该查找表是基于二进制位串的大小和要用来对由二进制位串表示的二值化视频数据进行编译的概率模型的最大概率符号的初始概率而生成的。查找表包括与二进制位串的二进制位中的多个二进制位相对应的元素。这些元素与存储在二进制位串的二进制位中的连续二进制位中的符号是最大概率符号的概率相关联。例如,查找表的第一元素可以与二进制位串的第一二进制位相对应并且与最大概率符号的初始概率(例如,反映存储在二进制位串的第一二进制位中的符号是最大概率符号的概率)相关联。在另一示例中,查找表的最后元素可以与二进制位串的最后二进制位相对应,并且与最大概率符号的最终概率(例如,反映存储在二进制位串的最后二进制位中的符号是最大概率符号的概率)相关联。
可以将查找表存储在对执行技术600的硬件组件可用的静态存储器中。该静态存储器可以例如是本地静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。例如,查找表可以被硬件组件的处理器每时钟周期访问一次或者被硬件组件以其它方式使用。可以按照Q(4)表示法存储与查找表的元素相关联的比特数,例如,以处理比特数表示分数值的情形。可以使用七个比特来将每个概率模型存储在存储器中,其中六个比特是为概率模型的不同状态编号而保留的,并且第七比特是为该状态下的最大概率符号而保留的。
查找表被用于更新最大概率符号的概率,诸如以确定要用来对通过具有各自存储最大概率符号的二进制位的二进制位串所表示的二值化视频数据进行编译的比特数。更新最大概率符号的概率能够包括根据存储在二进制位串的二进制位中的连续二进制位中的符号是最大概率符号的概率来更新最大概率符号的初始概率。
在706处,使用查找表来确定二进制位串的最后二进制位存储最大概率符号的概率。对最大概率符号进行编译能够将概率模型的状态增加一,该状态可以反映0到62(含)的值。对于具有各自存储最大概率符号的N个二进制位的二进制位串来说,在对N个二进制位进行编译之后的最终状态是62及概率模型的初始状态加上N中的较小者。这样,能够识别用于二进制位串的第N个二进制位的状态。用于第N个二进制位的状态反映二进制位串的第N个二进制位是最大概率符号的概率(例如,最大概率符号的最终概率)。在下面关于图8描述用于使用查找表的元素来更新概率模型的最大概率符号的概率的实施方式和示例。
在708处,计算要用来对二值化视频数据进行编译的比特数。比特数是基于最大概率符号的最终概率来计算出的。例如,计算要用来对二值化视频数据进行编译的比特数能够包括将二进制位串的大小和根据最大概率符号的最终概率来对最大概率符号进行编码所需要的比特数相乘。也就是说,要用来对通过每个二进制位存储最大概率符号的二进制位串所表示的二值化视频数据进行编译的比特数等于二进制位串中的二进制位的数目与根据最大概率符号的最终概率(例如,根据由基于二进制位串的大小来更新概率模型产生的概率模型的最终状态)来对最大概率符号进行编译所需要的比特数的乘积。
图8是技术800的示例的流程图,技术800用于使用查找表的元素来更新概率模型的最大概率符号的概率。可以将技术800作为用于对二值化视频数据进行编译的技术的一部分来执行。例如,技术800能够表示在图7中所示的技术700的704处执行的操作。
在802处,识别存储在二进制位串的下一个二进制位中的符号。例如,如果下一个二进制位是二进制位串的第一二进制位,则存储在第一二进制位中的符号被识别。如果二进制位最后处理的二进制位是二进制位串的第一二进制位,则存储在二进制位串的第二二进制位中的符号被识别。识别存储在二进制位串的二进制位中的符号包括确定存储在该二进制位中的符号是要用来对由二进制位串表示的二值化视频数据进行编译的概率模型的最大概率符号还是该概率模型的最小概率符号。
在804处,为存储所识别的符号的二进制位定义查找表元素。定义查找表的元素包括生成查找表的新条目,以包括以下各项中的一个或多个或其组合:与存储所识别的符号的二进制位是最大概率符号的概率相关联的状态的值、该二进制位在二进制位串内的索引、要用来针对元素基于与状态相关联的概率来对最大概率符号进行编译的比特数等。例如,可以将查找表的元素定义为:
其中N是存储所识别的符号的二进制位的索引(例如,在从上到下并包括存储所识别的符号的二进制位的二进制位串中存储最大概率符号的二进制位的数目),S是被定义元素的状态,BitsMPS是在状态S下对最大概率符号进行编译所需要的比特数,并且BitsPerMPSString[N][S]是对从上到下并包括存储所识别的符号的二进制位的二进制位串进行编译所需要的总比特数。
在806处,基于新定义的元素的概率来更新要用来对由二进制位串表示的二值化视频数据进行编译的概率模型。更新概率模型能够包括基于将一个新元素添加到查找表来将与最大概率符号的概率相关联的状态增加一。这样,能够根据存储在二进制位串的连续二进制位中的符号是最大概率符号的概率来更新概率模型的最大概率符号的概率。
图9是技术900的示例的流程图,该技术900用于针对一些二进制位不存储概率模型的最大概率符号的二进制位串来确定要用来对二值化视频数据进行编译的比特数。可以将技术900作为用于对二值化视频数据进行编译的技术的一部分来执行。例如,技术900能够表示在图6中所示的技术600的在608处执行的操作。
在902处,更新概率模型的最大概率符号和最小概率符号的概率。根据存储在二进制位串的二进制位中的多个二进制位中的符号是最小概率符号的概率更新最小概率符号的概率。通过根据存储在当前二进制位中的符号是否是最小概率符号来减小概率模型的状态更新最小概率符号的概率。例如,如果当前二进制位存储最小概率符号,则概率模型的状态被减小一。
根据存储在二进制位串的二进制位中的多个二进制位中的符号是最大概率符号的概率更新最大概率符号的概率。通过根据存储在当前二进制位中的符号是否是最大概率符号来增加概率模型的状态更新最大概率符号的概率。例如,如果当前二进制位存储最大概率符号,则概率模型的状态被增加一。
能够通过访问与概率模型相关联的查找表来执行最大概率符号和最小概率符号的概率(例如,概率模型的状态的增加或减小)。例如,可以将查找表存储在本地SRAM中或能够由执行更新的组件访问的其它存储器中。
在904处,在最大概率符号和最小概率符号的概率的更新期间,确定关于最大概率符号和最小概率符号是否已切换。例如,能够在对最小概率符号和最大概率符号的概率的每次更新之后做出此确定。替代地,能够在对其进行N次更新之后的结束时做出此确定。
当存储在二进制位串的二进制位中的符号是最小概率符号的概率大于这样的符号是最大概率符号的概率时,最大概率符号和最小概率符号切换。这样,确定最大概率符号和最小概率符号已切换包括比较最大概率符号和最小概率符号的概率(例如,在对其进行更新之后),以确定最小概率符号的概率是否大于最大概率符号的概率。
作为切换的结果,最小概率符号变成概率模型的最大概率符号,并且最大概率符号变成概率模型的最小概率符号。在切换之后,或者在确定不切换最大概率符号和最小概率符号之后,如果在二进制位串中存在另外的二进制位待处理(例如,以使用以更新最大概率符号和/或最小概率符号的概率),则技术900返回到902。在下面关于图10描述用于确定基于存储在许多二进制位的可识别二进制位中的符号来更新最小概率符号的概率使最小概率符号的概率大于最大概率符号的概率的实施方式和示例。
在906处,计算要用来对二值化视频数据进行编译的比特数。比特数是基于经更新的最小概率符号的概率和经更新的最大概率符号的概率计算出的。例如,在基于全二进制位串来更新最小概率符号和最大概率符号的概率之后,概率模型将处于最终状态。最终状态将与对最大概率符号和最小概率符号中的每一个概率符号进行编译所需要的比特数相关联。因此能够通过将第一值和第二值相加来计算比特数,其中第一值是对最大概率符号进行编译所需要的比特数与存储在二进制位串中的最大概率符号的数目的乘积,并且其中第二值是对最小概率符号进行编译所需要的比特数与二进制位串中的最小概率符号的数目的乘积。
在一些实施方式中,能够省略以识别下一个符号开始并以确定最小概率符号的概率是否大于最大概率符号的概率结束的操作的循环。代替这样省略的操作,技术1000可以替代地包括扫描存储在二进制位串的二进制位中的一些或全部符号以确定是否存在将使最大概率符号和最小概率符号切换的许多最小概率符号。
例如,在扫描最小概率符号之后,能够访问查找表以确定基于该最小概率符号来减小概率模型的状态是否使最大概率符号和最小概率符号切换。这可以发生在被扫描的每个最小概率符号中,直到确定会发生切换为止。替代地,能够将查询表访问次数与概率模型的当前状态相比较,以基于存储在二进制位串中的最小概率符号的数目来确定是否会发生切换。
在这样的实施方式中,计算要用来对二值化视频数据进行编译的比特数能够包括使二进制位串分成两个部分,其中第一部分与在最大概率符号和最小概率符号切换之前处理的二进制位相对应,并且第二部分与此后处理的二进制位相对应。例如,第一部分可以在二进制位串的第一二进制位处开始,并且在紧接在二进制位串的存储当被处理时引起了切换的符号的二进制位之前的二进制位处结束,或者替代地,在存储当被处理时导致切换的符号的二进制位处结束。在另一示例中,第二部分可以在存储当被处理时导致切换的符号的二进制位处开始,或者替代地,在紧接此之后的二进制位处开始,并且在二进制位串的最后二进制位处结束。
能够针对二进制位串的第一部分来计算第一比特值。能够针对二进制位串的第二部分来计算第二比特值。例如,能够通过确定诸如上述每个的第一值和第二值来计算第一比特值和/或第二比特值。然后能够将第一比特值和第二比特值相加在一起,以计算要用来对二值化视频数据进行编译的比特数。
图10是技术1000的示例的流程图,该技术1000用于确定概率模型的最大概率符号和最小概率符号的概率变化。可以将技术1000作为用于对二值化视频数据进行编译的技术的一部分来执行。例如,技术1000能够表示在图9中所示的技术900的902和904处执行的操作。
在1002处,识别存储在二进制位串的下一个二进制位中的符号。例如,如果下一个二进制位是二进制位串的第一二进制位,则存储在第一二进制位中的符号被识别。如果二进制位最后处理的二进制位是二进制位串的第一二进制位,则存储在二进制位串的第二二进制位中的符号被识别。在1004处,确定所识别的符号是要用来对通过二进制位串所表示的二值化视频数据进行编译的概率模型的最大概率符号还是该概率模型的最小概率符号。
在1006处,响应于确定所识别的符号是最大概率符号,增加最大概率符号的概率并且减小最小概率符号的概率。例如,增加最大概率符号的概率并减小最小概率符号的概率能够包括诸如通过访问与概率模型相关联的查找表来增加概率模型的状态。
在1008处,响应于确定所识别的符号不是最大概率符号,减小最大概率符号的概率并且增加最小概率符号的概率。例如,减小最大概率符号的概率并增加最小概率符号的概率能够包括诸如通过访问与概率模型相关联的查找表来减小概率模型的状态。在1010处,确定在1006或1008处的概率变化是否使最小概率符号的概率大于最大概率符号的概率。
响应于确定概率变化未使最小概率符号的概率大于最大概率符号的概率,技术1000返回到1002,以识别存储在二进制位串的下一个二进制位中的符号。例如,如果概率模型的当前状态是1,使得最大概率符号的概率仅稍微大于最小概率符号的概率并且在1002处识别的符号是最小概率符号,则概率模型的状态被减小到0,使得最大概率符号和最小概率符号的概率变得相等,但是最大概率符号和最小概率符号不切换。
在1012处,响应于确定概率变化确实使最小概率符号的概率大于最大概率符号的概率,最大概率符号和最小概率符号被切换。例如,如果概率模型的当前状态是0并且在1002处识别的符号是最小概率符号,则最大概率符号和最小概率符号切换并且概率模型的状态被增加到1。
在一些实施方式中,在最大概率符号和最小概率符号切换之后,生成新查找表。例如,能够如图8中所示的技术800中所描述的那样或类似于如图8中所示的技术800中所描述的那样生成新查找表。例如,能够基于新的最大概率符号来定义元素以引用:针对该元素的概率模型的状态、在该状态下对新的最大概率符号进行编译所需要的比特数、在该状态下对新的最小概率符号进行编译所需要的比特数等,或其组合。
图11是熵编码组件1100的框图。熵编码组件1100可以被用于例如使用图6中所示的技术600的全部或一部分来将输入视频数据1102(例如,二值化视频数据)编码到压缩比特流1104。熵编码组件1100可以例如表示用于执行图4中所示的熵编码级408的一个或多个操作的组件。输入视频数据1102可以例如表示由图4中所示的量化级406所输出的变换系数。压缩比特流1104可以例如表示图4中所示的压缩比特流420。
熵编码组件1100接收输入视频数据1102并使用二值化模块1106来对它进行二值化处理。对输入视频数据1102进行二值化处理包括将输入视频数据1102变换到包括二进制值符号的二值化视频数据中。例如,能够产生一系列二进制值的符号,以表示量化变换系数、运动矢量方向等。
二值化视频数据被输出到二进制位串处理模块1108。二值化视频数据的每个符号被存储在二进制位串的单独的二进制位中。二进制位串处理模块1108能够处理例如存储在二进制位串的每个二进制位中的符号,以确定那些符号的值。二进制位串处理模块1108还能够确定、选择或者以其它方式识别要用来对由二进制位串表示的二值化视频数据进行编码的概率模型。例如,可以存在多个能够用于基于该数据的一个或多个上下文来对数据进行编码的概率模型。
二进制位串处理模块1108的输出由概率模型模块1110接收。概率模型模块1110基于存储在二进制位串的二进制位中的符号的值来更新由二进制位串处理模块1108所识别的概率模型。基于该更新,概率模型模块1110能够确定要用来对二值化视频数据进行编码的比特数。二值化视频数据然后被编码到压缩比特流1104等于由概率模型模块1110所确定的比特数的空间。
熵编码组件1100的实施方式可以与关于图11所示出和描述的实施方式不同。在一些实施方式中,可以确定、选择或者以其它方式识别要用来对二值化视频数据进行编码的概率模型。在一些实施方式中,概率模型模块1110可以诸如向算术编译模块(未示出)输出指示更新之后的概率模型的信息(例如,其最大概率符号和最小概率符号的概率、其最终状态、在最终状态下与最大概率符号和最小概率符号中的每一个概率符号相关联的比特数等)。算术编译模块能够处理从概率模型模块1110接收到的信息,以确定要用来对二值化视频数据进行编码的比特数。
图12是熵解码组件1200的框图。熵编码组件1100可以被用于例如使用图6中所示的技术600的全部或一部分来将来自压缩比特流1202的二值化视频数据解码为输出视频数据1204。熵解码组件1200可以例如表示用于执行图5中所示的熵解码级502的一个或多个操作的组件。压缩比特流1202可以例如表示图5中所示的压缩比特流420。输出视频数据1204可以例如表示输出到图5中所示的去量化级504或内/间预测级508中的一个或多个的数据。
熵解码组件1200接收压缩比特流1202并且使用符号解码模块1206来对编码到其中的多个符号进行解码。符号解码模块1206例如能够对来自比特流1202的值得编码符号的整个二进制位串进行解码。对整个二进制位串的符号进行解码能够包括确定二进制位串中的最大概率符号的数目和二进制位串中的最小概率符号的数目。对符号进行解码还可以包括确定、选择或者以其它方式识别要用来将符号解码到输出视频数据1204的概率模型。
符号解码模块1206的输出由概率模型模块1208接收。概率模型模块1208基于存储在二进制位串的二进制位中的符号的值来更新由符号解码模块1206识别的概率模型。基于该更新,概率模型模块1208能够确定要用来对二值化视频数据进行解码的比特数。然后使用由概率模型模块1208确定的比特数来将二值化视频数据解码到输出视频数据1204。
熵解码组件1200的实施方式可以与关于图12示出和描述的实施方式不同。在一些实施方式中,压缩比特流1202可以不包括指示要用来对二值化视频数据进行解码的概率模型的数据。
图13是表1300的图示,该表1300反映基于概率模型的给定状态来对概率模型的最大概率符号或最小概率符号进行编译所需要的比特数。表1300包括63个条目。每个条目包括概率模型的状态的值、在该状态下对最大概率符号进行编译所需要的比特数以及在该状态下对最小概率符号进行编译所需要的比特数。
表1300例如可以表示存储在连同确定要用来将二值化视频数据编码到比特流或者从比特流对二值化视频数据进行解码的比特数一起生成或者以其它方式使用的查找表中的数据。替代地,在另一示例中,这样的查找表可以仅包括表1300的一部分,诸如基于概率模型的初始状态和概率模型被更新到的状态而定义的条目。
图14是表1400的图示,该表1400针对概率模型的最大概率符号和最小概率符号反映概率变化。在表1400中,S表示概率模型的初始状态,并且C表示如果被从初始状态S开始连续地处理则将使最大概率符号和最小概率符号切换的最小概率符号的数目。
上面描述的编码和解码的方面图示编码技术和解码技术的一些示例。然而,应当理解的是,编码和解码(如在权利要求书中使用那些术语)能意指对数据的压缩、解压缩、变换或任何其它处理或改变。
单词“示例”在本文中被用于意指用作示例、实例或图示。在本文中被描述为“示例”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。相反,单词“示例”的使用旨在以具体方式呈现构思。如本申请中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定或者通过上下文另外清楚地指示,否则陈述“X包括A或B”旨在意指其自然包含性排列中的任一种。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则在上述实例中的任一个下满足“X包括A或B”。此外,除非另外指定或者通过上下文清楚地指示为针对单数形式,否则如本申请和所附权利要求书中所使用的冠词“一”和“一个”通常应该被解释成意指“一个或多个”。此外,术语“实施方式”或术语“一个实施方式”在整个本公开中的使用不旨在意指同一实施例或实施方式,除非被如此描述。
发送站102和/或接收站106的实施方式(以及存储在其上并且/或者由此(包括由编码器400和解码器500)执行的算法、方法、指令等)能够用硬件、软件或其任何组合加以实现。硬件能够包括例如计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微码、微控制器、服务器、微处理器、数字信号处理器或任何其它适合的电路。在权利要求书中,术语“处理器”应该被理解为单独地或相结合地包含上述硬件中的任一个硬件。术语“信号”和“数据”以可互换的方式使用。另外,发送站102和接收站106的各部分不一定必须被以相同的方式实现。
另外,在一个方面中,例如,能够使用具有计算机程序的通用计算机或通用处理器来实现发送站102或接收站106,当执行所述计算机程序时,实行本文中描述的各个方法、算法和/或指令中的任一种。此外或替代地,例如,能够利用专用计算机/处理器,所述专用计算机/处理器能够包含用于实行本文中描述的方法、算法或指令中的任一种的其它硬件。
例如能够在视频会议***中的计算机上实现发送站102和接收站106。替代地,能够在服务器上实现发送站102,并且能够在与服务器分开的设备(诸如手持通信设备)上实现接收站106。在此实例中,发送站102能够使用编码器400将内容编码成经编码的视频信号并将该经编码的视频信号发送到通信设备。进而,通信设备然后能够使用解码器500来对经编码的视频信号进行解码。替代地,通信设备能够对本地存储在通信设备上的内容(例如,不由发送站102发送的内容)进行解码。其它适合的发送和接收实施方式的方案是可用的。例如,接收站106能够是通常固定的个人计算机,而不是便携式通信设备,并且/或者包括编码器400的设备也可以包括解码器500。
另外,本公开的实施现方式的全部或一部分能够采取例如能够从计算机可用介质或计算机可读介质访问的计算机程序产品的形式。计算机可用介质或计算机可读介质能够是例如能够有形地包含、存储、通讯或者传输程序以用于由任何处理器使用或者连同任何处理器一起使用的任何设备。介质能够是例如电子、磁、光学、电磁或半导体设备。其它适合的介质也是可用的。
在以下示例中概括另外的实施方式。
示例1:一种用于基于概率模型的概率的变化来对二值化视频数据进行编码的方法,所述方法包括:接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;将存储在所述二进制位中的一个二进制位中的所述符号识别为当前符号;确定所述当前符号是否是所述概率模型的最大概率符号;响应于确定所述当前符号不是所述最大概率符号,更新所述概率中的至少一个,所述概率包括与所述概率模型的最大概率符号相关联的第一概率和与所述概率模型的最小概率符号相关联的第二概率;在更新所述概率之后,确定所述第二概率是否大于所述第一概率;响应于确定所述第二概率大于所述第一概率,切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是所述概率模型的新的最大概率符号并且反映所述最大概率符号是所述概率模型的新的最小概率符号;使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的第一比特数;以及使用所述第一比特数来将所述二值化视频数据编码到比特流。
示例2:根据示例1所述的方法,还包括:响应于确定所述当前符号是所述最大概率符号,通过增加所述第一概率并减小所述第二概率来更新所述概率;在通过增加所述第一概率并减小所述第二概率来更新所述概率之后,基于所述第一概率或所述第二概率中的至少一个概率来确定要用来对所述二值化视频数据进行编码的第二比特数;以及使用所述第二比特数来将所述二值化视频数据编码到所述比特流。
示例3:根据示例1所述的方法,还包括:响应于在更新所述概率中的至少一个概率之后确定所述第二概率不大于所述第一概率,基于所述第一概率或所述第二概率中的至少一个概率来确定要用来对所述二值化视频数据进行编码的第三比特数;以及使用所述第三比特数来将所述二值化视频数据编码到所述比特流。
示例4:根据示例1至3中的任一项所述的方法,其中,使用所述新的最大概率符号来确定待使用以对所述二值化视频数据进行编码的所述第一比特数包括:基于所述概率中的第三概率来确定所述第一比特数,所述第三概率与所述概率模型的新的最大概率符号相关联。
示例5:根据示例4所述的方法,其中,所述第三概率是所述第二概率。
示例6:根据示例1所述的方法,其中,使用所述新的最大概率符号来确定待使用以对所述二值化视频数据进行编码的所述第一比特数包括:针对在所述二进制位串的第一二进制位处开始并在紧接在存储所述当前符号的所述二进制位中的一个二进制位之前的二进制位处结束的所述二进制位串的第一部分来计算第一比特值,所述第一比特值基于在更新所述概率之后的所述第一概率;针对在存储所述当前符号的所述二进制位中的一个二进制位开始并在所述二进制位串的最后二进制位处结束的所述二进制位串的第二部分来计算第二比特值,所述第二比特值基于在更新所述概率之后的所述第二概率;以及将所述第一比特数计算为所述第一比特值和所述第二比特值的和。
示例7:根据示例1所述的方法,其中,响应于确定所述当前符号不是所述概率模型的最大概率符号来更新所述概率中的至少一个概率包括:减小所述第一概率;以及增加所述第二概率。
示例8:根据示例1所述的方法,其中,所述第一概率反映存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最大概率符号的概率,并且所述第二概率反映存储在所述二进制位串的二进制位中的多个二进制位中的所述符号是所述最小概率符号的概率。
示例9:根据示例1至8中的任一项所述的方法,其中,所述概率中的至少一个概率在单个时钟周期中被更新。
示例10:一种用于基于概率模型的概率变化来对二值化视频数据进行编码的装置,所述装置包括:处理器,所述处理器被配置成执行存储在非暂时性存储介质中的指令以:接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;将存储在所述二进制位中的一个二进制位中的所述符号识别为当前符号;确定所述当前符号是否是所述概率模型的最大概率符号;响应于确定所述当前符号不是所述最大概率符号,通过减小与所述概率模型的最大概率符号相关联的第一概率并增加与所述概率模型的最小概率符号相关联的第二概率来更新所述概率;在更新所述概率之后,确定所述第二概率是否大于所述第一概率;响应于所述第二概率大于所述第一概率的确定:切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是所述概率模型的新的最大概率符号并且反映所述最大概率符号是所述概率模型的新的最小概率符号;使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的第一比特数;并且使用所述第一比特数来将所述二值化视频数据编码到比特流;以及响应于所述第二概率不大于所述第一概率的确定:基于所述第一概率或所述第二概率中的至少一个概率来确定要用来对所述二值化视频数据进行编码的第二比特数;并且使用所述第二比特数来将所述二值化视频数据编码到所述比特流。
示例11:根据示例10所述的装置,其中,所述指令包括进行如下操作的指令:响应于所述当前符号是所述最大概率符号的确定,通过增加所述第一概率并减小所述第二概率来更新所述概率。
示例12:根据示例11所述的装置,其中,所述指令包括进行如下操作的指令:在通过增加所述第一概率并减小所述第二概率来更新所述概率之后,基于所述第一概率或所述第二概率中的至少一个概率来确定要用来对所述二值化视频数据进行编码的第三比特数;并且使用所述第三比特数来将所述二值化视频数据编码到所述比特流。
示例13:根据示例10至12中的任一项所述的装置,其中,用于使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的所述第一比特数的指令包括进行如下操作的指令:基于所述概率中的第三概率来确定所述第一比特数,所述第三概率与所述概率模型的新的最大概率符号相关联。
示例14:根据示例10或11所述的装置,其中,用于使用所述新的最大概率符号来确定要用来对所述二值化视频数据进行编码的所述第一比特数的指令包括进行以下操作的指令:针对在所述二进制位串的第一二进制位处开始并在紧接在存储所述当前符号的所述二进制位中的一个二进制位之前的二进制位处结束的所述二进制位串的第一部分来计算第一比特值,所述第一比特值基于在更新所述概率之后的所述第一概率;针对在存储所述当前符号的所述二进制位中的一个二进制位处开始并在所述二进制位串的最后二进制位处结束的所述二进制位串的第二部分来计算第二比特值,所述第二比特值基于在更新所述概率之后的所述第二概率;并且将所述第一比特数计算为所述第一比特值和所述第二比特值的和。
示例15:根据示例10至14中的任一项所述的装置,其中,所述第一概率反映存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最大概率符号的概率,并且所述第二概率反映存储在所述二进制位串的二进制位中的多个二进制位中的所述符号是所述最小概率符号的概率。
示例16:一种用于基于概率模型的概率变化来对二值化视频数据进行编码的方法,所述方法包括:接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;基于存储在所述二进制位中的一个二进制位中的当前符号不是所述概率模型的最大概率符号的确定来更新能够用于对所述二值化视频数据进行编码的概率模型;确定经更新的概率模型是否反映:与所述最大概率符号相比,存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述概率模型的最小概率符号的概率较大;在确定经更新的概率模型反映所述较大概率之后,基于与所述最小概率符号相关联的概率来确定要用来对所述二值化视频数据进行编码的第一比特数;以及使用所述第一比特数来将所述二值化视频数据编码到比特流。
示例17:根据示例16所述的方法,还包括:响应于确定经更新的概率模型反映所述较大概率并且在确定所述第一比特数之前,切换所述最大概率符号和所述最小概率符号以反映所述最小概率符号是新的最大概率符号并且所述最大概率符号是新的最小概率符号。
示例18:根据示例17所述的方法,其中,基于与所述最小概率符号相关联的所述概率来确定要用来对所述二值化视频数据进行编码的所述第一比特数包括:基于与所述新的最大概率符号相关联的概率来确定所述第一比特数。
示例19:根据示例18所述的方法,还包括:在切换所述最大概率符号和所述最小概率符号之后并在确定所述第一比特数之前,基于存储在所述二进制位中的下一个二进制位中的下一个符号是所述新的最大概率符号的确定来更新与所述新的最大概率符号相关联的所述概率,其中,基于与所述最小概率符号相关联的所述概率来确定要用来对所述二值化视频数据进行编码的所述第一比特数包括使用经更新的与所述新的最大概率符号相关联的概率。
示例20:根据示例16所述的方法,还包括:在确定所述经更新的概率模型未反映所述较大概率之后,基于与所述最大概率符号相关联的概率来确定要用来对所述二值化视频数据进行编码的第二比特数;以及使用所述第二比特数来将所述二值化视频数据编码到比特流。
已描述了上述实施例、实施方式和方面以便容易理解本公开并且不限制本公开。相反,本公开旨在涵盖包括在所附权利要求书的范围内的各种修改和等同布置,该范围应被赋予如在法律许可下的最广泛解释,以便包含所有这样的修改和等同布置。
Claims (20)
1.一种用于确定要用来对二值化视频数据进行编码的比特数的方法,所述方法包括:
接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;
确定存储在所述二进制位串的每个二进制位中的符号是否是能够用于对所述二值化视频数据进行编码的概率模型的最大概率符号;
响应于确定存储在所述二进制位串的每个二进制位中的符号是所述最大概率符号,基于所述二进制位串的大小来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的第一比特数;以及
在基于所述二进制位串的大小来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的第一比特数之后,使用所述第一比特数来将所述二值化视频数据编码到比特流。
2.根据权利要求1所述的方法,其中,基于所述二进制位串的大小来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的所述第一比特数包括:
根据存储在所述二进制位串的二进制位中的连续二进制位中的符号是所述最大概率符号的概率来更新所述最大概率符号的初始概率,所述最大概率符号的所述初始概率反映存储在所述二进制位串的第一二进制位中的符号是所述最大概率符号的概率;以及
基于所述最大概率符号的最终概率来计算所述第一比特数,所述最大概率符号的最终概率是基于所述更新来确定的。
3.根据权利要求2所述的方法,还包括:
基于所述二进制位串的大小和所述最大概率符号的所述初始概率来生成查找表,所述查找表包括与所述二进制位串的二进制位中的多个二进制位相对应并且与存储在所述二进制位串的二进制位中的连续二进制位中的符号是所述最大概率符号的概率相关联的元素,
其中,所述元素中的第一元素与所述二进制位串的第一二进制位相对应并且与所述最大概率符号的所述初始概率相关联,所述元素中的最后元素与所述二进制位串的最后二进制位相对应并且与所述最大概率符号的所述最终概率相关联,以及
其中,根据存储在所述二进制位串的二进制位中的所述连续二进制位中的符号是所述最大概率符号的概率来更新所述最大概率符号的所述初始概率包括使用所述查找表。
4.根据权利要求2所述的方法,其中,基于所述最大概率符号的所述最终概率来计算所述第一比特数包括:
将所述二进制位串的大小和根据所述最大概率符号的所述最终概率来对所述最大概率符号进行编码所需要的比特数相乘。
5.根据权利要求1所述的方法,其中,存储在多个二进制位中的每个二进制位中的符号是所述概率模型的最小概率符号,其中,所述方法进一步包括基于所述二进制位串的存储不是所述最大概率符号的符号的二进制位的数目来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的第二比特数,包括:
更新所述最小概率符号的概率和所述最大概率符号的概率,所述最小概率符号的概率根据存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最小概率符号的概率被更新,所述最大概率符号的概率根据存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最大概率符号的概率被更新;以及
基于经更新的所述最小概率符号的概率和经更新的所述最大概率符号的概率来计算所述第二比特数。
6.根据权利要求5所述的方法,其中,更新所述最小概率符号的概率和所述最大概率符号的概率包括:
确定基于存储在多个二进制位中的可识别二进制位中的符号来更新所述最小概率符号的概率使所述最小概率符号的概率大于所述最大概率符号的概率,
其中,在所述最小概率符号的概率变得大于所述最大概率符号的概率时,切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是新的最大概率符号并且所述最大概率符号是新的最小概率符号。
7.根据权利要求6所述的方法,其中,基于经更新的所述最小概率符号的概率和经更新的所述最大概率符号的概率来计算所述第二比特数包括:
针对在所述二进制位串的第一二进制位处开始并在紧接在所述二进制位串的可识别二进制位之前的二进制位处结束的所述二进制位串的第一部分来计算第一比特值,所述第一比特值基于在所述更新完成之后的所述最大概率符号的最终概率;
针对在所述二进制位串的所述可识别二进制位处开始并在所述二进制位串的最后二进制位处结束的所述二进制位串的第二部分来计算第二比特值,所述第二比特值基于在所述更新完成之后的新的最大概率符号的最终概率;以及
将所述第二比特数计算为所述第一比特值和所述第二比特值的和。
8.根据权利要求1所述的方法,其中,所述二进制位串包括第一部分和第二部分,其中,所述第二部分包括所述二进制位串的最后二进制位,并且所述第一部分包括所述二进制位串的每个其它二进制位,其中,存储在所述最后二进制位中的符号与存储在所述二进制位串的每个其它二进制位中的符号不同,其中,确定存储在所述二进制位串的每个二进制位中的所述符号是否是能够用于对所述二值化视频数据进行编码的所述概率模型的最大概率符号包括:
确定存储在所述二进制位串的所述第一部分的每个二进制位中的所述符号是否是所述最大概率符号。
9.根据权利要求1所述的方法,其中,所述二值化视频数据被用于指示针对一个或多个视频块的显著性图或系数等级中的一个。
10.根据权利要求1所述的方法,所述方法包括:
响应于确定存储在所述二进制位串的每个二进制位中的符号不是所述最大概率符号,基于存储不是所述最大概率符号的符号的所述二进制位串的二进制位的数目来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的第二比特数;以及
在基于存储不是所述最大概率符号的符号的所述二进制位串的二进制位数来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的第二比特数之后,使用所述第二比特数来编码所述二值化视频数据。
11.一种用于确定要用来对二值化视频数据进行编码的比特数的装置,所述装置包括:
处理器,所述处理器被配置成执行存储在非暂时性存储介质中的指令以:
接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;
确定存储在所述二进制位串的每个二进制位中的所述符号是否是能够用于对所述二值化视频数据进行编码的概率模型的最大概率符号;
响应于确定存储在所述二进制位串的每个二进制位中的符号是所述最大概率符号:
基于所述二进制位串的大小来更新所述概率模型,以确定要用来对所述二值化视频数据进行编码的第一比特数;并且
使用所述第一比特数来将所述二值化视频数据编码到比特流;以及
响应于确定存储在所述二进制位串的每个二进制位中的符号不是所述最大概率符号:
基于所述二进制位串的存储不是所述最大概率符号的符号的二进制位的数目来更新所述概率模型,以确定要用来对所述二值化视频数据进行编码的第二比特数;并且
使用所述第二比特数来将所述二值化视频数据编码到所述比特流。
12.根据权利要求11所述的装置,其中,用于基于所述二进制位串的大小来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的所述第一比特数的指令包括用于以下的指令:
根据存储在所述二进制位串的二进制位中的连续二进制位中的符号是所述最大概率符号的概率来更新所述最大概率符号的初始概率,所述最大概率符号的所述初始概率反映存储在所述二进制位串的第一二进制位中的符号是所述最大概率符号的概率;并且
基于所述最大概率符号的最终概率来计算所述第一比特数,所述最大概率符号的所述最终概率是基于对所述最大概率符号的初始概率的更新来确定的。
13.根据权利要求12所述的装置,其中,所述处理器被配置成执行存储在非暂时性存储介质中的指令以:
基于所述二进制位串的大小和所述最大概率符号的所述初始概率来生成查找表,所述查找表包括与所述二进制位串的二进制位中的多个二进制位相对应并且与存储在所述二进制位串的二进制位中的所述连续二进制位中的符号是所述最大概率符号的概率相关联的元素,
其中,所述元素中的第一元素与所述二进制位串的第一二进制位相对应并且与所述最大概率符号的所述初始概率相关联,所述元素中的最后元素与所述二进制位串的最后二进制位相对应并且与所述最大概率符号的所述最终概率相关联,以及
其中,用于根据存储在所述二进制位串的二进制位中的所述连续二进制位中的符号是所述最大概率符号的概率来更新所述最大概率符号的所述初始概率的指令包括用于使用所述查找表的指令。
14.根据权利要求12所述的装置,其中,用于基于所述最大概率符号的所述最终概率来计算所述第一比特数的指令包括用于以下的指令:
基于对存储在所述二进制位串的每个二进制位中的符号进行编码所需要的比特的和来确定所述最大概率符号的所述最终概率。
15.根据权利要求11所述的装置,其中,存储在多个二进制位中的每个二进制位中的符号是所述概率模型的最小概率符号,其中,用于基于所述二进制位串的存储不是所述最大概率符号的符号的二进制位的数目来更新所述概率模型以确定要用来对所述二值化视频数据进行编码的所述第二比特数的指令包括用于以下的指令:
更新所述最小概率符号的概率和所述最大概率符号的概率,所述最小概率符号的概率根据存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最小概率符号的概率被更新,所述最大概率符号的概率根据存储在所述二进制位串的二进制位中的多个二进制位中的符号是所述最大概率符号的概率被更新;并且
基于经更新的所述最小概率符号的概率和经更新的所述最大概率符号的概率来计算所述第二比特数。
16.根据权利要求15所述的装置,其中,用于更新所述最小概率符号的概率和所述最大概率符号的概率的指令包括用于以下的指令:
确定基于存储在多个二进制位中的可识别二进制位中的符号来更新所述最小概率符号的概率使所述最小概率符号的概率大于所述最大概率符号的概率,
其中,在所述最小概率符号的概率变得大于所述最大概率符号的概率时,切换所述最大概率符号和所述最小概率符号,以反映所述最小概率符号是新的最大概率符号并且所述最大概率符号是新的最小概率符号。
17.根据权利要求16所述的装置,其中,用于基于经更新的所述最小概率符号的概率和经更新的所述最大概率符号的概率来计算所述第二比特数的指令包括用于以下的指令:
针对在所述二进制位串的第一二进制位处开始并在紧接在所述二进制位串的可识别二进制位之前的二进制位处结束的所述二进制位串的第一部分来计算第一比特值,所述第一比特值基于在所述更新完成之后的所述最大概率符号的最终概率;
针对在所述二进制位串的可识别二进制位处开始并在所述二进制位串的最后二进制位处结束的所述二进制位串的第二部分来计算第二比特值,所述第二比特值基于在所述更新完成之后的新的最大概率符号的最终概率;并且
将所述第二比特数计算为所述第一比特值和所述第二比特值的和。
18.根据权利要求11所述的装置,其中,所述二进制位串包括第一部分和第二部分,其中,所述第二部分包括所述二进制位串的最后二进制位并且所述第一部分包括所述二进制位串的每个其它二进制位,其中,存储在所述最后二进制位中的符号与存储在所述二进制位串的每个其它二进制位中的符号不同,其中,用于确定存储在所述二进制位串的每个二进制位中的符号是否是能够用于对所述二值化视频数据进行编码的所述概率模型的最大概率符号的指令包括用于以下的指令:
确定存储在所述二进制位串的所述第一部分的每个二进制位中的符号是否是所述最大概率符号。
19.根据权利要求11所述的装置,其中,所述二值化视频数据被用于指示针对一个或多个视频块的显著性图或系数等级中的一个。
20.一种用于确定要用来对二值化视频数据进行编码的比特数的方法,所述方法包括:
接收表示所述二值化视频数据的二进制位串,所述二进制位串包括各自存储符号的二进制位;
在单个时钟周期中,响应于确定所述二进制位串的每个二进制位中存储的符号是最大概率符号,基于所述二进制位串的大小来更新能够用于对所述二值化视频数据进行编码的概率模型,或响应于确定所述二进制位串的每个二进制位中存储的符号不是最大概率符号,基于所述二进制位串的存储不是所述概率模型的最大概率符号的符号的二进制位的数目来更新能够用于对所述二值化视频数据进行编码的概率模型,经更新的概率模型反映要用来对所述二值化视频数据进行编码的比特数;以及
在更新所述概率模型之后,使用所述比特数来将所述二值化视频数据编码到比特流。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/813,387 | 2017-11-15 | ||
US15/813,387 US9992496B1 (en) | 2017-11-15 | 2017-11-15 | Bin string coding based on a most probable symbol |
US15/983,662 | 2018-05-18 | ||
US15/983,662 US10194153B1 (en) | 2017-11-15 | 2018-05-18 | Bin string coding based on a most probable symbol |
PCT/US2018/046451 WO2019099076A1 (en) | 2017-11-15 | 2018-08-13 | Bin string coding based on a most probable symbol |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110692244A CN110692244A (zh) | 2020-01-14 |
CN110692244B true CN110692244B (zh) | 2021-03-30 |
Family
ID=62235624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880035986.2A Active CN110692244B (zh) | 2017-11-15 | 2018-08-13 | 基于最大概率符号的二进制位串编译 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9992496B1 (zh) |
EP (1) | EP3711295A1 (zh) |
CN (1) | CN110692244B (zh) |
WO (1) | WO2019099076A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9992496B1 (en) * | 2017-11-15 | 2018-06-05 | Google Llc | Bin string coding based on a most probable symbol |
WO2020186535A1 (zh) * | 2019-03-21 | 2020-09-24 | 深圳市大疆创新科技有限公司 | 点云属性编码方法和装置以及点云属性解码方法和装置 |
US11212531B2 (en) * | 2019-06-07 | 2021-12-28 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer readable media for decoding video using rate sorted entropy coding |
CN114079780A (zh) * | 2020-08-20 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 视频解码方法、视频编码方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7932843B2 (en) * | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
CN102176750A (zh) * | 2011-03-10 | 2011-09-07 | 西安电子科技大学 | 高性能自适应二进制算术编码器 |
CN107005697A (zh) * | 2014-12-26 | 2017-08-01 | 英特尔公司 | 用于视频译码的使用基于查找表的概率更新的熵译码的方法与*** |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599435B2 (en) * | 2004-01-30 | 2009-10-06 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video frame encoding and decoding |
US7714754B2 (en) * | 2008-07-14 | 2010-05-11 | Vixs Systems, Inc. | Entropy decoder with pipelined processing and methods for use therewith |
US20110280314A1 (en) * | 2010-05-12 | 2011-11-17 | Texas Instruments Incorporated | Slice encoding and decoding processors, circuits, devices, systems and processes |
WO2013067435A1 (en) * | 2011-11-04 | 2013-05-10 | Huawei Technologies Co., Ltd. | Differential pulse code modulation intra prediction for high efficiency video coding |
US9681133B2 (en) | 2012-03-29 | 2017-06-13 | Intel Corporation | Two bins per clock CABAC decoding |
US9584802B2 (en) | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
US10848786B2 (en) | 2014-05-28 | 2020-11-24 | Arris Enterprises Llc | Acceleration of context adaptive binary arithmetic coding (CABAC) in video CODECS |
US9379236B2 (en) * | 2014-06-04 | 2016-06-28 | Broadcom Corporation | LDMOS device and structure for bulk FinFET technology |
US9992496B1 (en) * | 2017-11-15 | 2018-06-05 | Google Llc | Bin string coding based on a most probable symbol |
-
2017
- 2017-11-15 US US15/813,387 patent/US9992496B1/en active Active
-
2018
- 2018-05-18 US US15/983,662 patent/US10194153B1/en active Active
- 2018-08-13 WO PCT/US2018/046451 patent/WO2019099076A1/en unknown
- 2018-08-13 EP EP18759833.9A patent/EP3711295A1/en not_active Withdrawn
- 2018-08-13 CN CN201880035986.2A patent/CN110692244B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7932843B2 (en) * | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
CN102176750A (zh) * | 2011-03-10 | 2011-09-07 | 西安电子科技大学 | 高性能自适应二进制算术编码器 |
CN107005697A (zh) * | 2014-12-26 | 2017-08-01 | 英特尔公司 | 用于视频译码的使用基于查找表的概率更新的熵译码的方法与*** |
Also Published As
Publication number | Publication date |
---|---|
WO2019099076A1 (en) | 2019-05-23 |
EP3711295A1 (en) | 2020-09-23 |
US9992496B1 (en) | 2018-06-05 |
CN110692244A (zh) | 2020-01-14 |
US10194153B1 (en) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405645B2 (en) | Transform kernel selection and entropy coding | |
KR102097285B1 (ko) | 기준 프레임 버퍼 추적을 통한 모션 벡터 기준 선택 | |
CN110169068B (zh) | Dc系数符号代码化方案 | |
CN110692244B (zh) | 基于最大概率符号的二进制位串编译 | |
CN113287306A (zh) | 使用机器学习的图像和视频压缩中的改进熵代码化 | |
US10764590B2 (en) | Entropy coding primary and secondary coefficients of video data | |
CN110731084B (zh) | 使用上下文树来代码化视频语法元素 | |
US20190379912A1 (en) | Hash table for video and image transforms | |
US11870993B2 (en) | Transforms for large video and image blocks | |
CN110692247B (zh) | 复合运动补偿的预测 | |
US11218737B2 (en) | Asymmetric probability model update and entropy coding precision | |
WO2024020119A1 (en) | Bit stream syntax for partition types | |
CN116830574A (zh) | 具有指定比特深度精度的调色板模式代码化 |
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 |