CN111557093B - 低时延视频编解码器和利用并行处理的传输 - Google Patents
低时延视频编解码器和利用并行处理的传输 Download PDFInfo
- Publication number
- CN111557093B CN111557093B CN201880085606.6A CN201880085606A CN111557093B CN 111557093 B CN111557093 B CN 111557093B CN 201880085606 A CN201880085606 A CN 201880085606A CN 111557093 B CN111557093 B CN 111557093B
- Authority
- CN
- China
- Prior art keywords
- blocks
- encoded
- frame
- processor
- subset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title description 67
- 230000005540 biological transmission Effects 0.000 title description 25
- 238000000034 method Methods 0.000 claims abstract description 73
- 239000000872 buffer Substances 0.000 claims description 36
- 230000015654 memory Effects 0.000 claims description 34
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 20
- 230000006854 communication Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 239000002609 medium Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000001413 cellular effect Effects 0.000 description 10
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000010267 cellular communication Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000000354 decomposition reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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/176—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 block, e.g. a macroblock
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开描述了用于编码视频数据的并行多处理器编码器系统的方法和设备,其中视频数据包括帧序列,其中每个帧包括顺序行中的多个像素块。对于每一帧,系统可以将所述多个块分割成多个块子集,其中每个块子集被分配给并行多处理器系统的相应处理器。并行多处理器系统的每个相应处理器可以对分配给相应处理器的块子集的行进行顺序编码,并且将块的每个编码行作为位流顺序地传输到信道上的解码器。对于每一行,在传输任何处理器的块的下一相应编码行之前,将块的相应编码行传输到用于每个处理器的解码器。此外,描述了类似的并行多处理器解码器系统。
Description
技术领域
本发明的领域一般而言涉及在有线和无线通信中使用的视频编码器和解码器。
背景技术
编码器和解码器被用于有线和无线通信的许多领域。传输器可以对旨在由特定接收器接收的消息进行编码。视频编码应用(例如,针对视频流传输应用)引入了严格的时延和吞吐量要求,因为需要实时编码、传输和解码大量数据,以便接收设备可以显示解码后的视频而不会出现播放间隙或不期望的视频质量下降。
为了解决这些和其它问题,需要在领域中进行改进。
发明内容
描述了用于利用并行多处理器系统来编码和解码视频数据的系统和方法的各种实施例。
在一些实施例中,包括耦合到相应的非暂态计算机可读存储介质的多个并行处理器的并行多处理器视频编码器系统被配置为编码视频数据,其中视频数据包括帧序列,其中每个帧包括顺序行中的多个像素块。
在一些实施例中,对于视频数据的每个帧,视频编码器系统可以将多个块分割成多个块子集,其中每个块子集被分配给并行多处理器系统的相应处理器。
并行多处理器系统的每个相应处理器可以顺序地对分配给相应处理器的块子集的行进行编码,并在信道上顺序地将块的每个编码行作为位流传输到解码器。对于每一行,在传输任何处理器的与相应行相继的行的块的编码行之前,可以将相应行的块的编码行传输到用于每个处理器的解码器。
在一些实施例中,包括耦合到相应的非暂态计算机可读存储器的多个并行处理器的并行多处理器视频解码器系统可以被配置为对编码视频数据进行解码,其中编码视频数据包括编码帧序列,其中每个编码帧包括顺序行中的多个编码像素块。在这些实施例中,视频解码器系统可以从信道接收编码视频数据。对于编码帧序列的每个编码帧,视频解码器系统可以将多个块分割成多个块子集,并且可以将每个块子集分配给并行多处理器系统的相应处理器。
并行多处理器系统的每个处理器可以顺序地对分配给相应处理器的块子集的行进行解码,并且将块的解码行组合以获得解码帧。对于每一行,在组合任何处理器的与相应行相继的行的块的解码行之前,可以组合每个处理器的相应行的解码块。最终,视频解码器系统可以将解码帧作为解码帧序列输出。
本发明内容旨在提供本文档中描述的一些主题的简要概述。因而,将认识到的是,上述特征仅仅是示例,并且不应当被解释为以任何方式缩小本文描述的主题的范围或精神。根据下面的具体实施方式、附图和权利要求书,本文描述的主题的其它特征、方面和优点将变得显而易见。
附图说明
当结合以下附图考虑优选实施例的以下详细描述时,可以获得对本发明的更好理解,其中:
图1是图示根据一些实施例的编码器/解码器通信系统的图;
图2是图示根据一些实施例的示例性编码器/解码器设备的框图;
图3是根据一些实施例的具有散布的处理元件、存储器和数据存储器路由器的并行多处理器系统的示意图;
图4是图示根据一些实施例的基本的基于帧的编码管线的流程图;
图5是图示根据一些实施例的基本的基于块的编码管线的流程图;
图6是图示根据一些实施例的用于实时编码和解码的端到端系统的流程图;
图7是根据一些实施例的视频帧分配的示例,其示出了用于多个并行处理器的处理流程;
图8是根据一些实施例的视频帧分配的示例,其示出了由多个并行处理器在信道上传输编码行的次序。
图9是图示根据一些实施例的利用并行处理的基于块的编码管线的流程图;
图10是图示根据一些实施例的利用并行处理的基于块的解码管线的流程图;
图11是图示根据一些实施例的用于并行多处理器编码器系统编码和传输视频帧序列的示例性方法的流程图;
图12是图示根据一些实施例的用于并行多处理器解码器系统接收和解码编码视频帧序列的示例性方法的流程图;以及
图13是图示根据一些实施例的具有两个层级的示例性分层处理网络的示意图。
虽然本发明容许各种修改和可替代形式,但是其具体实施例以示例的方式在附图中示出并且在本文中详细描述。但是,应当理解的是,附图及其详细描述并非旨在将本发明限制到所公开的特定形式,相反,本发明要覆盖落入如所附权利要求所限定的本发明的精神和范围内的所有修改、等同物和替代方案。
术语“被配置为”在本文中通过指示单元/电路/部件包括在操作期间执行一个或多个任务的结构(例如,电路系统)来表示结构。照此,即使指定的单元/电路/部件当前不操作(例如,未接通),也可以说该单元/电路/部件被配置为执行任务。与“被配置为”语言一起使用的单元/电路/部件包括硬件,例如,电路、存储可执行以实现操作的程序指令的存储器等。记载单元/电路/部件“被配置为”执行一个或多个任务明确地旨在对那个单元/电路/部件不调用援引35U.S.C.§112(f)的解释。
具体实施方式
通过引用并入
以下参考文献通过引用整体上并入本文,如同在本文中完全和完整地阐述了一样:
1)Ribas-Corbera,Jordi,Chou,Philip A.,Regunathan,Shankar&Chou,PhilipA.(2003).“A generalized hypothetical reference decoder for H.264/AVC”.IEEETrans.Circuits and Systems for Video Technology,第7卷第7期,2013年7月,第674-687页。
2)Sachin Deshpande,Miska M.Hannuksela,KimihikoKazui,and ThomasSchierl,“An Improved Hypothetical Reference Decoder for HEVC,”Proceedings ofthe SPIE.Volume 8666,id.866608 9pp.(2/2013)。
3)Hu,Wen-Chen,Multidisciplinary Perspectives on Telecommunications, Wireless Systems,and Mobile Computing,Chapter 12:Intra Refresh and Data-Partitioning for Video Streaming over IEEE 802.11c,Hershey,PA,IGI Publishing,2013年,第200页。
4)R.Schreier,A.Rothermel,“Motion adaptive intra refresh for theH.264video coding standard”,IEEE Tr.on Consumer Electronics,第52卷,第1期,2006年2月,第249-253页。
5)H.Chen,等人,“Adaptive Intra-Refresh for Low-Delay Error-ResilientVideo Coding",Signal and Information Processing Association Annual Summit andConference(APSIPA),2014Asia-Pacific,第1-4页,2014年。
术语
以下是本申请中使用的术语的术语表:
存储介质—各种类型的存储器设备或存储设备中的任何一种。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘104或磁带设备;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDO RAM、Rambus RAM等;或者非易失性存储器,诸如磁介质(例如,硬盘驱动器)、光学存储装置,或ROM、EPROM、FLASH等。存储介质也可以包括其它类型的存储器或其组合。此外,存储介质可以位于在其中执行程序的第一计算机中,或者可以位于通过网络(诸如互联网)连接到第一计算机的不同的第二计算机。在后一种情况下,第二计算机可以向第一计算机提供程序指令用于执行。术语“存储介质”可以包括两个或更多个存储介质,这些存储介质可以位于不同位置,例如通过网络连接的不同计算机中。
承载介质—如上所述的存储介质,以及物理传输介质,诸如传递诸如电或光信号之类的信号的总线、网络和/或其它物理传输介质。
可编程硬件元件—包括各种硬件设备,这些硬件设备包括经由可编程或硬连线互连连接的多个可编程功能块。示例包括FPGA(现场可编程门阵列)、PLD(可编程逻辑设备)、FPOA(现场可编程对象阵列)和CPLD(复杂PLD)。可编程功能块的范围可以从细粒度(组合逻辑或查找表)到粗粒度(算术逻辑单元或处理器核心)。可编程硬件元件也可以被称为“可重新配置逻辑”。
专用集成电路(ASIC)—这个术语旨在具有其普通含义的完整广度。术语ASIC旨在包括为特定应用定制的集成电路,而不是通用可编程设备,但是ASIC可以包含可编程处理器核心作为构建块。蜂窝电话芯片、MP3播放器芯片以及其它许多单功能IC都是ASIC的示例。通常用硬件描述语言(诸如Verilog或VHDL)来描述ASIC。
程序—术语“程序”旨在具有其普通含义的完整广度。术语“程序”包括1)可以存储在存储器中并可由处理器执行的软件程序或2)可用于配置可编程硬件元件或ASIC的硬件配置程序。
软件程序—术语“软件程序”旨在具有其普通含义的完整广度,并且包括可以存储在存储介质中并由处理器执行的任何类型的程序指令、代码、脚本和/或数据或其组合。示例性软件程序包括以基于文本的编程语言(例如,命令式或过程式语言(诸如C、C++、PASCAL、FORTRAN、COBOL、JAVA、汇编语言等)编写的程序;图形程序(用图形编程语言编写的程序);汇编语言程序;已经编译成机器语言的程序;脚本;以及其它类型的可执行软件。软件程序可以包括以某种方式互操作的两个或更多个软件程序。
硬件配置程序—可以被用于编程或配置可编程硬件元件或ASIC的程序,例如网表或位文件。
计算机系统—各种类型的计算或处理系统中的任何一种,包括个人计算机系统(PC)、大型机计算机系统、工作站、网络设备、互联网设备、个人数字助理(PDA)、网格计算系统或者其它设备或设备的组合。一般而言,术语“计算机系统”可被广泛地定义为涵盖具有执行来自存储介质的指令的至少一个处理器的任何设备(或设备的组合)。
自动—是指在没有直接指定或执行动作或操作的用户输入的情况下由计算机系统(例如,由计算机系统执行的软件)或设备(例如,电路系统、可编程硬件元件、ASIC,等等)执行的动作或操作。因此,术语“自动地”与在用户提供输入来直接执行操作的情况下由用户手动执行或指定的操作形成对照。自动过程可由用户提供的输入发起,但是“自动地”执行的后续动作不是用户指定的,即,不是在用户指定每个要执行的动作的情况下“手动地”执行的。例如,通过选择每个字段并且提供指定信息的输入(例如,通过键入信息、选择复选框、单选选择,等等)来填写电子表单的用户是在手动填写该表单,即使计算机系统必须响应于用户动作来更新表单。表单可由计算机系统自动填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表单的字段并且在没有任何指定字段的答案的用户输入的情况下填写表单。如上所述,用户可调用表单的自动填写,但不参与表单的实际填写(例如,用户不是手动指定字段的答案,而是这些字段被自动地完成)。本说明书提供了响应于用户采取的动作而自动执行操作的各种示例。
详细描述
图1–视频编码器和解码器通信系统
图1图示了示例性(和简化的)视频编码器/解码器通信系统。编码器和解码器可以被配置为实现低时延编码视频传输,其可以根据各种视频编码标准(诸如高效视频编码(HEVC)或另一种编码标准)进行操作。图1示出了涉及视频编码器102通过网络104与视频解码器106进行通信的示例通信系统。视频编码器102可以是多种类型的设备中的任何一种,诸如蜂窝基站、用户装备(UE)设备、网络或云服务器、用于执行Wi-Fi通信的无线接入点(诸如根据802.11标准或相关标准),或另一种类型的计算设备。网络104可以是各种类型的网络中的任何一种,包括但不限于蜂窝网络、有线或无线互联网协议(IP)网络、无线电网络或其它类型的广播网络、专用网络或另一种类型的网络。解码器106可以是各种设备中的任何一种,诸如智能电话、平板设备、计算机系统、智能TV、便携式视频播放器等。编码器102和解码器106中的一者或两者可以包括如本文所述的编码器逻辑和/或解码器逻辑。
注意的是,图1的系统仅仅是可能系统的一个示例,并且可以根据需要在各种系统中的任何一种中实现实施例。
在一些实施例中,编码器102可以被配置为将编码视频广播到解码器106。本文的术语“广播”可以指为在广播区域中的接收设备发送的一对多传输,而不是寻址到特定设备的传输。另外,广播传输通常是单向的(从发送器到接收器)。在一些情况下,控制信令(例如,评级信息)可以从接收器传递回广播发送器,但是内容数据仅在一个方向上发送。相反,蜂窝通信通常是双向的。“蜂窝”通信也可以涉及小区之间的移交(handoff)。例如,在蜂窝通信实施例中,当解码接收器106移出蜂窝基站编码器102服务的小区时,它可以切换到另一个蜂窝基站(并且切换可以由网络处置,包括由编码器102和另一个蜂窝基站执行的操作)。相反,当用户从第一广播基站覆盖的范围移动到第二广播基站覆盖的范围时,它可以切换以从第二广播基站接收内容,但是基站不需要促进切换(例如,它们仅继续广播并且不关心特定接收器正在使用哪个基站)。
传统上,使用与蜂窝传输不同的频率资源来执行广播传输。但是,在一些实施例中,频率资源在这些不同类型的传输之间被共享。例如,在一些实施例中,广播基站被配置为在调度时间间隔期间放弃一个或多个频带,以供蜂窝基站用于分组交换通信。
编码器102和解码器106可以被配置为使用各种RAT(也称为无线通信技术或电信标准)中的任何一种在网络104上进行通信,诸如LTE、5G新无线电(NR)、下一代广播平台(NGBP)、W-CDMA、TDS-CDMA和GSM,以及其它可能的其它技术,诸如UMTS、LTE-A、CDMA2000(例如,lxRTT、1xEV-DO、HRPD、eHRPD)、高级电视系统委员会(ATSC)标准、数字视频广播(DVB)等。
在本文中讨论广播和蜂窝网络以促进说明,但是在其它实施例中,这些技术并非旨在限制本公开的范围,并且所公开的频谱共享技术可以在各种类型的有线和/或无线网络中的任何一种之间使用。
图2–编码器/解码器
图2图示了编码器设备102或解码器设备106的示例简化框图。编码器/解码器可以是如上定义的各种设备中的任何一种。编码器/解码器设备106可以包括可以由各种材料中的任何一种构成的壳体。
如图所示,编码器/解码器设备可以包括片上系统(SOC)400,其可以包括用于各种目的的部分。SOC 400可以耦合到编码器/解码器设备的各种其它电路。例如,编码器/解码器设备可以包括各种类型的存储器(例如,包括NAND闪存410)、连接器接口420(例如,用于耦合到计算机系统、扩展坞、充电站等)、显示器460、无线通信电路系统430(诸如用于LTE、5G新无线电(NR)、GSM、蓝牙(BT)、WLAN和/或广播等)。编码器/解码器设备还可以包括一个或多个实现SIM(订户身份模块)功能的智能卡。无线通信电路系统430可以耦合到一个或多个天线(诸如天线435)。
如图所示,SOC 400可以包括可以执行用于编码器/解码器设备的程序指令的(一个或多个)处理器402以及可以执行图形处理并向显示器460提供显示信号的显示电路系统404。(一个或多个)处理器402还可以耦合到存储器管理单元(MMU)440,其可以被配置为从(一个或多个)处理器402接收地址并将那些地址翻译成存储器中的位置(例如,存储器(例如,只读存储器(ROM)或另一种类型的存储器)406、NAND闪存410)和/或其它电路或设备,诸如显示电路系统404、无线通信电路系统430、连接器I/F 420和/或显示器460。MMU 440可以被配置为执行存储器保护和页表翻译或设置。在一些实施例中,MMU 440可以被包括作为(一个或多个)处理器402的一部分。在一些实施例中,处理器、MMU和存储器可以是分布式多处理器系统。例如,处理器系统可以包括多个散布的处理器和存储器,其中处理元件(也称为功能单元)各自连接到多个存储器,也称为数据存储器路由器。处理器系统可以被编程为实现本文描述的方法。
在一些实施例中(未示出),解码器设备被配置为例如从图2的视频编码器设备102接收无线广播。在这些实施例中,解码器设备106可以包括广播无线电接收器。在一些实施例中,解码器设备被配置为在不同时间片期间使用不同频带和/或相同频率资源同时接收广播数据并执行分组交换蜂窝通信(例如,LTE)。这可以允许用户在执行其它任务(诸如浏览互联网(例如,以分屏模式),使用web应用或收听流传输音频)的同时观看TV广播。在其它实施例中,所公开的技术可以用在具有被配置为广播接收器或用于蜂窝通信但不是两者的设备的系统中。
编码器/解码器设备的(一个或多个)处理器402可以被配置为实现本文描述的部分或全部特征,例如,通过执行存储在存储介质(例如,非暂态计算机可读存储介质)上的程序指令。在一些实施例中,(一个或多个)处理器402可以包括多个并行化处理元件的多处理器阵列。例如,(一个或多个)处理器402可以根据Coherent Logix HyperXTM体系架构或另一个并行处理器体系架构来设计。可替代地(或此外),(一个或多个)处理器402可以被配置为可编程硬件元件,诸如FPGA(现场可编程门阵列),或者ASIC(专用集成电路)。可替代地(或此外),编码器/解码器设备的(一个或多个)处理器402结合其它部件400、404、406、410、420、430、435、440、460中的一个或多个可以被配置为实现本文描述的部分或全部特征。
编码器/解码器设备可以具有显示器460,其可以是结合电容式触摸电极的触摸屏。显示器460可以基于各种显示技术中的任何一种。编码器/解码器设备的壳体可以包含或包括用于各种元件中的任何元件的开口,诸如按钮、扬声器端口和其它元件(未示出),诸如麦克风、数据端口以及可能的各种类型的按钮(例如,音量按钮、振铃器按钮等)。
编码器/解码器设备可以支持多种无线电接入技术(RAT)。例如,编码器/解码器设备可以被配置为使用诸如全球移动通信系统(GSM)、通用移动电信系统(UMTS)、码分多址(CDMA)(例如,CDMA2000 1XRTT或其它CDMA无线电接入技术)、长期演进(LTE)、LTE高级(LTE-A)、5G NR和/或其它RAT中的两个或更多个的各种RAT中的任何一种进行通信。例如,编码器/解码器设备可以支持至少两种无线电接入技术,诸如LTE和GSM。根据需要可以支持各种不同的或其它RAT。
在一些实施例中,编码器/解码器设备还被配置为发送和/或接收可以传递音频和/或视频内容的广播无线电传输。在还有其它实施例中,编码器/解码器设备可以被配置为接收广播无线电传输,并且可以不被配置为执行通过网络的双向通信(例如,解码器106可以是媒体回放设备)。
图3图示了可以存在于编码器和/或解码器中的示例并行多处理器系统。在这个示例中,并行多处理器系统可以包括多个散布的处理器和存储器,如图所示,其中矩形是处理元件(也称为功能单元),而圆圈是存储器(也称为数据存储器路由器)。例如,一个或多个处理元件可以被分配视频帧的列的子集以用于编码和/或解码,如下面更详细地描述的。换句话说,如在本文描述的对并行多处理器系统的引用中所使用的,术语“处理器”可以指或者单个处理元件或者如图3中所示的一组多个处理元件。有利地,本文描述的方法可以采用分布式控制来并行化编码或解码处理,而无需引入主控制器来指导编码/解码处理。
处理器系统可以被编程为实现本文描述的方法。关于可以在一些实施例中使用的示例处理器系统体系架构的更多信息,参见美国专利No.7,415,594和8,880,866,所述专利通过引用整体并入本文,如同在本文完全和完整地阐述了一样。处理器系统的另一个示例是如上定义的可编程硬件元件(PHE)。例如,解码器可以包括PHE(诸如FPGA),其可以被配置为实现本文描述的方法。
利用并行处理的低时延编码器
视频编码器-解码器解决方案在当今的技术环境中被广泛采用,并且期望减少由编码和解码处理引入的时延,同时为编码视频流保留尽可能多的压缩。视频编码器-解码器方法中的一个长期问题是要实现一种编码器-解码器解决方案,其具有1)少于一帧时间的端到端时延;2)帧间和帧内块预测;以及3)并行处理。如本文所使用的,并行处理可以指多个子帧元素的高级并发处理,如下面更详细描述的。例如,并行处理实施方式对于基于软件的实施方式可以是有用的,但是可以更普遍地应用于使用并行处理以满足吞吐量要求的任何实施方式。本文描述的实施例提供了方法,通过该方法,可以将要编码的视频的每个图片帧分割成多个图块(tile)以进行独立的并行处理,其中编码的视频流通过通信网络被传输到解码器,并且其中它由解码器接收和处理以供实时显示。
本文所述的实施例可以适用于遵循现代标准(诸如MPEG-2Video、H.264(AVC)、H.265(HEVC)、VP8、VP9、新兴的AV1和可能的未来标准,以及其它可能性)的视频编码器实施方式。这些标准可以被描述为基于块的运动补偿视频压缩方法,其在其编码方法中采用帧内和帧间预测。例如,这些标准可以与更简单的仅帧内编码标准(诸如Motion JPEG、MotionJPEG-2000和VC-2)区分开。现代压缩标准中帧内和帧间编码工具的组合实现了200:1或更高的压缩率,几乎没有可见的失真,这取决于源视频内容。虽然组合的帧内和帧间预测提供了比更简单的编码标准更高的压缩优势,但由于帧内和帧间预测引入了不同程度的计算时延和开销,因此也给编码器-解码器处理带来了复杂性。虽然组合的帧内和帧间编码的当前实施方式已经能够通过单个计算线程实现子帧时延,但是本文中的实施例通过在并行处理实施方式中实现子帧时延来改进这些遗留实施方式,如下面更详细描述的。
图4–基本的基于帧的编码器
图4图示了包括一系列处理阶段(在图4中描绘为矩形)的典型编码管线。基于块的运动补偿编码器的许多实施方式被设计为以视频帧作为处理的基本单位进行操作。常规实施方式在整个帧上执行每个处理阶段。阶段之间的存储器缓冲区(在图4中示为倾斜的平行四边形)收集整个数据帧,因此编码管线的最小时延为两个帧时间。值得注意的是,在市场上和学术文献中,许多这样的具有两帧或更多帧时延的编码器被标记为低时延。
图5-子帧时延编码器
其它遗留实施方式使用具有子帧工作负载的相同简单管线。例如,在通常的基于帧的编码器中,帧可以被分割成图块、切片、宏块、编码树单元或其它单元,其在本文的描述中统称为“块”并且如图5中所示。在常规的子帧时延编码器中,编码处理的每个功能可以在块单元上执行,并且结果可以从每个处理阶段逐渐地发送到下一处理阶段。
基于块的方法可以应用于编码管线中的每个操作,包括速率控制(例如,其可以确定每个块的量化级别)、视频分析(例如,其可以找到每个块的编码提示)、预测/变换/模式决定(例如,其可以对每个块执行操作)和熵编码(例如,其可以以每个块为基础执行诸如上下文自适应二进制算术编码(CABAC)或其它类型的熵编码之类的熵编码)。
与基于帧的编码相比,块级别的粒度可以导致更短的时延。时延不像几个块那么短,因为编码器的输入必须包括足够的缓冲才能将输入光栅行(raster line)转换成块。例如,可以使用32行缓冲来将输入图片分割成32x32块。这定义了输入存储器缓冲区的时延。编码器的其余处理阶段会增加更多几个块时间的时延,不包括编码块缓冲区,这将在下面进行更详细的讨论。
端到端编码器-解码器时延
在一些实施例中,在帧间和帧内混合预测的情况下,编码块尺寸的可变性可能大。帧内预测一般产生对图像块的差预测并且可以要求用于残差编码的附加位作为经变换的量化系数。相反,帧间预测可以几乎是完美的。如果在跳过模式下用帧间预测对块进行编码,那么在熵编码之后,它可以仅占编码位流中一位的一小部分。
在一些实施例中,帧内与帧间编码块之间的尺寸差可以是100:1或更大。这会在编码器的输出端出现缓冲问题,因为帧内编码块的集中会增加高于子帧时延的时延。在上面参考图4描述的常规基于帧的编码器中,图4中的编码图像缓冲区(CPB)的输入是整个帧,但是输出是以流速率的位。如果仅使用帧内预测对特定帧进行编码,那么可以要求许多帧时间才能通过CPB。然后可以在随后的帧间预测帧中恢复用于帧内帧的额外延迟,而这些帧间预测帧要小得多。为了避免处理瓶颈,编码图片缓冲区的尺寸可能需要足够大,以吸收帧之间的尺寸变化而不会溢出。
图6图示了用于实时视频传输的典型的端到端编码器-解码器系统。如图所示,解码器处的编码图片缓冲区与编码器的编码图片缓冲区互补。两个缓冲区的尺寸实际上可以相同,并且结果组合的时延可以等于这个尺寸除以流速率。使用基于帧的编码器,编码帧缓冲区的时延可以是多个帧时间。
上面描述的基于块的编码方法对于将编码块缓冲区对的组合时延减小到少于一个帧时间是重要的。利用基于块的编码,缓冲区的时延可以与多个块时间一样小。即使具有块级别粒度,编码块缓冲区也会引入端到端系统的大部分时延。端到端基于块的系统的总时延可以是编码块缓冲区时延加上编码器和解码器中所有其它处理阶段的时延的总和,这可能短到一到两个块行。
高效视频编码(HEVC)标准中的子图片编码粒度
高效视频编码(HEVC)标准引入了位流语法来形式化子图片编码粒度。在标准中,术语“解码单元”(DU)被用于表示如本文所述的“块”。编码器将每个帧分割成多个DU,每个DU均具有相等数量的编码树单元(CTU)。每个CTU通常为64x64或32x32像素(或另一个数量的像素)并且每个DU可以表示CTU的一个或多个行、列或图块。
DU形式化已被添加到专门用于支持子帧时延实时视频传输的HEVC标准中。但是,当将DU指派给并发的并行处理器时,它不提供子帧时延,因为用于DU的编码处理的输出已序列化。如在下面更详细地描述的,本文描述的实施例通过在DU被并行编码时跨DU交织输出来解决这个限制。
帧内刷新编码
帧内刷新是在最新的低时延编码器中找到的编码技术。典型的压缩视频位流组织可以包括周期性的仅帧内刷新图片,其用于在任何先前的位流传输错误之后恢复正确的显示输出。在HEVC编码标准中,它们被描述为即时解码器刷新(IDR)图片。这些图片不参考任何先前解码的信息,因此,如果先前解码的图片包括由于较早的分组丢失而引起的错误,那么可以从IDR(仅帧内)图片中正确解码视频,从而避免传输错误的累积积聚。
周期性的仅帧内图片也引入了处理复杂性,因为与帧间预测的图片相比它们非常大。它们常常要求多个帧时间才能在编码器和解码器之间进行传输,并且它们与遗留子帧时延编码器/解码器系统(甚至那些以块级别粒度运行的系统)不兼容。
对于使用组合的帧间和帧内预测的子帧时延系统的常规方法是要使用通常称为帧内刷新的技术来在短时间跨度内有效地约束位流的速率。这个约束可以基于与上述编码图片缓冲区模型的一致性。如果编码器的编码图片缓冲区没有溢出,那么位速率将受到给定缓冲区尺寸和流传输速率的充分约束或与其相符。可以通过编码器中的速率控制功能来实现编码图片缓冲区的依从性,这通过选择所需的量化程度来设置每个块的尺寸。
在一些实施例中,帧内刷新方法可以将每个图片中的行或列指派为仅包括具有帧内预测的块。可以选择帧内块的集合,使得在位流中一行中的帧内块很少,并且编码图片缓冲区或编码块缓冲区可以小,但仍然执行其位速率平滑功能。单线程低时延编码器可以按照光栅次序(即,逐行)对图片的块进行编码。在这种情况下,在列中定向帧内刷新块可以是有利的,以避免在位流中将太多帧内块分组在一起。
帧内刷新列(一列或多列)的位置可以随着每一帧前进一列(或几列),因此最终可以环绕图片。这周期性地刷新图片,并且由于较早的传输错误而导致图片的不正确解码部分要在相对少量的帧(例如,在每个帧中,等于列数除以帧内刷新列数的帧数)内被校正。帧内刷新技术可以包括对运动补偿的约束,该约束防止图片参考跨一个或多个帧内刷新列的边界的未刷新块。
用于并行处理的低时延视频编码器
本文的实施例解决了如何将编码处理拆分为具有并发、独立执行的多个并行任务或线程的技术问题。图7是将视频帧分割成列以用于并行处理的示意图。如图所示,将N列中的每列(每列包括3列像素块)分配给并行多处理器系统的单独处理器以进行编码。箭头示出了编码的块次序。如图所示,灰色阴影列是帧内预测块的列。虽然无阴影列将优先使用帧间预测(但是在一些实施例中,如果没有良好的帧间预测参考,它们也可以替代地使用帧内预测)。一些编码标准定义了用于帧分割的结构容器,诸如HEVC中的图块。有利地,如果编码位流中的列之间没有上下文相关性,那么可以使用并行独立任务对它们进行编码和解码。每个任务可以产生与图7中已编号的列之一对应的编码位的子流。图片的宽度可以在列之间尽可能均匀地分割成块单元的多个子集。
在这个数据分解中,可以通过将视频帧正交分割成行进行处理来实现低时延。图8是与图7类似的示意图,其图示了位流中编码位到解码器的传输排序。如图所示,N个处理器可以被用于并行地对每一行进行编码,并且编码的结果可以通过编码行缓冲区逐行递增地输出。这与上述的解码单元(DU)分解不同,因为DU不能被定义为正交地跨越多个部分图块。N个处理器中的每一个可以被配置为在N个处理器中的任何一个传输后续行的子部分之前传输每行的其子部分(例如,每行中的3个像素块分配给特定处理器)。因而,在传输来自后续行的块之前,可以将特定行的块的所有子部分作为行单元传输,使得解码器可以高效地消除来自不同行的块之间的歧义。用于特定行的编码块的每个子部分可以包括标签,该标签指示与该子部分相关联的视频帧的一列或多列。有利地,相对于非并行编码,以这种方式进行的编码处理的并行化可以显著减少在解码视频帧的行中引入的时延,并且减少并行多处理器系统中的处理器的时延。此外,一直等到所有处理器对每一行都进行了完全编码然后再传输后续行可以使解码器能够高效地确定哪一行与特定编码块相关联。
可以用一列帧内刷新块来实现帧内刷新,如图7和8中所示。在每一行内,大多数编码块是帧间刷新块,它们将由帧内刷新块编码引入的时延平均分布在各行之间,并防止会导致缓冲区溢出或延迟的传输的特定行中的时延过度集中。这允许减小编码行缓冲区的尺寸以包含少量的行,并且将延迟减小为少量的行时间。
图9和10-具有并行处理的编码和解码管线
图9是图示根据一些实施例的具有并行处理的概念性编码器体系架构的示意图。在一些实施例中,图9中的每个“列n编码”块可以表示图5中所示的编码管线的第二处理阶段。互补的解码处理在图10中示出。
在一些实施例中,视频帧被分割成N列的块以用于并行处理,其中N列中的每一列被分配给并行多处理器系统的相应处理器。注意的是,在其中编码处理通过对视频帧的顺序行进行光栅扫描而进行的实施例中,视频帧被分割成用于并行处理的列(如通常执行的那样)。但是,旨在根据本文的实施例的编码处理可替代地可以通过对顺序列的垂直扫描来进行。在这些实施例中,视频帧可以被分割成N行以进行并行处理,其中N行中的每一行被分配给并行多处理器系统的相应处理器。为了一般地指代这些实施例中的任一个,引入术语“rolumn”,其中如本文所定义的,rolumn是指视频帧的(像素或像素块的)行或列。
对于采用HEVC标准的实施例,每列可以是宽度为若干CTU的图块,并且图块高度可以是视频帧的高度。视频帧可以被正交地分割成用于低时延视频传输的行。可以从以行为单位的N个并行编码任务中获取编码的增量输出,从而有效地传输N个并行的交织流。可以通过使一列CTU用帧内预测进行编码来支持帧内刷新。
有利地,这个编码器组织可以产生一种系统,该系统使并行处理能够在支持帧间和帧内预测的编码器中实现子帧时延。此外,可以使根据本文描述的实施例编码的位流符合HEVC视频压缩标准并且可以由任何符合要求的解码器设备解码。HEVC版本2中引入的所有HEVC简档(包括“主简档”和格式范围扩展简档)均支持使用图块进行的编码。在一些实施例中,作为一个示例,图7中的每一列可以被指派给图块并且如果其宽度是256个亮度样本或更大,那么可以符合编码标准。
HEVC中的每个图块可以独立地并且与所有其它图块并发地被编码。运动向量参考仍会跨越图块边界,因此对压缩效率的负面影响会比使用其它标准的图片分区方案(诸如,AVC/H.264中的灵活宏块排序(FMO))少得多。
附件B字节流
许多现代视频压缩标准定义了可以用于将视频本质从编码器传输到解码器的位流的具体形式。位流格式规范可以指示编码元素的次序,以及如何将它们编码为可以被解析和解码的单个位流。重要的是要注意,在标准的附件A中定义了对编码简档和级别的符合性要求,并且对附件B的遵守是单独的准则。
根据本文描述的实施例,编码器通过按行交织多个独立编码任务的输出来实现利用并行处理的子帧时延,这在附件B字节流的定义之外。大多数符合条件的HEVC解码设备的确要求附件B格式用于其输入,因此本文的实施例可以利用特殊的解码器实现方式,并具有与编码器匹配的输入接口。本文的实施例可以对视频进行编码以形成位流,该位流可以被后处理以将压缩的视频元素重新排序为HEVC标准的附件B中指定的规范次序,以形成常规的位流。然后可以用常规HEVC解码设备实时解码格式化器的输出,或将其保存到文件中。包括这个附件B格式化器和常规解码器的端到端系统的时延可以比没有格式化器且使用特殊解码器实施方式的系统的时延大约长一帧。
与其它编码标准的兼容性
图7中所示的图块组织允许N个并行任务在N个图块列上工作。但是,HEVC之前的一些编码标准不包括将图片分割成独立编码列的合适语法。例如,高级视频编码(AVC/H.264)的基线简档中的灵活宏块排序(FMO)语法无法使运动向量跨越切片边界。
本文描述的实施例的编码方法仍可以与这些或其它编码标准一起使用,但是结果所得的位流可以要求重新编码以重新格式化为符合条件的位流。基于除HEVC以外的编码标准的一些实施例可以利用专有的编码器-解码器解决方案,而没有与基于标准的解码设备的互操作性的任何益处。
适用设备技术
一些实施例既可以应用于使用ASIC或SOC中的固定功能逻辑块实现的编码器,又可以应用于以并行处理体系架构上运行的软件实现的编码器。合适的处理器设备的示例可以包括Coherent Logix的HyperXTM系列处理器的处理器-存储器网络体系架构或对称多处理器体系架构(例如,具有或不具有GPU加速的Intel SkylakeTM)。
软件实施方式可以适合许多应用,因为它们允许完全重新配置。因为涉及大量计算,所以并行处理方法可以有利地用于软件编码。一些实施例可以针对子帧时延提供基于遗留软件的编码器的改编。
固定功能逻辑块方法可以在单个执行线程中利用帧间和帧内预测实时地实现子帧时延,但是对于一些应用来说可能不是合适的技术。例如,固定功能逻辑可能不是可重新配置的,并且其逻辑元件可能无法用于除编码以外的其它功能。例如,添加能力、修复错误或支持将来的编码标准可以不是可更新的。另外,本文的实施例可以应用于基于并发工作的固定功能逻辑块的编码器,作为将吞吐量增加到超过单个设备提供的容量的方式。
图像扫描次序
许多所描述的实施例以常规的图像光栅扫描次序编写,其中从左到右、从上到下扫描视频行。但是,一些实施例可以结合与编码器的输入紧密集成的图像传感器,从而允许替代的图像扫描次序。例如,可以按从上到下的次要次序以及从左到右的主要次序对样本进行扫描。这些实施例的应用然后可以采取被并发且同时编码的独立行图块的形式。可以以列粒度收集编码的结果,以传输到匹配的解码器。帧内刷新带然后可以采取一行帧内块的形式,该行对于每个相继的图片沿着帧向下进行。可以实现所描述的实施例的编码方法和益处而不考虑扫描次序,如在并行处理实施方式中使用帧内和帧间预测的子帧时延编码。
图11–并行子帧时延编码器流程图
图11是图示根据一些实施例的用于并行多处理器编码器系统编码和传输视频帧序列的示例性方法的流程图。并行多处理器编码器系统可以包括在UE 106、基站102、互联网服务器或另一种类型的计算设备内。并行多处理器编码器系统可以包括耦合到相应存储介质的多个并行处理器,并且还可以包括被配置为协调并行处理器之间的活动的主控制处理器。所示的方法元素中的一些可以被并发执行、以与所示次序不同的次序执行,或者可以被省略。还可以根据需要执行附加的方法元素。如图所示,该方法可以如下操作。
编码器系统可以在其上存储或者可以接收包括帧序列的视频数据,其中每个帧包括顺序行中的多个像素块。在1102处,每个帧可以被分割成多个像素块子集。多个块的子集可以包括其相应帧的块的一列或多列。
在一些实施例中,多个块的第二子集可以包括帧内刷新块,并且多个块中在第二子集之外的其余块可以包括非帧内刷新块(例如,帧间刷新块)。在一些实施例中,帧内刷新块被均匀地分布在帧的行之间。在一些实施例中,帧内刷新块均匀地分布在多处理器系统的处理器之间。在一些实施例中,对于每个顺序帧,可以将包括多个块的第二子集的块分配给顺序帧的一个或多个不同列。
在1104处,可以将每个块子集分配给并行多处理器系统的相应处理器。在一些实施例中,块的子集可以被分配并传输到它们相应的处理器。可替代地,可以将全部多个块传输到每个处理器,然后每个处理器可以将多个块分割成相应块子集,并将这个块子集分配给自身以进行编码。
在一些实施例中,处理器中的一个或多个可以执行视频分析以确定用于块的每一行的编码提示。对于块的每一行,可以将相应的编码提示传送到并行多处理器系统的每个处理器。
在1106处,并行多处理器系统的每个处理器可以顺序地对分配给相应处理器的块子集的行进行编码。
在一些实施例中,可以在多处理器系统的每个处理器的编码处理上实现独立的速率控制。作为一个示例,独立的速率控制可以用于提升视频帧的每一行的相当(comparable)的编码图片缓冲区占用量(buffer occupancy)。可替代地或附加地,可以使用独立的速率控制来为视频帧的每一行维持相似的位速率。可以对视频帧的块的每一行执行速率控制,而与帧分割成分配给每个处理器的块子集无关。
在一些实施例中,在完成帧的所有行的编码之后,块子集的编码行可以作为相应的编码帧被存储在并行多处理器系统的处理器可访问的存储器缓冲区(其可以是单个存储器缓冲区或多个分布式存储器缓冲区)中。在这些实施例中,所述编码可以包括基于与先前帧对应的编码帧来对非帧内刷新块进行编码,并且可以在不参考与先前帧对应的编码帧的情况下对帧内刷新块进行编码。
在1108处,每个处理器可以在信道上将块的每个编码行作为位流顺序地传输到解码器。对于每一行,在传输任何处理器的与相应行相继的行的块的编码行之前,可以将相应行的块的编码行传输到用于每个处理器的解码器。
在一些实施例中,顺序地将块的每个编码行作为位流传输到解码器可以包括每个处理器用帧内的块的编码行的列位置的标识符来标记其块的编码行。每个处理器可以将块的编码行传输到编码行缓冲区,以传输到解码器。
虽然图11中描述的方法将块子集分配为块的列并继续逐行顺序地编码每个帧,但是在其它实施例中,每个帧可以被分割成包括块的行的子集,并且并行处理器可以逐列对每帧进行编码。换句话说,在其它实施例中,图11中描述的行和列可以被切换。
图12-并行子帧时延解码器流程图
图12是图示用于并行多处理器解码器系统接收和解码编码视频帧序列的示例性方法的流程图。并行多处理器解码器系统可以包括在UE 106、个人计算机、平板电脑、智能TV、便携式视频播放器或另一种类型的计算设备中。并行多处理器解码器系统可以包括耦合到相应存储介质的多个并行处理器,并且还可以包括被配置为协调并行处理器之间的活动的主控制处理器。所示的方法元素中的一些可以被并发执行、以与所示次序不同的次序执行,或者可以被省略。还可以根据需要执行附加的方法元素。如图所示,该方法可以如下操作。
在1202处,解码器系统可以接收来自信道的编码视频数据。编码视频数据可以包括编码帧序列,其中每个编码帧包括顺序行中的多个编码像素块。
在1204处,编码视频数据的每个编码帧可以被分割成多个块子集。在一些实施例中,多个块的子集可以包括其相应帧的块的一列或多列。
在1206处,可以将每个块子集分配给并行多处理器系统的相应处理器。可替代地,在一些实施例中,可以将整个编码视频数据提供给并行多处理器系统的每个处理器,并且每个处理器可以将编码视频数据分割成块子集,以供相应的处理器进行解码。换句话说,每个处理器可以接收整个编码视频帧,并且可以将该视频帧单独地分配成子部分以进行并行解码。
在1208处,并行多处理器系统的每个处理器可以顺序地对分配给相应处理器的块子集的行进行解码。在一些实施例中,可以在多处理器系统的每个处理器上实现独立的速率控制。作为一个示例,独立的速率控制可以用于提升每个处理器的相当的编码图片缓冲区占用量。可替代地或附加地,独立的速率控制可以被用于为每个处理器维持相似的位速率。
在1210处,块的解码行可以被组合以获得解码帧。对于每一行,在组合任何处理器的与相应行相继的行的块的编码行之前,组合每个处理器的相应行的解码块。
在1212处,可以将解码帧作为解码帧序列输出。
虽然图12中描述的方法将块子集分配为块的列并继续逐行顺序地编码每个帧,但是在其它实施例中,每个帧可以被分割成包括块的行的子集,并且并行处理器可以逐列对每帧进行编码。换句话说,在其它实施例中,图12中描述的行和列可以被切换。
计算的处理网络模型
以下段落提供了关于计算的处理网络模型的附加细节,其可以被用于实现本文描述的实施例。处理网络是计算的图形模型。如在这个上下文中使用的,术语“图形”可以是指将设计描述为有向图,其中节点表示并发处理,并且弧表示单向通信信道。示例处理网络在图13中示出。每个节点可以被实现为或者遵循常规软件意义上的一系列指令的子程序,或者包含其自身的处理网络的子图。以这种方式,模型支持可伸缩的层级设计:在设计的一个层级上的图形可以仅凭其接口而不是其内部组成的知识来实例化任意尺寸的子图。子图的模板被称为单元格,并且可以为并行处理多次实例化。单元格是组成、抽象和重用的单位,在许多方面都类似于面向对象方法中的类。
当节点被实现为子程序时,其遵循命令式编程的通常语义,如在“C”编程语言中一样,但是具有一些区别。数据接收和数据发送被添加到原始处理操作集中。这些是节点之间数据传输的唯一途径。节点之间没有共享状态,并且所有节点也不共享全局上下文。代替地,每个节点都可以访问私有的本地存储器。数据通信替代了节点之间的函数调用的语义;无需类推函数返回。这在流传输应用中是有意义的,在流传输应用中节点的计算结果被转发到计算管线中的下一个阶段,而不返回给先前的调用者。
这些对命令式编程的通常语义的限制对整个软件设计具有重要的影响。处理网络中的节点遵循本地化原则;一个节点上发生的任何计算都不会影响另一个节点,除非通过通信信道发送和接收数据。数据通信也是处理之间同步的手段。子程序中所有不涉及数据发送和接收操作的操作都被认为与设计中的每个其它节点是异步的。表述为层级处理网络的设计固有地公开了算法的可用并行性。
处理网络可以启用丰富的并行处理设计模式集。在图13中,单元格T的每个实例都实现任务并行管线。单元格的工作被分割成两个步骤的序列,这使吞吐量翻了一番;单元格T中的两个子程序在相继的工作负载上并发地工作以实现顺序处理。单元格T的两个实例表示数据并行设计模式,其中每个实例负责处理来自处理a的工作负载的一半。
处理网络可以包括连续的单调处理的定义:从(可能无限的)输入数据流到一个或多个输出数据流的唯一映射。一个关键方面是处理在输入流的各部分上迭代地执行其计算,而无需等待整个输入完成。诸如视频帧之类的数据结构可以以流形式存在,而从未完全存在于处理存储器中。通信顺序处理(CSP)描述了具有不同信道语义和更丰富的原始处理操作集的相似处理网络,这比实现HEVC编码器所需要的更多。
与传统的命令式编程模型相比,计算的处理网络模型更适合于并行处理,这可以使程序员即使在算法不需要时也可以在函数之间指派顺序次序。然后,程序员可能需要解开人造序列约束,以将代码拆分为并发线程并添加附加的信号量元素(semaphoreelement),以防止共享存储器中的数据危险。用于并行处理的通用库(诸如用于SMP的OpenMP和OpenCL以及图形处理单元(GPU)设备)一般只能提供数据并行设计分解。
***
本公开的实施例可以以各种形式中的任何一种来实现。例如,在一些实施例中,本发明可以被实现为计算机实现的方法、计算机可读存储介质或计算机系统。在其它实施例中,本发明可以使用一个或多个诸如ASIC的定制设计的硬件设备来实现。在其它实施例中,本发明可以使用诸如FPGA的一个或多个可编程硬件元件来实现。
在一些实施例中,非瞬态计算机可读存储介质可以被配置为使得其存储程序指令和/或数据,其中程序指令如果由计算机系统执行则使得计算机系统执行方法,例如,本文描述的方法实施例中的任何一个,或本文描述的方法实施例的任何组合,或本文描述的方法实施例中的任何一个的任何子集,或这些子集的任何组合。
在一些实施例中,计算设备可以被配置为包括处理器(或一组处理器)和存储介质,其中存储介质存储程序指令,其中处理器被配置为读取并执行来自存储介质的程序指令,其中程序指令可执行以实现本文描述的各种方法实施例中的任何一个(或者本文描述的方法实施例的任何组合,或者本文描述的方法实施例中的任何一个的任何子集,或这些子集的任何组合)。设备可以以各种形式中的任何一种来实现。
虽然上面已经描述了具体实施例,但是这些实施例并不意在限制本公开内容的范围,即使当关于特定特征仅描述了单个实施例的时候也是如此。除非另有说明,否则在本公开内容中提供的特征的示例意在是说明性而不是限制性的。以上描述意在覆盖对受益于本公开内容的本领域技术人员显而易见的此类替代、修改和等同物。
本公开的范围包括本文中(明确地或隐含地)公开的任何特征或特征组合,或其任何概括,无论其是否缓解了本文针对的任何或所有问题。因而,可以在本申请(或要求其优先权的申请)对任何此类特征组合的申请期间制定新的权利要求。特别地,参照所附权利要求,来自从属权利要求的特征可以与独立权利要求的特征组合并且来自相应独立权利要求的特征可以以任何适当的方式组合,而不仅仅是以所附权利要求中列举的特定组合。
Claims (16)
1.一种用于编码视频数据的方法,其中视频数据包括帧序列,其中每个帧包括顺序行中的多个像素块,所述方法包括:
对于每一帧:
将多个块分割成多个块子集,其中每个块子集被分配给并行多处理器系统的相应处理器;
由并行多处理器系统的每个相应处理器:
顺序地编码分配给相应处理器的块子集的行,其中所述编码包括参考或不参考先前的编码帧而对非帧内刷新块进行编码,并且其中不参考先前的编码帧对帧内刷新块进行编码;以及
在信道上顺序地将块的每个编码行作为位流传输到解码器;以及
针对该帧的块的每一行实现速率控制而与将该帧分割成块子集无关,
将块子集的编码行作为相应的编码帧存储在并行多处理器系统的处理器可访问的存储器缓冲区中,
其中,对于每一行,在传输任何处理器的与相应行相继的行的块的编码行之前,将相应行的块的编码行传输到用于每个处理器的解码器。
2.如权利要求1所述的方法,
其中所述多个块的第二子集包括帧内刷新块,其中所述多个块中在所述第二子集之外的其余块包括非帧内刷新块,并且其中帧内刷新块均匀地分布在帧的各行之间。
3.如权利要求2所述的方法,
其中,对于每个顺序帧,将包括多个块的第二子集的块分配给顺序帧的不同的一个或多个列。
4.如权利要求1所述的方法,其中所述速率控制用于提升用于视频帧的每一行的相当的编码图片缓冲区占用量。
5.如权利要求1所述的方法,其中所述独立的速率控制被用于为视频帧的每一行维持相似的位速率。
6.如权利要求1所述的方法,所述方法还包括:
执行视频分析以确定用于块的每一行的编码提示;以及
将用于块的每一行的相应编码提示传送到并行多处理器系统的每个处理器。
7.如权利要求1所述的方法,
其中多个块的每个子集包括其相应帧的块的一列或多列。
8.如权利要求1所述的方法,
其中顺序地将块的每个编码行作为位流传输到解码器包括:用在帧中块的编码行的列位置的标识符标记块的编码行,并将块的编码行传输到编码行缓冲区以传输到解码器。
9.一种用于对编码视频数据进行解码的方法,其中编码视频数据包括编码帧序列,其中每个编码帧包括顺序行中的编码像素的多个块,所述方法包括:
从信道接收编码视频数据;
对于编码帧序列中的每个编码帧:
将多个块分配给并行多处理器系统的多个处理器中的每一个处理器;
由并行多处理器系统的每个处理器:
识别多个块中的相应块子集;以及
顺序地解码相应块子集的行;
在并行多处理器系统的每个处理器上实现独立的速率控制以为每个处理器维持相似的位速率;以及
组合块的解码行以获得解码帧,其中对于每一行,在组合任何处理器的与相应行相继的行的块的解码行之前,组合每个处理器的相应行的解码块;以及
将解码帧作为解码帧序列输出。
10.如权利要求9所述的方法,
其中与多个处理器中的每一个处理器相关联的块子集不重叠,以及
其中块子集共同包括全部多个块。
11.如权利要求9所述的方法,
其中多个块的每个子集包括其相应帧的块的一列或多列。
12.一种并行多处理器视频编码器系统,包括:
多个并行处理器,耦合到相应的非暂态计算机可读存储介质;
其中并行多处理器视频编码器系统被配置为对包括帧序列的视频数据进行编码,其中每个帧包括顺序列中的多个像素块,
其中,在编码视频数据时,并行多处理器视频编码器系统被配置为:
对于每一帧:
将多个块分割成多个块子集,其中每个块子集被分配给多个并行处理器的相应处理器;
将块子集的编码行作为相应的编码帧存储在并行多处理器系统的处理器可访问的存储器缓冲区中,
由多个并行处理器中的每个处理器:
顺序地编码分配给相应处理器的块子集的列,其中非帧内刷新块是基于与先前帧对应的编码帧编码的,并且其中不参考与先前帧对应的编码帧而对帧内刷新块进行编码;以及
在信道上顺序地将块的每个编码列作为位流传输到解码器;
针对该帧的块的每一列实现速率控制而与将该帧分割成块子集无关,
将块子集的编码列作为相应的编码帧存储在多个并行处理器可访问的存储器缓冲区中;
其中,对于每一列,在传输任何处理器的与相应列相继的列的块的编码列之前,将相应列的块的编码列传输到用于每个处理器的解码器。
13.如权利要求12所述的并行多处理器视频编码器系统,其中所述速率控制用于提升用于视频帧的每一列的相当的编码图片缓冲区占用量。
14.如权利要求12所述的并行多处理器视频编码器系统,其中所述速率控制用于为视频帧的每一列维持相似的位速率。
15.如权利要求12所述的并行多处理器视频编码器系统,
其中多个块的第二子集包括帧内刷新块,其中多个块中在第二子集之外的其余块包括非帧内刷新块,并且其中帧内刷新块均匀地分布在帧的各列之间。
16.如权利要求12所述的并行多处理器视频编码器系统,
其中并行多处理器视频编码器系统还被配置为:
执行视频分析以确定用于块的每一列的编码提示;以及
对于块的每一列,将用于每一列的相应编码提示传送到多个并行处理器中的每一个处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310777866.2A CN116567257A (zh) | 2017-12-12 | 2018-12-12 | 低时延视频编解码器和利用并行处理的传输 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762597457P | 2017-12-12 | 2017-12-12 | |
US62/597,457 | 2017-12-12 | ||
US201862661779P | 2018-04-24 | 2018-04-24 | |
US62/661,779 | 2018-04-24 | ||
PCT/US2018/065146 WO2019118566A1 (en) | 2017-12-12 | 2018-12-12 | Low latency video codec and transmission with parallel processing |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310777866.2A Division CN116567257A (zh) | 2017-12-12 | 2018-12-12 | 低时延视频编解码器和利用并行处理的传输 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111557093A CN111557093A (zh) | 2020-08-18 |
CN111557093B true CN111557093B (zh) | 2023-07-04 |
Family
ID=65139109
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310777866.2A Pending CN116567257A (zh) | 2017-12-12 | 2018-12-12 | 低时延视频编解码器和利用并行处理的传输 |
CN201880085606.6A Active CN111557093B (zh) | 2017-12-12 | 2018-12-12 | 低时延视频编解码器和利用并行处理的传输 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310777866.2A Pending CN116567257A (zh) | 2017-12-12 | 2018-12-12 | 低时延视频编解码器和利用并行处理的传输 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10873754B2 (zh) |
EP (1) | EP3725073A1 (zh) |
CN (2) | CN116567257A (zh) |
TW (3) | TWI797533B (zh) |
WO (1) | WO2019118566A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020072676A1 (en) * | 2018-10-02 | 2020-04-09 | Brainworks Foundry, Inc. | Efficient high bandwidth shared memory architectures for parallel machine learning and ai processing of large data sets and streams |
US20200137134A1 (en) * | 2018-10-31 | 2020-04-30 | Ati Technologies Ulc | Multi-session low latency encoding |
MX2021009140A (es) * | 2019-02-01 | 2021-10-13 | Fraunhofer Ges Forschung | Codec de video que permite el acceso aleatorio a subimágenes o regiones y concepto para la composición de video usando el mismo. |
CN110602122A (zh) * | 2019-09-20 | 2019-12-20 | 北京达佳互联信息技术有限公司 | 视频处理方法、装置、电子设备及存储介质 |
EP3829170A1 (en) * | 2019-11-29 | 2021-06-02 | Axis AB | Encoding and transmitting image frames of a video stream |
US20210184795A1 (en) * | 2019-12-16 | 2021-06-17 | Nvidia Corporation | Accelerated parallel processing of 5g nr signal information |
CN115152210A (zh) | 2020-02-24 | 2022-10-04 | 字节跳动有限公司 | 子图片的高度的推导 |
KR20220143857A (ko) | 2020-03-03 | 2022-10-25 | 바이트댄스 아이엔씨 | 비디오 코딩에서의 저 주파수 비-분리가능 변환 시그널링 |
US11003498B1 (en) * | 2020-08-10 | 2021-05-11 | Coupang Corp. | Computerized systems and methods for fail-safe loading of information on a user interface using a circuit breaker |
KR20220078258A (ko) * | 2020-12-03 | 2022-06-10 | 주식회사 선테크 | 초고해상도 스트리밍 영상 처리 시스템 및 방법 |
KR20220144241A (ko) * | 2021-04-19 | 2022-10-26 | 삼성전자주식회사 | 서버 및 그 제어 방법 |
US11882277B2 (en) | 2021-05-05 | 2024-01-23 | Mediatek Inc. | Video encoding method using multiple in-loop filters in low latency video encoding and associated video encoding apparatus |
CN113473106A (zh) * | 2021-06-18 | 2021-10-01 | 青岛小鸟看看科技有限公司 | 图像传输方法、图像显示及处理设备、及图像传输系统 |
CN114268793B (zh) * | 2021-12-21 | 2024-04-16 | 北京达佳互联信息技术有限公司 | 编码方法及装置 |
CN116708787A (zh) * | 2022-02-28 | 2023-09-05 | 华为技术有限公司 | 编解码方法和装置 |
US11425423B1 (en) | 2022-03-10 | 2022-08-23 | Yendo Hu | Memory storage for motion estimation and visual artifact redcution |
CN116389762B (zh) * | 2023-06-05 | 2023-08-15 | 长沙千视电子科技有限公司 | 一种视频数据SpeedHQ编码方法及装置 |
CN117389571B (zh) * | 2023-12-11 | 2024-04-12 | 芯动微电子科技(武汉)有限公司 | 一种基于opencl的jpeg2000中t1并行解码方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017197434A1 (en) * | 2016-05-20 | 2017-11-23 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
WO2017205597A1 (en) * | 2016-05-25 | 2017-11-30 | Gopro, Inc. | Image signal processing-based encoding hints for motion estimation |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
JP5815717B2 (ja) | 2010-10-15 | 2015-11-17 | コーヒレント・ロジックス・インコーポレーテッド | マルチプロセッサシステムにおける通信の無効化 |
US9218639B2 (en) * | 2013-09-27 | 2015-12-22 | Apple Inc. | Processing order in block processing pipelines |
US9936207B2 (en) * | 2013-10-14 | 2018-04-03 | Qualcomm Incorporated | Indication of parallel processing in video coding |
KR20150057790A (ko) * | 2013-11-20 | 2015-05-28 | 삼성전자주식회사 | 웨이브-프런트 어프로치에 기초한 비디오 프레임의 병렬 처리 방법 |
GB2523736B (en) * | 2014-02-19 | 2020-03-25 | Advanced Risc Mach Ltd | Rate control in video encoding |
US20160055305A1 (en) * | 2014-08-19 | 2016-02-25 | eagleyemed, Inc. | Video enhancements for live sharing of medical images |
GB2532420A (en) * | 2014-11-18 | 2016-05-25 | Sony Corp | Data encoding and decoding |
US10264257B2 (en) * | 2015-06-30 | 2019-04-16 | Texas Instruments Incorporated | Video encoding |
US10003811B2 (en) * | 2015-09-01 | 2018-06-19 | Microsoft Technology Licensing, Llc | Parallel processing of a video frame |
-
2018
- 2018-12-11 US US16/216,967 patent/US10873754B2/en active Active
- 2018-12-12 WO PCT/US2018/065146 patent/WO2019118566A1/en active Search and Examination
- 2018-12-12 CN CN202310777866.2A patent/CN116567257A/zh active Pending
- 2018-12-12 TW TW110100315A patent/TWI797533B/zh active
- 2018-12-12 EP EP18855136.0A patent/EP3725073A1/en active Pending
- 2018-12-12 TW TW107144864A patent/TWI718452B/zh active
- 2018-12-12 CN CN201880085606.6A patent/CN111557093B/zh active Active
- 2018-12-12 TW TW112106330A patent/TWI842406B/zh active
-
2020
- 2020-12-21 US US17/129,424 patent/US11323729B2/en active Active
-
2022
- 2022-04-29 US US17/733,678 patent/US11849130B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017197434A1 (en) * | 2016-05-20 | 2017-11-23 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding video data |
WO2017205597A1 (en) * | 2016-05-25 | 2017-11-30 | Gopro, Inc. | Image signal processing-based encoding hints for motion estimation |
Also Published As
Publication number | Publication date |
---|---|
TW202322626A (zh) | 2023-06-01 |
US11323729B2 (en) | 2022-05-03 |
US20190182495A1 (en) | 2019-06-13 |
TW202126037A (zh) | 2021-07-01 |
US20220264130A1 (en) | 2022-08-18 |
US10873754B2 (en) | 2020-12-22 |
TWI797533B (zh) | 2023-04-01 |
TW201937925A (zh) | 2019-09-16 |
TWI718452B (zh) | 2021-02-11 |
TWI842406B (zh) | 2024-05-11 |
EP3725073A1 (en) | 2020-10-21 |
CN116567257A (zh) | 2023-08-08 |
US11849130B2 (en) | 2023-12-19 |
WO2019118566A1 (en) | 2019-06-20 |
CN111557093A (zh) | 2020-08-18 |
US20210152839A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111557093B (zh) | 低时延视频编解码器和利用并行处理的传输 | |
CN101490968B (zh) | 用于视频压缩的并行处理装置 | |
US10244246B2 (en) | Sub-pictures for pixel rate balancing on multi-core platforms | |
US9838692B2 (en) | Detecting availabilities of neighboring video units for video coding | |
US11956473B2 (en) | Managing coding tools combinations and restrictions | |
US20180035123A1 (en) | Encoding and Decoding of Inter Pictures in a Video | |
RU2010135495A (ru) | Видеотранскодер с гибким управлением качеством и сложностью | |
KR20110055022A (ko) | 데이터 및 기능적 분할 방식에 기반한 동영상 복호화 장치 및 방법 | |
US20150139334A1 (en) | Method for parallel processing of a video frame based on wave-front approach | |
KR101292668B1 (ko) | 멀티프로세서기반의 영상 복호화 장치 및 방법 | |
JP2022500891A (ja) | スカラー量子化従属性のためのスカラー量子化器決定スキーム | |
US20210084298A1 (en) | Method and apparatus for boundary partition | |
US20210185317A1 (en) | Apparatus and method and for boundary partition | |
JP5265984B2 (ja) | 画像符号化装置及び復号装置 | |
CN112740276A (zh) | 用于帧内参考样本插值滤波器切换的方法和装置 | |
WO2024126058A1 (en) | Reference picture lists signaling | |
CN117597922A (zh) | 用于利用运动矢量细化的几何分区模式的方法和设备 | |
Asif et al. | A hybrid scheme based on pipelining and multitasking in mobile application processors for advanced video coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |