CN107040781A - 使用动态分辨率切换的实时视频编码器速率控制 - Google Patents
使用动态分辨率切换的实时视频编码器速率控制 Download PDFInfo
- Publication number
- CN107040781A CN107040781A CN201611225434.7A CN201611225434A CN107040781A CN 107040781 A CN107040781 A CN 107040781A CN 201611225434 A CN201611225434 A CN 201611225434A CN 107040781 A CN107040781 A CN 107040781A
- Authority
- CN
- China
- Prior art keywords
- bit rate
- frame
- encoded
- resolution ratio
- video flowing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013139 quantization Methods 0.000 claims abstract description 68
- 230000033001 locomotion Effects 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims description 18
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 230000002146 bilateral effect Effects 0.000 abstract description 9
- 238000000034 method Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 25
- 230000015654 memory Effects 0.000 description 21
- 230000006835 compression Effects 0.000 description 16
- 238000007906 compression Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 9
- 238000011002 quantification Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000009466 transformation Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000009432 framing Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
- 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
-
- 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/167—Position within a video image, e.g. region of interest [ROI]
-
- 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/17—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 an image region, e.g. an object
- H04N19/172—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 an image region, e.g. an object the region being a picture, frame or field
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
- H04N19/194—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
-
- 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/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- 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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234363—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
- H04N21/234372—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution for performing aspect ratio conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种使用动态分辨率切换的实时视频编码器速率控制。动态分辨率切换为视频流的单通和双通编码实现了目标比特率。单通编码器确定帧的编码比特率是否满足目标比特率。如果不是,则将用于对帧进行编码的量化参数与最小和最大阈值进行比较,以确定是否需要调整视频分辨率。双通编码器使用量化参数对输入帧进行编码,并且基于对输入帧进行编码的比特率来确定是否可以调整在第二通期间对帧进行编码的视频分辨率。可以基于关于用于对帧进行编码的运动搜索区域的编码器限制来调整分辨率。
Description
背景技术
数字视频流通常使用帧序列或静止图像来表示视频。每个帧可以包括多个块,其又可以包含描述像素的颜色、亮度或其它属性的值的信息。典型视频流中的数据量很大,并且视频的传输和存储可以使用巨大的计算或通信资源。由于视频数据中涉及大量数据,因此对于传输和存储需要高性能压缩。此外,期望能够基于可用连接以优化的分辨率来流传输质量视频数据。
发明内容
本文公开了用于使用动态分辨率切换来实现用于对视频流进行编码的目标比特率的系统、方法和装置的方面。根据本发明的一个方面的装置包括至少一个处理器,其被配置为执行在非有形存储介质中存储的指令以识别视频流的多个帧中的第一帧,以表示量化参数的第一比特率对第一帧进行编码,响应于对第一帧进行编码而识别关于运动搜索区域的一个或多个编码器限制,将第一比特率与第一帧的目标比特率进行比较,并将量化参数与最小量化阈值和最大量化阈值中的一个进行比较,响应于将第一比特率与目标比特率进行比较以及将量化参数与最小量化阈值和最大量化阈值中的一个进行比较而调整至少一个编码参数,识别视频流的第二帧,使用所调整的至少一个编码参数以第二比特率对第二帧进行编码,以及在输出比特流中发送编码的第一帧和编码的第二帧。
根据本发明的另一个方面的装置包括至少一个处理器,其被配置为执行在非有形存储介质中存储的指令以识别多个帧中的输入帧,使用输入量化参数对输入帧进行编码,响应于对输入帧进行编码而识别关于运动搜索区域的一个或多个编码器限制,响应于对输入帧进行编码而生成比特数,基于所述比特数和用于对输入帧进行编码的目标比特率来调整至少一个编码参数,通过使用所述至少一个编码参数对输入帧进行编码来生成编码的帧,以及在输出比特流中发送所述编码的帧。
根据本发明的另一个方面的装置包括至少一个处理器,其被配置为执行在非有形存储介质中存储的指令,以识别多个帧中的输入帧,以表示恒定量化参数的第一比特率对输入帧进行编码,响应于对输入帧进行编码而识别关于运动搜索区域的一个或多个编码器限制,将第一比特率与输入帧的最小目标比特率和最大目标比特率中的一个进行比较,响应于将第一比特率与最小目标比特率和最大目标比特率中的一个进行比较而调整至少一个编码参数,通过使用所述至少一个编码参数对输入帧进行编码来生成编码的帧,以及在输出比特流中发送所述编码的帧。
在实施例、所附权利要求和附图的以下详细描述中公开了本公开的这些和其它方面。
附图说明
当结合附图阅读时,从以下详细描述中可以最好地理解本发明。除非另有说明,否则在各个附图中相同的附图标号代表相同元件。
图1A是示出用于对由于最大化的量化参数而过冲的视频流进行编码的目标比特率的图。
图1B是示出用于对由于最小化的量化参数而下冲的视频流进行编码的目标比特率的图。
图2是视频编码和解码系统的示意图。
图3是可以实现发送站或接收站的计算设备的示例的框图。
图4是待编码和随后解码的典型视频流的图。
图5是根据本文教导的一个方面的视频压缩系统的框图。
图6是根据本文教导的另一个方面的视频解压缩系统的框图。
图7是用于在单通编码中实现目标编码比特率的过程的示例的流程图。
图8是用于在双通编码中实现目标编码比特率的过程的示例的流程图。
具体实施方式
视频编码器中的速率控制算法旨在当输入数据的复杂度随时间变化时保持编码器产生恒定比特率。可以通过基于先前的帧已经生成的比特量来调整每个帧的量化参数(QP)来实现恒定比特率。通常,较高的量化减小比特率,并且较低的量化增加比特率。量化参数指示视频流的数据由编码器量化的比例。也就是说,在编码器使用较高的量化参数的情况下,量化阶段涉及对于较高的量化参数的视频数据的较高的减少以及对于较低的量化参数的视频数据的较低的减少。所得到的量化视频数据指示包括数据的视频流的帧被编码的比特率。一般来说,对于视频流的给定帧,使用较高的量化参数将导致较低的帧比特率,并且使用较低的量化参数将导致较高的帧比特率。
然而,根据视频序列的复杂度和编码器的各种能力,可能存在对于编码给定视频流不能满足目标比特率的情况。这可能是因为QP已经被限制到最大值阈值(例如,其中进一步的增加通过产生明显的视觉伪迹(visual artifacts)减小了关于分辨率的视频质量的QP的值),然而比特率仍然不够低,导致比特率过冲。替选地,使用大QP可能导致对视频质量有害的编译伪迹(coding artifacts)。类似地,如果希望在给定带宽下优化用户的视频质量,并且QP已经达到最小值阈值(例如,其中进一步的减小对提高关于分辨率的视频质量没有效果的QP的值),则可能没有办法进一步提高视频质量。因此,用户体验受损。
图1A和1B是示出用于分别对由于最大化的量化参数而过冲的和由于最小化的量化参数而下冲的视频流进行编码的目标比特率的图。水平轴指示由编码器编码的视频流的帧的连续进展,并且竖直轴指示在给定帧的编码器的量化阶段中使用的量化参数。用于对视频流的帧进行编码的最小QP阈值100和最大QP阈值102被示为相对于目标比特率104的恒定值。该图还指示,根据被编码的数据,仅通过增加或减小QP 106,可能不可获得目标比特率104。例如由于对包括给定帧的输入数据进行编码的复杂度,导致帧比特率108可能波动。
如图1所示,帧比特率108随着视频流的数据变得更加复杂而增加。响应于帧比特率108的增加,编码器增加QP 106以试图维持视频流的目标比特率104。然而,最终,QP 106达到最大QP阈值102,因此不能进一步增加,但帧比特率108仍未达到目标比特率104,因为正被编码的数据仍然太大而无法实现目标比特率104。这被称为比特率过冲,因为帧比特率108仍然高于目标比特率104,尽管最大QP阈值102被限制。类似地,如图1B所示,编码器可以减小QP 106,其中确定由于帧比特率108太低,所以未实现目标比特率104。然而,如果帧比特率108保持在目标比特率104以下而不管达到最小QP阈值100,则导致比特率下冲。
因此,传统编码器不能通过仅调整QP来实现用于编码视频数据的恒定比特率。此外,虽然一些编码器可以插入用于编码的关键帧,但是该解决方案对于至少在对关键帧进行编译时必然导致比特率峰值的原因而言不是最优的。相反,本公开描述了动态参考帧缩放,以通过在编码期间切换分辨率来提高速率控制的性能。因此,例如,通过编码器在形成其预测信号之前在内部缩放参考帧来完成速率控制。描述了用于对视频流进行编码的单通和双通编码器。在双通编码器中,第一通使用恒定量化器对视频流的帧进行编码,并且第二通在提前已知哪些帧是复杂的而哪些是容易的情况下为每个帧优化地分配比特。本文中描述了动态参考帧缩放的进一步细节,其中初始参考其中可以实现它的系统。
图2是视频编码和解码系统200的示意图。发送站202可以是例如具有诸如图3所描述的硬件的内部配置的计算机。然而,发送站202的其它合适的实施方式是可能的。例如,发送站202的处理可以分布在多个设备中。
网络204可以连接发送站202和接收站206,用于视频流的编码和解码。具体地,可以在发送站202中编码视频流,并且可以在接收站206中解码所编码的视频流。网络204可以是例如互联网。网络204还可以是局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、蜂窝电话网络、或将来自发送站202的视频流传送到(在此示例中)接收站206的任何其它装置。
在一个示例中,接收站206可以是具有诸如图3中描述的硬件的内部配置的计算机。然而,接收站206的其它合适的实施方式是可能的。例如,接收站206的处理可以分布在多个设备中。
视频编码和解码系统200的其它实施方式是可能的。例如,实施方式可以省略网络204。在另一个实施方式中,视频流可以被编码,然后被存储以用于稍后的时间传输到接收站206或具有存储器的任何其它设备。在一个实施方式中,接收站206接收(例如,经由网络204、计算机总线和/或一些通信路径)编码的视频流,并且存储视频流用于稍后解码。在示例实施方式中,实时传输协议(RTP)用于通过网络204传输编码的视频。在另一个实施方式中,可以使用除RTP之外的传输协议,例如基于HTTP的视频流传输协议。
当在视频会议系统中使用时,例如,发送站202和/或接收站206可以包括如下所述的编码和解码视频流的能力两者。例如,接收站206可以是视频会议参与者,其从视频会议服务器(例如,发送站202)接收编码的视频比特流以进行解码和观看,并且进一步将其自己的视频比特流进行编码并发送到视频会议服务器用于由其它参与者进行解码和观看。
图3是可以实现发送站或接收站的计算设备300的示例的框图。例如,计算设备300可以实现图2的发送站202和接收站206中的一个或两个。计算设备300可以是包括多个计算设备的计算系统的形式,或者可以是单个计算设备的形式,例如移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等。
计算设备300中的CPU 302可以是传统的中央处理单元。替选地,CPU 302可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的一个设备或多个设备。尽管所公开的实施方式可以用如所示的单个处理器(例如,CPU 302)来实践,但是可以使用多于一个处理器来实现速度和效率方面的优点。
在实施方式中,计算设备300中的存储器304可以是只读存储器(ROM)设备或随机存取存储器(RAM)设备。任何其它合适类型的存储设备可以用作存储器304。存储器304可以包括由CPU 302使用总线312访问的代码和数据306。存储器304还可以包括操作系统308和应用程序310,应用程序310包括允许CPU 302执行本文描述的方法的至少一个程序。例如,应用程序310可以包括应用1至N,其还包括执行本文描述的方法的视频编译应用。计算设备300还可以包括辅助存储器314,其可以例如是与移动计算设备一起使用的存储卡。因为视频通信会话可以包含大量的信息,所以它们可以全部或部分地存储在辅助存储器314中,并且根据处理需要被加载到存储器304中。
计算设备300还可以包括一个或多个输出设备,诸如显示器318。在一个示例中,显示器318可以是将显示器与可操作以感测触摸输入的触敏元件组合的触敏显示器。显示器318可以经由总线312耦合到CPU 302。除了显示器318之外或作为显示器318的替选,可以提供允许用户编程或以其它方式使用计算设备300的其它输出设备。当输出设备是显示器或包括显示器时,可以以各种方式实现显示器,包括由液晶显示器(LCD)、阴极射线管(CRT)显示器、或发光二极管(LED)显示器(诸如OLED显示器)实现。
计算设备300还可以包括图像感测设备320(例如,相机)或者现在存在或者以后开发的可以感测图像(诸如操作计算设备300的用户的图像)的任何其它图像感测设备320,或者可以与图像感测设备320通信。图像感测设备320可以被定位成使得其指向操作计算设备300的用户。在一个示例中,可以配置图像感测设备320的位置和光轴使得视场包括与显示器318直接相邻并且从其可见显示器318的区域。
计算设备300还可以包括声音感测设备322(例如,麦克风)或者现在存在的或以后开发的可以感测计算设备300附近的声音的任何其它声音感测设备,或与之通信。声音感测设备322可以被定位成使得它指向操作计算设备300的用户,并且可以被配置为在用户操作计算设备300时接收由用户发出的声音,例如语音或其它话语。
尽管图3将计算设备300的CPU 302和存储器304描述为集成到单个单元中,但是可以利用其它配置。CPU 302的操作可以跨越可以直接耦合的、或跨越局域网或其它网络的多个机器(每个机器具有一个或多个处理器)而分布。存储器304可以跨越多个机器分布,诸如基于网络的存储器或在执行计算设备300的操作的多个机器中的存储器。尽管这里被描绘为单个总线,但是计算设备300的总线312可以由多个总线组成。此外,辅助存储器314可以直接耦合到计算设备300的其它组件,或者可以经由网络访问,并且可以包括诸如存储卡的单个集成单元或诸如多个存储卡的多个单元。计算设备300因此可以以各种各样的配置来实现。
图4是待编码并随后解码的视频流400的示例的图。视频流400包括视频序列402。在下一级,视频序列402包括多个相邻帧404。虽然三个帧被描绘为相邻帧404,但是视频序列402可以包括任何数量的相邻帧404。然后可以将相邻帧404进一步细分为单独的帧,例如,帧406。在下一级,帧406可以被划分为一系列分段或平面408。例如,分段408可以是允许并行处理的帧子集。分段408还可以是可以将视频数据分离成单独颜色的帧子集。例如,彩色视频数据的帧406可以包括亮度平面和两个色度平面。可以以不同的分辨率对分段408进行采样。
无论帧406是否被划分为分段408,帧406可以进一步细分为块410,块410可以包含对应于例如帧406中的16×16像素的数据。块410也可以被布置为包括来自像素数据的一个或多个平面408的数据。块410还可以是任何其它合适的大小,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。除非另有说明,否则术语块和宏块在本文中可互换使用。
图5是根据实施方式的编码器500的框图。如上所述,可以诸如通过提供存储在存储器(例如,存储器304)中的计算机软件程序来在发送站202中实现编码器500。计算机软件程序可以包括机器指令,当所述机器指令由诸如CPU 302的处理器执行时使得发送站202以图5中描述的方式对视频数据进行编码。编码器500还可以被实现为被包括在例如发送站202中的专用硬件。在一个特别期望的实施方式中,编码器500是硬件编码器。编码器500具有以下阶段以在正向路径(由实连接线所示)中执行各种功能以使用视频流400作为输入来产生编码或压缩的比特流520:帧内/帧间预测阶段502、变换阶段504、量化阶段506、和熵编码阶段508。编码器500还可以包括重构路径(由虚连接线示出)以重构用于未来块的编码的帧。在图5中,编码器500具有以下阶段来执行重构路径中的各种功能:去量化阶段510、逆变换阶段512、重构阶段514、和环路滤波阶段516。编码器500的其它结构变型可以用于对视频流400进行编码。
当视频流400被呈现用于编码时,每个帧406可以以块为单位来处理。在帧内/帧间预测阶段502处,可以使用帧内预测(intra-frame prediction)(也称为帧内预测(intraprediction))或帧间预测(inter-frame prediction)(也称为帧间预测(interprediction))来对每一块进行编码。在任何情况下,可以形成预测块。在帧内预测的情况下,可从先前已经编码和重构的当前帧中的样本形成预测块。在帧间预测的情况下,可从一个或多个先前建构的参考帧中的样本形成预测块。
接下来,仍参考图5,可在帧内/帧间预测阶段502处从当前块减去预测块以产生残差块(也称为残差)。变换阶段504使用基于块的变换在例如频域中将残差变换为变换系数。量化阶段506使用量化器值或量化级别将变换系数转换为离散量子值,其称为量化变换系数。例如,变换系数可以除以量化器值并被截断。然后,熵编码阶段508对量化的变换系数进行熵编码。熵编码的系数连同用于对块进行解码的其它信息(其可以包括例如所使用的预测类型、变换类型、运动矢量和量化器值)然后被输出到压缩的比特流520。可以使用各种技术(例如可变长度编译(VLC)或算术编译)来格式化压缩的比特流520。压缩的比特流520还可以被称为编码的视频流或编码的视频比特流,并且这些术语将在本文中可互换地使用。
图5中的重构路径(由虚连接线示出)可以用于确保编码器500和解码器600(下面描述)两者使用相同的参考帧来对压缩比特流520进行解码。重构路径执行类似于在下面更详细地讨论的解码处理期间发生的功能的功能,包括在去量化阶段510对量化的变换系数进行去量化并且在逆变换阶段512对去量化的变换系数进行逆变换以产生导数残差块(也称为导数残差)。在重构阶段414,可将在帧内/帧间预测阶段502处预测的预测块添加到导数残差以创建重构块。环路滤波阶段516可以应用于重构块以减少诸如块伪迹(blockingartifacts)的失真。
编码器500的其它变型可以用于对压缩的比特流520进行编码。例如,基于非变换的编码器可以针对某些块或帧直接量化残差信号,而不需要变换阶段504。在另一个实施方式中,编码器可使量化阶段506和去量化阶段510组合成单个阶段。
图6是根据另一个实施方式的解码器600的框图。解码器600可以例如通过提供存储在存储器304中的计算机软件程序在接收站206中实现。计算机软件程序可以包括机器指令,当机器指令由诸如CPU302的处理器执行时使得接收站206以图6中描述的方式对视频数据进行解码。解码器600还可以在包括在例如发送站202或接收站206中的硬件中实现。
类似于上文所论述的编码器500的重构路径,解码器600在一个示例中包括以下阶段以执行各种功能以从压缩的比特流520产生输出视频流616:熵解码阶段602、去量化阶段604、逆变换阶段606、帧内/帧间预测阶段608、重构阶段610、环路滤波阶段612、和去块滤波阶段614。解码器600的其它结构变体可用于对压缩的比特流520进行解码。
当呈现压缩的比特流520用于解码时,可以由熵解码阶段602对压缩的比特流520内的数据元素进行解码,以产生量化的变换系数集。去量化阶段604对量化的变换系数进行去量化(例如,通过将量化的变换系数乘以量化器值),并且逆变换阶段606对去量化的变换系数进行逆变换,以产生导数残差,该导数残差可以与由在编码器500中的逆变换阶段512创建的相同。使用从压缩的比特流520解码的报头信息,解码器600可以使用帧内/帧间预测阶段608来创建与在编码器500中创建的(例如,在帧内/帧间预测阶段502)预测块相同的预测块。在重构阶段610,可以将预测块添加到导数残差以创建重构块。环路滤波阶段612可以应用于重构块以减少块伪迹。可以对重构块应用其它滤波。在此示例中,将去块滤波阶段614应用于重构块以减少块失真,并且将结果输出为输出视频流616。输出视频流616也可称为解码的视频流,并且术语将在本文中可互换使用。解码器600的其它变型可以用于对压缩的比特流520进行解码。例如,解码器600可以在没有去块滤波阶段614的情况下产生输出视频流616。
图7和图8分别是用于使用分辨率缩放以在单通和双通编码中实现恒定目标比特率的过程700和800的流程图。过程700和800可以在诸如计算设备300的系统中实现以帮助视频流的编码。过程700和800可以被实现为例如由计算设备(诸如发送站202或接收站206)执行的软件程序。软件程序可以包括存储在诸如存储器304的存储器中的机器可读指令,机器可读指令在由诸如CPU 302的处理器执行时,使得计算设备执行过程700或过程800中的一个。过程700和800还可以整体或部分使用硬件来实现。如上所述,一些计算设备可以具有多个存储器和多个处理器,并且在这种情况下,每个过程700和800的步骤或操作可以使用不同的处理器和存储器来分布。本文中单数形式的术语“处理器”和“存储器”的使用包括仅具有一个处理器或一个存储器的计算设备以及具有多个处理器或存储器的设备,每个处理器或存储器可以用在执行一些步骤但不必用于执行记载的全部步骤。
为了简化说明,将每个过程700和800描绘和描述为一系列步骤或操作。然而,根据本公开的步骤和操作可以以各种次序和/或同时发生。另外,根据本公开的步骤或操作可以与本文未呈现和描述的其它步骤或操作一起发生。此外,并非所有示出的步骤或操作都需要实现根据所公开的主题的方法。可以对输入信号的每个帧重复过程700或800中的一个。
参考图7,在操作702处,通过设定目标比特率、初始QP、最小QP阈值和最大QP阈值的值,用于在单通编码中使用分辨率缩放以实现相对恒定的目标比特率的过程700开始。这些值可以指示视频流正在被编码的初始分辨率。在操作704处,编码器使用初始QP对视频流的第一帧进行编码。如果对第一帧进行编码导致满足目标比特率的帧比特率,则操作706通过返回到操作704来准备用于对视频流的下一帧进行编码的编码器。否则,过程700继续至操作708的触发调整时期,其使用滤波逻辑来确定视频数据中是否存在振荡。如果没有振荡,则操作708通过返回到操作704来准备用于对视频流的下一帧进行编码的编码器。否则,过程700继续至在操作710处发起的调整时期。
在操作710处,确定帧比特率不满足目标比特率是否是由于过冲或下冲。在帧比特率超过目标比特率(过冲)的情况下发生过冲,例如,因为QP对于视频流正在被编码的分辨率来说太低。在帧比特率低于目标比特率(下冲)的情况下发生下冲,例如,因为QP对于视频流正在被编码的分辨率来说太高。不管是否确定了过冲或下冲,在下文中将调整视频流的一个或多个编码参数,以便提高视频流的质量。编码参数可以包括在调整时对视频流的质量或视觉表示有影响的任何值。在实施方式中,编码参数包括但不限于QP、视频分辨率、最大QP阈值和最小QP阈值。以下由编码器进行的调整取决于比特率问题是否由于过冲或下冲。
如果操作710确定存在比特率过冲,则过程700继续至操作712,其中确定当前为QP设定的值(在操作710仅被执行一次的情况下其可以是在操作702处设定的初始QP)是否等于当前为最大QP阈值设定的值。如果不是,则在操作714处增加QP,该操作通过返回到操作704来使用增加的QP来准备用于对视频流的下一帧进行编码的编码器。然而,如果QP的值等于最大QP阈值的值,则QP不能进一步增加,因为其已经达到相对于视频流的分辨率的最高有效值。因此,在操作716处,过程700减小视频流的分辨率,其包括重置最小QP阈值和最大QP阈值的值。操作716还基于分辨率的减小来减小QP的值。操作716然后通过返回到操作704,使用新分辨率和QP、最小QP阈值和最大QP阈值来准备用于对下一帧进行编码的编码器。
如果相反地,操作710确定存在比特率下冲,则过程700继续至操作718,其中确定当前为QP设定的值(在操作710仅被执行一次的情况下其可以是在操作702处设定的初始QP)是否等于当前为最小QP阈值设定的值。如果不是,则在操作720处减小QP,该操作通过返回到操作704而使用减少的QP准备用于对视频流的下一帧进行编码的编码器。然而,如果QP的值等于最小QP阈值的值,则QP不能进一步减小,因为其已经达到相对于视频流的分辨率的最低有效值。因此,在操作722处,过程700增加视频流的分辨率,这包括重置最小QP阈值和最大QP阈值的值。操作722还基于分辨率的增加而增加QP的值。然后,操作722通过返回到操作704,使用新分辨率和QP、最小QP阈值和最大QP阈值来准备用于对下一帧进行编码的编码器。
如果更高分辨率的源可用,在编码比特率始终下冲目标比特率或者超过某个阈值次数地下冲目标比特率的情况下,另一选择是增加视频分辨率。例如,在用户选择以360p分辨率观看视频,但是他或她的带宽允许以更高分辨率观看的情况下,可以将视频分辨率增加到用户可以在他或她的连接上对视频进行流传输的最大分辨率。
在双通编码中,用于对视频流的帧进行编码的第一通包括,例如通过检测由对与视频流的第一帧相对应的输入帧进行编码生成的比特数,基于恒定量化参数确定哪些帧可能太难或太容易编码。如果所生成的比特数指示输入帧太难或太容易,则编码器可在编码对应帧的第二通时调整视频流的分辨率。以这种方式,双通编码可以通过在第一通期间识别下冲和过冲的潜在情况并且进行必要的调整以在第二通上有效地编码视频流来防止大多数下冲和过冲。下冲或过冲的量可以指示每维度需要调整分辨率的程度。
现在参考图8,在操作802处,用于在双通编码中使用分辨率缩放以实现相对恒定的目标比特率的过程800通过设定目标比特率和QP的初始值而开始。在操作804处,使用所设定的目标比特率和QP值来接收和编码输入帧。响应于对输入帧进行编码,在操作806处生成比特数。比特数指示输入帧被编码的比特率。取决于所生成的比特的大小,过程800可继续至用于调整视频流的编码参数(例如,视频分辨率)的调整时期。在实施方式中,可以基于帧比特率是否落在指定范围之外来进行关于是否继续到调整时期的确定,在所述指定范围内,改变QP导致期望的视频质量(例如,没有关于分辨率的可见编译伪迹的视频流传输)。例如,如果帧比特率在目标比特率的100到200kbps内,则操作808可以确定不进行调整时期。在不进行调整的情况下,过程800继续至操作816,其中基于先前设定的QP值来生成编码的帧,该编码的帧随后在操作818处作为输出视频流的一部分而发送。在实施方式中,可使用标志来编译在操作808处的确定。
如果在操作808处确定需要进行对视频分辨率的调整,则过程800继续至操作810,其确定调整的必要性是否是由于输入帧编码比特率下冲或过冲目标比特率。在过冲的情况下,在操作812处,例如通过减小视频流的分辨率来调整一个或多个编码参数。在下冲的情况下,在操作814处,例如通过增加视频流的分辨率来调整一个或多个编码参数。
在实施方式中,可以使用百分比比特率偏差的加权逆的平方根,诸如Snew=√(1/(α*Bdev)),来确定对视频分辨率的调整,其中Snew表示分辨率的新的缩放每维比率,α表示加权参数,并且Bdev表示与比特率范围的偏差。例如,在对输入帧进行编码导致小于百分之二十的过冲并且加权参数被设定为一时,具有1280×720的分辨率的视频流的输入帧可以通过Snew=√(1/(1*1.2))=0.913被缩放,从而导致1168×657的新的流传输分辨率。类似地,在对输入帧进行编码导致百分之五十的严重下冲时,缩放比率可变为Snew=√(1/(1*0.5))=1.414。以这种方式,可以调整分辨率视频流,使得其以1810×1018进行编码。将加权参数α调整为高于1可以导致新的帧比特率被编码为更接近可接受范围的中间值(例如,100kbps到200kbps的范围内的150kbps)。
在对视频分辨率进行调整之后,过程800继续至操作816,其中对应于输入帧的编码的帧被编码为视频流的第二通的一部分。然后,在操作818处,将编码的帧作为输出视频流的一部分发送。
分辨率缩放可以提供超出上述那些的进一步的益处。例如,分辨率缩放可以提高尚未找到利用所建立的运动搜索窗口区域的用于帧间预测的可接受的运动矢量的编码器的性能。这通常由于帧内预测的过度使用而导致差的压缩。通过在这种情况下缩减视频流,因为存在较少的要编码的像素,所以比特率减小,并且视频流中的绝对运动量也减小。这可以提高搜索窗口的利用。
在实施方式中,并且响应于在操作810处确定下冲,操作814包括减小运动搜索区域的大小,其还可代替减小视频分辨率或作为减小视频分辨率的补充来完成。类似地,响应于在操作810处确定过冲,操作812包括增加运动搜索区域的大小来代替增加视频分辨率或作为增加视频分辨率的补充。在实施方式中,仅对于输入帧的某些颜色分量(例如,其亮度和/或色度像素值)进行对运动搜索区域的大小的改变。
在实施方式中,例如,响应于在操作804处对输入帧进行编码,可以识别对于运动搜索区域的一个或多个编码器限制。编码器限制可以指示其中由编码器找到的运动向量500超过阈值的情况,例如,其中视频流包括快速移动场景,其包括超过编码器500以给定分辨率充分表示场景的能力的运动量。在实施方式中,响应于编码器限制指示运动向量超过阈值值,可以减小视频流的分辨率。
在实施方式中,运动搜索区域的大小不经受改变。例如,在编码器500被实现为硬件编码器的情况下,运动搜索区域可以被静态地设定为N×M的大小,其中N和M可以是相同或不同的值。因此,如果视频流的分辨率高于N×M,则运动搜索区域可以仅覆盖输入帧的一部分。运动搜索区域的中点位置可以例如相对于要覆盖的输入帧的初始部分的初始参考位置进行限定(例如,要被编码的当前块或片的中点位置)。然而,在实施方式中,可以减小视频流的分辨率,以便例如通过使得运动搜索区域覆盖输入帧的较大部分来提高编码器500检测运动搜索区域内的运动的能力。如上文所讨论的,可以基于阈值或对于运动搜索区域的其它编码器限制,以这种方式(例如,作为在操作808处确定是否调整编码参数的一部分)做出减小分辨率的决定。减小分辨率导致基于输入帧的作为结果的由运动搜索区域覆盖的部分的参考位置来重置运动搜索区域的中点位置。类似地,在实施方式中,可以基于阈值或其它编码器限制来增加视频流的分辨率。例如,在分辨率低于运动搜索区域的大小(例如,其中运动搜索区域将覆盖超过整个输入帧的情况)的情况下,编码器500可以将视频流的分辨率增加为等于运动搜索区域的大小。因此,运动搜索区域的中点位置将在适当时位于或保持在输入帧的参考位置处。如本文所使用的,术语“中点”是指关于对应尺寸的中心位置。
尽管本文关于图8的二通编码论述了关于运动搜索区域的一个或多个编码器限制,但是,它们还具有在单通编码上下文中的应用,诸如关于图7所讨论的。例如,调整视频流的第一帧的编码参数可以包括识别对于运动搜索区域的编码器限制(例如,作为在操作708处确定触发调整的一部分)和基于编码器限制减少(或增加)视频流的分辨率。在实施方式中,以这种方式改变分辨率导致运动搜索区域的中点位置关于第一帧的作为结果由运动搜索区域覆盖的部分的参考位置被重置。
在编码器500是硬件编码器的另一个实施方式中,运动搜索的参数从块到块和帧到帧保持相同,除了运动搜索区域的中点位置随着正在被编码的帧的块改变。因此,当分辨率改变时,可以通过分辨率的改变来捕获更多或更少的运动。例如,当存在快速运动时,由于较低分辨率在相同搜索区域内捕获更多运动,所以改变分辨率可以提供帧内的某些块的更好匹配,并因此提供较低残差。
在过程700和800的初始操作中设定的目标比特率可以是经受波动的可变比特率。这种波动可能由流传输视频的用户的连接速度或网络连接类型的变化引起。例如,在用户最初通过变得不可用的WiFi连接来流传输视频时,视频流可以切换到LTE连接。由于每个网络连接类型可以指示其自己的用于在给定分辨率最佳地观看给定视频流的目标比特率,所以可能期望利用所公开的速率控制过程的实施方式用于可变目标比特率的单通编码和双通编码。
上文所描述的编码和解码的方面说明编码和解码技术的一些示例。然而,应当理解,作为权利要求中使用的那些术语的编码和解码可以意味着压缩、解压缩、变换、或任何其它数据的处理或改变。
词语“示例”在本文中用于表示用作示例、实例或说明。在本文中被描述为“示例”的任何方面或设计不必被解释为相对于其它方面或设计是优选的或有利的。相反,使用词语“示例”旨在以具体的方式呈现概念。如本申请中所使用的,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或者从上下文中清楚,否则“X包括A或B”旨在表示任何自然的包括性排列。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述实例下满足“X包括A或B”。此外,除非另有说明或从上下文中清楚地指示单数形式,否则本申请和所附权利要求中使用的冠词“一”和“一个”通常应被解释为意指“一个或多个”。此外,贯穿全文使用术语“实施方式”或“一个实施方式”并不旨在表示相同的实施例或实施方式,除非这样描述。
发送站202和/或接收站206(以及包括由编码器500和解码器600存储在其上和/或由此执行的算法、方法、指令等等)可以在硬件、软件或其任何组合中实现。硬件可以包括例如计算机、知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应当被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。此外,发送站202和接收站206的部分不一定必须以相同的方式实现。
此外,在一个方面,例如,发送站202或接收站206可以使用具有计算机程序的通用计算机或通用处理器来实现,所述计算机程序在被执行时执行本文所述的任何相应的方法、算法和/或指令。另外或替选地,例如,可以使用可以包含用于执行本文所述的任何方法、算法或指令的其它硬件的专用计算机/处理器。
发送站202和接收站206可以例如在视频会议系统中的计算机上实现。替选地,发送站202可以在服务器上实现,并且接收站206可以在与服务器分离的设备上实现,例如手持通信设备。在这种情况下,发送站202可以使用编码器500将内容编码为编码的视频信号,并将编码的视频信号发送到通信设备。继而,通信设备然后可以使用解码器600对编码的视频信号进行解码。替选地,通信设备可以解码本地存储在通信设备上的内容,例如,未由发送站202发送的内容。其它合适的发送以及接收实现方案是可用的。例如,接收站206可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器500的设备还可以包括解码器600。
此外,本发明的实施方式的全部或一部分可以采用可从例如有形计算机可用或计算机可读介质访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是能够例如有形地包含、存储、传送或传输所述程序以由任何处理器使用或与任何处理器结合使用的任何设备。所述介质可以是例如电子、磁性、光学、电磁或半导体器件。其它合适的介质也是可用的。
已经描述了上述实施例、实施方式和方面以便容易理解本发明,并且不限制本发明。相反,本发明旨在覆盖包括在所附权利要求的范围内的各种修改和等同布置,其范围符合最宽泛的解释,以包括法律允许的所有这样的修改和等同结构。
Claims (20)
1.一种用于实时视频编码器速率控制的装置,包括:
至少一个处理器,所述至少一个处理器被配置为执行在非有形存储介质中存储的指令以:
识别视频流的多个帧的第一帧;
以表示量化参数的第一比特率对所述第一帧进行编码;
响应于对所述第一帧进行编码,识别关于运动搜索区域的一个或多个编码器限制;
将所述第一比特率与所述第一帧的目标比特率进行比较,并将所述量化参数与最小量化阈值和最大量化阈值中的一个进行比较;
响应于将所述第一比特率与所述目标比特率进行比较并将所述量化参数与所述最小量化阈值和所述最大量化阈值中的所述一个进行比较,调整至少一个编码参数;
识别所述视频流的所述多个帧的第二帧;
使用所调整的至少一个编码参数以第二比特率对所述第二帧进行编码;以及
在输出比特流中发送所编码的第一帧和所编码的第二帧。
2.根据权利要求1所述的装置,其中,如果所述第一比特率小于所述目标比特率,并且所述量化参数大于所述最小量化阈值,则调整所述至少一个编码参数包括:
减小所述量化参数。
3.根据权利要求1所述的装置,其中,如果所述第一比特率小于所述目标比特率,并且所述量化参数小于或等于所述最小量化阈值,则调整所述至少一个编码参数包括:
增加所述视频流的分辨率;
增加所述量化参数;以及
基于所增加的分辨率调整所述最小量化阈值和所述最大量化阈值。
4.根据权利要求1所述的装置,其中,如果所述第一比特率大于所述目标比特率,并且所述量化参数小于所述最大量化阈值,则调整所述至少一个编码参数包括:
增加所述量化参数。
5.根据权利要求1所述的装置,其中,如果所述第一比特率大于所述目标比特率,并且所述量化参数大于或等于所述最大量化阈值,则调整所述至少一个编码参数包括:
减小所述视频流的分辨率;
减小所述量化参数;以及
基于所减小的分辨率调整所述最小量化阈值和所述最大量化阈值。
6.根据权利要求1所述的装置,其中,调整所述至少一个编码参数包括:
基于所述一个或多个编码器限制来减小所述视频流的分辨率;
以所减小的分辨率确定所述第一帧的参考位置;以及
基于所述第一帧的所述参考位置重置所述运动搜索区域的中点位置。
7.根据权利要求1所述的装置,其中,所述至少一个编码参数包括以下各项中的至少一个:所述视频流的分辨率、所述量化参数、所述最小量化阈值和所述最大量化阈值。
8.一种用于实时视频编码器速率控制的装置,包括:
至少一个处理器,所述至少一个处理器被配置为执行在非有形存储介质中存储的指令以:
识别视频流的多个帧的输入帧;
使用输入量化参数对所述输入帧进行编码;
响应于对所述输入帧进行编码,识别关于运动搜索区域的一个或多个编码器限制;
响应于对所述输入帧进行编码而生成比特数;
基于所述比特数和用于对所述输入帧进行编码的目标比特率来调整至少一个编码参数;
通过使用所述至少一个编码参数对所述输入帧进行编码来生成编码的帧;以及
在输出比特流中发送所述编码的帧。
9.根据权利要求8所述的装置,其中,如果响应于对所述输入帧进行编码而生成的所述比特数指示小于所述目标比特率的帧比特率,则调整所述至少一个编码参数包括增加所述视频流的分辨率,并且生成所述编码的帧包括以所增加的分辨率对所述输入帧进行编码。
10.根据权利要求8所述的装置,其中,如果响应于对所述输入帧进行编码而生成的所述比特数指示大于所述目标比特率的帧比特率,则调整所述至少一个编码参数包括减小所述视频流的分辨率,并且生成所述编码的帧包括以所减小的分辨率对所述输入帧进行编码。
11.根据权利要求8所述的装置,其中,调整所述至少一个编码参数包括:
基于所述比特数和所述目标比特率,使用标志来指示所述至少一个编码参数是否进行调整。
12.根据权利要求8所述的装置,其中,调整所述至少一个编码参数包括:
基于所述一个或多个编码器限制来减小所述视频流的分辨率;
以所减小的分辨率确定所述输入帧的参考位置;以及
基于所述输入帧的所述参考位置,重置所述运动搜索区域的中点位置。
13.根据权利要求8所述的装置,其中,所述至少一个编码参数包括以下各项中的至少一个:所述输入量化参数、编码量化参数和所述视频流的分辨率。
14.根据权利要求8所述的装置,其中,所述输入量化参数是常数。
15.一种用于实时视频编码器速率控制的装置,包括:
至少一个处理器,所述至少一个处理器被配置为执行在非有形存储介质中存储的指令以:
识别视频流的多个帧的输入帧;
以表示恒定量化参数的第一比特率对所述输入帧进行编码;
响应于对所述输入帧进行编码,识别关于运动搜索区域的一个或多个编码器限制;
将所述第一比特率与所述输入帧的最小目标比特率和最大目标比特率中的一个进行比较;
响应于将所述第一比特率与所述最小目标比特率和所述最大目标比特率中的所述一个进行比较,调整至少一个编码参数;
通过使用所述至少一个编码参数对所述输入帧进行编码来生成编码的帧;以及
在输出比特流中发送所述编码的帧。
16.根据权利要求15所述的装置,其中,如果所述第一比特率小于所述最小目标比特率,则调整所述至少一个编码参数包括增加所述视频流的分辨率,并且生成所述编码的帧包括以所增加的分辨率对所述输入帧进行编码。
17.根据权利要求15所述的装置,其中,如果所述第一比特率大于所述最大目标比特率,则调整所述至少一个编码参数包括减小所述视频流的分辨率,并且生成所述编码的帧包括以所减小的分辨率对所述输入帧进行编码。
18.根据权利要求15所述的装置,其中,调整所述至少一个编码参数包括:
基于指示对所述输入帧进行编码的所述第一比特率的比特数以及在所述最小目标比特率和所述最大目标比特率之间的目标比特率,使用标志来指示所述至少一个编码参数是否进行调整。
19.根据权利要求15所述的装置,其中,调整所述至少一个编码参数包括:
基于所述一个或多个编码器限制来减小所述视频流的分辨率;
以所减小的分辨率确定所述输入帧的参考位置;以及
基于所述输入帧的所述参考位置重置所述运动搜索区域的中点位置。
20.根据权利要求15所述的装置,其中,所述至少一个编码参数包括以下各项中的至少一个:所述恒定量化参数、所述最小目标比特率、所述最大目标比特率、编码量化参数和所述视频流的分辨率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/000,097 | 2016-01-19 | ||
US15/000,097 US10356406B2 (en) | 2016-01-19 | 2016-01-19 | Real-time video encoder rate control using dynamic resolution switching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107040781A true CN107040781A (zh) | 2017-08-11 |
CN107040781B CN107040781B (zh) | 2020-11-03 |
Family
ID=57822055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611225434.7A Active CN107040781B (zh) | 2016-01-19 | 2016-12-27 | 用于控制实时视频编码器速率的系统、方法和装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10356406B2 (zh) |
JP (1) | JP6714695B2 (zh) |
KR (1) | KR102118573B1 (zh) |
CN (1) | CN107040781B (zh) |
AU (1) | AU2016388357B2 (zh) |
CA (1) | CA3001672C (zh) |
DE (2) | DE102016125353A1 (zh) |
GB (1) | GB2546887B (zh) |
WO (1) | WO2017127213A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109819263A (zh) * | 2017-11-22 | 2019-05-28 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、计算机设备及存储介质 |
WO2019205831A1 (zh) * | 2018-04-27 | 2019-10-31 | 腾讯科技 (深圳) 有限公司 | 视频编码方法、装置、存储介质及设备 |
CN110692247A (zh) * | 2017-08-14 | 2020-01-14 | 谷歌有限责任公司 | 复合运动补偿的预测 |
CN111279700A (zh) * | 2017-09-29 | 2020-06-12 | 超威半导体公司 | 用于提高视频流稳健性的可调整的调制编码方案 |
CN111601109A (zh) * | 2020-05-13 | 2020-08-28 | 西安万像电子科技有限公司 | 图像数据的处理方法、装置和系统 |
CN111819846A (zh) * | 2018-11-26 | 2020-10-23 | 谷歌有限责任公司 | 安全和跨设备一致的视频压缩 |
CN113115107A (zh) * | 2021-04-15 | 2021-07-13 | 深圳鸿祥源科技有限公司 | 一种基于5g网络的手持视频采集终端系统 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3641273B1 (en) * | 2016-02-26 | 2023-11-01 | Livestreaming Sweden AB | Edge node control |
US10162936B2 (en) * | 2016-03-10 | 2018-12-25 | Ricoh Company, Ltd. | Secure real-time healthcare information streaming |
US10362307B2 (en) * | 2016-09-09 | 2019-07-23 | Hanwha Techwin Co., Ltd. | Quantization parameter determination method and image capture apparatus |
KR102358294B1 (ko) | 2017-04-21 | 2022-02-08 | 제니맥스 미디어 인크. | 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들 |
KR102315524B1 (ko) * | 2017-06-16 | 2021-10-21 | 한화테크윈 주식회사 | 영상의 비트레이트 조절 방법 및 영상 획득 장치 |
CN109151470B (zh) * | 2017-06-28 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 编码分辨率控制方法及终端 |
CN109151481B (zh) * | 2017-06-28 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 图片的传输和接收的方法、装置、系统、设备和介质 |
US11146608B2 (en) * | 2017-07-20 | 2021-10-12 | Disney Enterprises, Inc. | Frame-accurate video seeking via web browsers |
CN109413427B (zh) * | 2017-08-17 | 2022-04-08 | 腾讯科技(深圳)有限公司 | 一种视频帧编码方法及终端 |
US10659514B2 (en) | 2018-03-28 | 2020-05-19 | Arlo Technologies, Inc. | System for video monitoring with adaptive bitrate to sustain image quality |
CN110495174B (zh) * | 2018-04-04 | 2021-12-03 | 深圳市大疆创新科技有限公司 | 编码方法、装置、图像处理系统和计算机可读存储介质 |
CN108924553B (zh) * | 2018-06-20 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 视频编码、解码方法、装置、计算机设备和存储介质 |
CN108769681B (zh) * | 2018-06-20 | 2022-06-10 | 腾讯科技(深圳)有限公司 | 视频编码、解码方法、装置、计算机设备和存储介质 |
EP3857869A4 (en) * | 2018-09-28 | 2022-07-13 | INTEL Corporation | TRANSPORT ORDERED VIDEO CODING |
US10554975B1 (en) | 2018-09-30 | 2020-02-04 | Tencent America LLC | Method and apparatus for video coding |
CN110572654B (zh) * | 2019-09-27 | 2024-03-15 | 腾讯科技(深圳)有限公司 | 视频编码、解码方法和装置、存储介质及电子装置 |
CN113038136B (zh) * | 2019-12-25 | 2022-10-11 | 成都鼎桥通信技术有限公司 | 一种视频自适应调整方法和装置 |
FR3105904B1 (fr) | 2019-12-26 | 2023-03-10 | Thales Sa | Procédé d'allocation pour liaison bas-débit |
US20220312018A1 (en) * | 2021-03-23 | 2022-09-29 | Samsung Electronics Co., Ltd. | Electronic device to encode video with max quantum parameter control and the method thereof |
CN114172874B (zh) * | 2021-12-27 | 2024-07-30 | 上海商米科技集团股份有限公司 | 视频传输参数的自适应调节方法和系统 |
CN114650437B (zh) * | 2022-03-14 | 2024-04-16 | 百果园技术(新加坡)有限公司 | 一种视频发布方法、装置、设备及存储介质 |
CN114827669B (zh) * | 2022-03-31 | 2023-08-18 | 杭州网易智企科技有限公司 | 一种视频数据的传输方法、装置、介质及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1351517A2 (en) * | 2002-03-28 | 2003-10-08 | Sony United Kingdom Limited | Data compression for multi-generation images |
CN102006471A (zh) * | 2009-09-02 | 2011-04-06 | 索尼电脑娱乐公司 | 视频编码的图片级速率控制 |
US8077772B2 (en) * | 2007-11-09 | 2011-12-13 | Cisco Technology, Inc. | Coding background blocks in video coding that includes coding as skipped |
EP2579593A1 (en) * | 2011-10-04 | 2013-04-10 | Thomson Licensing | Adaptive quantisation for intra-encoded image blocks |
CN103686172A (zh) * | 2013-12-20 | 2014-03-26 | 电子科技大学 | 低延迟视频编码可变比特率码率控制方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3773585B2 (ja) * | 1996-03-29 | 2006-05-10 | 富士通株式会社 | 画像符号化装置 |
AU2003248178B2 (en) | 1997-12-23 | 2006-07-06 | Thomson Licensing S.A. | Low noise encoding and decoding apparatus and method |
US6192154B1 (en) | 1998-01-26 | 2001-02-20 | International Business Machines Corporation | Two-pass encoding method of digital motion video sequences for constant-or variable bit rate |
US6343098B1 (en) * | 1998-02-26 | 2002-01-29 | Lucent Technologies Inc. | Efficient rate control for multi-resolution video encoding |
US6650704B1 (en) | 1999-10-25 | 2003-11-18 | Irvine Sensors Corporation | Method of producing a high quality, high resolution image from a sequence of low quality, low resolution images that are undersampled and subject to jitter |
US6674796B1 (en) | 2000-02-14 | 2004-01-06 | Harmonic, Inc. | Statistical multiplexed video encoding for diverse video formats |
EP1139669A1 (en) * | 2000-03-28 | 2001-10-04 | STMicroelectronics S.r.l. | Coprocessor for motion estimation in digitised video sequence encoders |
JP4258694B2 (ja) * | 2000-10-06 | 2009-04-30 | 日本電気株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号化装置及びそれらを備えた動画像通信システム |
US20020071052A1 (en) | 2000-12-07 | 2002-06-13 | Tomoaki Itoh | Transmission rate control method |
US6785334B2 (en) | 2001-08-15 | 2004-08-31 | Koninklijke Philips Electronics N.V. | Method for transmission control in hybrid temporal-SNR fine granular video coding |
US7050502B2 (en) * | 2001-09-18 | 2006-05-23 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for motion vector detection and medium storing method program directed to the same |
GB2387055A (en) | 2002-03-28 | 2003-10-01 | Sony Uk Ltd | Data compression method including target data quantity allocation |
US6728315B2 (en) | 2002-07-24 | 2004-04-27 | Apple Computer, Inc. | Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations |
US7519115B2 (en) * | 2003-03-31 | 2009-04-14 | Duma Video, Inc. | Video compression method and apparatus |
US7352808B2 (en) * | 2004-01-29 | 2008-04-01 | International Business Machines Corporation | System and method for the dynamic resolution change for video encoding |
US7697608B2 (en) * | 2004-02-03 | 2010-04-13 | Sony Corporation | Scalable MPEG video/macro block rate control |
US20060056511A1 (en) * | 2004-08-27 | 2006-03-16 | University Of Victoria Innovation And Development Corporation | Flexible polygon motion estimating method and system |
KR100631743B1 (ko) | 2004-11-26 | 2006-10-11 | 삼성전자주식회사 | 스케일러블 비트스트림의 효율적 전송 방법 및 장치 |
JP4251291B2 (ja) | 2004-12-22 | 2009-04-08 | 日本ビクター株式会社 | 動画像符号化装置、動画像符号化方法 |
US7602997B2 (en) | 2005-01-19 | 2009-10-13 | The United States Of America As Represented By The Secretary Of The Army | Method of super-resolving images |
US7983341B2 (en) * | 2005-02-24 | 2011-07-19 | Ericsson Television Inc. | Statistical content block matching scheme for pre-processing in encoding and transcoding |
EP1860886A4 (en) * | 2005-03-14 | 2011-08-03 | Panasonic Corp | CODING DEVICE AND DYNAMIC IMAGE RECORDING SYSTEM WITH THE CODING DEVICE |
US8077775B2 (en) | 2006-05-12 | 2011-12-13 | Freescale Semiconductor, Inc. | System and method of adaptive rate control for a video encoder |
US8250618B2 (en) | 2006-09-18 | 2012-08-21 | Elemental Technologies, Inc. | Real-time network adaptive digital video encoding/decoding |
US20090110062A1 (en) * | 2007-10-30 | 2009-04-30 | The Hong Kong University Of Science And Technology | Optimal heegard-berger coding schemes |
US8139607B2 (en) | 2008-01-21 | 2012-03-20 | At&T Intellectual Property I, L.P. | Subscriber controllable bandwidth allocation |
MX2010012040A (es) | 2008-05-16 | 2010-12-06 | Sharp Kk | Aparato de grabacion de video. |
US8396114B2 (en) * | 2009-01-29 | 2013-03-12 | Microsoft Corporation | Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming |
US8270473B2 (en) * | 2009-06-12 | 2012-09-18 | Microsoft Corporation | Motion based dynamic resolution multiple bit rate video encoding |
JP2014510294A (ja) | 2010-12-21 | 2014-04-24 | シンディアント, インコーポレイテッド | 記憶容量低減器を有する空間光変調器 |
US9071841B2 (en) * | 2011-05-17 | 2015-06-30 | Microsoft Technology Licensing, Llc | Video transcoding with dynamically modifiable spatial resolution |
CN108989847B (zh) * | 2011-08-30 | 2021-03-09 | 帝威视有限公司 | 用于编码和流处理视频的系统和方法 |
US9094684B2 (en) | 2011-12-19 | 2015-07-28 | Google Technology Holdings LLC | Method for dual pass rate control video encoding |
US9578342B2 (en) * | 2013-06-24 | 2017-02-21 | Dialogic Corporation | Rate control algorithm for scalable video encoding with disposable P-frames |
-
2016
- 2016-01-19 US US15/000,097 patent/US10356406B2/en active Active
- 2016-12-20 GB GB1621731.7A patent/GB2546887B/en active Active
- 2016-12-22 KR KR1020187010575A patent/KR102118573B1/ko active IP Right Grant
- 2016-12-22 DE DE102016125353.7A patent/DE102016125353A1/de active Pending
- 2016-12-22 CA CA3001672A patent/CA3001672C/en active Active
- 2016-12-22 WO PCT/US2016/068216 patent/WO2017127213A1/en active Application Filing
- 2016-12-22 DE DE202016008214.1U patent/DE202016008214U1/de active Active
- 2016-12-22 AU AU2016388357A patent/AU2016388357B2/en active Active
- 2016-12-22 JP JP2018519380A patent/JP6714695B2/ja active Active
- 2016-12-27 CN CN201611225434.7A patent/CN107040781B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1351517A2 (en) * | 2002-03-28 | 2003-10-08 | Sony United Kingdom Limited | Data compression for multi-generation images |
US8077772B2 (en) * | 2007-11-09 | 2011-12-13 | Cisco Technology, Inc. | Coding background blocks in video coding that includes coding as skipped |
CN102006471A (zh) * | 2009-09-02 | 2011-04-06 | 索尼电脑娱乐公司 | 视频编码的图片级速率控制 |
CN103402099A (zh) * | 2009-09-02 | 2013-11-20 | 索尼电脑娱乐公司 | 视频编码的图片级速率控制 |
EP2579593A1 (en) * | 2011-10-04 | 2013-04-10 | Thomson Licensing | Adaptive quantisation for intra-encoded image blocks |
CN103686172A (zh) * | 2013-12-20 | 2014-03-26 | 电子科技大学 | 低延迟视频编码可变比特率码率控制方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110692247A (zh) * | 2017-08-14 | 2020-01-14 | 谷歌有限责任公司 | 复合运动补偿的预测 |
CN110692247B (zh) * | 2017-08-14 | 2023-08-08 | 谷歌有限责任公司 | 复合运动补偿的预测 |
CN111279700A (zh) * | 2017-09-29 | 2020-06-12 | 超威半导体公司 | 用于提高视频流稳健性的可调整的调制编码方案 |
CN111279700B (zh) * | 2017-09-29 | 2024-03-05 | 超威半导体公司 | 用于提高视频流稳健性的可调整的调制编码方案 |
WO2019100783A1 (zh) * | 2017-11-22 | 2019-05-31 | 腾讯科技(深圳)有限公司 | 视频编码方法、计算机设备及存储介质 |
CN109819263A (zh) * | 2017-11-22 | 2019-05-28 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、计算机设备及存储介质 |
US11032539B2 (en) | 2017-11-22 | 2021-06-08 | Tencent Technology (Shenzhen) Company Limited | Video coding method, computer device, and storage medium |
CN109819263B (zh) * | 2017-11-22 | 2022-08-19 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、计算机设备及存储介质 |
US11388403B2 (en) | 2018-04-27 | 2022-07-12 | Tencent Technology (Shenzhen) Company Limited | Video encoding method and apparatus, storage medium, and device |
WO2019205831A1 (zh) * | 2018-04-27 | 2019-10-31 | 腾讯科技 (深圳) 有限公司 | 视频编码方法、装置、存储介质及设备 |
CN111819846A (zh) * | 2018-11-26 | 2020-10-23 | 谷歌有限责任公司 | 安全和跨设备一致的视频压缩 |
CN111819846B (zh) * | 2018-11-26 | 2024-04-16 | 谷歌有限责任公司 | 安全和跨设备一致的视频压缩的方法、系统及计算机可读介质 |
CN111601109A (zh) * | 2020-05-13 | 2020-08-28 | 西安万像电子科技有限公司 | 图像数据的处理方法、装置和系统 |
CN113115107B (zh) * | 2021-04-15 | 2021-12-28 | 深圳鸿祥源科技有限公司 | 一种基于5g网络的手持视频采集终端系统 |
CN113115107A (zh) * | 2021-04-15 | 2021-07-13 | 深圳鸿祥源科技有限公司 | 一种基于5g网络的手持视频采集终端系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102118573B1 (ko) | 2020-06-03 |
CA3001672A1 (en) | 2017-07-27 |
GB2546887A (en) | 2017-08-02 |
DE202016008214U1 (de) | 2017-04-28 |
DE102016125353A1 (de) | 2017-07-20 |
JP2019501554A (ja) | 2019-01-17 |
CA3001672C (en) | 2020-07-14 |
AU2016388357B2 (en) | 2020-02-13 |
GB2546887B (en) | 2020-04-15 |
CN107040781B (zh) | 2020-11-03 |
KR20180054717A (ko) | 2018-05-24 |
US20170208328A1 (en) | 2017-07-20 |
GB201621731D0 (en) | 2017-02-01 |
US10356406B2 (en) | 2019-07-16 |
JP6714695B2 (ja) | 2020-06-24 |
AU2016388357A1 (en) | 2018-04-12 |
WO2017127213A1 (en) | 2017-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040781A (zh) | 使用动态分辨率切换的实时视频编码器速率控制 | |
US12047606B2 (en) | Transform kernel selection and entropy coding | |
CN111066326B (zh) | 机器学习视频处理系统和方法 | |
CN107534669B (zh) | 用于多用户视频会议的单一流传输方法 | |
US10321138B2 (en) | Adaptive video processing of an interactive environment | |
CN107027032B (zh) | 最后帧运动向量分区方法和装置 | |
CN110169068B (zh) | Dc系数符号代码化方案 | |
KR20220146647A (ko) | 품질-정규화된 비디오 트랜스코딩을 위한 동적 파라미터 선택 | |
US20220415039A1 (en) | Systems and Techniques for Retraining Models for Video Quality Assessment and for Transcoding Using the Retrained Models | |
US9210424B1 (en) | Adaptive prediction block size in video coding | |
US10820014B2 (en) | Compound motion-compensated prediction | |
WO2023082520A1 (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |