可扩展的高吞吐量视频编码器的制造方法

xiaoxiao2020-10-23  11

可扩展的高吞吐量视频编码器的制造方法
【专利说明】
[0001] 相关申请的交叉引用
[0002] 本申请要求2012年12月19日申请的美国申请号13/720, 546的权益,所述申请 的内容W引用方式并入本文。
技术领域
[0003] 本公开内容大体设及编码,并且具体地说,设及视频编码。
[0004] 背景
[0005] 视频数据通过各种介质的传输和接收正不断增加。典型地,视频编码器用来压缩 视频数据并减少通过介质传输的视频数据的量。如无线显示器或高清晰度视频会议的传统 视频编码应用只需要适度的吞吐量,如30帖每秒(巧S)下的108化或60巧S下的1080p。
[0006] 高吞吐量视频编码对于高性能视频代码转换应用或云游戏应用是至关重要的。在 视频代码转换应用中,两小时的电影经常需要在几分钟内,或至少在几十分钟内代码转换。 在云游戏应用中,游戏擅染的多个会话需要在它们可W跨网络(例如,通过互联网或内联 网)传输之前编码。高性能视频代码转换应用和云游戏应用需要30巧S下的108化或60巧S 下的108化的几倍。该对硬件视频编码器支持高吞吐量提出可扩展性挑战。一些实现方案 诉诸于混合方法,所述方法中视频帖的编码的一部分完全在3D着色器(使用中央处理单元 或图形处理单元)中完成,而帖的编码的其余部分在固定功能硬件上完成。
[0007] 概述
[0008] 本文描述一种可扩展的高吞吐量视频编码器。多个专用的硬件视频编码器W交 错、平行的体系结构运行,其中每个视频编码器编码视频帖并且所述交错或延迟是可编程 数量的宏块列。在一个示例方法中,在第一视频编码器完成编码帖的第一X个宏块列后,第 一视频编码器用信号通知第二视频编码器开始编码下一未处理帖的宏块列。两个视频编码 器继续W同步交错方式平行地编码。在帖的末尾,第一视频编码器开始编码另一未处理帖 的X个宏块列。
[0009] 附图简述
[0010] 可W从结合附图W举例方式给出的W下描述中获得更详细的了解,在附图中:
[0011] 图1是根据一些实施方案的使用高吞吐量视频编码器的示例系统体系结构;
[0012] 图2是根据一些实施方案的示例高吞吐量视频编码器;
[0013] 图3是帖和宏块列的示例图;
[0014] 图4是根据一些实施方案的使用高吞吐量视频编码器来编码视频数据的示例流 程图;
[0015] 图5是根据一些实施方案的使用高吞吐量视频编码器来编码视频数据的另一个 示例流程图;W及
[0016] 图6是根据一些实施方案的示例源设备或目标设备的框图,所述设备与高吞吐量 视频编码器的实施方案一起使用。
[0017] 详述
[0018] 图1是根据一些实施方案的示例系统100,所述系统使用如下文所述的高吞吐量 视频编码器来通过网络105从源侧110向目标侧115发送编码的视频数据。源侧110包括 能够存储、采集或产生可W传输到目标侧115的视频数据的任何设备。所述设备可W包括 但不限于源设备120、移动电话122、联网游戏设备124、摄像机126或多媒体服务器128。 来自该些设备的视频数据供给编码器130,所述编码器又如下文所述对视频数据进行编码。 编码的视频数据由解码器140处理,所述解码器又向目标设备发送解码的视频数据,所述 目标设备可W包括但不限于目标设备142、联网游戏设备144和显示监视器146。尽管编码 器130被展示为单独设备示,但是它可W实现为外部设备或集成在可W用来存储、采集、产 生或传输视频数据的任何设备中。
[0019] 图2是根据一些实施方案的示例高吞吐量视频编码器200的框图。高吞吐量视频 编码器200可W包括用于接收视频数据并且输出编码的视频数据的多个视频编码器。多个 视频编码器中的每一个是完整的、固定功能的硬件视频编码器。仅为了说明,高吞吐量视频 编码器200可W包括视频编码器1 205、视频编码器2 210、视频编码器3 215直到视频编 码器N220,其中视频编码器1 205连接至编码器2 210、视频编码器2 210连接至视频编 码器3 215,W此类推,直到视频编码器N220,视频编码器N220连接至视频编码器1 205。 视频编码器1 205、视频编码器2 210、视频编码器3 215直到视频编码器N220各自接收 源视频数据225并且输出编码的视频数据230。多个视频编码器中的每一个如本文所述进 一步连接至用于存储并读取参考数据的公用存储器。例如,视频编码器1 205、视频编码器 2 210、视频编码器3 215直到视频编码器N220连接至存储器235。
[0020] 如本文所述,高吞吐量视频编码器可W包括2至N个视频编码器实例或视频编码 器电路。每个视频编码器实例编码视频帖,其中视频数据包括多个视频帖。图3是帖1 300 和帖2 305的示例图。帖300和帖305中的每一个包含宏块列1. . .m,其中每个宏块列取决 于所使用的视频编码标准或方案可W具有例如8至16个光栅线。
[0021] 在标准编码方案中,在编码当前帖时存在对先前帖的依赖性。例如,在编码当前帖 时,视频编码器使用由先前视频帖产生的参考。为使视频编码吞吐量最大化,所有视频编码 器需要平行地工作而不必等待其它视频编码器完全完成对视频帖的编码。该是通过使每个 视频编码器等待可编程数量或预定数量的宏块列来实现。在一个实施方案中,预定数量的 宏块列少于帖中宏块列的总数。在另一个实施方案中,预定数量的宏块列相对于帖中宏块 列的总数是较小的。在另一个实施方案中,预定数量的宏块列可W约为1至10个宏块列。 该个数量可W是预定的但是可W由编码先前帖的视频编码器用信号通知。该种方法确保编 码先前帖(N-1)的视频编码器完成产生参考,所述参考是编码当前帖(帖脚的视频编码器 所需使用的。W该种方式,所有视频编码器交错了几个宏块列但平行地工作W获得最大吞 吐量。
[0022] 图4是根据一些实施方案的针对使用高吞吐量视频编码器的视频数据的示例高 级流程图400。视频编码器编码帖的第一X个宏块列(405)。在第一X个宏块列完成后,所 述视频编码器用信号通知另一个视频编码器开始编码下一未处理帖的宏块列(410)。两个 (或所有)视频编码器继续W同步交错方式平行地编码(415)。如果所述帖完成,那么视 频编码器开始编码另一未处理帖的X个宏块列(420)。否则,视频编码器继续编码所述帖 (425) 〇
[0023] 图5是根据一些实施方案的使用高吞吐量视频编码器来编码视频数据的示例流 程图500,并且也是参考图2和图3来描述的。仅为了说明,流程图500是参考两个视频编 码器(视频编码器1 205和视频编码器2 210)来描述的,并且假设宏块列的数量为5个宏 块列。该在图2中展示为宏块列250。
[0024] 最初,编码器1 205从源视频数据225接收帖1 300并且开始编码帖1 300 (505)。 编码器2 210 -直等到编码器1 205完成编码已编程数量或预定数量的宏块列,例如,宏块 列350。该构成了初始延迟。一旦编码器1 205完成编码宏块列350,编码器1 205就产生 与宏块列350相关联的参考数据并且将参考数据存储在存储设备(例如,存储器235)中 巧10)。编码器1 205用信号通知编码器2 210开始编码帖2 305的宏块列1巧15)。
[00巧]编码器2 210开始编码帖2 305的宏块列1,并且编码器1 205平行地继续编码 下一宏块列,即帖1 300的宏块列6巧20)。当编码器1 205完成编码宏块列6时,编码器1 205用信号通知编码器2 210开始编码帖2 305的宏块列2巧25)。由于编码器1 205与编 码器2 210之间的依赖关系(即,编码器2 210需要来自编码器1 205的参考数据),编码 器2 210总是滞后预定数量的宏块列,但是与编码器1 205 -致。该导致编码器1 205和 编码器2 210W同步、交错方式平行地操作。为了说明,假设帖具有1920x1088的帖分辨率 且每个宏块具有16x16个像素,当编码器1 205完成编码帖1 300的宏块列67时,编码器 1 205用信号通知编码器2 210编码帖2 305的宏块列63。
[0026] -旦编码器1 205完成编码帖1 305的宏块列68,编码器1 205就用信号通知编 码器2 210;编码器2 210可W编码帖2 305的宏块列64至68,因为编码器1 205已经完 成产生用于帖1 300的所有参考巧30)。一旦帖1 300的宏块列68完成,编码器1 205就 开始编码帖3巧35)。然而,在编码器2 210可W开始编码下一帖(即,帖4)之前,编码器2 210必须等待编码器1 205完成编码帖3的第一已编程数量或预定数量的宏块列。
[0027] 该种方法可W扩展至大量视频编码器W获得最大吞吐量。在初始化延迟之后,如 果例如有N个视频编码器,那么长期吞吐量为N。初始化延迟给每个视频编码器引入固定数 量的交错或延迟。例如,针对第N个视频编码器,给出X作为预先定义或已编程数量的宏块 列,那么交错或延迟将是化。
[0028] 图6是根据一些实施方案的设备600的框图,在所述设备中可W实现本文所述的 高吞吐量视频编码器。设备600可W包括例如计算机、游戏设备、手持式设备、机顶盒、电 视、移动电话或平板计算机。设备100包括处理器602、存储器604、存储设备606、一个或多 个输入设备608和一个或多个输出设备610。设备600还可任选地包括输入驱动器612和 输出驱动器6 14。应理解的是,设备100可包括图6中未展示的其它部件。
[002引处理器602可W包括中央处理单元仰U)、图形处理单元师U)、位于同一晶粒上 的CPU和GPU,或一个或多个处理器核屯、,其中每个处理器核屯、可W是CPU或GPU。存储器 604与处理器602可位于同一晶粒上,或可与处理器602分开定位。存储器604可包括易失 性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或超高速缓存。在一些实施方 案中,在处理器602中实现高吞吐量视频编码器。
[0030] 存储装置606可包括固定存储设备或可移动存储设备,例如硬盘驱动器、固态驱 动器、光盘或闪存驱动器。输入设备608可包括键盘、小键盘、触摸屏、触摸板、检测器、麦克 风、加速计、巧螺仪、生物识别扫描器或网络连接(例如,用于发射和/或接收无线IE邸802 信号的无线局域网卡)。输出设备610可包括显示器、扬声器、打印机、触觉反馈设备、一个 或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE802信号的无线局域网 卡)。
[0031] 输入驱动器612与处理器602和输入设备608通信,并且容许处理器602接收来 自输入设备608的输入。输出驱动器614与处理器602和输出设备610通信,并且容许处 理器602向输出设备610发送输出。应指出的是,输入驱动器612和输出驱动器614为任 选部件,并且在输入驱动器612和输出驱动器614不存在的情况下,设备600将W相同方式 操作。
[0032] 本文所述的视频编码器可W使用多种编码方案,所述方案包括但不限于运动图 像专家组(MPEG)MPEG-l、MPEG-2、MPEG-4、MPEG-4 第 10 部分、Windows⑩*.avi格式、 Quicktime? *.mov格式、H. 264编码方案、高效率视频编码(肥VC)编码方案和流式视频格 式。
[0033] -般来说,根据一些实施方案,用于编码的方法包括:使用编码器来编码帖,W及 在所述编码器完成编码所述帖的预定数量的宏块列之后使用另一个编码器来编码下一帖。 所述编码器和所述另一个编码器W同步、交错方式平行地操作。在一些实施方案中,预定数 量的宏块列少于帖中宏块列的数量。在一些实施方案中,预定数量的宏块列约为1至10个 宏块列。
[0034] 应了解,可能存在基于本文中公开内容的许多变型。尽管上文W特定组合来描述 特征和元件,但是每个特征和元件可W在没有其它特征和元件的情况下单独使用,或者可 W在具有或没有其它特征和元件的情况下W各种组合来使用。
[00巧]所提供的方法在可适用范围内可在通用计算机、处理器或处理器核屯、中实现。例 如,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器值SP)、多 个微处理器、与DSP核屯、相关联的一个或多个微处理器、控制器、微控制器、专用集成电路 (ASIC)、现场可编程口阵列(FPGA)电路、其它任何类型的集成电路(1C)和/或状态机。可 W通过使用处理后的硬件描述语言(皿L)指令和包括网表的其它中间数据(该些指令能够 存储在计算机可读介质上)的结果配置制造过程来制造该些处理器。该种处理的结果可W 是光罩作品,所述光罩作品随后在半导体制造过程中用来制造实现实施方案的各方面的处 理器。
[0036] 本文提供的方法或流程图在可适用的范围可W在并入计算机可读存储介质中的 计算机程序、软件或固件中实现,W便由通用计算机或处理器执行。计算机可读存储介质的 实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、超高速缓存存储器、半导体存 储设备、如内部硬盘和可移动磁盘的磁性介质、磁光介质,W及如CD-ROM盘和数字多功能 盘值VD)的光学介质。
[0037] * * *
【主权项】
1. 一种用于编码的方法,其包括: 使用第一编码器来编码帧;以及 在所述第一编码器完成编码所述帧的预定数量的宏块列后,使用第二编码器来编码下 一帧,其中所述第一编码器和所述第二编码器以同步、交错方式平行地操作。2. 如权利要求1所述的方法,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。3. 如权利要求1所述的方法,其中所述预定数量的宏块列约为1至10个宏块列。4. 如权利要求1所述的方法,其中所述第一编码器用信号通知所述第二编码器何时开 始编码所述下一帧。5. 如权利要求1所述的方法,其中所述编码器为所述另一个编码器产生参考数据并且 将所述参考数据存储在存储器中以便由所述另一个编码器使用。6. -种用于编码的方法,其包括: 使用第一编码器来编码帧;以及 使用第二编码器来编码下一帧,其中所述第一编码器和所述第二编码器以同步、交错 方式平行地操作,其中所述交错是预定数量的宏块列。7. 如权利要求6所述的方法,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。8. 如权利要求6所述的方法,其中所述预定数量的宏块列约为1至10个宏块列。9. 如权利要求6所述的方法,其中所述第一编码器用信号通知所述第二编码器何时开 始编码所述下一帧。10. 如权利要求6所述的方法,其中所述第一编码器为所述第二编码器产生参考数据 并且将所述参考数据存储在存储器中以便由所述第二编码器使用。11. 一种设备,其包括: 存储器; 至少两个编码器; 所述至少两个编码器中的一个编码器被配置来编码帧;以及 所述至少两个编码器中的另一个编码器被配置来在所述一个编码器完成编码所述帧 的预定数量的宏块列之后编码下一帧,其中所述一个编码器和所述另一个编码器以同步、 交错方式平行地操作。12. 如权利要求11所述的设备,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。13. 如权利要求11所述的设备,其中所述预定数量的宏块列约为1至10个宏块列。14. 如权利要求11所述的设备,其中所述一个编码器用信号通知所述另一个编码器何 时开始编码所述下一帧。15. 如权利要求11所述的设备,其中所述一个编码器为所述另一个编码器产生参考数 据并且将所述参考数据存储在所述存储器中以便由所述另一个编码器使用。16. -种设备,其包括: 存储器; 多个编码器; 所述多个编码器中的一个编码器被配置来编码帧;以及 所述多个编码器中的另一个编码器被配置来编码下一帧,其中所述编码器和所述另一 个编码器以同步、交错方式平行地操作,其中所述交错是预定数量的宏块列。17. 如权利要求16所述的设备,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。18. 如权利要求16所述的设备,其中所述预定数量的宏块列约为1至10个宏块列。19. 如权利要求16所述的设备,其中所述编码器用信号通知所述另一个编码器何时开 始编码所述下一帧。20. 如权利要求16所述的设备,其中所述编码器为所述另一个编码器产生参考数据并 且将所述参考数据存储在所述存储器中以便由所述另一个编码器使用。21. -种用于从源设备向目标设备发送数据的系统,其包括: 存储器; 至少两个编码器; 所述至少两个编码器中的一个编码器被配置来编码从所述源设备接收的帧;以及 所述至少两个编码器中的另一个编码器被配置来在所述一个编码器完成编码所述帧 的预定数量的宏块列之后编码从所述源设备接收的下一帧,其中所述一个编码器和所述另 一个编码器以同步、交错方式平行地操作。22. 如权利要求21所述的系统,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。23. 如权利要求21所述的系统,其中所述预定数量的宏块列约为1至10个宏块列。24. 如权利要求21所述的系统,其中所述一个编码器用信号通知所述另一个编码器何 时开始编码所述下一帧。25. 如权利要求21所述的系统,其中所述一个编码器为所述另一个编码器产生参考数 据并且将所述参考数据存储在所述存储器中以便由所述另一个编码器使用。26. -种用于从源设备向目标设备发送数据的系统,其包括: 存储器; 多个编码器; 所述多个编码器中的一个编码器被配置来编码从所述源设备接收的帧;以及 所述多个编码器中的另一个编码器被配置来编码从所述源设备接收的下一帧,其中所 述编码器和所述另一个编码器以同步、交错方式平行地操作,其中所述交错是预定数量的 宏块列。27. 如权利要求26所述的系统,其中所述预定数量的宏块列少于所述帧中宏块列的数 量。28. 如权利要求26所述的系统,其中所述预定数量的宏块列约为1至10个宏块列。29. 如权利要求26所述的系统,其中所述编码器用信号通知所述另一个编码器何时开 始编码所述下一帧。30. 如权利要求26所述的系统,其中所述编码器为所述另一个编码器产生参考数据并 且将所述参考数据存储在所述存储器中以便由所述另一个编码器使用。
【专利摘要】本文描述一种可扩展的高吞吐量视频编码器。多个专用的硬件视频编码器以交错、平行的体系结构运行,其中每个视频编码器编码视频帧并且所述交错或延迟是可编程数量的宏块列。在一个示例方法中,在第一视频编码器完成编码帧的第一x个宏块列后,所述第一视频编码器用信号通知第二视频编码器开始编码下一未处理帧的宏块列。两个视频编码器继续以同步、交错方式平行地编码。在所述帧的末尾,所述第一视频编码器开始编码另一未处理帧的x个宏块列。
【IPC分类】H04N19/436, H04N19/40
【公开号】CN104904215
【申请号】CN201380069767
【发明人】张磊, 罗英, 爱德华·哈罗德
【申请人】Ati科技无限责任公司
【公开日】2015年9月9日
【申请日】2013年12月17日
【公告号】EP2936810A1, US20140169481, WO2014094158A1

最新回复(0)