首页 / 专利库 / 版权及相关权 / 版权 / 版权管理 / 用于编码和交付视频内容的分布式体系结构

用于编码和交付视频内容的分布式体系结构

阅读:951发布:2021-07-22

专利汇可以提供用于编码和交付视频内容的分布式体系结构专利检索,专利查询,专利分析的服务。并且本 发明 公开涉及用于编码和交付视频内容的分布式体系结构,尤其是,提供了一种用于编码 视频流 的分离式体系结构。源 编码器 可以编码视频内容流以获得编码的位流和边信息流。边信息流包括表征视频内容流的每一 块 的速率和/或失真估计函数的信息。同样,每编码模式可以包括不同组的估计函数。编码的位流和边信息流可以被视频转码器接收,其中视频转码器根据客户 请求 的视频格式和位速率把编码的位流转码为客户请求的画面 分辨率 。边信息流允许转码器高效和简洁地为其输出位流执行速率控制,其中输出位流被发送到客户端设备。这种分离式体系结构对当前内容交付网络的运营商会尤其有用。,下面是用于编码和交付视频内容的分布式体系结构专利的具体信息内容。

1.一种系统,包括:
存储视频内容项集合的存储器,其中每个视频内容项包括对应的编码视频流和对应的边信息流;
一个或多个视频转码器设备;及
控制器,其中,响应于来自相应的多个用户设备的对视频内容项中给定一项的多个内容请求中的每一个,控制器被配置为分配一个或多个视频转码器设备中可用的一个来服务相应的用户设备,其中用户设备具有各自不同的视频处理能(VPC)配置,其中每个分配的视频转码器设备被配置为:
接收给定视频内容项的编码视频流和边信息流;及
利用边信息流并根据相应用户设备的VPC配置来转码编码视频流,以便获得相应的目标编码视频流;及
通过通信介质将相应的目标编码视频流发送到相应的用户设备。
2.如权利要求1所述的系统,其中给定视频内容项的编码视频流是给定源视频流的编码版本,其中边信息流包括表征给定源视频流的属性的元数据。
3.如权利要求2所述的系统,其中元数据包括给定内容项的编码视频流的每一的一个或多个候选运动向量。
4.如权利要求2所述的系统,其中元数据包括给定内容项的编码视频流的每一块的速率建模数据。
5.如权利要求2所述的系统,其中元数据包括给定内容项的编码视频流的每一块的失真建模数据。
6.如权利要求1所述的系统,其中通信介质是无线传输介质。
7.如权利要求6所述的系统,其中一个或多个视频转码器设备中的至少一个耦合到无线通信网络的基站或者合并作为该基站的一部分,其中所述用户设备中的一个或多个被配置用于与所述基站进行无线通信。
8.如权利要求1所述的系统,其中控制器被配置为把一个或多个视频转码器设备中的第一视频转码器设备在不同时间分配给用户设备中的不同用户设备。
9.如权利要求1所述的系统,还包括:
被配置为编码源视频流以产生内容项的相应内容项的源编码器,其中一个或多个视频转码器设备中的每一个都比源编码器有更高的能量效率,并且/或者比源编码器有更高的空间效率。
10.如权利要求1所述的系统,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个速率信息流,其中假定块预测基于相应的编码模式,则一个或多个速率信息流的每个速率信息流RISk表征对应的编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
11.如权利要求1所述的系统,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个失真信息流,其中假定块预测基于相应的编码模式,则一个或多个失真信息流的每个失真信息流DISk表征视频内容项的编码视频流的每一块的对应失真函数Dk(q),其中q是量化步长。
12.如权利要求1所述的系统,其中一个或多个视频转码器设备中的第一视频转码器设备被配置为通过以下执行所述转码:
解码编码视频流以获得解码视频流;
把解码视频流缩放到相应用户设备的目标画面分辨率,以便获得缩放的视频流;及利用边信息并根据相应用户设备的VPC配置来编码缩放的视频流,以便获得相应的目标编码视频流。
13.如权利要求12所述的系统,其中控制器被配置为:
从由第一视频转码器设备服务的用户设备接收报告,其中每个报告包括来自用户设备的分析信息;及
响应于每个报告,更新由第一视频转码器设备使用来编码缩放的视频流的目标位速率和/或目标画面分辨率。
14.如权利要求13所述的系统,其中分析信息包括关于第一视频转码器设备与用户设备之间的链路质量的信息。
15.如权利要求14所述的系统,其中控制器被配置为当关于链路质量的信息指示链路质量下降或提高时,分别减少或增加由第一视频转码器设备使用的目标位速率和/或目标画面分辨率。
16.如权利要求13所述的系统,其中分析信息包括关于从由第一视频转码器设备发送的相应目标编码视频流中恢复的视频的质量信息。
17.如权利要求16所述的系统,其中控制器被配置为当关于视频质量的信息指示视频质量下降或提高时,分别减少或增加由第一视频转码器设备使用的目标位速率和/或目标画面分辨率。
18.如权利要求12所述的系统,其中控制器被配置为:
从由第一视频转码器设备服务的用户设备接收报告,其中每个报告包括对用户设备的VPC配置的对应更新;及
响应于每个报告,更新由第一视频转码器设备使用来编码缩放的视频流的目标画面分辨率。
19.如权利要求1所述的系统,其中每个用户设备的VPC配置包括以下中的一个或多个的标识:
由用户设备请求的视频编码格式;及
由用户设备请求的目标画面分辨率。
20.如权利要求1所述的系统,其中相应用户设备的VPC配置跨M-维配置空间,其中M至少是二,其中M-维配置空间至少具有对应于视频格式选择的第一维度和对应于画面分辨率选择的第二维度。
21.如权利要求1所述的系统,其中控制器被配置为:
存储由一个或多个视频转码器设备中已分配用于服务用户设备中的第一用户设备的给定一个视频转码器设备所产生的目标编码视频流;及
响应于检测到第二用户设备具有与第一用户设备相同或相似的VPC配置,把存储的目标编码视频流的传输导向到第二用户设备。
22.一种用于向用户设备交付视频内容的方法,该方法包括:
在存储器中存储视频内容项集合,其中每个视频内容项包括对应的编码视频流和对应的边信息流;
响应于来自相应的多个远程用户设备的对视频内容项中给定一项的多个内容请求中的每一个,分配一个或多个视频转码器设备中可用的一个来服务相应的用户设备,其中用户设备具有各自不同的视频处理能力(VPC)配置;
利用每个分配的视频转码器设备来:
接收给定视频内容项的编码视频流和边信息流;
利用边信息流并根据相应用户设备的VPC配置来转码编码视频流,以便获得相应的目标编码视频流;及
通过通信介质将相应的目标编码视频流发送到相应的用户设备。
23.如权利要求22所述的方法,其中给定视频内容项的编码视频流是给定源视频流的编码版本,其中边信息流包括表征给定源视频流的属性的元数据。
24.如权利要求23所述的方法,其中元数据包括给定视频内容项的编码视频流的每一块的一个或多个候选运动向量。
25.如权利要求23所述的方法,其中元数据包括给定视频内容项的编码视频流的每一块的速率建模数据。
26.如权利要求23所述的方法,其中元数据包括给定视频内容项的编码视频流的每一块的失真建模数据。
27.如权利要求22所述的方法,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个速率信息流,其中假定块预测基于相应的编码模式,则一个或多个速率信息流的每个速率信息流RISk表征对应编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
28.如权利要求22所述的方法,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个失真信息流,其中假定块预测基于相应的编码模式,则一个或多个失真信息流的每个失真信息流DISk表征给定视频内容项的编码视频流的每一块的对应失真函数Dk(q),其中q是量化步长。
29.如权利要求22所述的方法,还包括:
编码源视频流以产生内容项的相应内容项,其中所述编码源视频流由源编码器执行,其中视频转码器设备中的每一个都比源编码器消耗更少的能量,并且比源编码器占用更少的空间。
30.如权利要求22所述的方法,还包括:
从由一个或多个视频转码器设备的第一视频转码器设备服务的用户设备接收报告,其中每个报告包括来自用户设备的分析信息;及
响应于每个报告,更新由第一视频转码器设备使用来执行编码视频流的所述转码的目标位速率和/或目标画面分辨率。
31.如权利要求30所述的方法,其中分析信息包括关于第一视频转码器设备与用户设备之间的链路质量的信息。
32.如权利要求31所述的方法,还包括:
当关于链路质量的信息指示链路质量下降或提高时,分别减少或增加由第一视频转码器设备使用的目标位速率和/或目标画面分辨率。
33.如权利要求30所述的方法,其中分析信息包括关于从由第一视频转码器设备发送的相应目标编码视频流中恢复的视频的质量信息。
34.如权利要求33所述的方法,还包括:
当关于视频质量的信息指示视频质量下降或提高时,分别减少或增加由第一视频转码器设备使用的目标位速率和/或目标画面分辨率。
35.如权利要求22所述的方法,还包括:
从由第一视频转码器设备服务的用户设备接收报告,其中每个报告包括对用户设备的VPC配置的对应更新;及
响应于每个报告,更新由第一视频转码器设备使用来编码缩放的视频流的目标画面分辨率。
36.如权利要求22所述的方法,其中每个用户设备的VPC配置包括由用户设备请求的视频编码格式的标识,其中执行编码视频流的所述转码以使得相应的目标编码视频流符合所请求的视频编码格式。
37.如权利要求22所述的方法,其中每个用户设备的VPC配置包括由用户设备请求的目标画面分辨率的标识,其中执行编码视频流的所述转码以使得相应的目标编码视频流具有所请求的目标画面分辨率。
38.如权利要求22所述的方法,其中每个用户设备的VPC配置包括由用户设备请求的目标位速率的标识,其中执行编码视频流的所述转码以使得相应的目标编码视频流具有大约等于所请求的目标位速率的平均输出位速率。
39.如权利要求22所述的方法,还包括:
存储由一个或多个视频转码器设备中已分配用于服务用户设备中的第一用户设备的给定一个视频转码器设备所产生的目标编码视频流;及
响应于检测到第二用户设备具有与第一用户设备相同或相似的VPC配置,把存储的目标编码视频流的传输导向到第二用户设备。
40.一种视频编码器,包括:
被配置为对输入视频流的多个块中的每一块执行操作的数字电路系统,其中该操作包括:
变换分别对应于一个或多个编码模式的多个预测残差,以便获得用于该一个或多个相应编码模式的一个或多个相应变换块;
对每个编码模式Mk,处理用于该编码模式Mk的相应预测残差和/或相应变换块,以获得用于该编码模式Mk的速率建模数据;
被配置为将边信息流发送到通信介质上的传输电路系统,其中边信息流包括用于每个编码模式和用于每一块的速率建模数据。
41.如权利要求40所述的视频编码器,其中速率建模数据包括表征用于一个或多个编码模式中的至少一个的速率估计函数Rk(q)的数据,其中q代表量化步长。
42.如权利要求40所述的视频编码器,其中该操作还包括:
对每个编码模式Mk,分别基于用于该编码模式的变换块的一个或多个量化版本而产生一个或多个重构残差,并且基于该一个或多个重构残差来产生用于该编码模式的失真建模数据,其中边信息流还包括用于每个编码模式和每一块的失真建模数据。
43.如权利要求42所述的视频编码器,其中失真建模数据包括表征用于一个或多个编码模式中的至少一个的失真估计函数Dk(q)的数据,其中q代表量化步长。
44.如权利要求40所述的视频编码器,其中数字电路系统还被配置为产生代表输入视频流的编码版本的编码视频流,其中传输电路系统被配置为将编码视频流发送到通信介质上。
45.如权利要求44所述的视频编码器,其中所述产生编码视频流包括对一个或多个变换块中的至少一个执行操作。
46.一种视频编码器,包括:
被配置为编码输入视频流以获得编码视频流的数字电路系统,其中所述编码包括产生表征输入视频流的属性的边信息流;及
被配置为发送编码视频流和边信息流的传输电路系统。
47.如权利要求46所述的视频编码器,其中边信息流包括表征输入视频流的速率和/或失真属性的数据。
48.如权利要求46所述的视频编码器,其中边信息流包括候选运动向量的流。
49.一种视频转码系统,包括:
解码器,被配置为接收和解码第一编码视频流以获得解码视频流;
缩放单元,被配置为把解码视频流缩放到目标画面分辨率以便获得缩放的视频流;及输出编码器,被配置为接收与第一编码视频流相关联的边信息流,并且利用边信息流编码缩放的视频流以便获得第二编码视频流。
50.如权利要求49所述的视频转码系统,其中第一编码视频流是源视频流的编码版本,其中边信息流包括表征源视频流的属性的元数据。
51.如权利要求49所述的视频转码系统,其中目标画面分辨率低于在第一编码视频流中隐含的画面分辨率。
52.如权利要求49所述的视频转码系统,其中边信息流包括对应于N个相应的编码模式的N个速率信息流,其中N大于或等于一,其中假定块预测基于相应的编码模式,则N个速率信息流的每个速率信息流RISk表征第一编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
53.如权利要求52所述的视频转码系统,其中对于第一编码视频流的给定编码画面,N=2,其中速率信息流RIS1对应于内编码模式,其中速率信息流RIS2对应于帧间编码模式。
54.如权利要求52所述的视频转码系统,其中每个速率信息流RISk利用与连续函数模型相关联的一个或多个拟合参数的对应集合来表征用于每一块的速率估计函数Rk(q)。
55.如权利要求49所述的视频转码系统,其中边信息流包括对应于N个相应的编码模式的N个失真信息流,其中N大于或等于一,其中假定块预测基于相应的编码模式,则N个失真信息流的每个失真信息流DISk表征第一编码视频流的每一块的对应失真估计函数Dk(q),其中q是量化步长。
56.如权利要求55所述的视频转码系统,其中对于第一编码视频流的给定编码画面,N=2,其中失真信息流DIS1对应于帧内编码模式,其中失真信息流DIS2对应于帧间编码模式。
57.如权利要求55所述的视频转码系统,其中每个失真信息流DISk利用与连续函数模型相关联的一个或多个拟合参数的对应集合来表征用于每一块的失真估计函数Dk(q)。
58.如权利要求49所述的视频编码器,其中输出编码器被配置为处理边信息流,以便获得用于缩放的视频流的每一帧的聚合速率估计函数RA(q),其中q代表量化步长。
59.如权利要求58所述的视频编码器,其中输出编码器被配置为还处理边信息流,以便获得用于缩放的视频流的每一帧的聚合失真估计函数DA(q)。
60.如权利要求49所述的视频转码系统,其中边信息流包括用于第一编码视频流的每一块的一个或多个候选运动向量,其中输出编码器被配置为基于该一个或多个候选运动向量为运动向量空间中受限于一个或多个邻域的每一块执行高分辨率运动向量精化。
61.如权利要求49所述的视频转码系统,其中所述解码器被配置为从第一编码视频流为每一块恢复运动向量作为所述解码第一编码视频流的一部分,其中输出编码器被配置为基于用于该块的运动向量为运动向量空间中受限于邻域的每一块执行运动向量精化。
62.如权利要求49所述的视频转码系统,其中边信息包括每一块的一个或多个候选运动向量,其中所述编码缩放的视频流包括从包括一个或多个候选运动向量的向量集合中选择运动向量。
63.如权利要求62所述的视频转码系统,其中所述向量集合还包括从第一编码视频流中恢复的解码运动向量。
64.如权利要求49所述的视频转码系统,还包括:
被配置为通过通信介质将第二编码视频流发送到远程解码器的传输电路系统。
65.如权利要求49所述的视频转码系统,其中输出编码器被配置为接收辅助信息并且将该辅助信息注入到缩放的视频流中,其中辅助信息包括以下的一个或多个:
商业实体的品牌信息;
广告信息;
数字版权管理(DRM)信息;
提供印功能的数字信息;
由内容提供商、内容交付服务提供商、客户或用户请求的定制特征。
66.如权利要求49所述的视频转码系统,其中解码器、缩放单元和输出编码器中的至少一个利用被配置为在并行处理器阵列上执行的软件来实现。
67.如权利要求49所述的视频转码系统,其中解码器、缩放单元和输出编码器在并行处理器阵列中的不同处理器子集上实现。

说明书全文

用于编码和交付视频内容的分布式体系结构

技术领域

[0001] 本发明一般地涉及视频内容的压缩和发布,并且具体地,涉及用于编码视频内容的分离式(split)体系结构和在该分离式体系结构中使用的速率控制机制。

背景技术

[0002] 对视频流服务的需求无处不在,并且在日益增加。因此,对能够压缩视频内容并通过有线和/或无线网络将视频内容高效地交付到用户设备的方法存在日益增长的需要。
[0003] 例如,对在无线网络中向用户设备(例如,移动设备)交付流视频服务存在巨大的需求。但是,(无线网络的)基站与移动设备之间的空中接口易受无线电干扰,并且由于环境中物体的移动、移动设备的移动、无线电流量的加载和拥塞等等,RF传播的质量动态地改变,因此,在基站与移动设备之间产生变化的信道条件。此外,无线网络中的数据通过RF频谱发送,其中RF频谱是有限的并且昂贵。因此,当信道条件很差时并且当移动设备的屏幕尺寸小于HD TV时,在大多数的位将可能在移动设备被丢弃或放弃的情况下,没有理由用全分辨率和高位速率以一体适用(one-size-fits-all)的位流发送。存在对以下机制的需要:即,以适于RF信道的带宽有限属性以及信道条件的变化性的方式将流视频交付到移动设备的机制。
[0004] 作为另一个例子,对减轻由媒体供应商和内容交付网络在向终端用户交付视频内容中所经受的负担存在需要。内容交付网络(CDN)可以维护高速缓存视频内容标题(content title)并在需要时将内容标题交付给用户的服务器。但是,用户设备一般地具有广泛不同的视频处理能配置,例如,对画面分辨率和视频格式的不同要求。此外,对于给定的用户设备,随着信道条件的变化,目标位速率会动态地改变。因此,CDN必须维护(或者能够访问)给定内容标题的大量拷贝,即,对用户设备配置和目标位速率的每种可能性组合有一个拷贝。因此,存储器存储成本对于CDN运营商成为问题。而且,当用户设备请求给定的内容标题并且适于所请求的配置和位速率的拷贝在服务器的高速缓存中不存在时,该拷贝必须从中央储存库(repository)(例如,从诸如Netflix或Amazon的媒体供应商)下载。由于内容标题、用户设备配置以及位速率的组合数量非常大,高速缓存缺失(cache miss)频繁发生,所以需要频繁地从例如服务器群的中央储存库中下载。因此,下载流量的成本对CDN运营商和/或媒体供应商来说成为问题。因此,对能够以成本有效的方式向用户交付视频内容的机制存在需要。
[0005] 视频内容以压缩位流的形式交付给每个用户。视频编码器用于压缩定义视频内容的源视频流。由于源视频序列的动态复杂性,视频编码器通常需要应用速率控制。换句话说,视频编码器需要动态地控制压缩过程,以便控制压缩位流的输出位速率。此外,在流视频服务的环境下,速率控制需要适应性强,以支持根据编码器与远程解码器之间的动态网络条件变化的目标位速率。因此,对能够以计算高效的方式执行速率控制的视频编码器和/或转码器存在需要。

发明内容

[0006] 本文所公开的系统、方法和体系结构可以用在各种各样的环境和应用中。
[0007] 在一个所公开的实施例中,网络边缘转码器可以用来编码并且在无线网络中将数据流传输到用户设备(例如,移动设备)。网络边缘转码器可位于或者靠近(例如,耦合到)基站,并且可以被配置为将高质量和/或高清晰的第一编码视频流转码到为当前正在被服务的移动设备定制(例如,按照诸如画面尺寸、视频格式和位速率的一个或多个因素)的第二编码视频流。此外,网络边缘转码器可以被配置为响应于传输信道的条件变化、接收到的视频质量的变化和/或移动设备配置的变化而动态地控制第二编码视频流的位速率。这些定制和动态控制的能力在无线网络的环境中具有非常大的经济效益。采用这种网络边缘转码器在“网络边缘”定制用户位流的网络体系结构避免了使中的服务器群负担过重。移动设备可以周期性地向基站发回信息(分析),使得网络边缘转码器能够相应地实时优化位流,以实现有限RF频谱的最优利用。
[0008] 在一些实施例中,可以有两种类型返回到基站的分析:无线电分析和视频分析。无线电分析和视频分析可以用于,例如,通过边缘转码器和/或基站进行有效的速率控制。无线电分析可以包括接收在移动设备的参考信号的信号强度、功率和质量。无线电分析可以用来确定在给定的信道条件下用于向用户设备进行可靠传输的最优位速率。(基站可以把参考信号嵌入在它向移动设备的传输中,以促进这种测量。)视频分析可以包括缓冲区充满状态或从位流解码过程中检测到的错误率。视频分析可以用来确定在由信道条件所施加的约束下交付最好用户体验所需的最优(通常最小)位速率。用于分析的设计约束可以包括由移动设备执行以产生分析的处理的最小化,以及分析的数据大小的最小化,以节省基站(BS)与移动设备之间的信令带宽。
[0009] 除了节省无线带宽,还期望减少需要从服务器群(持有所有的视频内容)发送到网络边缘的数据量。通过把转码功能转移到网络边缘并且利用在服务器群的视频编码器来产生内容标题的编码版本,无论用于将数据交付到用户设备的通信介质是有线还是无线,它都减少了经由互联网的数据流量以及云服务器的存储需要。
[0010] 如上所述,网络边缘转码器编码编码视频流并且定制用于给定用户设备的特定配置的那个流。编码视频流通过视频编码器从源视频流中产生。视频编码器还可以产生边信息,边信息在网络边缘转码器为用户设备转码编码视频流的行为中减轻了网络边缘转码器上的负担。边信息可以连同编码视频流一起被发送到网络边缘转码器(或使其对网络边缘转码器可用)。
[0011] 在一个公开的实施例中,视频编码器可以包括数字电路系统和传输电路系统。
[0012] 数字电路系统可以被配置为对输入视频流的每一执行操作,操作包括:(a)接收分别对应于多个编码模式的多个预测残差;(b)变换预测残差以获得用于相应编码模式的相应变换块;及(c)对每个编码模式Mk,利用量化步长q的一个或多个值中的每一个量化用于编码模式Mk的变换块,以获得变换块的一个或多个量化版本,并且处理包括变换块的一个或多个量化版本的数据集合,以获得表征用于编码模式Mk的速率估计函数Rk(q)的主速率建模数据。
[0013] 传输电路系统可以被配置为把边信息流发送到通信介质上,其中边信息流包括用于每个编码模式和用于每一块的主建模数据。
[0014] 在另一个公开的实施例中,视频转码系统可以包括解码器、缩放单元和输出编码器。
[0015] 编码器可以被配置为接收和解码第一编码视频流,以获得解码的视频流。
[0016] 缩放单元可以被配置为把解码的视频流缩放成目标画面分辨率,以便获得缩放的视频流。
[0017] 输出编码器可以被配置为接收与第一编码视频流相关联的边信息流,并且利用边信息流编码缩放的视频流,以便获得第二编码视频流。
[0018] 第一编码视频流可以解释为源视频流的编码版本。边信息流可以包括表征源视频流的属性的元数据。例如,边信息流可以包括表征源视频流中块的速率和/或失真属性的信息。作为另一个例子,边信息可以包括用于源视频流中的块的运动向量。边信息流可以被输出编码器使用,以用计算高效的方式做出最优(或接近最优)的编码决定,例如,关于为给定块使用哪个编码模式,或者为给定块使用什么量化步长值,或者对于给定块,哪一个或多个运动向量可能给出最优的间预测等的决定。
[0019] 在一些实施例中,边信息流包括对应于N个相应编码模式的N个速率信息流,其中N大于或等于一,其中假定块预测基于相应的编码模式,则N个速率信息流的每个速率信息流RISk表征第一编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
[0020] 在还有的另一个公开实施例中,系统可以包括高速缓存、多个视频转码器设备以及控制器
[0021] 高速缓存存储包括第一视频内容项的视频内容项集合,其中每个视频内容项包括对应的编码视频流和对应的边信息流,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个速率信息流,其中假定块预测基于相应的编码模式,则一个或多个速率信息流的每个速率信息流RISk表征对应编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
[0022] 响应于来自相应的多个用户设备对第一视频内容项的多个内容请求中的每一个,控制器可以被配置为分配视频转码器设备中可用的一个来服务相应的用户设备,其中用户设备具有各自不同的视频处理能力(VPC)配置。
[0023] 每个分配的视频转码器设备可以被配置为:(a)从高速缓存接收第一内容项的编码视频流和边信息流;(b)利用边信息流并根据相应用户设备的VPC配置转码编码视频流,以便获得相应的目标编码视频流;及(c)通过通信介质将相应的目标编码视频流发送到相应的用户设备。
[0024] 鉴于以下本文所呈现的方法的详细描述,对本领域普通技术人员来说,这些及其它特征和优点将变得显而易见。附图说明
[0025] 当下文的详细描述结合以下示图进行考虑时,可以获得对本发明更好的理解,其中:
[0026] 图1说明用于将视频内容交付给用户设备的系统100的一个实施例。
[0027] 图2说明用于将视频内容交付给用户设备的系统200的一个实施例。
[0028] 图3说明用于将视频内容交付给用户设备的系统300的实施例。
[0029] 图4说明网络边缘转码器设备的一个实施例。
[0030] 图5说明用于将视频内容交付给用户设备的体系结构500的一个实施例,包括夹层(mezzanine)编码器510和网络边缘转码器520。
[0031] 图6说明体系结构500的另一个实施例,其中夹层编码器510产生边信息流以及夹层位流。网络边缘转码器520在它的编码过程中使用该边信息。
[0032] 图7说明视频编码器700的一个实施例。
[0033] 图7B说明产生速率估计函数的过程的例子。
[0034] 图7C说明用于计算在确定速率估计函数中使用的参数的方法750。
[0035] 图7D说明产生失真估计函数的过程的例子。
[0036] 图8说明产生主失真建模数据以及主速率建模数据的视频编码器700的实施例。
[0037] 图9说明产生速率建模数据915的视频编码器900的实施例。
[0038] 图10说明视频转码器系统1000的一个实施例。
[0039] 图11说明用于在画面的级别计算速率对λ函数的方法1100的一个实施例。
[0040] 图12根据一组实施例说明集成的编码器或网络边缘转码器的第二部分。
[0041] 图13说明视频编码器的第一部分的一个实施例。
[0042] 图14说明作为函数量化步长的成本函数J=λR+D的例子。
[0043] 图15说明作为速率的函数的失真的例子。
[0044] 图16说明基于实际画面尺寸的缓冲区模型更新过程的实施例。
[0045] 图17说明基于实际和临时画面尺寸的缓冲区模型更新过程的实施例。
[0046] 虽然本发明很容易进行各种修改与替换形式,但是其具体实施例通过例子在图中示出并且在本文具体描述。但是,应当理解,示图以及对其的具体描述不是要把本发明限定到所公开的特定形式,而是相反,本发明要涵盖属于如由所附权利要求所定义的本发明主旨与范围内的所有修改、等价物以及备选方案。

具体实施方式

[0047] 通过引用结合
[0048] 以下参考通用引用被完整地结合于此,就如同是在本文中全部和完全进行了阐述:
[0049] 于2012年6月12日提交的标题为“Rate Control for Video Compression”的美国临时申请序列No.61/658,761。
[0050] 于2008年8月19日发布的标题为“Processing System With Interspersed Stall Propagating Processors and Communication Elements” 的 美 国 专 利No.7,415,594。
[0051] 于2012年4月3日发布的标题为“Mobile Television Broadcast System”的美国专利No.8,151,305。
[0052] Gary J.Sullivan 和 Thomas Wiegand,“Rate-distortion optimization for video compression”,IEEE Signal Processing Magazine,1998年11月,pp.74-90。
[0053] Xiang Li等人,“Laplace distribution-based Lagrangian rate distortion optimization for Hybrid Video Coding”,IEEE Trans.Circuits and Systems for Video Technology,vol.19,no.2,pp.193-205。
[0054] 技术参考
[0055] J.Choi和D.Park,“A stable feedback control of the buffer state using the controlled Lagrange multiplier method”,IEEE Trans.Image Processing,vol.3,no.5,pp.546-558,1994年9月。
[0056] K.-P.Lim,G.Sullivan,T.Wiegand,“Text description of joint model reference encoding methods and decoding concealment methods”Joint Video Team of ISO/IEC MPEG and ITU-T VCEG Document,JVT-X101,日内瓦,2007年6月。
[0057] Loren Merritt 和 Rahul Vanam,“Improved rate control and Motion Estimation for H.264Encoder”,Image Processing,2007,ICIP 2007.Vol.5,V-309–V-312页。
[0058] Thomas Wiegand,Michael Lightstone,Debargha Mukherjee,T.George Campbell,Sanjit K.Mitra,“Rate-Distortion Optimized Mode Selection for Very Low Bit Rate Video Coding and the Emerging H.263Standard”Circuits and Systems for Video Technology,IEEE Transactions on(Volume:6,Issue:2),1996年4月,pp.182–190。
[0059] Liang-jin Lin,Antonio Ortega,“Bit-Rate Control Using Piecewise Approximated Rate-Distortion Characteristics”Circuits and Systems for Video Technology,IEEE Transactions on(Volume:8,Issue:4),1996年8月,pp.446–459。
[0060] L-J Lin,A Ortega,C-C J Kuo,“A gradient-based rate control algorithm with applications to MPEG video”,Image Processing,1995.Proceedings.,International Conference on(Volume:3),华盛顿,DC,23-261995年10月,pp.392–395。
[0061] 术语
[0062] 以下是在本申请中使用的术语表:
[0063] 存储器介质–各种类型的存储器设备或存储设备中的任一种。术语“存储器介质”要包括安装介质,例如,CD-ROM、软盘104或带式设备;计算机系统存储器或随机访问存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM,等等;诸如闪存、磁介质的非易失性存储器,例如硬盘或光存储;寄存器或其它类似类型的存储器元件,等等。存储器介质也可以包括其它类型的存储器或其组合。此外,存储器介质可以位于在其中执行程序的第一计算机中,或者可以位于通过诸如因特网的网络连接到第一计算机的第二个不同的计算机中。在后者的情况下,第二计算机可以向第一计算机提供用于执行的程序指令。术语“存储器介质”可以包括两种或更多种的存储器介质,这些存储器介质可以驻存在不同的位置,例如,驻存在通过网络连接的不同的计算机中。
[0064] 可编程硬件元件–包括各种硬件设备,其中硬件设备包括经可编程互连连接的多个可编程功能块。例子包括FPGA(现场可编程阵列)、PLD(可编程逻辑器件)、FPOA(现场可编程对象阵列)和CPLD(复杂PLD)。可编程功能块的范围可以从细粒度(组合逻辑或查找表)到粗粒度(算法逻辑单元或处理器内核)变化。可编程硬件元件也可称为“可重构逻辑”。
[0065] 软件程序-术语“软件程序”要包括其普通含义的全部范围,并且包括可以存储在存储器介质中并由处理器执行的任意类型的程序指令、代码、脚本和/或数据、或其组合。示例性软件程序包括用基于文本的编程语言编写的程序,编程语言诸如C、C++、PASCAL、FORTRAN、COBOL、JAVA、汇编语言等;图形程序(用图形化编程语言编写的程序);汇编语言程序;已经被编译成机器语言的程序;脚本;及其它类型的可执行软件。软件程序可以包括以某种方式互操作的两个或更多个软件程序。注意,本文中所描述的各种实施例可以由计算机或软件程序来实现。软件程序可以作为程序指令存储在存储器介质上。
[0066] 硬件配置程序-可用于编程或配置可编程硬件元件的程序,例如,网表或位文件。
[0067] 程序-术语“程序”要包括其普通含义的全部范围。术语“程序”包括:1)可存储在存储器中并且可被处理器执行的软件程序,或2)可用于配置可编程硬件元件的硬件配置程序。
[0068] 计算机系统-各种类型的计算或处理系统中的任一种,该计算或处理系统包括个人计算机系统(PC)、大型计算机系统、工作站、网络设备、因特网设备、个人数字助理(PDA)、电视系统、网格计算系统、或其它设备,或设备的组合。通常,术语“计算机系统”可广义地定义为包含具有至少一个执行存储器介质中的指令的处理器的任何设备(或设备的组合)。
[0069] 自动地-指由计算机系统(例如,由计算机系统执行的软件)或设备(例如,电路系统、可编程硬件元件、ASIC等)执行的动作或操作,而无需直接规定或执行动作或操作的用户输入。因此,术语“自动地”是相对于被用户手动地执行或规定的操作,其中用户提供输入来直接地执行操作。自动过程可以由用户提供的输入发起,但是“自动地”执行的后续动作不由用户来规定,即,不被“手动地”执行,其中用户规定每个要执行的动作。例如,通过选择每个字段并提供规定信息的输入(例如,通过键入信息、选择复选框、单项选择等)填写电子表格的用户在手动地填写表格,即使计算机系统响应于用户的动作必须更新该表格。表格可以由计算机系统自动地填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表格的字段并填充表格,而无需给字段规定答案的任何用户输入。如以上所指出的,用户可以调用表格的自动填充,但不参与表格的实际填充(例如,用户没有手动地对字段规定答案,而是这些字段被自动地完成)。本说明书提供了响应于用户已采取的行动而自动执行的操作的各种示例。
[0070] 块:画面的编码单元。例如,在AVC/H.264中,块可以理解为宏块。作为另一个例子,在HEVC/H.265中,块可以理解为编码树单元(CTU)。
[0071] 速率:在画面的最终位流中与块或画面相关联的位的数目。
[0072] 失真:可以理解为重构的图像块(在DCT、量化、逆量化、逆DCT之后)与源图像块之间的平方误差之和(SSE)。也可以使用除SSE之外的其它失真测量。
[0073] 残差块:预测的块与源图像块之间的差异块。
[0074] 在以下的描述中,阐述许多具体细节,以提供对本文所呈现的方法和机制的透彻理解。但是,本领域普通技术人员应该认识到,在没有这些具体细节的情况下,也可以实践各种实施例。在一些实例中,没有详细地示出众所周知的结构、组件、信号和技术,以避免模糊本文所描述的方法。应当理解,为了说明的简洁和清晰起见,图中所示的元件没有必要按比例绘制。例如,一些元件的尺寸可能相对于其它元件被夸大。
[0075] 系统100
[0076] 在一组实施例中,系统100可以如图1中所示进行配置。系统100可以在各种各样环境和应用中使用。在一个应用中,系统100可以用作内容交付网络(CDN)的一部分。系统100可以包括存储器110、一个或多个视频转码器设备VTD1、VTD2、...、VTDNd的集合120以及控制器130。Nd表示一个或多个视频转码器设备的数量。(系统100也可以包括以上和以下结合图2-17所描述的特征、元件和实施例的任何子集)。该一个或多个视频转码器设备可以如以下各种描述的那样进行配置。
[0077] 在一些实施例中,可以在地理上分布存储器、一个或多个视频转码器设备及控制器。例如,在一个实施例中,存储器可以位于一个地理位置,而一个或多个视频转码器设备在另一个地理位置。在这个实施例中,控制器可以位于与一个或多个视频转码器设备相同的位置,或者可替代地,位于与存储器相同的位置,或者,作为另一种替代方案,在两个位置之间进行拆分,或者,作为还有的另一种替代方案,位于第三地理位置。
[0078] 在一些实施例中,存储器、一个或多个视频转码器设备及控制器在地理上位于同一位置。例如,那些元件可以配置在同一盒子或底盘或电子机架中,或者,作为同一服务器群的一部分,或者,作为同一电子板的一部分,或者作为同一集成电路的一部分。
[0079] 在一些实施例中,一个或多个视频转码器设备和/或控制器可以位于或靠近无线网络的基站(例如,耦合到基站或作为其的一部分并入)。每个视频转码器设备可以为基站邻域(例如,蜂窝小区)中用户设备中的相应一个产生定制的用户位流。基站可以例如利用任意的各种常规多路复用技术把定制的用户位流多路复用到发送信号中,并且将发送信号发送到空间中。每个用户设备都可以接收到该发送信号并且从接收到的发送信号中恢复适当的一个定制的用户位流。
[0080] 在一些实施例中,CDN运营商可以采用多个系统100的拷贝,这些拷贝是分布式的,以覆盖服务的地理地区或区域。
[0081] 存储器110可以存储视频内容项集合。每个视频内容项可以包括对应的编码视频流和对应的边信息流。在一些实施例中,存储器110可以包括持久性或非易失性存储器存储装置,诸如硬盘驱动器或闪速存储器,和/或,瞬态存储器存储装置,诸如SRAM、DRAM等。在一些实施例中,存储器110可以充当用于视频内容的高速缓存。
[0082] 在这部分中,我们将重点介绍当多个用户设备请求同一视频内容项时系统100如何响应。但是,应该理解,在更一般的情况下,用户设备可以请求内容项的任意或随机的项。受欢迎的那些内容项可能比比较不受欢迎的内容项具有每单位时间更多的请求。因此,可能多个用户设备会请求同一内容项。
[0083] 响应于来自相应的多个用户设备UD1、UD2、...、UDNu对给定视频内容项的多个内容请求中的每一个,控制器130可以被配置为分配一个或多个视频转码器设备中可用的一个来服务相应的用户设备。用户设备可以具有各自不同的视频处理能力(VPC)配置。每个分配的视频转码器设备可以被配置为:(1)例如从存储器中接收给定内容项的编码视频流和边信息流;(2)利用边信息流并根据相应用户设备的VPC配置转码编码视频流,以便获得相应的目标编码视频流;及(3)通过通信介质140(诸如,无线传输介质、或无线网络、或有线网络、或有线与无线网络的组合、或因特网)将相应的目标编码视频流发送到相应的用户设备。特别地,注意,系统100能够从视频内容项的单个高速缓存拷贝服务多个不同配置的用户设备。一个或多个视频转码器设备为相应的用户设备处理目标编码视频流的定制。因此,没有必要为了支持用户设备而高速缓存视频内容项的在目标画面分辨率、目标位速率和目标视频格式的不同组合下多个拷贝。这使得在高速缓存110中可存储更大量的视频内容项,而且显著降低高速缓存缺失的概率。(当用户设备请求存储器110中不存在的视频内容项时,称为发生了高速缓存缺失。)
[0084] 当对于给定的所请求的内容项发生高速缓存缺失时,系统100可能需要从中央内容储存库(或媒体源)中下载内容项。中央内容储存库与系统100之间的信道可能由除CDN运营商之外的其它实体所拥有。(例如,信道可以是因特网)。因此,可能存在与通过信道下载内容相关联的成本。高速缓存缺失概率的降低意味着从中央储存库的下载流量降低,并因此降低了成本。
[0085] 在一些实施例中,给定内容项的编码视频流可以解释为给定源视频流的编码版本。边信息流可以包括表征给定源视频流的属性的元数据。例如,元数据可以包括编码视频流的每一块的一个或多个候选运动向量。作为另一个例子,元数据可以包括编码视频流的每一块的速率建模数据。作为还有的另一个实施例,元数据可以包括给定内容项的编码视频流的每一块的失真建模数据。
[0086] 在一些实施例中,通信介质140可以是无线传输介质或无线网络的空中接口。在一个实施例中,一个或多个视频转码器设备中的至少一个耦合到无线通信网络的基站(或接入点)或者与基站(或接入点)结合作为其一部分。用户设备中的一个或多个(或全部)可以被配置为与基站进行无线通信。用户设备可以经来自基站的无线传输接收它们相应的目标编码视频流。用户设备中的一些或者全部可以是移动设备。
[0087] 控制器130可以被配置为把一个或多个视频转码器设备中给定的一个在不同时间分配给用户设备中不同的设备。例如,当视频转码器设备完成对第一用户设备的服务时,它可以变得可用于服务第二用户设备。因此,即使在只包括一个视频转码器设备的系统100的实施例中,也实现了从内容项的单个存储的拷贝服务多个不同配置的用户设备的好处。
[0088] 在一些实施例中,系统100也可以包括源编码器。源编码器可以被配置为编码源视频流,以产生内容项的相应项。一个或多个视频转码器设备中的每一个都可以比源编码器有更高的能量效率,并且/或者比源编码器有更高的空间效率。在一些实施例中,内容项在交付到用户设备之前不必要存储在存储器110中。例如,内容项可以与实时事件相联系进行交付。因此,视频内容项可以从源编码器流传输到视频转码器设备中被分配的一个,并且然后立即进行转码并发送到用户设备。
[0089] 在一些实施例中,每个视频内容项的边信息流可以包括对应于一个或多个相应编码模式的一个或多个速率信息流。(该一个或多个编码模式可以包括一个或多个帧间模式,和/或一个或多个帧内模式)。假定块预测基于相应的编码模式,则一个或多个速率信息流的每个速率信息流RISk可以表征为对应编码视频流的每一块的对应速率估计函数Rk(q)。变量q是量化步长。
[0090] 在一些实施例中,每个视频内容项的边信息流可以包括对应于一个或多个相应编码模式的一个或多个失真信息流。假定块预测基于相应的编码模式,则一个或多个失真信息流的每个失真信息流DISk可以表征视频内容项的编码视频流的每一块的对应失真函数Dk(q)。
[0091] 在一些实施例中,视频转码器设备中的给定一个(或每个)可以被配置为通过以下执行转码编码视频流的动作:解码编码视频流以获得解码的视频流;把解码的视频流缩放成相应用户设备的目标画面分辨率,以便获得缩放的视频流;并且利用边信息并根据相应的用户设备的VPC配置编码缩放的视频流,以便获得相应的目标编码视频流。
[0092] 在一些实施例中,给定的视频转码器设备可以被配置为:通过最小化由标量值λ参数化的拉格朗日速率-失真函数来执行所述缩放的视频流的编码;并且利用边信息动态地调整标量值λ和相应的目标编码视频流的输出位速率,以防止编码画面缓冲区的溢出和下溢,其中编码画面缓冲区在相应的用户设备接收相应的目标编码视频流。
[0093] 在一些实施例中,给定的视频转码器设备可以被配置为:如果相应的目标编码视频流维持在目标位速率,则计算编码的图片缓冲区的估计占用率与编码图片缓冲区的理论占用率之间的误差;并且为了减小误差幅度,执行所述标量值λ的动态调整。
[0094] 在一些实施例中,控制器130可以被配置为:从由给定的视频转码器设备服务的用户设备接收消息或报告(例如,分析),其中每个报告包括来自用户设备的分析信息;并且响应于每个报告,更新由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率,以编码缩放的视频流。
[0095] 在一些实施例中,分析信息可以包括关于给定的视频转码器设备与用户设备之间的链路质量的信息。例如,链路质量信息可以包括以下的一个或多个:位和/或分组误差率、吞吐量、接收到的信号强度和通信延迟。控制器130可以被配置为当关于链路质量的信息指示链路质量下降或提高时,分别减少或增加由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率。
[0096] 在一些实施例中,分析信息包括关于从由视频转码器设备发送的目标编码视频流中(由用户设备)恢复的视频的质量信息。(视频质量信息的例子可能包括丢弃帧的指示)。控制器可以被配置为当关于视频质量的信息指示视频质量下降或提高时,分别减少或增加由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率。在一个实施例中,视频质量的报告可以与链路质量的报告并行进行。
[0097] 在一些实施例中,控制器可以被配置为:从由给定的视频转码器设备服务的用户设备接收报告,其中每个报告包括对用户设备的VPC配置的对应更新;并且响应于每个报告,更新由第一视频转码器设备使用的目标画面分辨率来编码缩放的视频流。(例如,VPC配置更新可以包括对用户设备可接受的当前目标画面分辨率)。
[0098] 在一些实施例中,每个用户设备的VPC配置可以包括以下的一个或多个的标识:由用户设备请求的视频编码格式;及由用户设备请求的目标画面分辨率。
[0099] 在一些实施例中,相应的用户设备的VPC配置可以跨M-维的配置空间,其中M至少是二。M-维配置空间可以至少具有用于要被用户设备接收的目标编码视频流的对应于视频格式选择的第一维度和对应于画面分辨率选择的第二维度。
[0100] 在一些实施例中,控制器130还可以被配置为:存储(例如,在存储器110中)由已被分配用于服务第一用户设备的一个或多个视频转码器设备中给定的一个所产生的目标编码视频流;并且响应于检测到第二用户设备具有与用户设备中的第一用户设备相同或相似的VPC配置,把存储的目标编码视频流的传输导向到第二用户设备。如果第一用户设备请求给定的视频内容项,则可能存在很大的概率第二个相同配置(或类似配置)的用户设备在不远的将来将请求给定的视频内容项。因此,由视频编码器设备产生的目标编码视频流的高速缓存可以提高系统的效率。
[0101] 在一组实施例中,用于将视频内容交付给用户设备的方法200可以包括在图2中示出的操作。(方法200也可以包括以上和以下结合图1和3-17所描述的特征、元件和实施例的任何子集)。
[0102] 在210,可以在存储器中存储视频内容项集合。每个视频内容项可以包括对应的编码视频流和对应的边信息流。
[0103] 在220,响应于来自相应的多个远程用户设备对视频内容项中给定一个的多个内容请求中的每一个,可以分配一个或多个视频转码器设备中可用的一个来服务相应的用户设备。用户设备可以具有各自不同的视频处理能力(VPC)配置。
[0104] 在230,方法200可以利用每个分配的视频转码器设备来:(a)例如从存储器接收给定视频内容项的编码视频流和边信息流;(b)利用边信息流并根据相应用户设备的VPC配置转码编码视频流,以便获得相应的目标编码视频流;及(c)通过通信介质(诸如无线传输介质、无线网络、或有线网络、或如以上各种描述的)将相应的目标编码视频流发送到相应的用户设备。
[0105] 在一些实施例中,给定视频内容项的编码视频流可以解释为给定源视频流的编码版本。边信息流可以包括表征给定源视频流的属性的元数据。在一个实施例中,元数据可以包括编码视频流的每一块的一个或多个候选运动向量。在另一个实施例中,元数据可以包括给定视频内容项的编码视频流的每一块的速率建模数据。在还有的另一个实施例中,元数据包括给定视频内容项的编码视频流的每一块的失真建模数据。当然,可以预期其中合并以上类型的元数据的任意组合的实施例。
[0106] 在一些实施例中,每个视频内容项的边信息流可以包括对应于一个或多个相应编码模式的一个或多个速率信息流。假定块预测基于相应的编码模式,则该一个或多个速率信息流的每个速率信息流RISk可以表征对应编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
[0107] 在一些实施例中,每个视频内容项的边信息流可以包括对应于一个或多个相应编码模式的一个或多个失真信息流。假定块预测基于相应的编码模式,则一个或多个失真信息流的每个失真信息流DISk可以表征给定视频内容项的编码视频流的每一块的对应失真函数Dk(q),其中q是量化步长。
[0108] 在一些实施例中,方法200也可以包括编码源视频流,以产生内容项的相应项。编码源视频流的动作可以通过源编码器(例如,通过以下进一步描述的夹层编码器510、视频编码器700或视频编码器900)执行。每个视频转码器设备都会比源编码器有更高的能量效率,并且/或者比源编码器有更高的空间效率。
[0109] 在一些实施例中,方法200也可以包括:(a)从由一个或多个视频转码器设备中给定的一个服务的用户设备接收报告,其中每个报告包括来自用户设备的分析信息;及(b)响应于每个报告,更新由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率,以执行所述编码视频流的转码。
[0110] 在一些实施例中,分析信息包括关于给定的视频转码器设备与用户设备之间的链路质量的信息。
[0111] 在一些实施例中,方法200也可以包括当关于链路质量的信息指示链路质量下降或提高时,分别减少或增加由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率。
[0112] 在一些实施例中,分析信息包括关于从由给定的视频转码器设备发送的相应目标编码视频流中(由用户设备)恢复的视频的质量信息。
[0113] 在一些实施例中,方法200也可以包括当关于视频质量的信息指示视频质量下降或提高时,分别减少或增加由给定的视频转码器设备使用的目标位速率和/或目标画面分辨率。
[0114] 在一些实施例中,方法200也可以包括:从由给定的视频转码器设备服务的用户设备接收报告,其中每个报告包括对用户设备的VPC配置的对应更新(例如,指示对用户设备可接受的当前目标画面分辨率的更新);并且响应于每个报告,更新由给定的视频转码器设备使用来编码缩放的视频流的目标画面分辨率。
[0115] 在一些实施例中,每个用户设备的VPC配置可以包括由用户设备请求的视频编码格式的标识。在这些实施例中,可以执行转码编码视频流的动作,使得相应的目标编码视频流符合所请求的视频编码格式。
[0116] 在一些实施例中,每个用户设备的VPC配置可以包括由用户设备请求的目标画面分辨率的标识。在这些实施例中,可以执行转码编码视频流的动作,使得相应的目标编码视频流具有所请求的目标画面分辨率。
[0117] 在一些实施例中,每个用户设备的VPC配置可以包括由用户设备请求的目标位速率的标识。在这些实施例中,可以执行转码编码视频流的动作,使得相应的目标编码视频流具有约等于目标位速率的平均输出位速率。
[0118] 在一些实施例中,方法200也可以包括:(a)存储(例如,在存储器中)由已被分配用于服务用户设备中的第一用户设备的一个或多个视频转码器设备中给定的一个产生的目标编码视频流;及(b)响应于检测到第二用户设备具有与第一用户设备相同或相似的VPC配置,把存储的目标编码视频流的传输导向到第二用户设备。
[0119] 利用分离式编码器体系结构的内容交付网络
[0120] 在一组实施例中,内容交付网络300可以如图3中所示出的进行配置。内容交付网络300可以包括存储器310、多个视频转码器设备VTD1、VTD2、...、VTDNd(统一用标号320指示)及控制器330。(内容交付网络也可以包括以上和以下结合图1-2和4-17所描述的特征、元件和实施例的任何子集)。
[0121] 存储器310可以存储多个视频内容项。每个视频内容项可以包括对应的编码视频流和对应的边信息流。存储器310可以通过通信介质915(例如,由CDN运营商控制的专用网络、因特网或无线网络)耦合到视频转码器设备。
[0122] 对于多个远程用户设备UD1、UD2、...、UDNu中的每一个,控制器330可以被配置为接收来自远程用户设备对内容项的相应选定项的请求(例如,经通信介质340),并且把相应的选定内容项的传输导向到视频转码器设备中可用的一个。不同的用户设备可以选择内容项的不同内容项或随机内容项。
[0123] 每个视频转码器设备VTDk,k=1,2,...,Nd,可以被配置为:接收内容项的相应一项的编码视频流和边信息流;利用边信息流以相应的目标画面分辨率转码编码视频流,以便获得相应的目标编码视频流;并且通过通信介质340(例如,无线传输介质,或无线网络,或有线网络)将相应的目标编码视频流发送到远程用户设备中相应的一个。
[0124] 在一些实施例中,每个视频内容项的边信息流可以包括对应于N个相应编码模式的N个速率信息流,其中N大于或等于一。假定块预测基于相应的编码模式,则N个速率信息流的每个速率信息流RISk可以表征视频内容项的编码视频流的每一块的对应速率估计函数Rk(q)中。变量q是量化步长。
[0125] 在一些实施例中,内容交付网络300也可以包括被配置为编码源视频流以产生内容项的相应项的源编码器325。源编码器325可以如以下结合夹层编码器510或视频编码器500或视频编码器900所描述的进行配置。每个视频转码器设备可以被配置为比源编码器消耗更少的能量,并且比源编码器占用更少的空间。由于作为对视频转码器设备的输入的边信息流连同编码视频流一起供应允许视频编码器设备省略用于其自身的边信息计算的电路系统和/或程序指令,因此这些约束可被部分地实现。
[0126] 在一些实施例中,每个视频转码器设备可以被配置为通过以下执行转码的动作:解码编码视频流,以获得相应的解码视频流;及利用边信息流用相应的目标画面分辨率编码相应的解码视频流,以便获得相应的目标编码视频流。
[0127] 在一些实施例中,每个视频转码器设备可以被配置为:利用由标量值λ参数化的相应速率失真函数基于拉格朗日优化编码相应的解码视频流;并且基于相应的选定内容项的边信息流动态调整标量值λ,以便防止在相应远程用户设备的解码器的编码图片缓冲区的溢出和下溢。
[0128] 在一些实施例中,每个视频内容项的编码视频流可以解释成相应的源视频流的编码版本。每个视频内容项的边信息流可以包括表征相应的源视频流的属性的元数据。
[0129] 在一些实施例中,控制器可以被配置为例如基于由用户设备提供的作为上述请求的一部分的识别信息或者作为单独的传输与提供用户认证的处理节点(诸如认证服务器)进行通信。控制器可以从处理节点接收有效性信号,它指示给定的用户(或用户设备)已被认证为有效的用户(或用户设备)。此外,控制器可以例如从处理节点接收允许发送信号,它指示控制器被允许开始发送所请求的视频内容到请求用户设备。
[0130] 在一些实施例中,控制器可以被配置为向每个视频转码器设备提供用于注入到相应的目标编码视频流的对应的辅助信息。对应的辅助信息可以包括以下的一个或多个:商务实体的品牌信息;广告信息;数字版权管理(DRM)信息;提供印功能的数字信息;及由内容提供商、内容交付服务提供商、客户或者用户所请求的一个或多个定制特征。
[0131] 在一些实施例中,数字水印信息可以对已请求视频内容的用户或用户设备进行个性化。因此,如果视频内容被不当地使用,则用户的身份可以从数字水印信息中识别出来。
[0132] 在一些实施例中,每个视频转码器设备可以被配置为接收对应的辅助信息并且把对应的辅助信息注入到相应的目标编码视频流中。辅助信息可以包括以下的一个或多个:商务实体的品牌信息;广告信息;数字版权管理(DRM)信息;及由内容提供商、内容交付服务提供商、客户或者用户所请求的一个或多个定制特征。
[0133] 在以下编号的段落中公开了其它的实施例。
[0134] 1.一种系统(例如,内容交付网络),包括:存储多个视频内容项的存储器,其中每个视频内容项包括对应的编码视频流和对应的边信息流;多个视频转码器设备;及控制器,其中,对于多个远程用户设备中的每一个,控制器被配置为从该远程用户设备接收对内容项的相应一项的请求,并且把相应内容项的传输导向到视频转码器设备中可用的一个;其中每个视频转码器设备被配置为:接收相应内容项的编码视频流和边信息流;利用边信息流用相应的目标画面分辨率转码编码视频流,以便获得相应的目标编码视频流;以及通过通信介质将相应的目标编码视频流发送到远程用户设备中相应的一个。
[0135] 2.如段1所述的系统,其中控制器被配置为:从分配给视频转码器设备中的第一视频转码器设备的用户设备中第一用户设备接收链路报告,其中每个链路报告指示第一视频转码器设备与第一用户设备之间的信道的相应状态;以及响应于每个链路报告,更新由第一视频转码器设备所使用的目标位速率来转码编码视频流。
[0136] 3.如段1所述的系统,其中每个视频内容项的编码视频流是相应的源视频流的编码版本,其中每个视频内容项的边信息流包括表征相应的源视频流的属性的元数据。
[0137] 4.如段3所述的系统,其中元数据包括对应的编码视频流的每一块的一个或多个候选运动向量。
[0138] 5.如段3所述的系统,其中元数据包括对应的编码视频流的每一块的速率建模数据。
[0139] 6.如段3所述的系统,其中元数据包括对应的编码视频流的每一块的失真建模数据。
[0140] 7.如段1所述的系统,其中每个视频内容项的边信息流包括对应于N个相应编码模式的N个速率信息流,其中N大于或等于一,其中假定块预测基于相应的编码模式,则N个速率信息流的每个速率信息流RISk表征视频内容项的编码视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
[0141] 8.如段1所述的系统,其中每个视频内容项的边信息流包括对应于一个或多个相应编码模式的一个或多个失真信息流,其中假定块预测基于相应的编码模式,则一个或多个失真信息流的每个失真信息流DISk表征视频内容项的编码视频流的每一块的对应失真函数Dk(q),其中q是量化步长。
[0142] 9.如段1所述的系统,还包括被配置为编码源视频流以产生内容项的相应一项的源编码器,其中每个视频转码器设备都比源编码器消耗更少的能量,并且比源编码器占用更少的空间。
[0143] 10.如段1所述的系统,其中每个视频转码器设备被配置为通过以下执行所述转码:解码编码视频流以获得相应的解码视频流;以及利用边信息流用相应的目标画面分辨率编码相应的解码视频流,以便获得相应的目标编码视频流。
[0144] 11.如段1所述的系统,其中控制器被配置为向每个视频转码器设备提供用于注入到相应的目标编码视频流中的对应的辅助信息,其中对应的辅助信息包括以下的一个或多个:商务实体的品牌信息;广告信息;数字版权管理(DRM)信息;提供水印功能的数字信息;由内容提供商、内容交付服务提供商、客户或者用户所请求的一个或多个定制特征。
[0145] 12.如段1所述的系统,其中每个视频转码器设备被配置为接收对应的辅助信息并且把对应的辅助信息注入到相应的目标编码视频流中,其中对应的辅助信息包括以下的一个或多个:商务实体的品牌信息;广告信息;数字版权管理(DRM)信息;提供水印功能的数字信息;由内容提供商、内容交付服务提供商、客户或者用户所请求的一个或多个定制特征。
[0146] 网络边缘转码器
[0147] 图4示出了用于利用网络边缘转码器将内容交付给客户端的方法的一个实施例。在410,内容提供商可以执行每内容标题的单个夹层编码。夹层编码生成每内容标题的编码夹层流文件和边信息流。
[0148] 用于每个内容标题的单个编码夹层流文件和边信息流文件可被上传到内容交付网络(CDN)的原始服务器。网络边缘转码器415可以利用边信息流、根据每个客户端的要求把夹层流转换成任意的分辨率和位速率。http服务器(未示出)可以高速缓存每个内容标题的一个拷贝。http服务器可以例如经因特网接收来自客户端的http段请求(即,对特定内容项的段的请求)。如果所请求的段不在服务器高速缓存中,则http服务器可以从原始服务器(未示出)请求该段。原始服务器将所请求的段传送到http服务器。然后http服务器可以给边缘转码器提供所请求的段(即,一个编码夹层流的一部分)。边缘转码器可以解码所请求的段以获得解码的流、缩放解码的流以获得缩放的流、及编码缩放的流以获得输出流。输出流例如经因特网或无线网络传送到客户端。网络边缘转码器按照每个客户端的要求将所请求的段转换成任意的分辨率和任意的位速率。在图4中示出的具体数值(诸如用于编码夹层流的1080p24和20Mb/s,以及用于到客户端的流的720p24和3Mb/s)仅仅为说明起见而提供,并不意味着要对发明原理的范围进行限定。可以预期用于在这里及附图中其它地方所说明的各种流的各种各样的位速率和画面分辨率。
[0149] 夹层编码器410可以编码源视频流,以产生夹层位流。夹层编码器410也可以在夹层编码过程中产生信息(例如,速率度量和/或失真度量)。这些信息可以在单独的边信息流中携带,或作为夹层位流中的用户数据。例如,速率和失真度量可以:用于速率控制、自适应量化、在编码器430中与HRD兼容,即,用于控制从编码器430发送到客户端的输出位流的速率。因此,夹层编码器和编码器430的组合有效地形成双-通编码器。这种体系结构利用夹层编码器的无限制计算预算来计算速率和失真度量(例如,高质量度量)。它还最小化了网络边缘编码器430需要为有效的速率控制执行的计算量。
[0150] 用于交付视频内容的系统500
[0151] 在一组实施例中,如在图5中所示出的,用于交付视频内容的系统500可以包括夹层编码器510、网络边缘转码器520、通信介质525(诸如无线网络、或有线网络、或无线和有线网络的组合)及用户设备530。系统500可用作内容交付网络或各种其它应用中任一种的一部分。
[0152] 夹层编码器510接收输入视频流505(即,画面序列)并产生夹层位流。夹层位流可以是编码视频流。(夹层位流之所以这样命名是因为它具有介于两个设备510和520之间的位置。夹层编码器之所以这样命名是因为它产生夹层位流)。夹层位流可以例如通过诸如因特网或无线网络的通信介质发送到网络边缘转码器520。在一些实施例中,夹层位流可以发送到存储器介质用于存储,然后将来由网络边缘转码器从存储器介质中检索。
[0153] 夹层编码器可以充当上述系统100或方法200或系统300的源编码器。
[0154] 网络边缘转码器520可以接收夹层位流,并且根据用户设备530可接受的或所请求的视频处理能力(VPC)配置转码夹层位流。用户设备的VPC配置可以包括所请求的画面分辨率和/或所请求的视频格式和/或所请求的位速率。因此,网络边缘转码器产生为用户设备定制的用户位流。用户位流通过通信介质525发送到用户设备530。
[0155] 网络边缘转码器520可以充当系统100或方法200或系统300的视频转码器设备。
[0156] 网络边缘转码器520之所以这样命名是因为它位于或靠近网络(诸如无线网络或有线网络或因特网)边缘。例如,网络边缘转码器可以位于或靠近无线网络的无线接入点(例如,基站)。作为另一个例子,网络边缘转码器可以位于或靠近内容交付网络的边界节点。(内容交付网络的边界节点是将数据朝着用户设备从内容交付网络输出到内容交付网络之外的内容交付网络的处理节点或设备)。作为另一个例子,网络边缘转码器可以位于或靠近到与用户设备接口的调制解调器电缆或光纤连接的头端。
[0157] 在一些实施例中,通信介质525可以是无线网络或者无线网络的空中接口。在一个实施例中,网络边缘转码器520可以将用户位流提供给无线网络的基站,并且基站可以通过空中接口将用户位流发送到用户设备。用户设备可以包括收发器来接收所发送的用户位流并将信号发送到基站。用户设备可以发送关于被用户看到的观看体验质量的消息。例如,消息可以包括无线电分析,诸如接收信号强度、在用户设备接收到的指示基站与用户设备之间的信道质量的参考信号的功率和质量。基站可以在其传输中嵌入参考信号,以促进这种测量。无线电分析可以用来确定用于在给定的信道条件下到用户设备的可靠传输的最佳位速率。消息也可以包括视频分析,例如,关于由用户设备从用户位流中恢复的视频的质量的消息。视频分析可以用于确定在由信道条件所施加的约束下交付最大用户体验所需的最佳(通常最小)位速率。(无线电分析和视频分析可以被网络边缘转码器520使用,以在其用户位流的产生中执行速率控制)。
[0158] 在一些实施例中,通信介质525可以包括有线网络。
[0159] 在一些实施例中,通信介质525可以包括因特网。
[0160] 在一些实施例中,如在图6中所示出的,夹层编码器还将边信息流发送给网络边缘编码器520。边信息流可以包括表征输入视频流505的属性的元数据,例如,减轻网络边缘转码器在其转码夹层位流的任务中的负担的信息。例如,边信息流可以被网络边缘转码器520使用,以在其用户位流的产生中应用速率控制。作为另一个例子,边信息流可以使得网络边缘转码器与在不提供边信息流的情况下相比更高效地得出最优编码的决定(例如,关于量化步长、编码模式、运动向量选择的决定)。
[0161] 边信息流可以包括表征用于输入视频流中的每一块或者至少用于在诸如P画面与B画面的选定画面中的每一块的速率估计函数R(q)和失真估计函数D(q)的信息。针对量化步长q的任意给定值的速率估计函数R(q)表示位的数量的估计,该位的数目将由以等于该给定值的量化步长量化该块的变换后的预测残差(prediction residual)并且然后编码量化结果导致的。针对量化步长q的任意给定值的失真估计函数D(q)表示图像失真(相对于该块的原始图像样本)的估计,该图像失真将由以等于给定值的量化步长量化该块的变换后的预测残差并且然后编码量化结果导致的。
[0162] 边信息流可以包括用于每块以及N个编码模式中的每一个的速率估计函数和失真估计函数,其中N大于或等于一。N的值可以在画面间变化。例如,I画面可以只包括帧内模式,而P或B画面可以包括一个或多个帧间模式以及一个或多个帧内模式。
[0163] 视频编码器700
[0164] 在一组实施例中,视频编码器700(在此也称作“夹层编码器”)可以如在图7中所示出的进行配置。视频编码器可以被配置为对输入视频流705操作来产生边信息流730。视频编码器也可以产生编码视频流725。视频编码器700可以包括数字电路系统710和传输电路系统720。(视频编码器700也可以包括以上和以下结合图1-6和8-17所描述的特征、元件和实施例的任何子集)。
[0165] 数字电路系统710可以通过在存储的程序指令的控制下操作的一个或多个处理器、通过诸如ASIC的一个或多个专用数字电路、通过诸如FPGA的一个或多个可编程硬件元件或者上述任意组合来实现。在一个实施例中,数字电路系统可以包括在存储的程序指令的控制下操作的处理器的并行阵列。
[0166] 在一些实施例中,边信息流730可以包括输入数据流的每一块的速率建模数据。
[0167] 在一些实施例中,边信息流730可以包括输入数据流的每一块的失真建模数据。
[0168] 在一些实施例中,边信息流730可以包括用于输入数据流的每一块的候选运动向量。
[0169] 在一些实施例中,边信息流730可以包括对应于一个或多个相应编码模式的一个或多个速率信息流,其中每个速率信息流RISk表征输入视频流的每一块的对应速率估计函数Rk(q),其中q是量化步长。
[0170] 在一些实施例中,边信息流730可以包括对应于一个或多个相应编码模式的一个或多个失真信息流,其中每个失真信息流DISk表征输入视频流的每一块的对应失真估计函数Dk(q),其中q是量化步长。
[0171] 图7B中示出了针对一种编码模式的用于输入视频流的块的典型的速率特征TRC。在这个实施例中,速率估计函数Rk(q)可以通过若干个参考点P1、P2、P3进行表征。每个参考点都是对于量化步长的对应值qv的速率Rk(qv)值。
[0172] 在一些实施例中,确定速率估计函数Rk(q)的过程包括计算若干个参考点,然后使连续函数模型拟合到参考点。
[0173] 图7C示出了为输入视频的每一块和为每种编码模式计算属于速率特性的若干个参考点的示例处理流程。作为对每一块的正常变换编码和模式确定过程的一部分,为残余块755计算DCT(如在760所指示的),结果产生未量化的系数。在770应用统一量化器(即,qstep=1),并且结果产生的系数被处理以计算该块可能生成的最大速率777。这在速率(qstep)曲线上提供了点(ratemax,qstepmin)。注意qstepmin=1。
[0174] 统一量化系数被检查,以确定最大的系数。这告知了qstep的什么值772将使所有量化的系数变为零。那个值被称为qstepmax。这在速率(qstep)曲线上提供了点(ratemin,qstepmax)。注意ratemin=0。
[0175] 最终未量化的系数在780用qstep的中间值被再次量化,其中qstep的中间值是为既不是无损压缩也不是极端压缩的夹层位流的实际编码选择的。(该中间值表示为qstepmid。)结果产生的系数用于在速率(qstep)曲线上确定点(ratemid,qstepmid)。参见785和787。
[0176] 图7D中示出了针对一种编码模式的用于输入视频流的块的典型失真特征TDC。在这个实施例中,失真估计函数Dk(q)可以通过若干个参考点Q1、Q2、Q3进行表征。每个参考点都是对于量化步长的对应值qv的失真Dk(qv)值。
[0177] 在一些实施例中,确定失真估计函数Dk(q)的过程包括计算若干个参考点,然后使连续函数模型拟合到参考点。
[0178] 数字电路系统710可以配置成为输入视频流的每一块执行以下操作。
[0179] (A)数字电路系统可以接收分别对应于相应多个编码模式的多个预测残差。每个预测残差都是针对对应编码模式的输入块和预测之间的差异。每个预测都可以是与输入块同一维度的数组。
[0180] (B)数字电路系统可以变换预测残差以获得用于相应编码模式的相应的变换块:
[0181] TBk←Tranform(PRk),
[0182] k=1,2,...,N。在一些实施例中,该变换是离散余弦变换(DCT)。但是,也可以使用其它的变换。
[0183] (C)对每种编码模式Mk,数字电路系统可以利用量化步长q的一个或多个值中的每一个为编码模式Mk量化变换块,以获得变换块的一个或多个量化版本。数字电路系统可以处理包括变换块的一个或多个量化版本的数据集合,以获得表征用于编码模式Mk的速率估计函数Rk(q)的主速率建模数据(PMRD)。每个量化版本的处理为量化步长的对应值qv给出了速率Rk(qv)的估计(或测量值)。对应于量化步长的一个或多个值的一个或多个有序对的集合{(qv,Rk(qv))}可以解释为是速率估计函数Rk(q)的特征描述。
[0184] 如上所述,视频编码器700也可以包括传输电路系统720。传输电路系统可以被配置为将边信息流730发送到通信介质上(例如,因特网或无线网络)。边信息流可以包括用于每种编码模式和用于每一块的主速率建模数据(PRMD)。
[0185] 在一些实施例中,多种编码模式可以包括帧内块编码模式和帧间块编码模式。在其它实施例中,多种编码模式可以包括各种预测子块的划分。
[0186] 在一些实施例中,在以上步骤(C)中使用的量化步长q的一个或多个值包括表示量化步长等于一的最小值qmin。在这些实施例中,上述处理数据集合的动作可以包括基于对应于等于一的量化步长的量化版本中最大绝对值的系数来确定量化步长的最大值qmax(对应于零速率值,例如,所有的量化系数为零)。(回想一下量化版本的每一个都是量化变换系数的数组。)用于产生主速率建模数据的数据集合可以包括最大值qmax。
[0187] 备选地,qmax可以更直接地根据变换块而不是根据变换块的最小量化版本计算。(在一些视频编码标准中,利用等于一的量化步长对变换块进行量化包括身份映射,即,在变换块的相应系数中不引起变化。因此,qmax的计算也可以同样依赖于未量化的变换块。)因此,由数字电路系统执行的针对每块的操作也可以包括:对于每个编码模式Mk,基于用于该编码模式的变换块,即,基于具有最大绝对值的变换块的系数,计算量化步长的最大值qmax(对应于零速率值)。在这个可替代的实施例中,用于产生主速率建模数据的数据集合也包括最大值qmax。
[0188] 在一些实施例中,量化步长的一个或多个值可以包括表示量化步长等于一的最小值qmin。此外,处理数据集合的动作可以包括基于对应于最小值qmin的量化版本,计算与量化步长的最小值qmin相关联的最大速率值Rmax。可替代地,最大速率值Rmax可以更直接地根据变换块而不是根据变换块的最小量化版本确定。在这个可替代的实施例中,由数字电路系统执行的针对每块的操作也可以包括基于用于那个编码模式的变换块计算与量化步长的最小值qmin相关联的最大速率值Rmax。在这些实施例中,用于产生主建模数据的数据集合包括最大速率值Rmax。
[0189] 在一些实施例中,量化步长的一个或多个值可以包括严格地在标准定义的最小值(例如,值一)与最大值之间的中间值qmid。例如,qmid可以是表示量化步长等于一的最小值qmin与最大值qmax之间的中间点。可替代地,值qmid可以基于由诸如速率-失真优化(RDO)的夹层编码器使用的任何优化方法进行选择。而且,处理数据集合的动作可以包括基于对应于中间值qmid的量化版本计算与量化步长的中间值qmid相关联的中间速率值Rmid。在这些实施例中,用于产生主建模数据的数据集合包括中间速率值Rmid。
[0190] 在一些实施例中,计算与量化步长的任意值q相关联的速率值R可以包括用来模拟量化系数的代码大小的简单近似。例如,对量化版本中每个非零的系数coeff,R是项1+2*log2[abs(coeff)]的和。
[0191] 在一些实施例中,计算与量化步长的任意值q相关联的速率值R可以是量化版本的完全熵编码的结果或者是来自量化版本的熵编码的精确或近似模拟。
[0192] 应当理解,随着所利用的量化步长的状态数量的增加,计算复杂度也增加。但是,结果产生的速率估计函数的准确性也可以随着所述数量增加。
[0193] 在一些实施例中,数据集合的处理也可以包括利用一个或多个有序对来计算用于连续函数模型的拟合参数。拟合参数也可以解释为速率估计函数Rk(q)的特征描述。函数模型可以是诸如以下任一个的在本文献中所描述的一个:
[0194] Rk(q)=α+βlog(1/q) [Lin,1998];
[0195] Rk(q)=α+β/qγ [Lin,1998];
[0196] Rk(q)=基于变换残差的拉普拉斯分布的表达式[Li,2009].
[0197] 在这些示例性连续函数模型中,α和β是拟合参数。拟合参数的计算可以包括利用数值方法把值分配给拟合参数,以最小化连续函数模型与对应于变换块的量化步长的所有计算的状态之间的误差,例如:
[0198] (Rmax,qmin=1),
[0199] (Rmid,qmid),
[0200] (Rmin=0,qmax)。
[0201] 如在图8中所示出的,在一些实施例中,由数字电路系统执行的针对每块的操作也可以包括:对每种编码模式Mk,分别基于用于那个编码模式的变换块的一个或多个量化版本产生一个或多个重建残差,并且基于该一个或多个重建残差产生表征用于该编码模式的失真函数Dk(q)的主失真建模数据(PDMD)。(每个重建残差可以是输入块与从变换块的量化版本中相应一个得到的相应重建块之间的差异。)在这些实施例中,边信息流730也可以包括用于每种编码模式和每一块的主失真建模数据。
[0202] 在一些实施例中,计算与量化步长的任意值q相关联的失真值D可以包括从变换块的量化版本中相应一个得到的重建残差的平方误差之和(SSE)。
[0203] 在一些实施例中,数据集合的处理也可以包括利用一个或多个有序对来计算用于连续函数模型的拟合参数。拟合参数也可以解释为失真估计函数Dk(q)的特征描述。函数模型可以是在本文献中所描述的一个,诸如:
[0204] Dk(q)=αq2 [Sullivan,1998]。
[0205] 在这个示例性连续函数模型中,α是拟合参数。拟合参数的计算可以包括利用数值方法把值分配给拟合参数,以最小化连续函数模型与对应于变换块的量化步长的所有计算的状态之间的误差,例如(D,q)。
[0206] 在一些实施例中,由数字电路系统710执行的针对每块的操作也可以包括:(1)选择对应于编码模式的一个优化模式及量化步长q的优化值的变换块的量化版本,其中量化步长的优化值和优化的编码模式已基于由夹层编码器所使用的诸如速率失真优化(RDO)的任意优化方法选定;及(2)编码对应于优化编码模式和量化步长q的优化值的量化版本,以产生有助于编码视频流的输出位。传输电路系统可以被配置为将编码视频流发送到通信介质上。
[0207] 在一些实施例中,数字电路系统710可以包括变换电路系统和编码电路系统。变换电路系统可以被配置为执行所述的接收、所述的变换、所述的针对每个编码模式Mk进行量化、所述的处理以及所述的选择。编码电路系统可以被配置为执行所述的编码对应于优化编码模式和量化步长q的优化值的量化版本。在一个实施例中,变换电路系统和编码电路系统是流水线工作的,编码电路系统比变换电路系统对画面序列的较早画面进行操作。
[0208] 在一些实施例中,针对输入视频流的每一块所执行的操作可以包括:(1)利用量化步长q的优化值量化对应于编码模式中优化的一个模式的变换块,其中量化步长的优化值和优化的编码模式已被诸如速率-失真优化(RDO)的夹层编码器所使用的任意优化方法选定;及(2)编码对应于优化编码模式和量化步长q的优化值的量化变换块,以产生对编码视频流有贡献的输出位。在(1)中的量化步骤可以与利用量化步长的一个或多个值对变换块的所述量化分离,即,所执行的量化作为上述步骤(C)的一部分。传输电路系统被配置为将编码视频流发送到通信介质上。
[0209] 在一组实施例中,视频编码器900可以如在图9所示出的进行配置。视频编码器可以包括数字电路系统910和传输电路系统920。(此外,视频编码器900可以包括以上和以下结合图1-8和10-17所描述的功能,元件和实施例的任何子集。)
[0210] 数字电路系统910可以被配置为对输入视频流的多个块中的每一块执行操作,操作包括:(A)变换分别对应于一个或多个编码模式的多个预测残差,以便获得用于该一个或多个相应编码模式的一个或多个相应的变换块;并且对每个编码模式Mk,处理用于该编码模式Mk的相应的预测残差和/或相应的变换块,以获得用于该编码模式Mk的速率建模数据(RMD)915。数字电路系统910可以用如各种以上结合数字电路系统710所描述的硬件实现
[0211] 传输电路系统920可以被配置为将边信息流930发送到通信介质上,其中边信息流包括用于每种编码模式和用于每一块的速率建模数据。
[0212] 在一些实施例中,速率建模数据可以包括表征用于一个或多个编码模式中至少一个的速率估计函数Rk(q)的数据,其中q表示量化步长。
[0213] 在一些实施例中,由数字电路系统执行的针对每块的操作还包括:对每种编码模式Mk,分别基于用于该编码模式的变换块的一个或多个量化版本产生一个或多个重建残差,并且基于该一个或多个重建残差产生用于该编码模式的失真建模数据,其中边信息流还包括用于每种编码模式和每一块的失真建模数据。
[0214] 在一些实施例中,失真建模数据包括表征用于一个或多个编码模式中至少一个的失真估计函数Dk(q)的数据,其中q表示量化步长。
[0215] 在一些实施例中,数字电路系统可以进一步被配置为产生代表输入视频流的编码版本的编码视频流,其中传输电路系统被配置为将编码视频流发送到通信介质上。
[0216] 在一些实施例中,产生编码视频流的动作包括对一个或多个变换块的至少一个操作。
[0217] 在一组实施例中,视频编码器可以包括如下的数字电路系统和传输电路系统。数字电路系统可以被配置为编码输入视频流以获得编码视频流,其中所述编码包括产生表征输入视频流的属性的边信息流。传输电路系统可以被配置为发送编码视频流和边信息流。
[0218] 在一些实施例中,边信息流包括表征输入视频流的速率和/或失真属性的数据。
[0219] 在一些实施例中,边信息流包括候选运动向量的流。
[0220] 视频转码系统
[0221] 在一组实施例中,视频转码系统1000可以如在图10中所示出的进行配置。(此外,视频转码系统1000可以包括以上和以下结合图1-9和11-17所描述的特征、元件和实施例的任何子集。)
[0222] 视频转码系统可以接收第一编码视频流1005,并且产生为当前正在被服务的用户设备1045定制(例如,按照诸如画面尺寸、视频格式和位速率的一个或多个因素)的第二编码视频流1035。第一编码视频流1005的单个存储的拷贝可以以不同的方式为不同的用户设备进行转码。例如,第一编码视频流1005可被转码成用于经无线网络连接的移动设备的低位速率和小画面尺寸,以及用于经有线网络连接的家庭影院的高位速率和大画面尺寸。而且,视频转码系统1000可以例如基于从用户设备接收到的反馈,根据视频转码系统与用户设备之间的信道状态动态地调整第二编码视频流的输出位速率。第二编码视频流经通信介质1040(例如,无线网络、或有线网络、或无线和有线网络的组合)发送到用户设备。视频转码系统1000可以位于或者靠近网络的边缘,例如,如以上结合网络边缘转码器所描述的。
[0223] 视频转码系统1000可以在多种环境和应用中使用。例如,视频转码系统1000可以耦合到无线网络的无线接入点(例如,基站)。因此,通信介质1040可以是接入点与用户设备之间的空中接口。在这种情况下,由于对空中接口可用的有限带宽以及信道的高动态性质,因此,定制和应用对于第二编码视频流1035的动态位速率控制的能力尤其有用。
[0224] 在一种应用中,视频转码系统1000可以被内容交付网络(CDN)的运营商使用,并且可以位于或靠近CDN的边缘。因此,由视频转码系统1000提供的输出可以通过CDN运营商控制之外的通信介质1040发送到用户设备。视频转码系统1000可以用作系统520的网络边缘转码器。(参见图5和6。)
[0225] 视频转码系统1000可以包括解码器1010、缩放单元1020和输出编码器1030。解码器1010可以被配置为接收和解码第一编码视频流1005,以获得解码视频流1015。
[0226] 缩放单元1020可以被配置为把解码视频流缩放到目标画面分辨率,以便获得缩放的视频流1025。目标画面分辨率可以比在第一编码视频流1005中隐含的画面分辨率更低、相同、或者甚至更高。目标画面分辨率是可编程的。因此,当服务于不同的用户设备时,可以使用不同的目标画面分辨率。
[0227] 输出编码器1030可以被配置为接收与第一编码视频流相关联的边信息流1028(例如,如各种以上所描述的),并且利用边信息流1028编码缩放的视频流,以便获得第二编码视频流1035。
[0228] 第一编码视频流1005可以解释为源视频流的编码版本。(在一些实施例中,第一编码视频流是由夹层编码器510、视频编码器700、或视频编码器900生成的流。)边信息流1028可以包括表征源视频流的属性的元数据。例如,边信息流可以包括表征源视频流中的块的速率和/或失真属性的信息。作为另一个例子,边信息流可以包括用于源视频流中的块的运动向量。边信息流可以由输出编码器1030使用,以用计算有效的方式做出最优(或接近最优)的编码决定,例如,关于为给定块使用哪个编码模式、或者为给定块使用量化步长的什么值、或者对于给定块哪个或哪些运动向量可能给出最优的帧间预测等的决定。
[0229] 在一些实施例中,边信息流可以包括对应于N个相应编码模式的N个速率信息流,其中N大于或等于一。假定块预测基于相应的编码模式,则N个速率信息流的每个速率信息流RISk表征第一编码视频流的每一块的对应速率估计函数Rk(q),其中变量q表示量化步长。
[0230] 在一些实施例中,N的值可以从一个画面到另一个变化。例如,对于第一编码视频流的给定的编码画面(诸如P画面或B画面),N可以等于2,在这种情况下,速率信息流RIS1可以对应于帧内编码模式,并且速率信息流RIS2可以对应于帧间编码模式。可替代地,N的值可以解释为是固定的,但是对于一些画面,N个速率信息流中的一个或多个可以是静态的。例如,在N=2的情况下,帧内画面可能不需要用于帧间编码模式的速率信息流,而P画面或B画面可同时使用帧内速率信息流和帧间速率信息流。
[0231] 在一些实施例中,每个速率信息流RISk用与连续函数模型相关联的两个或更多的拟合参数的对应集合表征用于每一块的速率估计函数Rk(q)。连续函数模型可以具有各种形式中的任一种。在一种实现中,连续函数模型具有形式:
[0232] Rk(q)=α+βlog(1/q) [Lin,1998]
[0233] 其中α和β是拟合参数。
[0234] 在一些实施例中,边信息流还包括N个失真信息流,其中假定块预测基于相应的编码模式,则N个失真信息流的每个失真信息流DISk表征第一编码视频流的每一块的对应失真函数Dk(q)。每个失真信息流DISk可以用与连续函数模型相关联的一个或多个拟合参数的对应集合表征用于每一块的失真函数Dk(q)。连续函数模型可以具有各种形式中任一种。例如,在一种实现中,连续函数模型具有形式:
[0235] Dk(q)=αq2 [Sullivan,1998]
[0236] 其中α是拟合参数。
[0237] 在一些实施例中,边信息流用作对输出编码器1030的速率控制过程的输入。典型的速率控制算法可以基于用于画面的聚合函数RA(q)和用于该画面的聚合失真函数DA(q)。边信息流可以包含为缩放的视频流的给定目标画面分辨率计算RA(q)和DA(q)所需的信息。
速率控制算法可以包括控制标量值λ,以实现目标位速率并避免在远程编码器的编码画面缓冲区的溢出或下溢,其中远程编码器接收第二编码视频流。
[0238] 在一些实施例中,对于给定的第一编码视频流的编码的画面,N=2,在这种情况下,失真信息流DIS1可以对应于帧内编码模式,并且失真信息流DIS2可以对应于帧间编码模式。
[0239] 在一些实施例中,输出编码器1030可以被配置为处理边信息流,以便获得用于缩放的视频流的每一帧的聚合速率估计函数RA(q),其中q表示量化步长。聚合速率估计函数RA(q)可以在块编码模式和/或量化器的选择中使用。
[0240] 在一些实施例中,输出编码器1030可以被配置为进一步处理边信息流,以便获得用于缩放的视频流的每一帧的聚合失真估计函数DA(q)。聚合失真估计函数DA(q)可以在块编码模式和/或量化器的选择中使用。
[0241] 在一些实施例中,输出编码器可以被配置为进一步处理边信息流,以便同时获得用于缩放的视频流的每一帧的聚合速率估计函数RA(q)和聚合失真估计函数DA(q)。
[0242] 在一些实施例中,输出编码器1030可以被配置为:(a)基于N个速率信息流计算用于画面的聚合速率函数RA(q);(b)基于N个失真信息流计算用于该画面的聚合失真函数DA(q);(c)基于聚合速率函数RA(q)和聚合失真函数DA(q)计算用于该画面的聚合缩放函数λ(q),其中所述编码缩放的视频流包括基于通过标量值λ参数化的速率失真成本函数利用拉格朗日优化编码该画面;及(d)利用聚合速率函数RA(q)、聚合失真函数DA(q)和聚合缩放函数λ(q)控制标量值λ。
[0243] 在图11中示出了由一些实施例使用来计算聚合速率函数RA(q)和聚合缩放函数λ(q)的过程。过程1100记录画面中所有块的贡献,结果产生用于该画面的聚合速率函数RA(q)1145,即,结果产生表征作为用于该画面的量化步长的函数的速率的数据。块上的记录通过循环结构1110提出。对于量化器步长q的每个值,画面处理可以:(1)如在1120所指示的,通过利用帧间速率估计函数Rk(q)评估函数模型来计算对应于量化器步长q的块相关的帧间速率值;(2)如在1125所指示的,通过利用帧内速率估计函数Rk(q)评估函数模型来计算对应于qstep值的块相关的帧内速率值;(3)如在1130所指示的,选择具有较低速率值的块编码模式(帧间或帧内);(4)如在1135所指示的,将用于该块的那个较低速率值积加到画面相关的速率函数RA(q)中;以及(5)如在1140所指示的,向画面相关的值RA(q)应用修正因子(称作ratefit),以提高估计的准确性。在量化器步长上的迭代通过循环结构1115指示。虽然图11示出在量化器步长上的循环是在块上循环的内部,但是在可替代的实施例中,嵌套可以颠倒,即,块上的循环可以是内部的循环。同样,应当理解,在这两个循环或其中一个循环上的迭代可以并行化。
[0244] 在一些实施例中,可以例如基于以下表达式应用修正1140:
[0245] RA(q)←ratefit*RA(q),
[0246] 其中ratefit是通过比较预测的尺寸与来自视频序列中之前画面的实际尺寸所计算的值。
[0247] 如由在量化器步长q上的循环1150所指示的,在量化器步长q的范围上计算画面相关的函数RA(q)之后,计算画面相关的lambda函数λ(q)。画面相关的lambda函数λ(q)可以被例如速率控制算法使用。
[0248] 在1155,使用了数字技术在量化器步长的范围上计算画面相关的速率导函数dRA(q)/dq的值。符号dRA(q)/dq表示相对于量化器步长求速率的导数。
[0249] 在1160,可以根据以下公式针对qstep的当前值计算画面相关的lambda函数λ(q)的值:
[0250] λ(q)=-(dDA(q)/dq)/(dRA(q)/dq),
[0251] 其中dDA(q)/dq是画面相关的失真导函数。
[0252] 在一些实施例中,导函数dDA(q)/dq或者表征该函数的一个或多个参数可以作为过程1100的输入提供。例如:
[0253] dDA(q)/dq=常量,
[0254] 其中常量的值可以通过例如实验性地离线分析一组示例视频片段来确定。
[0255] 在其它实施例中,聚合失真函数DA(q)及其导数可以通过以类似于过程1100的方式添加来自用于每一块的失真估计函数Dk(q)的贡献来计算。
[0256] 在一些实施例中,可以计算并存储聚合速率函数RA(q)、聚合失真函数DA(q)、及聚合缩放函数λ(q),作为一组离散的量化器步长值上的值列表,而不是作为封闭形式的方程。即使这样,每个函数都可以被认为是连续的映射,具有通过内插计算的中间值。此外,由于每一块的底层速率和失真估计函数是单调函数的事实,每个函数被理解为是一对一的(即可逆的)映射。
[0257] 在计算聚合速率函数RA(q)的过程1100中,当输出分辨率由于缩放单元1020的操作而不同于输入分辨率时,在输出分辨率中对每一块的速率的贡献可以来自映射的速率估计函数R'k(q)。在输出分辨率中用于给定块的映射的速率估计函数R'k(q)等于在第一编码视频流1005中在对应的缩放位置的一个或多个块的速率估计函数Rk(q)。
[0258] 如果边信息流包括失真建模信息,则它以与映射的速率估计函数同样的方式也被记录为映射的失真估计函数。
[0259] 在转码系统1000的一些实施例中,边信息流可以包括用于第一编码视频流的每一块的一个或多个候选运动向量,其中输出编码器被配置为基于该一个或多个候选运动向量为运动向量空间中受限于一个或多个邻域的每个块执行高分辨率运动向量精化。如果目标画面分辨率与第一编码视频流中隐含的画面分辨率不同,则候选运动向量可以被缩放。
[0260] 在一些实施例中,解码器1010可以被配置为从第一编码视频流1005中为每一块恢复运动向量,作为所述解码第一编码视频流的一部分。在这些实施例中,输出编码器可以被配置为基于用于该块的运动向量为运动向量空间中受限于邻域的每一块执行运动向量精化。如果目标画面分辨率与第一编码视频流中隐含的画面分辨率不同,则候选运动向量可以被缩放。
[0261] 输出编码器1030可以被配置为通过在编码选择空间上最小化速率失真函数J来编码缩放的视频流的块,其中根据关系J=R(c)+λD(c),速率失真函数J通过标量值λ进行参数化,其中向量c表示编码选择的给定实现,其中速率函数R(c)是在实现c下通过编码该块将产生的位的数量的估计(或测量),其中失真函数D(c)是在实现c下通过编码该块将产生的块失真的估计(或测量)。编码选择可以包括量化步长q的选择。如果N大于一,则编码选择也可以包括从N个编码模式中选择编码模式。
[0262] 在一些实施例中,边信息包括每一块(例如,用于P画面或B画面)的一个或多个候选运动向量。在这些实施例中,编码选择也可以包括从包括一个或多个候选运动向量的一组向量中选择运动向量。该组向量也可以包括从第一编码视频流中恢复的解码的运动向量,作为所述解码第一编码视频流的一部分。
[0263] 在一些实施例中,输出编码器1030可以被配置为:(a)基于N个速率信息流计算用于画面的聚合速率函数RA(q);(b)基于聚合速率函数RA(q)和聚合失真函数DA(q)计算用于该画面的聚合缩放函数λ(q)。在这些实施例中,编码缩放的视频流的动作可以包括基于通过标量值λ参数化的速率失真函数利用拉格朗日优化编码该画面。此外,输出编码器可以利用聚合速率函数RA(q)、聚合失真函数DA(q)、和/或聚合缩放函数λ(q)控制标量值λ,以避免在接收第二编码视频流的远程解码器处的编码画面缓冲区溢出和下溢。
[0264] 在一些实施例中,输出编码器1030可以被配置为:(1)基于拉格朗日优化利用通过标量值λ参数化的速率失真函数编码缩放的视频流;及(2)基于边信息流动态地调整标量值λ,以防止接收第二编码视频流的远程解码器的编码画面缓冲区溢出和下溢(即,以便执行速率控制)。
[0265] 在一些实施例中,用于调整标量值λ的算法可以是在包括[Lin1995]、[Weigand1996]、[Lin 1998]或[Choi 1994]的文献中可以得到的多个基于速率失真优化的速率控制方法中的任一个。所有这些文献描述基于聚合速率函数RA(q)和聚合失真函数DA(q),或基于可以从它们计算出来的诸如DA(RA)的其它函数的控制方法。所有这些文献描述了动态地调整标量值λ以实现速率控制的控制方法。
[0266] 在一些实施例中,在本文献中描述的速率控制算法导致用于应用到画面中的每一块的量化步长q的统一值。在其它的实施例中,诸如在[Choi 1994]中描述的一个实施例,如可以在边信息流中找到的,块级别的速率和失真估计函数Rk(q)和Dk(q)可以用来实现自适应量化,自适应量化导致用于输出画面的所有块的量化缩放因子q的最优集合,结果产生在目标位速率的约束下的最小失真。
[0267] 在一些实施例中,视频转码系统1000也可以包括被配置为通过通信介质1040将第二编码视频流发送到(例如,与用户设备相关联的)远程视频解码器的传输电路系统。例如,传输电路系统可以包括被配置为通过空间发送信号的无线发射器(或收发器)。无线发射器可以是无线通信网络中的基站的一部分。作为另一个实施例,传输电路系统可以是用于将数据发送到诸如因特网的IP网络中的网络接口。
[0268] 在一些实施例中,输出编码器1030可以被配置为接收辅助信息并且将辅助信息注入到缩放的视频流中。辅助信息可以包括以下的一个或多个:商业实体的品牌信息;广告信息;数字版权管理(DRM)信息;提供水印功能的数字信息;及由内容提供商、内容交付服务提供商、客户或用户所请求的定制功能。
[0269] 在一些实施例中,解码器1010、缩放单元1020和输出编码器1030的至少一个利用被配置为用于在并行处理器阵列上执行的软件实现。例如,并行处理器阵列可以是二维的并行处理器阵列。
[0270] 在一些实施例中,解码器、缩放单元、输出编码器在并行处理器阵列中的不同处理器子集上实现。
[0271] 用于视频压缩的速率控制
[0272] 本专利除其它之外还公开了用于视频压缩编码器的位速率控制方法。该位速率控制方法可以应用到,例如,任何包括混合编码器的视频压缩方法。(混合编码器使用运动补偿并且具有画面到画面之间位分配变化很大的属性。)位速率控制方法被描述为应用到H.264编码标准,预期将该标准的最优解决方案用于大量相互依赖的编码选择。但是,也可以按照所希望的使用其它标准。
[0273] 此外,应当注意,位速率控制方法适用于任何硬件和/或软件实现。在一些实施例中,位速率控制方法可以与高度并行的实现相兼容,诸如那些用于HyperX处理器TM(Coherent Logix 的产品)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)的实现,这些实现一般而言比基于命令式编程模型的序列化的软件实现在数据相关性上具有更多的约束。在其它的实施例中,位速率控制方法可以与序列化的软件实现相兼容。
[0274] 在一些实施例中,速率控制方法应用在常规的编码器中,常规的编码器采用未压缩的视频样本作为输入,并且生成压缩的视频输出位流。在其它的实施例中,速率控制方法应用在网络边缘转码器中,网络边缘转码器例如以较低的位速率将先前编码的视频基本流转换成新的位流。在还有的其它实施例中,速率控制方法在分离式配置中适用,其中整个编码过程被分为执行分析和运动估计以生成关于视频内容的分析数据的中间流的第一部分,以及使用该中间流作为输入并且生成相兼容的视频基本流输出的第二部分。
[0275] 视频压缩编码器中速率控制的一般目标是对多个编码算法选择上做出决定,所有这些选择都影响输出位流的位速率和画面质量。在质量和位速率上影响最大的编码参数是量化参数(QP),但是很多其它的选择也是重要的,诸如运动向量选择、运动模式选择、帧内模式选择和宏块模式的决定。
[0276] 在一些实施例中,位速率控制方法可以利用全局方法来指导所有的编码决定,从而导致对于给定目标位速率的最小失真。位速率控制机制可以包括许多组件,这些组件被分布和集成到编码器的所有主要流水线阶段中,从视频输入与分析,到运动估计、帧内模式分析、变换编码和熵编码。
[0277] 速率控制系统组件和功能
[0278] 在一个实施例中,位速率控制系统可以包括缓冲区模型、速率失真优化、宏块模型、帧内复杂度分析、运动分析、画面类型选择和速率控制机制。
[0279] 缓冲区模型-编码器可以维护解码器的压缩的画面缓冲区的模型,以确保由编码器生成的位流将不会在播放时下溢或溢出压缩的画面缓冲区。在H.264中,缓冲区模型被称为假设的参考解码器(HRD),以及在MPEG-2中,它被称为虚拟缓冲区检验器(VBV)。H.264还包括理想化的编码器和传输信道,称为假想的流调度器(HSS)。在一些实施例中,速率控制系统可以实现合并的HRD/HSS模型。
[0280] 速率失真优化基础–速率失真优化(RDO)可以提供统一的机制,用于使所有的编码决定适于目标位速率。它是用于解决资源优化配置问题的更一般的拉格朗日优化技术的特定应用。在下面更详细描述的拉格朗日乘数λ可以是由速率控制系统控制的变量。所有的编码参数和选择,诸如QP与编码模式,及产生的编码器输出的位速率,都可以取决于λ的值。
[0281] 宏块模型-出于速率控制的目的,宏块模型可以用作为宏块的简化的描述,例如,代替原来的源图像样本值或其对应的变换系数。利用用于每个编码的宏块的少量拟合参数,速率控制系统可以估计或预测将导致用于那个宏块的位流和失真的位的数量,以及对于给定的λ值应该使用什么QP值。拟合参数可以从多个数据源来确定,数据源包括,例如,输入样本分析、运动估计结果和变换系数。
[0282] 帧内复杂度分析–可以分析到编码器的输入,以获得表示视频帧内视频样本的复杂度的度量数字。(注意,这个分析不应该与帧内预测模式分析相混淆。)帧内复杂度分析的结果可以提供作为到宏块模型的输入。
[0283] 运动分析–对于利用来自参考帧的运动补偿能够多好地预测当前画面中的宏块样本的度量可以作为运动估计过程的一部分测量来计算。这种度量可以为可能的宏块模式(帧间与帧内)选择提供基础,并且可以是到宏块模型的另一个输入。可能的宏块模型可被设置为用于较差预测的宏块的帧内模式和用于较好预测的宏块的帧间模式。
[0284] 画面类型选择-画面类型的选择可以包括两种机制。一组画面(GOP)安排可以根据用户规定的节奏确定初步的画面类型。帧内画面之间的周期被称为关键帧时间间隔,并且可以具有从1(意味着所有的帧都是帧内类型)到几百帧的值。当用户规定要使用多少个连续的B画面时,可以确定P画面之间的周期,通常在0至3的范围内。
[0285] 在GOP安排确定初步的画面类型之后,场景变化检测算法可以强制所安排的B或P画面作为帧内模式进行编码。快速运动检测算法可以导致所安排的B画面被编码为P画面。覆盖所安排的画面类型会影响对后续画面的GOP安排。
[0286] 场景变化和快速运动检测算法可以基于运动分析度量。运动分析度量可以作为运动估计过程的一部分来计算。
[0287] 前瞻(Look Ahead)处理–帧内复杂度分析、运动分析和画面类型选择可以领先实际编码功能多个画面执行。有用的前瞻数量相当于能够存储在解码器的编码画面缓冲区中的压缩画面的数量,在一些情况下高达20帧或更多帧。对滑动前瞻窗口内所有帧的组合信息可以用作速率控制机制的一部分。
[0288] 速率控制机制-速率控制机制可以是离散时间反馈控制系统。速率控制机制可以尝试尽可能地把λ的值保持为常量。基于当前画面的复杂度以及前瞻窗口中其它画面的复杂度的解码器缓冲区占用率推断会使得速率控制机制增加或减少lambda的值。离散时间系统分析技术可因此用在反馈控制系统的设计中,以确保稳定性
[0289] 图12和13–用于速率控制系统的框图
[0290] 图12根据一种实施例说明了H.264编码器的第二部分或网络边缘转码器的第二部分。该第二部分可以包括变换阶段1210、熵编码阶段1215、及位流形成阶段1220。集成的速率控制组件可以包括帧内复杂度和运动分析信息的帧缓冲区A、用于标量值λ的输入、画面尺寸输出、及对于qstep选择(在变换阶段)的宏块模型的实现。画面尺寸输出可以包括来自变换阶段的临时画面尺寸(PPS)和实际画面尺寸(APS)。由于所描绘的实施例中处理的流水线性质,因此用于给定画面的实际画面尺寸的传输相对于用于那个画面的临时画面尺寸的传输可能会延迟。
[0291] 图12指示各种帧缓冲区的相对位置与使用。帧缓冲区可以包括:用于当前画面亮度(luminance)和色度(颜色)样本的缓冲区A;用于运动向量和预测样本的缓冲区B;用于每宏块的帧内复杂度和运动分析的缓冲区C;用于运动估计精化的重构样本的缓冲区D;用于编码的宏块信息的缓冲区E;及用于片数据的缓冲区F。
[0292] 如所指示的,在这个实施例中,变换阶段1210接收来自缓冲区A(当前画面亮度和色度样本)、缓冲区B(运动向量和预测样本)、缓冲区C(每宏块的帧内复杂度和运动分析)及标量值λ的数据作为输入数据,并且提供到缓冲区D(重构的样本)和缓冲区E(编码的宏块信息)的输出,以及关于临时画面尺寸的信息。在这个实施例中,熵编码阶段1215从缓冲区E(编码的宏块信息)接收其输入数据,并且输出片数据(到缓冲区F)和实际画面尺寸。位流形成阶段1220从缓冲区F接收片数据,并且产生输出位流的对应部分。
[0293] 图13说明H.264编码器的第一部分的一个实施例。速率控制组件可以包括帧内复杂度分析1310、缓冲区模型1315、画面类型选择1320、以及速率控制机制1325。在粗略运动估计阶段1330中,可以有运动分析过程。帧内复杂度信息和运动分析信息可以经缓冲区C提供给变换阶段,并且画面尺寸信息可以作为来自下游阶段的反馈接收。画面尺寸信息可以包括来自变换阶段的临时画面尺寸PPS和实际的画面尺寸(APS)。
[0294] 除了之前描述的缓冲区A、B、C和D,图13的子系统可以利用缓冲区G、H、I、J和K。缓冲区G是用于当前画面的亮度和色度样本。缓冲区H是用于抽取的当前和参考画面(亮度)。缓冲区J是用于帧内复杂度分析结果。缓冲区K是用于运动分析结果。缓冲区I是用于粗略运动向量。
[0295] 如图13所指示的,帧内复杂度分析过程1310可以从缓冲区G(当前画面亮度和色度样本)接收其输入数据,并且提供输出到缓冲区J(帧内复杂度分析结果)。当前画面抽取过程1328可以向缓冲H(抽取的当前和参考画面)提供输出。缓冲区模型1315可以接收临时画面尺寸PPS和实际画面尺寸APS,并且向速率控制机制提供输出,如图所示。粗略运动估计过程1330可以从缓冲区H(抽取的当前和参考画面)接收输入,并且向缓冲区K(运动分析结果)和缓冲区I(粗略运动向量)提供输出。画面类型选择过程1320可以从缓冲区J(帧内复杂度分析结果)和缓冲区K(运动分析结果)接收输入,并且向运动估计精化过程1335提供输出。速率控制机制1325可以从缓冲区模型、从缓冲区J(帧内复杂度分析结果)和从缓冲区K(运动分析结果)接收输入,并且向图12的变换阶段1210和运动估计精化过程提供拉格朗日乘数λ的值。最后,运动估计精化过程1335可以从缓冲区A(当前画面亮度和色度样本)、从缓冲区I(粗略运动向量)、从画面类型选择过程(画面类型)、速率控制机制(λ的值)和缓冲区D(进行运动估计精化的重构样本)接收输入,并且可以向缓冲区B(运动向量和预测样本)和缓冲区C(每宏块的帧内复杂度与运动分析)提供输出。
[0296] 应当注意,在图12和13中示出的特定元件配置只是要作为本文所公开的发明原理的例子,并不是要把实现限制到任何特定的形式、函数或外观。
[0297] 系统组件细节
[0298] 以下根据一组实施例提供了关于速率控制系统的组件或特征的进一步的细节。
[0299] 速率-失真优化基础
[0300] 对于可能的编码选择的N维空间中的任意给定点,计算以下值是可能的:
[0301] R=速率=编码选择导致的位流中的位的数量;
[0302] D=失真=根据该选择由有损编码算法引起的失真。
[0303] 失真可以基于多个距离标准的任意一个。常用的峰值信噪比(PSNR)是基于到编码器的输入样本的块与由本地解码器提供的重构样本的块之间的平均平方误差(MSE)。利用MSE作为失真测量可以优化算法以获得改善的PSNR。
[0304] 也可以使用与绝对差之和(SAD)紧密相关的平均绝对差(MAD),以及导致用于失真的真实值的任何距离标准。
[0305] 如上所述,速率-失真优化理论定义成本函数J为:
[0306] J=D+λR。
[0307] 拉格朗日优化是对于给定的λ值,最小化J的技术,其中λ是拉格朗日乘数,如上所述。
[0308] 选择特定的编码选择而不是其它的意味着选取最小化J的选项。量化参数QP的选择是在编码器中做出的一种这样的选择。对应于QP的连续变量是qstep。在一些实施例中,qstep通过以下表达式与QP相关:
[0309] qstep=A*2^(QP/6),
[0310] 其中A是固定常量,其中“^”表示取幂。
[0311] 做出以下假设:qstep是连续变量;R(qstep)是单调递减并且其导数是连续的;以及D(qstep)是单调递增的并且其导数是连续的。可以示出qstep的两个函数都是上凹的。因此,成本函数J的最小值在qstep的某一中间值而不是在qstepmin或qstepmax实现,如在图14中所出的。图14描绘了成本J作为qstep的函数,并且指示最优成本Jmin是在qstep=qstepbest实现。
[0312] 把失真表达为受最小成本J约束的速率函数也是可能的。可以证明,函数D(R)的形状是上凹的,如在图15中所提示的。D(R)的图形上的每个点对应于qstep的不同值。最小化J意味着J的导数是零,并且因此
[0313] dD/dR=-λ。
[0314] 因此,如在图15中所指示的,λ是曲线D(R)的负斜率,并且存在λ与qstep之间的映射。
[0315] 如果可以得到用于R(qstep)和D(qstep)的表达式,则它们可以用于根据以下表达式从qstep计算λ:
[0316] λ(qstep)=-(dD/dqstep)/(dR/dqstep)
[0317] 反函数qstep(λ)不大可能是封闭形式的表达式。但是,给出正向函数λ(qstep)的特征描述,就很容易以任意给定的qstep值在数值上逼近反函数λ(qstep)的值。
[0318] 本文所描述的速率控制系统可以依赖于这些观察。在一些实施例中,根据上述反函数,λ是由速率控制系统控制的值,并且qstep是因变量。
[0319] 从概念上讲,速率控制基于λ是合理的,因为它意味着速率与失真之间的一致性平衡被应用到所有的编码器决定、整个的画面上、以及从一个画面到下一个画面。如果图像的复杂度是变化的,则这种方法如所希望的,导致向复杂区域分配更多的位。
[0320] 下一部分除了其它之外还描述了用于QP选择的方法。
[0321] 用于Qstep选择的宏块模型的应用
[0322] 可能需要用于qstep的值,以量化离散余弦变换(DCT)运算产生的系数。映射函数qstep(lambda)存在,但是它特定于每一编码的块和宏块的编码模式(例如,帧间与帧内)。
[0323] 在一些实施例中,在变换计算之后可用的信息可以用来实现实用的qstep(lambda)计算(例如,计算上/经济上可行)。可用信息可以包括用于该宏块的帧内复杂度分析结果、用于该宏块的运动分析结果、及变换系数列表。变换系数可以提供最有用的信息。由于量化的系数经固定的编码公式被熵编码,因此根据这些值估计R(qstep)是可能的。用于非零系数的以位表示的成本可以大约等于或类似于
[0324] 1+2*log(|coeff|)。
[0325] 类似地,可以计算D(qstep),即,作为qstep的函数的失真,的合理估计。
[0326] 在一个实施例中,基于这些可用的数据,可以使用实验性方法查找实用的(例如,计算上或经济上可行的)函数来计算qstep。
[0327] 因此,在一个实施例中,可以使用函数计算qstep。在一些实施例中,直到DCT计算之后,qstep才能被计算,所以可以在函数中使用系数的值(来计算qstep)。
[0328] 在一些实施例中,qstep(lambda),即,作为lambda函数的qstep,可以为每个宏块分别计算。例如,在一个实施例中,可以实现支持称为自适应量化的特征的编码器,其中QP在画面上不是常量。在理想的情况下,由于人的视觉系统更容忍复杂区域内的失真,因此在画面的复杂区域中使用较高的QP以使用较少的位。较低的QP用在眼睛对失真较为敏感的画面的平坦区域,并且由于这样的区域缺少图像细节因此无论如何位速率是低的。qstep(lambda)的计算可以具有这种行为,即使当lambda在整个画面上保持常量。
[0329] 注意,与本文所描述的方法相比,用于自适应量化的现有技术包括使用QP作为独立变量的复杂方法,其中在变换系数中没有固有地包含详细信息的情况下,QP被先验地确定。
[0330] 运动分析、画面类型选择及前瞻
[0331] 在一些实施例中,速率控制系统的若干个组件可以与运动估计相关。
[0332] 运动分析是对能多好地根据参考画面来预测来自当前画面的宏块的度量。运动估计过程(或模块)确定用于这个预测的最佳运动向量,并且该运动向量和预测被用于编码宏块。运动估计过程还计算当前宏块被预测的有多好,并且这个品质因数或度量可以因此成为帧间编码宏块的复杂性的潜在预测器。
[0333] 运动估计函数的组织可以特别地服从于这些函数的集成。运动估计通常包括粗略分辨率部分和全分辨率部分。
[0334] 在一个实施例中,包括场景变化检测与快速运动检测的画面类型选择可以基于从粗略运动估计阶段输出的运动分析信息。此外,在还有的实施例中,运动估计过程的一部分可以对先于当前画面很远的输入画面执行,以影响用于速率控制和画面类型选择目的的前瞻函数。
[0335] 受益于粗略运动估计的速率控制
[0336] 在一些实施例中,粗略分辨率运动估计可以对当前和参考图像的抽取拷贝执行。粗略分辨率运动估计过程(或模块)可以有效地支持在非常大的搜索范围上的完全搜索算法,从而产生粗略运动向量及潜在预测器的品质因数或度量。粗略运动估计过程的两个方面可能尤其重要:它可以使用用于参考画面的源样本,而不是重构的样本,以及它可以在全分辨率运动估计开始之前在整个帧上完成其功能(例如,处理)。
[0337] 这两个事实意味着粗略运动估计可以用于实现前瞻函数。预测的品质因数可以因此用来预测如需要用于速率控制机制的将来画面的尺寸。在一些实施例中,它也可以用于画面类型选择。大量差的预测通常意味着当前画面处于与参考画面不同的场景中,并且应该被强制到帧内(模式)。适当数量的差的预测可能指示其中B画面应该用P画面替换的高速运动场景。
[0338] 因此,在一些实施例中,速率控制组件可以与粗略运动估计阶段集成,如上述在图13中所示出的。在一个实施例中,粗略运动估计可以不依赖于重构的图像样本,因此它可以进行流水化并对将来的画面操作。在还有的实施例中,画面类型选择可以基于在粗略运动估计中计算的预测品质因数。此外,在一些实施例中,画面尺寸预测可以基于在粗略运动估计中计算的预测品质因数。在还有的实施例中,来自全分辨率运动估计的预测品质因数可以用作用于qstep选择的宏块模型的一部分。
[0339] 缓冲区模型
[0340] 如上所述,在一些实施例中,速率控制系统可以包括解码器的编码画面缓冲区的模型(即,缓冲区模型),以确保编码的位流将不会在播放时溢出或下溢出缓冲区。缓冲区模型可以被速率控制机制使用,以在当前和将来的画面被编码之后预测将来的占用率。
[0341] 因此,例如,对于每个输出画面,模型可以预测编码的画面的第一个位的初始到达时间,以及最后一个位到解码器的编码画面缓冲区的最终到达时间。传输速率可以规定为最大位速率,它可以与用于恒定位速率(CBR)编码的目标位速率相同,并且可以比用于可变位速率(VBR)编码的目标位速率更大。
[0342] 图16A和16B分别说明在理想情况下以及在其中实际画面尺寸不能立即可用的情况下,缓冲区模型的更新过程。
[0343] 在一些实施例中,在速率控制机制可以应用到下一画面之前,缓冲区模型的操作可能需要用每一个编码画面尺寸更新其内部状态。这个特性在图16A中示出,其中,对于视频序列中的每个画面,在1605接收到之前画面的实际尺寸,并且在1610更新缓冲区模型状态。但是,注意,精确的画面尺寸可以在编码器的熵编码阶段(例如,CABAC)计算,并且由于编码器的流水线实现,之前画面的尺寸可能不能被立即得到。
[0344] 为了解决数据相关性的时序问题,可以基于用于每个宏块的量化系数值使用用于编码画面尺寸的临时值,连同运动向量的预测的位成本和编码模式信息。然后可以应用调整因子,以考虑到熵编码阶段和这个调整因子的其它缩小效应。图16B中示出了修改过程的一个实施例,其中,对于视频序列中的每个画面,在1620接收到之前画面的临时尺寸,并且在1625相应地更新缓冲区模型状态,在这之后,在1630可以接收到一个或多个较早画面的实际尺寸。作为响应,可以在1635做出对缓冲区模型状态的修正。
[0345] 缓冲区模型基于临时画面尺寸值计算速率控制机制所需要的占用率信息。当精确的画面尺寸值在稍后的时间得到时,缓冲区模型对临时与实际画面尺寸之间的差异进行进一步调整。
[0346] 在一些实施例中,对缓冲区模型的精确要求可能很极端。例如,可能要求最终考虑到每一单个的输出位并且在无限长的编码周期上积累零误差。用在后来获得的准确信息修正例如画面尺寸的初始估计的上述方法可足以满足这一要求。
[0347] 在另一个实施例中,缓冲区状态可以包括具有位流中所有输出位之和的状态变量。可以支持诸如用于实时事件的长编码会话,因此总和可能超过能在相关数据类型中存储的最大值,相关数量类型是例如32位的整数。缓冲区模型可以相应地包括机制来在工作过程中重新初始化总和的值,而不用损失精度,以使值保持在范围内,例如,在32位整数的范围内。
[0348] 因此,在一些实施例中,可以利用编码的画面尺寸的初始估计对每个画面更新解码器缓冲区模型,然后在稍后的时间当精确的编码的画面尺寸得到时做进一步的更新。此外,在还有的实施例中,可以提供机制来在工作过程中重新初始化输出位的总和值,而不用损失精度,以使值保持在范围内,例如,在32位整数的范围内。
[0349] 速率控制机制
[0350] 在一些实施例中,在输出位流中每画面的位的数目可以是lambda值的结果,其在为该画面做出大多数编码决定之前被选择。由于视频序列的动态特性,具有在图像内、画面间以及不同场景之间变化的图像复杂度,因此lambda值可以在编码过程中进行调整。
[0351] 在一个实施例中,对调整过程的输入可以包括:
[0352] 1.调整之前的lambda值,以及lambda值的历史记录。
[0353] 2.由缓冲区模型提供的当前解码器缓冲区占用率。
[0354] 3.画面级别的帧内复杂度和运动分析信息,用于前瞻窗口内的
[0355] 当前和将来的画面。
[0356] 4.画面类型选择。
[0357] 5.根据画面类型关于编码的画面尺寸的历史信息。
[0358] 这些输入可以用在二阶离散时间反馈控制系统中,从而产生调整的lambda值,以及保证没有溢出或下溢的缓冲区占用率预测。控制计算的一部分可以包括基于这些输入预测将来的画面尺寸。注意,在上述自适应量化的情形中,实际的QP值可能不通过这种画面级别的速率控制机制计算。
[0359] 反馈控制系统的首要目标可以是对维护缓冲区兼容性所需的lambda做最小的调整,从而产生用于给定目标位速率的最好的(或接近最好的)一致性的感知质量体验。因此,在一些实施例中,如上所述,可以使用各种实现和计算来根据输入数据调整lambda。
[0360] 更一般地,在一些实施例中,可以接收输入视频流。可以为输入视频流的多个画面中的每一个计算拉格朗日乘数lambda。用于输出视频流的位速率可以基于输入视频流和用于多个画面中的每一个的lambda进行动态地控制。在一个实施例中,用于lambda的一个值可以用于每个画面中的所有编码决定,然后按照需要对画面间的速率控制进行调整。
[0361] 网络边缘转码器
[0362] 网络边缘转码器概念是具有减少的计算足迹(footprint)的编码器版本。其目标是用最少的能耗和比单独编码器更高的信道密度实时地产生高质量的压缩视频输出。它通常通过利用压缩的视频基本流作为其输入来实现这个目标,已经与目标输出有相同的分辨率和帧速率,但是比目标输出具有更高的位速率。在一些实施例中,这可以允许网络边缘转码器省略粗略运动估计阶段。
[0363] 图17说明了示例性网络边缘转码器(部分,例如,第一部分),其中粗略运动估计中的帧内复杂度分析和运动分析被输入位流分析取代,输入位流分析数据挖掘由之前的输入位流的编码做出的决定和结果。注意,如在图12中所示出的,网络边缘转码器的第二部分可以与常规的压缩视频编码器相同,因此为了简洁起见不再次呈现。
[0364] 如图17所示,输入位流解码过程(或模块)1710可以接收输入位流作为输入,并且可以提供输出到缓冲区A(当前画面亮度和色度样本)。如还示出的,输入位流分析过程(或模块)1715也可以接收输入位流作为输入,并且提供输出到缓冲区I(粗略运动向量)、到缓冲区J(帧内复杂度分析结果)和缓冲区K(运动分析结果)。画面类型选择过程(或模块)可以从缓冲区J(帧内复杂度分析结果)和缓冲区K(运动分析结果)接收输入,并且可以提供输出(画面类型)到运动估计精化过程(或模块)。速率控制机制也可以从缓冲区J(帧内复杂度分析结果)和缓冲区K(运动分析结果)以及从缓冲区模型接收输入,并且可以提供输出(lambda)到运动估计精化过程(或模块)和(例如,图19的)变换阶段,如所示出的。最后,运动估计精化过程可以从缓冲区A(当前画面亮度和色度样本)、从缓冲区I(粗略运动向量)、从缓冲区D(用于运动估计精化的重构样本)、从画面类型选择过程(画面类型)、及从速率控制机制(lambda)接收输入,并且可以提供输出到缓冲区B(运动向量和预测样本)和缓冲区C(每宏块的帧内复杂度和运动分析)。
[0365] 注意,在一些实施例中,网络边缘转码器可以实现与独立的编码器相同的(或类似的)变换编码与速率控制系统,但是也可以使用来自在输入位流中包含的量化系数的信息,以获得速率控制所需的运动分析和帧内复杂性分析。相对于利用粗略运动估计阶段进行分析从独立编码器所能获得的QP值,这会导致对所使用的QP值更精确的速率和失真评估。在一些实施例中,这个信息可以与附加的帧内复杂度分析及系数列表一起使用,以根据当前的lambda值重新量化每个再次编码的宏块。尽管最终的实时编码步骤的计算足迹可能少于独立的编码器,但是影响与输出质量会与双通道编码器相同(或相似)。
[0366] 因此,在一些实施例中,根据本文所公开技术的速率控制组件可以集成到网络边缘转码器的概念中,如在图17中所示出的。
[0367] 更具体而言,在一些实施例中,在网络边缘转码器配置上,速率控制可以从输入位流中包含的量化系数与其它编码模式信息中获得高质量的运动分析和帧内复杂度分析度量。
[0368] 分离式编码器配置
[0369] 在还有的实施例中,本文所描述的速率控制算法或技术也可以应用在分离式编码器配置中。在分离式编码器配置中,对编码和速率控制的许多处理和分析可以在编码器的第一部分中执行。然后,第一部分的结果,包括但不限于运动分析、粗略运动向量、和/或帧内复杂度分析,可以储存在关于内容的分析数据的中间流中。数据的中间流可以包括兼容的压缩的视频基本流加上附加的分析数据,或者可以是包含所有完成视频内容编码所需信息的非标准数据格式。然后,编码器的第二部分可以使用中间流作为输入并完成编码过程。
[0370] 类似于网络边缘转码器,分离式编码器配置的首要目标可以是具有最小可能的计算、物理尺寸、和用于编码过程的第二部分的功率足迹。第二部分可以相应地为用作网络边缘设备进行优化,并且可以用比完整的压缩的视频编码器更高的信道密度进行部署。编码器的第二部分也可以包括特定于流的处理,诸如特定于流的位速率或品牌,使得各个输出流可被个性化到一个或多个特定的接收器。
[0371] 在一个实施例中,以上编码器划分可以使得编码过程的第一部分执行一次并且结果被保存。随后,编码过程的第二部分可以按对多个接收器的需要被执行多次,所有的都利用不同的编码参数或流个性化。任何特定于个别输出流或接收器的处理可以限定到编码过程的第二部分。
[0372] 因此,在一些实施例中,用于编码器的分离式配置可以用于最小化计算、物理尺寸、和/或用于编码器第二部分的功率足迹的目标,使得它被优化成适于用作网络边缘设备。在各种实施例中,编码器在第一部分和第二部分之间的划分可以以各种方式中任一种进行。换句话说,相关的组件、过程或模块可以以任何所期望的方式分布在这两个划分之间。而且,在一个实施例中,编码过程的第一部分的结果可以存储在包含由第二部分所需的全部信息的中间流格式中,以在后续的操作中完成编码过程。此外,在一些实施例中,编码器可被划分为两个部分,其中任何特定于个别输出位流或接收器的处理都在第二部分中执行。
[0373] 在本说明书中描述的技术和系统可以在各种类型的产品或应用中的任一种中采用,包括蜂窝电话、无绳电话、电视、胶片展示、计算机、电缆调制解调器、电缆机顶盒及其它如所希望的那样。而且,本文所公开的技术可以如所希望的那样通过软件和/或硬件来实现。
[0374] 虽然已经相当详细地描述了以上实施例,但是对本领域技术人员来说,一旦上述公开内容被完全理解,许多变化和修改将变得显而易见。还应当强调的是,上述实施例只是实现的非限制性例子。意在将下列权利要求解释为包括所有这些变化和修改。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈