CN114650427A - 将视频编码过程负载转移到硬件以获得更好密度质量折衷 - Google Patents
将视频编码过程负载转移到硬件以获得更好密度质量折衷 Download PDFInfo
- Publication number
- CN114650427A CN114650427A CN202111352784.0A CN202111352784A CN114650427A CN 114650427 A CN114650427 A CN 114650427A CN 202111352784 A CN202111352784 A CN 202111352784A CN 114650427 A CN114650427 A CN 114650427A
- Authority
- CN
- China
- Prior art keywords
- encoding
- hardware
- picture
- software
- video
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 108
- 230000008569 process Effects 0.000 title abstract description 39
- 230000002123 temporal effect Effects 0.000 claims description 47
- 238000001914 filtration Methods 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 27
- 238000004458 analytical method Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 18
- 238000013442 quality metrics Methods 0.000 claims description 12
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 238000012732 spatial analysis Methods 0.000 claims description 5
- 238000003786 synthesis reaction Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 30
- 238000010586 diagram Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 13
- 230000003044 adaptive effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 12
- 230000007704 transition Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 6
- 238000011156 evaluation Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- NUHSROFQTUXZQQ-UHFFFAOYSA-N isopentenyl diphosphate Chemical compound CC(=C)CCO[P@](O)(=O)OP(O)(O)=O NUHSROFQTUXZQQ-UHFFFAOYSA-N 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011514 reflex Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 210000000707 wrist Anatomy 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/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/127—Prioritisation of hardware or computational resources
-
- 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
-
- 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/114—Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
-
- 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/174—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 slice, e.g. a line of blocks or a group of blocks
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/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/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/154—Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
-
- 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/156—Availability of hardware or computational resources, e.g. encoding based on power-saving 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/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/164—Feedback from the receiver or from the transmission channel
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/177—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/31—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- 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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开涉及将视频编码过程负载转移到硬件以获得更好密度质量折衷。与在硬件和软件系统上分布输入视频的视频编码处理有关的技术。这种技术包括评估视频的内容,并且确定是最好仅在硬件系统上进行编码操作,还是仅在软件系统上进行,还是在混合的硬件和软件系统上进行。
Description
技术领域
本公开涉及将视频编码过程负载转移到硬件以获得更好密度质量折衷。
背景技术
在包括转码系统的压缩/解压缩(编解码器)系统中,压缩效率、视频质量和计算复杂度是重要的性能标准。视觉质量是用户体验的一个重要方面,压缩效率影响着存储视频文件所需要的存储器存储的量和/或传输和/或流传输视频内容所需要的带宽的量,并且计算复杂度影响着系统复杂度和处理视频内容所需要的时间。例如,媒体编码和转码包括几个不同的关键操作或工具。这些工具中的每一个具有不同的计算复杂度,并且取决于期望的质量水平、可压缩性和目标时延,可被以不同的参数来执行。这种编码和转码系统设计的重点是识别需要运行的最优工具子集,以便在目标时延内达到期望的质量水平。例如,高质量视频内容的生成可包括运行多遍编码器通过和使用各种类型的间/内模式搜索,这将需要更长的时间来执行。此外,时延要求也可以决定要执行哪些工具。例如,实况体育赛事的广播要求高质量的编码,以及相关联的时延目标。对于较低质量的编码,编码器通常会进行单遍编码器通过,并且运行较少的模式搜索。
当前需要提高这种编码器系统的效率,以应用于各种各样的编码情境。正是考虑到这些和其他考虑事项,所以需要本改进。随着压缩和传输视频数据的愿望变得更普遍,这种改进可变得关键。
发明内容
根据本公开的一个实施例,提供了一种用于视频编码的系统,包括:存储器,用于存储输入视频的至少一部分以用于编码;以及一个或多个处理器,与所述存储器耦合,所述一个或多个处理器:自适应地确定硬件操作要被应用于以下各项中的至少一者:所述输入视频的视频图片组的编码,所述输入视频的特定图片的编码,或者对于所述输入视频的特定图片的至少一瓦片(tile)的编码操作;并且经由对硬件的功能调用来执行所述视频图片组的编码、所述特定图片的编码或者对于所述特定图片的瓦片的编码操作,并且经由软件执行所述输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。
根据本公开的另一个实施例,提供了一种用于视频编码的方法,包括:接收输入视频以用于编码;自适应地确定硬件操作要被应用于以下各项中的至少一者:所述输入视频的视频图片组的编码,所述输入视频的特定图片的编码,或者对于所述输入视频的特定图片的至少一瓦片的编码操作;并且经由硬件执行所述视频图片组的编码、所述特定图片的编码或者对于所述特定图片的瓦片的编码操作,并且经由软件执行所述输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。
根据本公开的另一个实施例,提供了一种设备,包括:存储器;以及一个或多个处理器,耦合到所述存储器,所述处理器执行上述方法。
根据本公开的另一个实施例,提供了至少一个机器可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行上述方法。
根据本公开的另一个实施例,提供了一种系统,包括:用于执行上述方法的装置。
附图说明
在附图中以示例的方式而不是限制的方式图示了本文描述的素材。为了图示的简单和清晰,附图中图示的元素不一定是按比例绘制的。例如,为了清晰,一些元素的尺寸相对于其他元素可被夸大。另外,在认为适当时,在附图之间重复附图标记以指示出对应的元素。在附图中:
图1是用于包括自适应硬件和软件编码操作的视频编码的示例系统的说明图;
图2是用于混合编码的输入视频的示例划分的说明图;
图3是用于在混合编码决策作出中在硬件和软件之间进行选择的示例技术的说明图;
图4是图示出用于在混合视频编码中选择硬件负载转移的示例过程的流程图;
图5是示例层次化图片组结构、相应的编码顺序、以及相应的软件和硬件编码同步的说明图;
图6是在混合编码流水线中到硬件的示例编码操作负载转移的说明图;
图7是图示出用于包括自适应混合使用选择性软件和硬件编码操作的视频编码的示例过程的流程图;
图8是用于包括自适应混合使用选择性软件和硬件编码操作的视频编码的示例系统的说明图;
图9是示例系统的说明图;并且
图10图示了全都根据本公开的至少一些实现方式布置的示例设备。
具体实施方式
现在参考附图描述一个或多个实施例或实现方式。虽然论述了具体的配置和布置,但应当理解这么做只是为了说明。相关领域的技术人员将认识到,在不脱离描述的精神和范围的情况下,可以采用其他配置和布置。相关领域的技术人员将会清楚,本文描述的技术和/或布置也可被用在与本文所述不同的各种其他系统和应用中。
虽然接下来的描述阐述了例如可在诸如片上系统(system-on-a-chip,SoC)体系结构之类的体系结构中显现的各种实现方式,但本文描述的技术和/或布置的实现方式不限于特定的体系结构和/或计算系统,而是可由任何体系结构和/或计算系统为类似的目的而实现。例如,采用例如多个集成电路(integrated circuit,IC)芯片和/或封装的各种体系结构,和/或诸如机顶盒、智能电话等等之类的各种计算设备和/或消费电子(consumerelectronic,CE)设备,可实现本文描述的技术和/或布置。另外,虽然接下来的描述可阐述许多具体细节,例如逻辑实现方式、系统组件的类型和相互关系、逻辑分区/集成选择等等,但可在没有这种具体细节的情况下实现要求保护的主题。在其他情况中,可能没有详细示出一些素材,例如控制结构和完整软件指令序列,以免模糊本文公开的素材。
可以用硬件、固件、软件或者其任何组合来实现本文公开的素材。本文公开的素材也可被实现为存储在机器可读介质上的指令,这些指令可被一个或多个处理器读取和执行。机器可读介质可包括用于以机器(例如,计算设备)可读的形式存储或传输信息的任何介质和/或机制。例如,机器可读介质可包括只读存储器(read only memory,ROM);随机访问存储器(random access memory,RAM);磁盘存储介质;光存储介质;闪存设备;电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号,等等),以及其他。
说明书中提及“一个实现方式”、“一实现方式”、“一示例实现方式”等等是表明所描述的实现方式可包括特定的特征、结构或特性,但可能不一定每个实施例都包括该特定特征、结构或特性。此外,这种短语不一定指同一实现方式。另外,当联系一实施例来描述特定的特征、结构或特性时,认为联系其他实现方式(无论本文是否明确描述)来实现这种特征、结构或特性,是在本领域技术人员的知识范围内的。
本文描述了与视频编码有关、尤其是与自适应地将视频编码过程负载转移到硬件有关的方法、设备、装置、计算平台和物品。
如上所述,在视频编码中,采用具有不同计算复杂度的多个工具对输入视频进行编码。本文论述的编码技术是针对视频转码提出的,但可被用于任何情境中。例如,视频转码包括对接收到的比特流进行解码以生成视频,并且将视频编码为代表视频内容的输出比特流,具有不同的特性,例如视频分辨率、比特流格式、比特流大小,等等。本文论述的编码技术也可用于对接收到的输入视频(例如,输入视频图片的剪辑或序列)进行编码。在一些实施例中,这样的编码包括为编码的一些部分自适应地应用硬件。这样的编码部分可以是视频的剪辑或图片组,视频的图片,或者视频的编码操作(即,至少是特定图片的瓦片)。就本文使用的而言,术语编码操作指的是任务或任务组,该任务或任何组为编码提供包括任何适当视频数据的输出,例如比特流部分、重建的帧部分、运动矢量场、视频分析参数、以及本文论述的任何其他数据或数据结构。就本文使用的而言,术语瓦片指的是视频图片的任何子图片部分。视频图片的瓦片包括一个或多个块,一个或多个切片,一个或多个编码单元,等等。瓦片可具有任何大小或形状。此外,图片被定义为一组块(或者瓦片或编码单元,等等),这些块可能等于或不等于输入图片的大小。接收和/或输出的比特流可包括任何适当的编码视频数据,例如符合标准的视频数据。例如,接收和/或输出的比特流可以符合H.264/MPEG-4高级视频编码(Advanced Video Coding,AVC)标准,符合H.265高效率视频编码(High Efficiency Video Coding,HEVC)标准,符合AOMedia视频1(AOMedia Video 1,AV1)标准,符合VP9标准,等等。
在一些实施例中,自适应技术被用于确定是否要对该部分应用硬件,例如是否要在输入视频的一组视频图片的编码中使用硬件,是否要在输入视频的特定图片的编码中使用硬件,或者是否要在对输入视频的特定图片的编码操作中使用硬件,并且软件被用于对输入视频的其余部分进行编码。可以使用本文论述的任何技术来执行硬件的这种自适应选择,例如,访问目标视频质量水平、目标操作时延、以及硬件和软件的功能能力,并且使用目标视频质量水平、目标操作时延和功能能力,基于对表格的访问,来选择硬件操作,以使得该表格将目标视频质量水平、目标操作时延和功能能力与操作的相应硬件、软件或硬件和软件的混合关联起来。然后经由硬件执行一组视频图片的编码、特定图片的编码或者对特定图片的编码操作,并且经由软件对输入视频的至少其余部分进行编码,从而生成输出比特流。
就本文使用的而言,术语硬件、经由硬件实现、在硬件上编码以及类似的术语指的是经由对硬件资源(例如,固定功能电路、专用集成电路或其他专用电路)的功能调用来执行的一个或多个操作。这种硬件可被实现为中央处理器、图形处理器、视频处理器或者任何这种处理综合体或流水线的一部分。术语软件、经由软件实现、由软件编码以及类似的术语指的是经由多个指令(即,指令行)执行的一个或多个操作,这些指令可经由诸如处理器之类的一般设备来进行编译和运行。这种软件也可以经由任何处理设备来实现,尽管它通常是经由中央处理器来执行的,该中央处理器将经编译的任务路由来由系统资源执行。在如何执行操作方面,硬件实现方式需要很少或不需要灵活性,而软件实现方式则提供充分的灵活性。硬件和软件实现方式之间的差异也可以基于执行的工作的粒度来看待(即,在图片组级别、图片级别或者像素级别),其中硬件实现方式只允许在该级别上的单个指令(即,提交整个帧的编码),而软件实现方式允许了经由每个子部分的个体代码来操纵任何更高的粒度级别(即,使用指示如何对帧的块或甚至像素进行编码的代码行来对帧进行编码)。
对于哪些视频图片或图片组被编码、或者哪些编码操作被使用硬件执行、哪些被使用软件执行的确定,可以使用本文论述的任何技术来执行,例如评估目标视频质量水平、目标操作时延和其他因素。就本文使用的而言,术语目标视频质量水平指的是任何编码任务的质量水平或质量值,包括完全编码或执行一编码阶段等等。较高的质量水平表示更低的失真(例如,对于帧编码)、更充分的搜索(例如,对于内部或运动估计搜索)、或者较大的能力(例如,包括评估更多的循环滤波器)等等中的一个或多个,较低的质量则表示相反。术语目标操作时延指的是指示相应任务的速度的时间(或者相反,频率值)。这样的目标视频质量水平,目标操作时延,以及可选地,其他参数,然后被与相关任务的硬件和软件的功能能力进行比较。在硬件和软件能力之间,于是为该任务选择更接近的匹配或者能够满足目标要求的那个。注意,先前和随后的任务也可能影响到当前任务的硬件和软件能力的能力。本文将进一步论述这种任务的示例以及它们对于负载转移到硬件的相对适合性。值得注意的是,在硬件中执行的任务通常具有较低的视频质量水平能力(或者至少有更多限制性的实现)和较低的时延,而在软件中执行的相同任务通常具有较高的视频质量水平能力和较大的时延。
在视频编码的情境中,取决于情境,各种操作模式或水平是可取的,其中情境可能从要求最高质量而几乎不考虑时延的情境(例如,视频点播)到那些要求低时延而较低质量可接受(或可容忍)的情境不等,例如在线游戏的情境。其他情境要求这些特性的混合。例如,从要求更高的质量、同时容忍更高的时延,到要求更低的时延、以更低的质量为代价进行排名,这样的情境包括:广播内容,优质顶部内容,和实况流媒体。在高质量/高时延到低质量/低时延的范围内,可以采用其他情境。值得注意的是,每个使用模型或情境映射到编码器设计中的不同操作模式,并且每个模式要求对编码工具进行特定的校准,以实现正确的质量水平和期望的时延。例如,每个使用模型都会导致完成不同程度的预处理,以便完成编码。此外,高质量视频内容的生成涉及运行多遍编码器通过和使用各种类型的间/内模式搜索,其中这种编码需要更长的时间来执行。时间要求也可以决定要执行哪些工具。例如,实况体育赛事的广播不仅要求高质量转码,还要求严格的时延目标。对于这种用途,可能会使用计算上复杂的工具,但编码器可能只进行单遍,以维持时延要求。在针对较低质量的使用案例中,编码器可能只进行单遍编码,并且使用有限的一组最低限度的复杂工具,以维持速度和时延约束。也可采用其他情境和使用模型。
随着诸如AV1和HEVC之类的更新的编解码器的引入,从输入视频的媒体转码和编码在计算的复杂度方面有所增长。这些编解码器专注于使用更多计算密集型的工具在相似的质量水平上提供改善的压缩率。为了加速这些工具并且抵消计算成本,在一些实施例中,编码器工具是用硬件实现的。然而,为了满足面积目标(即,使用有限的硬件表面面积),硬件实现方式可能只涵盖工具本身的一个子集或者工具可在其内操作的参数的范围的一个子集。需要这些折衷来使得硬件实现方式的产品化更能负担得起。然而,其结果是,硬件实现方式可能无法在所有的质量水平上被有效地使用。本文论述的技术提供了一种算法方案,以更好地利用混合软件(SW)和专用硬件(HW)加速解决方案,来支持媒体转码和编码。在一些实施例中,给定指定的性能水平,使用优化算法来执行将在SW编码器上和/或专用HW加速上运行的任务的指派,以实现最佳的速度/时延/质量折衷。这种技术包括确定例如图片是否应该通过以下之一进行处理:完全的软件编码;完全的硬件编码;或者混合编码,其中一些图片由软件编码,其他的由硬件编码,或者通过使用由硬件加速的编码过程的元素(例如,预处理或后期编码操作)对图片进行编码,并且其余编码在软件中完成。
图1是根据本公开的至少一些实现方式布置的用于包括自适应硬件和软件编码操作的视频编码的示例系统100的说明图。如图1所示,系统100包括解码器101和编码器102,该编码器包括或实现控制器103、软件编码模块104和硬件编码模块105。系统100可以接收比特流110,用于转码到比特流113,使得比特流相对于比特流110具有不同的特性,例如代表不同的视频分辨率,具有不同的比特流格式,符合不同的编解码器,具有不同的比特流大小或比特率,等等。解码器101接收比特流110并且对其进行解码以生成输入视频111和可选的元数据112。在一些实施例中,解码器101完全在硬件中对比特流110解码。例如,用于实现解码器101的硬件可以与用于实现硬件编码模块105的硬件分开,或者它们可以被部分共享。尽管就视频转码进行了说明,但系统100可以被实现为仅执行视频编码,而不需要在系统中具有解码器101。相反,处理可以从接收或获得输入视频111开始。
比特流110、113可以是任何适当的比特流,例如符合标准的比特流。例如,比特流110、113中的一者或两者可以符合AVC标准、符合HEVC标准、符合VP9标准、符合AV1标准,等等。系统100可经由任何适当的设备来实现,例如个人计算机、膝上型计算机、平板设备、平板手机、智能电话、数字相机、游戏控制台、可穿戴设备、一体化设备、二合一设备,等等,或者诸如移动平台等等之类的平台。例如,就本文使用的而言,系统、设备、计算机或计算设备可包括任何这种设备或平台。
系统100可包括为了呈现的清晰起见而没有示出的其他模块或组件。例如,编码器102可以包括分区模块、变换模块、量化模块、内部预测模块、运动估计模块、运动补偿模块、扫描模块、熵编码模块等等中的一个或多个。此外,编码器102可包括本地解码环路和解码器101,它们各自可包括逆量化模块、逆变换模块、以及用于将重建的残余块与参考块相组合的加法器、解块滤波模块、样本自适应偏移(sample adaptive offset,SAO)滤波模块,等等。这种模块和与之相关联的操作是本领域的技术人员已知的,并且为了呈现的清晰起见,在此不再被进一步论述。
输入视频111可包括采取任何适当分辨率的任何适当的视频帧、视频图片、视频帧的序列、图片组、多个图片组、视频数据,等等。例如,视频可以是视频图形阵列(videographics array,VGA)、高清晰度(high definition,HD)、全HD(例如,1080p)、4K分辨率视频、5K分辨率视频、8K分辨率视频,等等,并且视频可包括任何数目的视频帧、视频帧的序列、图片、图片组,等等。为了呈现的清晰起见,本文论述的技术是对于图片和块论述的。然而,这种图片可被表征为帧、视频帧或视频图片、帧或图片的序列、视频序列,等等,并且这种块可被表征为编码单元、编码块、宏块、子单元、子块,等等。例如,彩色视频数据的图片或帧可包括亮度平面或成分和相对于亮度平面处于相同或不同分辨率的两个色度平面或成分。输入视频111可包括可被划分成任何大小的块的图片或帧,这些块包含与例如像素的MxN块相对应的数据。这种块可包括来自像素数据的一个或多个平面或颜色通道的数据。就本文使用的而言,术语“块”可包括任何适当大小的宏块、编码单元,等等。将会明白,这种块也可被划分成子块,用于预测、变换之类的。
在解码器101对比特流110进行解码以生成输入视频111的情境中,解码器101可以可选地生成元数据112,该元数据如果可用,则被提供给软件编码模块104以及可选地提供给硬件编码模块105。在一些实施例中,输入视频111的至少一些部分的编码是基于元数据112的。在一些实施例中,由软件编码模块104执行的输入视频111的至少一些部分的编码是基于元数据112的。注意,由于软件的灵活性,这种元数据112可能更容易被纳入到软件编码操作中,而硬件编码模块105对元数据112的使用是更困难的,这是由于硬件功能是预定义的,因此对于元数据112的使用不太灵活。然而,在任一情况下,元数据112都可被用于辅助使用任何一个或多个适当的技术来进行编码操作。在一些实施例中,元数据112包括对于输入视频111的块的编码模式决策,并且这种编码模式决策可在编码中被用于辅助模式选择(例如,通过限制搜索)或者作为候选模式,等等。就本文使用的而言,术语编码模式决策指的是为块选择的任何编码模式或决策,例如内或间,当为内时的内方向,当为间时的运动向量、跳过或合并,等等。这样的编码模式决策也可以包括分区决策、块过滤器选择,等等。
编码器102接收输入视频111,可选地还接收元数据112,并且编码器102生成比特流113,该比特流可具有本文论述的任何格式或特性。如图所示,编码器102包括编码控制器103,该控制器被用软件实现,并且通过经由对软件编码模块104接收编码数据115的软件命令114在软件中执行编码的一些部分并且通过经由接收编码数据125的硬件命令124将输入视频111的编码的至少一些部分负载转移,来控制输入视频111的编码。然后,编码数据115和编码数据125的一些部分被打包以生成比特流113。同样如图所示,软件编码模块104可以经由接收编码数据135的硬件命令134直接将编码任务负载转移到硬件编码模块105。这样的软件命令114和硬件命令124、134可被用于执行本文论述的任何编码或编码操作。类似地,编码数据115、125、135可包括任何编码数据,例如压缩的视频数据、视频数据分析,等等。从而,提供了一种混合软件和硬件编码体系结构。
使用硬件命令124、134来调用硬件编码模块105,从而硬件命令124、134可以是让硬件编码模块105执行预定义功能的功能调用(即,单个功能调用),该功能可以是本文论述的任何操作,例如整个图片的编码、运动估计、运动分析、图片重建,等等。硬件编码模块105可以经由用于相关功能的任何专用硬件来实现,例如固定功能电路、专用集成电路、或者其他专用电路。硬件编码模块105可被实现为中央处理器、图形处理器、视频处理器、任何这样的处理综合体、处理器流水线或者多处理器系统的一部分。硬件编码模块105可以包括在相同或不同设备上实现的一个或多个这种模块。
软件编码模块104被软件命令114调用,从而软件命令114可以是代码或经编译的代码,以执行任何数目的预定义功能。这种预定义的功能可以是本文论述的任何编码功能,例如时间滤波、整个图片的编码、图片的模式决策、全局运动估计、开环内搜索、基于图片的插值、运动分析、图片重建,等等。注意,硬件编码模块105和软件编码模块104所执行的功能可以重叠。也就是说,它们可以执行相同的功能。然而,可以用不同的特性或限制来执行相同的功能,例如更高/更低的质量,更多/更少的搜索,更多/更少的被评估候选者数目,等等,从而使得软件编码模块104提供更高的质量、更多的搜索、更多的候选者评估、以及更多的灵活性,而硬件编码模块105一般提供更低的质量、更少的搜索、更少的候选者评估、以及很少或没有灵活性,其优点是时延更低。因此,硬件编码模块105的部署可被视为对特定功能或任务的负载转移,来以降低质量为代价提高速度。
所论述的系统和技术提供了一种自适应的层次化算法,来确定媒体转码或媒体编码中的哪些编码操作是在混合基础设施(例如,混合视频编码器)中的软件或硬件上执行的。在一些实施例中,混合视频编码器在编码的多个级别做出决策,例如宏级别或图片级别,这被定义为在全图片端到端(即,全图片编码)上执行的操作,以及子宏级别或子图片级别,这被定义为查看整个编码的个体组件并且确定是在硬件还是软件上执行这样的个体组件或操作。这种子宏级别或子图片级别的决策可以基于质量要求、时延要求、以及硬件对于个体编码组件或任务所支持的质量。
图2是根据本公开的至少一些实现方式布置的用于混合编码的输入视频111的示例划分200的说明图。如图2所示,输入视频111可被划分为具有任何数目的图片的任何数目的图片组201。输入视频111也可以被划分为任何数目的视频剪辑(或者输入视频111本身可以是视频的剪辑),其可以与图片组201对应,也可以不对应。例如,视频的剪辑可以包括任何数目的时间上有顺序的视频图片,从而术语时间上有顺序指的是剪辑中的视频图片是按显示顺序的,并且在时间上彼此紧邻,没有居间的图片。剪辑可包括与一图片组相同的视频图片或者任何数目的图片组的视频图片。图片组201还包括任何数目的时间上有顺序的视频图片,例如本文关于图5进一步论述的预定编码层次体系中的预定数目的视频图片。然而,这种图片组201也可以是自适应的。
在图示示例中,图片组201包括按显示顺序的图片202、203、204和任何数目的附加图片。图片组201可以按照不同于显示顺序的编码顺序被进行编码,本文也将对此进行进一步论述。如关于图片202所示,输入视频111的每个图片被划分为或者包括任何数目的块205,这些块包含任何数目的像素或像素样本。可以被表征为编码块、编码单元等等的块205可以是任何形状和大小,例如方形(如图所示)或矩形。块205可具有相同的大小和形状,或者大小和形状可基于编码决策而变化。注意,块205可以是编码块,并且块205可进一步被划分为预测块和变换块。
如图所示,块205中的每一个都被划分为或者包括任何数目的像素206(或像素样本)。在图示示例中,块205包括8x8(64)个像素样本,虽然如所论述的那样,可以采用任何大小和形状的块205。每个像素206可包括亮度值(Y)、亮度值和颜色通道值(YUV)、三个颜色通道值(RGB)、或者其他颜色通道表示。在一些实施例中,以不同的分辨率提供亮度通道和颜色通道。
除了输入视频111的划分200以外,各种编码任务也在这种划分级别上被执行。例如,编码任务可以在剪辑或图片组、在图片202、203、204的图片级别、在块205的块级别(或者在预测或变换块级别)或者在像素206的级别被执行。在此,术语编码操作和类似术语指的是在输入视频111的层次体系中的任何这样级别上执行的编码操作。这种编码操作的输入因此可以是剪辑、图片组、图片、块或像素(以及任何其他相关数据),并且输出可以是编码数据。这种编码数据可以是图片组、图片、块或像素的压缩版本,或者它可以是代表图片组、图片、块或像素的数据(例如,运动向量、重建版本,等等)。这里论述的技术可以在任何这样的粒度级别上操作。值得注意的是,硬件操作对于特定的粒度级别取得这样的输入数据,并且将操作编码为单个硬件调用,并且返回输出数据,而没有更高粒度级别的修改。与之不同,对于特定粒度级别的软件操作在更高的粒度级别上是可修改的(经由代码行、编码模块、编译的代码,等等)。
返回到图1,在一些实施例中,编码控制器103通过基于目标视频质量水平、目标操作时延以及软件编码模块104的软件编码模块和硬件编码模块105的硬件编码模块对编码操作或任务的功能能力访问一个或多个表格,来确定哪些编码操作要被执行。就本文使用的而言,术语表格可以包括将一个或多个输入与一个或多个相应的输出关联起来的任何适当数据结构。例如,为了实现基于层次的混合视频编码器,编码器102可以访问目标质量水平、操作的时延、以及硬件和软件对于特定编码操作的功能能力。这样的数据可以被组织在索引表中,并且可以执行快速查找以将编码操作映射到软件模块和硬件模块之间的正确执行模型或模块。在一些实施例中,查找表被预先填充,并且在运行期间被用数据增强,以更新硬件和软件的能力。在一些实施例中,编码器102评估软件模块或硬件模块上的编码操作的性能,并且基于视频质量度量或者与操作相对应的时延来更新相应的表格值。表格值可以被替换,先前的值和新的值可以被取平均,基于多个测量值的移动平均可以被使用,等等,使得预定的表格值被调整为调整后的或实时的值。除了查找表之外,还可以执行额外的试探,这些试探分析图片内容,并且针对给定的帧可以被发送到哪里进行转码。例如,可以评估图片复杂度,并且当图片复杂度大于阈值时,采用软件来代替硬件。
图3是根据本公开的至少一些实现方式布置的用于在混合编码决策做出中在硬件和软件之间进行选择的示例技术300的说明图。如图3所示,对于特定的粒度级别(即,剪辑、图片组、图片、块、或像素级别),接收目标视频质量和时延311。可以使用任何一个或多个适当的技术来生成或接收目标视频质量和时延311。在一些实施例中,目标视频质量和时延311是基于编码情境和/或编码内容(视频点播内容、广播内容、优质顶层内容、实况流媒体内容、实时游戏内容,等等)来预定义的。
可以使用指示出目标视频质量和目标时延的任何适当数据结构来表示目标视频质量和时延311。在一些实施例中,目标时延被指示为目标持续时间。在一些实施例中,目标视频质量被指示为在给定的尺度(例如,0到10或任何其他范围)上对质量进行分级或评级的度量。在一些实施例中,目标视频质量被给出为与编码任务相关的特定度量,例如目标失真、运动向量的目标精度,等等。在一些实施例中,目标视频质量包括对要部署的可用特征的指示。
在图示示例中,描述了图片级别的编码粒度。然而,可以使用任何粒度。此外,在一些实施例中,可以采用多个粒度级别和相应的表格,并且在能够满足目标视频质量的最低级别上使用到硬件的负载转移。例如,可以首先评估剪辑级别或图片组,并且如果剪辑质量可以由硬件满足,则硬件被用于该剪辑或图片组。如果不可以,则对每个图片在图片级进行评估,并且如果硬件可以满足图片质量,则对图片使用硬件,等等依此类推。在一些实施例中,如果不能在图片级别使用硬件(如图所示),则评估对图片的编码操作。
例如,全图片编码评估操作301可以使用目标视频质量和时延311来访问表格320。表格320包括质量水平321、硬件时延水平322和软件时延水平323,用于各种图片类型(例如,内图片、双向图片、场景变化图片、时间层图片,等等)。例如,质量水平321可以是使用硬件可达到的质量水平。利用这样的目标视频质量水平、目标操作时延以及硬件和软件的功能能力,在硬件与软件之间或者在硬件与软件和硬件的混合之间做出适当的选择。
在一些实施例中,当基于目标视频质量和时延311的图片的硬件编码满足目标质量时,使用图片的硬件编码。在一些实施例中,当硬件编码不满足目标质量水平,而软件时延满足时延目标时,选择软件编码或者软件和硬件混合编码(如下文所述)。
如图所示,当未选择仅硬件编码时,编码阶段评估操作302可以使用目标视频质量和时延311再次访问表格330。对于将在硬件或软件中执行的各种编码器阶段331,表格330包括质量水平332、硬件时延333、软件时延334、以及其他信息335(如果适用)。例如,对于预分析编码阶段,提供了硬件中的预分析的质量水平和软件中的预分析的质量水平。对于运动估计编码阶段,提供了硬件中的运动估计的质量水平、软件中的运动估计的质量水平、以及包括硬件运动估计所支持的模式的其他信息。
例如,编码阶段评估操作302可以使用目标视频质量和时延311来访问表格330,以确定编码的哪些阶段或操作要被负载转移到硬件。对于将在硬件或软件中执行的各种编码器阶段331,表格330包括质量水平332、硬件时延333、软件时延334、以及其他信息335(如果适用)。编码器阶段331可以例如只包括那些在硬件中支持的阶段。利用这样的目标视频质量水平、目标操作时延以及每个编码阶段的硬件和软件的功能能力,在硬件与软件之间或者在硬件与软件和硬件的混合之间做出适当的选择。在一些实施例中,当编码阶段的硬件编码基于目标视频质量和时延311满足目标质量时,使用编码阶段的硬件编码。在一些实施例中,当硬件编码不满足编码阶段的目标质量水平,而软件时延满足时延目标时,选择编码阶段的软件编码。
值得注意的是,这种技术提供了在支持媒体转码或媒体编码的完整软件、混合软件或专用硬件加速之间的选择。给定指定的性能水平,在软件编码器和/或专用硬件加速上运行的任务的指派是使用优化算法来执行的,以实现最佳的速度/时延/质量折衷。在一些实施例中,正如所论述的,当不可能将转码级操作负载转移时,算法做出决策的级别被划分为宏级别(例如,决定对于每个图片应当在哪里运行操作)和微级别(例如,在特定操作中使用哪些工具),并且硬件可以被纯粹用作一种辅助手段来提供额外的信息以提高编码质量。
图4是图示出根据本公开的至少一些实现方式布置的用于在混合视频编码中选择硬件负载转移的示例过程400的流程图。过程400可包括如图4所示的一个或多个操作401-410。过程400可由设备或系统(例如,系统100的编码器102)执行,以执行输入视频的混合硬件和软件编码。
过程400开始操作401,在该操作中接收输入视频图片来进行处理。尽管在视频图片处理方面进行了说明,但过程400可以在关于图2论述的任何粒度级别上执行,例如在图片组的视频剪辑的级别上执行。
处理在决策操作402处继续,在该操作中确定所接收的图片的全硬件编码是否满足所接收的视频图片的目标视频质量。如果是,则处理在操作403处,在该操作中执行整个图片的仅硬件编码。
可利用任何一个或多个适当的技术来作出操作402处的这种确定。在一些实施例中,将接收到的视频图片的目标质量与硬件可达到的质量度量进行比较,并且如果阈值或度量满足目标质量,则完全使用硬件对接收到的图片进行编码(即,对用于编码图片的专用电路的单个指令调用)。在一些实施例中,通过评估输入图片的复杂度来执行输入图片的内容分析,在此基础上,如果从编码的角度来看,内容被认为不复杂,则将决定在HW上执行完全编码。在一些实施例中,可在操作402处评估所接收的图片的时间级别或层交化放置,以确定是否要使用硬件对所接收的视频图片进行编码。在一些实施例中,当接收到的视频图片是非参考图片时(即,没有其他图片使用该图片作为参考图片),选择硬件编码。在一些实施例中,当接收到的视频图片在图片组层次体系中是最高时间层(即,没有其他图片使用该图片作为参考图片)或第二高时间层参考图片(即,只有没有被其他图片参考的图片使用该图片作为参考图片)时,选择硬件编码。
图5是根据本公开的至少一些实现方式布置的示例层次化图片组结构500、相应的编码顺序510和相应的软件和硬件编码同步520的说明图。如图5所示,代表层次化B图片组(group of pictures,GOP)结构的层次化图片组结构500包括在层次化图片组结构500的最低时间层502k=0的I图片I0和参考B图片B8,B16。如图所示,I图片I0的编码没有参考任何其他I0。最低时间层502的参考B图片B8,B16以及I图片I0可被用作所有更高时间层503、504、505的参考图片。对于时间层503、504也是例如此:时间层503k=1的参考图片B4,B12可被用作更高时间层504、505两者的参考图片,并且时间层504k=2的参考图片B2,B6,B10,B14可被用作最高时间层505的参考图片。然而,较高时间层不被用作较低时间层(或者对于时间层503、504在同一层)的参考图片。此外,最高时间层505k=3的非参考图片B1,B3,B5,B7,B9,B11,B13,B15不被用作层次化图片组结构500中的任何其他图片的参考图片。虽然是关于层次化B GOP说明的,但也可以采用其他GOP结构。就本文使用的而言,术语最低时间层指的是被任何其他层用作参考的层,术语较低时间层指的是被一个或多个其他层使用的层,而术语最高时间层表示不被用作参考的层。
对于层次化图片组结构500,至少部分地基于参考图片的结构和它们的依赖关系,建立编码顺序510。例如,要被用作更高时间层的参考图片的图片必须在参考它们的图片之前被编码。如图所示,对于层次化图片组结构500,按以下顺序建立编码顺序510:I0,B8,B4,B2,B1,B3,B6,B5,B7,B16,B12,B10,B9,B11,B14,B13,B15,这与呈现顺序不同:I0,B1,2,…16。
值得注意的是,在层次化图片组结构500中,接近50%的图片是没有交叉参考的非参考图片。通过为这样的图片选择仅硬件编码,可以获得计算效率,而对层次化图片组结构500的质量影响较小,因为这样的图片不被用作任何其他图片的参考帧。如上所述,在一些实施例中,当最高时间层505的非参考图片和第二最高时间层504的参考图片都只被用硬件编码时,可以维持质量。例如,最高时间层505的非参考图片(即,不被任何其他图片用作参考的图片)和时间层504的较低级图片(即,只被不被任何其他图片用作参考的图片所参考的图片)可以完全用硬件来编码。
返回到图4,当没有为视频图片选择仅硬件编码时,处理在决策操作404处继续。如在决策操作402和操作403处所论述的,在一些实施例中,所接收的视频图片的目标质量被与硬件可达到的质量度量进行比较。如果质量度量没有满足目标质量,则不完全使用硬件对接收的图片进行编码(即,使用仅软件,或者使用软件并且将一些编码任务负载转移到硬件)。在一些实施例中,评估所接收的图片的时间级别或层次。在一些实施例中,当接收到的视频图片是参考图片时(即,至少一个其他图片使用该图片作为参考图片),不选择仅硬件编码。在一些实施例中,当接收到的视频图片被时间层中的图片参考,从而其他图片也被用作参考图片时,不选择硬件编码。
参考图5,如所论述的,在一些实施例中,仅使用硬件对非参考图片进行编码。在一些实施例中,只要硬件编码的图片与软件编码的图片相结合的质量能够满足图片的目标质量水平,那么甚至更高的时间层参考图片(例如,时间层504,k=2,时间层503,k=1,和/或时间层502,k=0非内图片)也被只使用硬件来进行编码。在一些实施例中,仅使用硬件对时间层505、504的图片进行编码。在一些实施例中,仅使用硬件对时间层505、504、503的图片进行编码。在一些实施例中,仅使用硬件对时间层505、504、503、502的非内图片进行编码。
图5还图示了,关于硬件编码同步520,当时间层505的图片被负载转移到硬件编码时,层次化图片组结构500的特定图片可以被并行处理。例如,由于硬件编码非参考图片B1只参考I图片I0和参考图片B2,所以它可以在参考图片B2完成之后的任何时间开始编码。类似地,非参考图片B3可以在参考图片B2完成之后的任何时间开始,非参考图片B5可以在参考图片B6完成之后的任何时间开始,非参考图片B7可以在参考图片B6完成之后的任何时间开始,等等依此类推。在一些实施例中,硬件编码同步520可以在完成所有参考图片至参考图片B6之后开始对非参考图片B1,B3,B5,B7的硬件编码。此外,硬件编码同步520图示了同步点521,在这里,在非参考图片B1,B3,B5,B7的硬件编码完成之后,每个图片的编码包被插入到编码顺序510中的校正位置。例如,非参考图片B1,B3,B5,B7中的至少一些可以与在软件中对参考图片B16,B12,B10,B14的处理并行地经由硬件被处理,并且在非参考图片B1,B3,B5,B7完成之后,编码包可以按编码顺序510被插入。对于非参考图片B9,B11,B13,B15等等,可以重复这样的处理。
现在返回到对图4中的决策操作404的论述,对于非仅硬件图片继续处理,确定是否需要多遍(即,两遍或更多遍)来满足当前帧的质量目标。这种多遍编码可以包括任何遍数,并且可以使用任何一个或多个适当的技术来执行。如果需要多遍,则处理在决策操作405处继续,在该操作中确定是否需要软件编码来满足最终质量目标。例如,可以采用仅软件的最终遍编码来满足当前图片的最终质量目标。
如果是,则处理在操作406处继续,在该操作中在硬件中执行第一遍编码,并且在软件中执行最终遍编码,以提供混合编码。在一些实施例中,最终遍编码是第二遍编码。在一些实施例中,在软件中执行最终遍编码包括最终遍没有任何部分被执行或负载转移到硬件。
如果不需要只用软件编码最终遍来满足最终质量目标,则处理在操作407处继续,在该操作在硬件中执行第一遍编码,并且在软件和硬件的组合中执行最终遍编码以提供混合编码。在一些实施例中,最终遍编码是第二遍编码。在一些实施例中,在软件和硬件中执行最终遍编码包括使用本文论述的任何技术在软件中执行特定阶段并且在硬件中执行其他阶段。在一些实施例中,最终遍编码包括在软件上运行直到模式决策阶段为止的所有阶段,然后切换到对后续阶段的硬件实现,包括重建阶段、滤波阶段和熵编码阶段。
返回到决策操作404,如果不需要多遍编码来满足当前帧的质量目标,则处理在决策操作408处继续,在该操作中确定是否必须完全在软件中执行编码以满足质量要求,还是硬件可以通过执行一个或多个编码操作来辅助编码。可利用任何一个或多个适当的技术来作出这种确定。在一些实施例中,基于目标视频质量水平和目标时延进行该确定。在一些实施例中,如果只能由仅软件编码来满足目标视频质量水平,则选择仅软件编码。在一些实施例中,如果混合软件和硬件编码可以满足目标视频质量水平,则选择混合编码。在一些实施例中,如果要求混合软件和硬件编码来满足目标时延,并且混合软件和硬件编码提供的质量水平在目标视频质量水平的特定百分比内(例如,10%或5%),那么就选择混合编码。可以使用基于目标视频质量水平和目标时延和仅软件或硬件和软件混合能力的其他选择技术。如果要求仅软件编码,则处理在操作410处继续,在该操作中完全在软件中执行编码,没有硬件辅助。
如果不要求仅软件编码,则处理在操作409处继续,在该操作中执行单遍编码,其中一些编码操作在软件中执行,一些在硬件中执行。可以利用任何一个或多个适当的技术来作出软件和硬件编码之间的分割。在一些实施例中,模式决策是在软件中执行的,并且其他编码操作是在软件中执行的,或者取决于硬件可用性(即,系统是否支持硬件的编码操作)被负载转移到硬件。在一些实施例中,一个或多个预模式决策编码操作被负载转移到硬件。在一些实施例中,运动补偿的时间滤波由硬件执行。在一些实施例中,全局运动估计由硬件执行。在一些实施例中,平坦IPP运动分析由硬件执行。在一些实施例中,空间分析由硬件执行。在一些实施例中,开环内搜索由硬件执行。在一些实施例中,胶片颗粒合成由硬件执行。在一些实施例中,基于图片的插值由硬件执行。在一些实施例中,一个或多个后模式决策编码操作被负载转移到硬件。在一些实施例中,图片重建由硬件执行。在一些实施例中,循环滤波由硬件执行。在一些实施例中,熵编码是由硬件执行的。可以使用模式决策前和模式决策后编码操作负载转移到硬件的组合。
这样的技术提供了一种自适应的层次化算法,来确定媒体转码或媒体编码中的哪些编码操作是在混合基础设施(例如,混合视频编码器)中的软件或硬件上执行的,用于改善密度质量折衷。
图6是根据本公开的至少一些实现方式布置的混合编码流水线600中的到硬件的示例编码操作负载转移的说明图。如图6所示,混合编码流水线600包括软件编码器601(其可以实现软件编码模块104或者由软件编码模块104实现)和硬件编码器602(其可以实现硬件编码模块105或者由硬件编码模块105实现)。此外,软件编码器601实现了运动估计模块611、模式决策模块612、运动补偿重建模块613、环内滤波模块614、以及熵编码模块615。运动估计模块611、模式决策模块612、运动补偿重建模块613、环内滤波模块614和熵编码模块615中的每一个在软件被选择来执行相应阶段时执行编码阶段。软件编码器601也可以实现其他编码阶段。
类似地,硬件编码器602实现了运动估计模块621、模式决策模块622、运动补偿重建模块623、环内滤波模块624、以及熵编码模块625。运动估计模块621、模式决策模块622、运动补偿重建模块623、环内滤波模块624和熵编码模块625中的每一个可以在硬件被选择来执行相应阶段时执行相应的编码阶段,或者这样的模块可以辅助编码,从而它们向相应的软件模块提供编码数据,后者使用硬件编码数据并且最终完成编码操作或阶段。
例如,诸如混合编码流水线600之类的混合编码解决方案可以选择基于硬件的能力(例如,基于质量和时延的折衷)选择性地在硬件或软件中运行每个阶段,或者选择在图6中关于转变点603、604、605、606、607所示的各种点处基于预定义的方案进入和退出硬件/软件。例如,后一种技术提供了将软件编码器601和硬件编码器602之间的通信开销最小化的优势。图6和下文描述了示范性的硬件/软件混合方案,尽管可以使用其他方案。
在一些实施例中,运动估计和预分析被负载转移到硬件编码器602,其余的编码阶段(模式决策、运动补偿重建、环内滤波和熵编码)由软件编码器601执行,如关于转变点603、604所示(即,只采用转变点603、604,而转变点605、606、607在本实施例中可以被绕过)。例如,预分析的性质,包括运动估计,使得它适合负载转移到硬件编码器602。
在一些实施例中,混合系统的决策包括始终选择在硬件中执行预分析阶段,除非硬件和软件之间的通信开销过大。在一些实施例中,将预分析(包括运动估计)负载转移的决策是基于运动估计模块621对模式探索的硬件支持的。例如,取决于硬件实现方式,运动估计模块621可以为评估运动估计模式提供不同级别的支持。在一些实施例中,低质量和中等质量的编码探索较少的模式,这些模式最有可能经由运动估计模块621的硬件部署被发现。在一些实施例中,高质量的编码可以搜索硬件编码器不会支持的多个编码模式。在一些实施例中,硬件编码器提供模式的优先级作为输出以帮助模式决策阶段。例如,当目标视频质量水平为低或中等时,执行负载转移,而当目标视频质量水平为高时,不执行负载转移。在一些实施例中,运动估计模块621通过提供基于有限模式评估的最佳模式来提供硬件辅助,并且运动估计模块611使用这些模式并且评估进一步的模式以完成预分析和运动估计。
额外地或者替换地,由运动补偿重建模块613和运动补偿重建模块623执行的运动补偿阶段可以经由运动补偿重建模块623在硬件上得到增强,以提供对诸如全局运动补偿之类的特征的支持。这样的技术允许了例如由运动估计模块611实现的软件初始化对于相机正在移动的场景的搜索区域,并且这样的运动估计可由硬件(例如,运动估计模块621)或由软件(例如,运动估计模块611)基于硬件输出的运动补偿向量来执行。在一些实施例中,硬件(例如,运动估计模块621和/或补偿重建模块623)提供三个半像素位置,这在硬件编码器中不启用插值时是有利的。这样的技术对于时延是一个问题的模式尤其有利,并且硬件可以比软件中更快地运行这个。这样的技术可能要求单独为这个过程增强关于运行持续时间的信息,以帮助做出负载转移决策。
在一些实施例中,运动补偿、重建、环内滤波和熵编码阶段被负载转移到硬件编码器602,而先前的阶段由软件编码器601执行。在这样的实施例中,采用了转变点605,而没有采用或绕过转变点603、604、606、607。在这样的实施例中,软件编码器601使用模块611执行运动估计,并且使用模块612执行模式决策,以确定需要执行哪些模式。如果这样的模式被硬件编码器602支持,则可以提供直接负载转移到硬件,这样剩余的编码阶段由硬件编码器602的运动补偿重建模块623、环内滤波模块624和熵编码模块625执行。在一些实施例中,模式决策被模式决策模块612偏置以平衡硬件编码器602中可用的东西(用于加速)和质量需要的东西。在一些实施例中,在模式选择中,相对于在硬件中可用的那些模式,对硬件中不可用的模式施加惩罚(例如,通过在搜索最小速率失真模式的优化中对硬件不可用模式添加一个值或者从硬件可用模式中扣除一个值)。
在一些实施例中,环内滤波和熵编码阶段被负载转移到硬件编码器602,而先前的阶段由软件编码器601执行。在这样的实施例中,采用了转变点606,而没有采用或绕过转变点603、604、605、607。在这样的实施例中,软件编码器601经由模式决策模块612(以及运动估计模块611和预分析)执行模式决策,并且基于硬件编码器602有能力支持环内滤波和熵编码所需要的质量来对重建的图片进行运动补偿重建。如果时延是一个约束,则可以选择这样的编码路径和适当的参数,以实现目标时延,并且在质量水平上有最小的降低。
在一些实施例中,只有熵编码阶段被负载转移到硬件编码器602,而所有先前的阶段都由软件编码器601执行。在这样的实施例中,采用了转变点607,而没有采用或绕过转变点603、604、605、606。在这样的实施例中,软件编码器601执行预分析、运动估计、模式决策、运动补偿、图像重建和环内滤波,并且硬件编码器602经由熵编码模块625执行熵编码。这种技术可以提供编码的灵活性,同时利用了熵编码的硬件加速。
图7是图示出根据本公开的至少一些实现方式布置的用于包括自适应混合使用选择性软件和硬件编码操作的视频编码的示例过程700的流程图。过程700可包括如图7所示的一个或多个操作701-704。过程700可形成视频编码或转码过程的至少一部分。作为非限制性示例,过程700可形成由诸如系统100之类的如本文所述的任何设备或系统执行的视频编码或转码过程的至少一部分。此外,本文将参考图8的系统800来描述过程700。
图8是根据本公开的至少一些实现方式布置的用于包括自适应混合使用选择性软件和硬件编码操作的视频编码的示例系统800的说明图。如图8所示,系统800包括中央处理器801、视频处理器802、以及存储器803。如图所示,视频处理器802可包括或实现解码器和硬件编码模块105,并且中央处理器801可包括或实现编码控制器103和软件编码模块104。在一实施例中,存储器803存储了用于实现的机器学习模型。此外,在系统800的示例中,存储器803可以存储视频数据或相关内容,例如图片数据、目标视频质量水平、目标操作时延、硬件和软件的功能能力、分析数据、运动向量、重建的像素值、滤波器参数、量化参数、比特流数据、和/或本文论述的任何其他数据。
如图所示,在一些实施例中,视频处理器802实现了解码器101和硬件编码模块105。在一些实施例中,解码器101和硬件编码模块105的一者、两者或一些部分由中央处理器801、图形处理器等等实现。
视频处理器802可以包括任何数目和类型的视频、图像或图形处理单元,这些处理单元可以提供本文论述的操作。可经由软件或硬件或者其组合来实现这种操作。例如,视频处理器802可包括专用于操纵从存储器803获得的图片、图片数据等等的电路。中央处理器801可包括任何数目和类型的可以为系统800提供控制和其他高级别功能和/或提供如本文所述的任何操作的处理单元或模块。存储器803可以是任何类型的存储器,例如易失性存储器(例如,静态随机访问存储器(Static Random Access Memory,SRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM),等等)或者非易失性存储器(例如,闪存,等等),等等。在非限制性示例中,存储器803可由缓存存储器实现。
在一实施例中,解码器101和硬件编码模块105中的一个或多个或一些部分是经由执行单元(execution unit,EU)实现的。EU可包括例如可编程逻辑或电路,例如可提供多种多样的可编程逻辑功能的一个或多个逻辑核心。在一实施例中,解码器101和硬件编码模块105中的一个或多个或一些部分是经由诸如固定功能电路或专用集成电路之类的专用硬件实现的。固定功能电路可包括专用逻辑或电路,并且可提供一组固定功能入口点,这些固定功能入口点可映射到用于固定目的或功能的专用逻辑。专用集成电路可以是为特定用途定制的(而不是通用的)集成电路。
返回到对图7的论述,过程700开始于操作701,在该操作中接收输入视频来进行编码。输入视频可以是任何适当分辨率和任何适当格式的视频。在一些实施例中,过程700是一个编码过程,从而基于输入视频生成压缩的比特流。在一些实施例中,过程700是转码过程,从而接收的比特流被用于生成输入视频,而输入视频进而又被压缩为输出比特流。在一些实施例中,过程700还包括经由硬件对接收的比特流进行解码以生成输入视频。在一些实施例中,输入视频的软件编码至少部分基于由接收的比特流的解码生成的元数据。输出比特流和(如果适用)接收的比特流可以是任何格式,例如符合编解码的格式。例如,接收的和/或输出的比特流可以符合AVC标准,符合HEVC标准,符合AV1标准,或者符合VP9标准。
处理在操作702处继续,在该操作中硬件操作被自适应地确定为被应用于输入视频的视频图片组的编码、输入视频的特定图片的编码、或者输入视频的特定图片的至少一瓦片的编码操作中的至少一个。硬件操作可以在输入视频的任何粒度级别上确定,例如图片组或剪辑级别、图片级别、瓦片级别、切片级别或者块级别。此外,可以为诸如预分析、运动估计、模式决策、运动补偿、图片重建、环内滤波或熵编码之类的任何编码阶段对于这种输入视频级别确定硬件操作。
处理在操作703处继续,在该操作中经由硬件执行视频图片组的编码、特定图片的编码或者特定图片的瓦片的编码操作,并且经由软件执行输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。例如,在仅使用硬件执行视频图片组(的编码)的情境中,经由软件对另一图片组或其一部分进行编码,在仅使用硬件执行特定图片的情境中,经由软件对另一图片或其一部分进行编码,以及在仅使用硬件执行编码操作的情境中,经由软件执行或编码对特定图片、另一图片或另一图片组的另一编码操作。这样的硬件操作可以经由对被用于执行编码操作、编码任务或编码阶段的硬件的硬件调用或指令调用来唤起。
在一些实施例中,过程700还包括访问目标视频质量水平、目标操作时延以及硬件和软件的功能能力,并且使用目标视频质量水平、目标操作时延和功能能力,基于对表格的访问来选择硬件操作。在一些实施例中,特定图片在输入视频的图片组中,并且其中响应于特定图片在图片组中处于较高的时间层、或者特定图片的第一质量目标被与硬件操作相对应的仅硬件图片编码质量度量所满足中的一者,而为特定图片的编码确定硬件操作,其中,响应于图片组中的第二图片在图片组中处于较低时间层、或者第二图片的第二质量目标未被仅硬件图片编码质量度量所满足,而至少部分在软件中编码第二图片。在一些实施例中,过程700还包括响应于要求多遍编码来满足第二质量目标而使用多遍编码对第二图片进行编码,其中多遍编码包括使用所述硬件或第二硬件执行第一遍,并且至少部分在软件中执行后续遍。在一些实施例中,过程700还包括确定不需要多遍编码来满足第二质量目标,并且执行第二帧的单遍编码,包括到特定编码阶段为止的软件编码以及对该特定编码阶段后的一个或多个阶段的硬件编码。在一些实施例中,特定编码阶段包括模式决策阶段,并且一个或多个后续阶段包括重建阶段、滤波阶段和熵编码阶段。
在一些实施例中,特定图片的编码操作包括用于特定图片的编码的多个第一编码操作中的一者,多个第一编码操作是经由硬件执行的,特定图片的编码包括经由软件执行的一个或多个第二编码操作。在一些实施例中,第一编码操作包括以下各项中的一者或多者:运动补偿时间滤波、全局运动估计、平坦图片分析、空间分析、开环内搜索、电影颗粒合成、基于图片的插值、图片重建、循环滤波、或者熵编码,并且一个或多个第二编码操作包括模式决策。在一些实施例中,硬件包括固定功能电路或专用集成电路中的一个,并且经由软件的第二编码包括经由通用设备运行多行指令代码。
处理在操作704处继续,在该操作中输出或结果比特流被输出。输出或结果比特流可被传输到另一个设备以便最终解码,被存储在本地或远程存储器以便最终解码,等等。如上所述,输出或结果比特流可采取任何适当的格式,例如符合AVC标准的格式,符合HEVC标准的格式,符合AV1标准的格式,或者符合VP9标准的格式。
对于任何数目的视频剪辑、图片组、图片或编码操作,过程700可以被串行或行地重复任意多次。如上所述,过程700可提供视频编码或转码,包括混合软件和硬件编码,以获得更好的密度质量折衷。
可以用软件、固件和/或硬件和/或其任何组合来实现本文描述的系统的各种组件。例如,本文论述的设备或系统的各种组件可至少部分由计算片上系统(SoC)的硬件来提供,例如可存在于计算系统中的那种,例如智能电话中。本领域技术人员可认识到,本文描述的系统可包括在相应附图中没有描绘的额外组件。例如,本文论述的系统可包括为了清晰起见而没有描绘的额外组件。在一些实施例中,本文论述的操作由一种系统执行,该系统包括存储器来存储本文论述的任何数据以及一个或多个处理器来执行过程700的操作或者本文论述的其他操作。
虽然本文论述的示例过程的实现方式可包括按图示的顺序从事示出的所有操作,但本公开不限于此,并且在各种示例中,这里的示例过程的实现方式可只包括示出的操作的子集,包括按与图示不同的顺序执行的操作,或者包括额外的操作。
此外,可响应于由一个或多个计算机程序产品提供的指令来从事本文论述的操作中的任何一个或多个。这种程序产品可包括提供指令的信号承载介质,这些指令当被例如处理器执行时,可提供本文描述的功能。可在任何形式的一个或多个机器可读介质中提供计算机程序产品。从而,例如,包括一个或多个图形处理单元或处理器核心的处理器可响应于由一个或多个机器可读介质输送到处理器的程序代码和/或指令或指令集而从事这里的示例过程的一个或多个块。一般而言,机器可读介质可通过程序代码和/或指令或指令集的形式输送软件,所述程序代码和/或指令或指令集可使得本文描述的任何设备和/或系统实现这些设备或系统的至少一些部分,或者如本文所述的任何其他模块或组件。在一些实施例中,本文论述的操作由包括多个指令的非暂态机器可读介质执行,所述指令响应于在计算设备上被执行而使得该计算设备执行操作。
按照在本文描述的任何实现方式中使用的,术语“模块”指的是被配置为提供本文描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可被实现为软件封装、代码和/或指令集或指令,并且如本文描述的任何实现方式中使用的“硬件”例如可单一地或者组合地包括硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路、和/或存储被可编程电路执行的指令的固件。模块可集体地或者个体地被实现为形成更大系统的一部分的电路,例如集成电路(IC)、片上系统(SoC),等等。
图9是根据本公开的至少一些实现方式布置的示例系统900的说明图。在各种实现方式中,系统900可以是移动系统,虽然系统900不限于此情境。例如,系统900可被包含到以下所列项中:个人计算机(PC)、膝上型计算机、超便携膝上型计算机、平板设备、触摸板、便携计算机、手持计算机、掌上计算机、个人数字助理(personal digital assistant,PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(mobile internet device,MID)、消息传递设备、数据通信设备、相机(例如,傻瓜相机、超级变焦相机、数码单反(digital single-lens reflex,DSLR)相机),等等。
在各种实现方式中,系统900包括与显示器920耦合的平台902。平台902可从内容设备接收内容,其中内容设备例如是(一个或多个)内容服务设备930或者(一个或多个)内容递送设备940或者其他类似的内容源。包括一个或多个导航特征的导航控制器950可用于与例如平台902和/或显示器920进行交互。在下文更详述描述这些组件的每一者。
在各种实现方式中,平台902可包括芯片组905、处理器910、存储器912、天线913、存储装置914、图形子系统915、应用916和/或无线电装置918的任何组合。芯片组905可提供处理器910、存储器912、存储装置914、图形子系统915、应用916和/或无线电装置918之间的相互通信。例如,芯片组905可包括能够提供与存储装置914的相互通信的存储适配器(未描绘)。
处理器910可被实现为复杂指令集计算机(Complex Instruction Set Computer,CISC)或者精简指令集计算机(Reduced Instruction Set Computer,RISC)处理器、x86指令集兼容处理器、多核心、或者任何其他微处理器或中央处理单元(CPU)。在各种实现方式中,处理器910可以是(一个或多个)双核处理器、(一个或多个)双核移动处理器,等等。
存储器912可被实现为易失性存储器设备,例如但不限于随机访问存储器(RandomAccess Memory,RAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、或者静态RAM(Static RAM,SRAM)。
存储装置914可被实现为非易失性存储设备,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接存储设备、闪存、电池后备SDRAM(同步DRAM)、和/或网络可访问存储设备。在各种实现方式中,例如当包括多个硬盘驱动器时,存储装置914可包括技术来为有价值的数字媒体增大存储性能增强保护。
图形子系统915可执行诸如静态或视频之类的图像的处理以便显示。图形子系统915例如可以是图形处理单元(graphics processing unit,GPU)或者视觉处理单元(visual processing unit,VPU)。模拟或数字接口可被用于通信地耦合图形子系统915和显示器920。例如,该接口可以是高清晰度多媒体接口、DisplayPort、无线HDMI和/或无线HD遵从技术中的任何一者。图形子系统915可被集成到处理器910或芯片组905中。在一些实现方式中,图形子系统915可以是与芯片组905通信耦合的独立设备。
本文描述的图形和/或视频处理技术可被实现在各种硬件体系结构中。例如,图形和/或视频功能可被集成在芯片组内。或者,可以使用分立的图形和/或视频处理器。作为另外一种实现方式,图形和/或视频功能可由包括多核处理器在内的通用处理器来提供。在另外的实施例中,这些功能可被实现在消费型电子设备中。
无线电装置918可包括能够利用各种适当的无线通信技术来发送和接收信号的一个或多个无线电装置。这种技术可涉及跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(wireless local area network,WLAN)、无线个人区域网(wireless personal area network,WPAN)、无线城域网(wireless metropolitan areanetwork,WMAN)、蜂窝网络、以及卫星网络。在跨这种网络通信时,无线电装置918可根据任何版本的一个或多个适用的标准来进行操作。
在各种实现方式中,显示器920可包括任何电视型监视器或者显示器。显示器920例如可包括计算机显示屏幕、触摸屏显示器、视频监视器、类似电视的设备、和/或电视机。显示器920可以是数字的和/或模拟的。在各种实现方式中,显示器920可以是全息显示器。另外,显示器920可以是可接收视觉投影的透明表面。这种投影可传达各种形式的信息、图像和/或对象。例如,这种投影可以是移动增强现实(mobile augmented reality,MAR)应用的视觉覆盖。在一个或多个软件应用916的控制下,平台902可在显示器920上显示用户界面922。
在各种实现方式中,(一个或多个)内容服务设备930可由任何国家的、国际的和/或独立的服务所容宿并且从而例如是平台902经由互联网可访问的。(一个或多个)内容服务设备930可耦合到平台902和/或显示器920。平台902和/或(一个或多个)内容服务设备930可耦合到网络960以向和从网络960传输(例如,发送和/或接收)媒体信息。(一个或多个)内容递送设备940也可耦合到平台902和/或显示器920。
在各种实现方式中,(一个或多个)内容服务设备930可包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的具备互联网能力的设备或电器、以及能够经由网络960或者直接地在内容提供者与平台902和/或显示器920之间单向或双向地传输内容的任何其他类似设备。将会明白,可经由网络960单向地和/或双向地向和从系统900中的任何一个组件和内容提供者传输内容。内容的示例可包括任何媒体信息,例如包括视频、音乐、医疗和游戏信息,等等。
(一个或多个)内容服务设备930可接收内容,例如有线电视节目,包括媒体信息、数字信息和/或其他内容。内容提供者的示例可包括任何有线电视或卫星电视或者无线电或互联网内容提供者。提供的示例并不意图以任何方式限制根据本公开的实现方式。
在各种实现方式中,平台902可从具有一个或多个导航特征的导航控制器950接收控制信号。导航特征例如可用于与用户界面922交互。在各种实施例中,导航可以是指点设备,该指点设备可以是允许用户将空间(例如,连续的和多维的)数据输入到计算机中的计算机硬件组件(具体而言是人机接口设备)。诸如图形用户界面(graphical userinterface,GUI)以及电视机和监视器之类的许多系统允许用户利用物理手势来控制计算机或电视机和向其提供数据。
导航特征的移动可被在显示器上显示的指针、光标、聚焦环或其他视觉指示物的移动复制在显示器(例如,显示器920)上。例如,在软件应用916的控制下,位于导航上的导航特征例如可被映射到在用户界面922上显示的虚拟导航特征。在各种实施例中,可不是单独的组件,而是可被集成到平台902和/或显示器920中。然而,本公开并不限于本文示出或描述的元素或者情境。
在各种实现方式中,例如,当被使能时,驱动器(未示出)可包括使得用户能够在初始启动之后通过触摸按钮来像电视机那样即刻开启和关闭平台902的技术。程序逻辑可允许平台902即使在平台被“关闭”时也可将内容流传输到媒体适配器或(一个或多个)其他内容服务设备930或(一个或多个)内容递送设备940。此外,芯片组905可包括对例如5.1环绕立体声音频和/或高清晰度7.1环绕立体声音频的硬件和/或软件支持。驱动器可包括用于集成图形平台的图形驱动器。在各种实施例中,图形驱动器可包括高速外围组件互连(peripheral component interconnect,PCI)图形卡。
在各种实现方式中,系统900中示出的组件中的任何一个或多个可被集成。例如,平台902和(一个或多个)内容服务设备930可被集成,或者平台902和(一个或多个)内容递送设备940可被集成,或者平台902、(一个或多个)内容服务设备930和(一个或多个)内容递送设备940可被集成。在各种实施例中,平台902和显示器920可以是集成的单元。例如,显示器920和(一个或多个)内容服务设备930可被集成,或者显示器920和(一个或多个)内容递送设备940可被集成。这些示例并不意图限制本公开。
在各种实施例中,系统900可被实现为无线系统、有线系统或者两者的组合。当被实现为无线系统时,系统900可包括适合于通过无线共享介质进行通信的组件和接口,例如一个或多个天线、发送器、接收器、收发器、放大器、滤波器、控制逻辑,等等。无线共享介质的示例可包括无线频谱的一些部分,例如RF频谱等等。当被实现为有线系统时,系统900可包括适合于通过有线通信介质进行通信的组件和接口,例如输入/输出(I/O)适配器、将I/O适配器与相应的有线通信介质相连接的物理连接器、网络接口卡(network interfacecard,NIC)、盘控制器、视频控制器、音频控制器,等等。有线通信介质的示例可包括导线、电缆、金属引线、印刷电路板(printed circuit board,PCB)、背板、交换结构、半导体材料、双绞线、同轴电缆、光纤,等等。
平台902可建立一个或多个逻辑或物理通道来传输信息。该信息可包括媒体信息和控制信息。媒体信息可以指表示打算给用户的内容的任何数据。内容的示例例如可包括来自语音交谈的数据、视频会议、流视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本,等等。来自语音交谈的数据可例如是话音信息、静默时段、背景噪声、舒适噪声、音调,等等。控制信息可以指表示打算给自动化系统的命令、指令或控制字的任何数据。例如,控制信息可用于将媒体信息路由过系统,或者指示节点以预定的方式处理媒体信息。然而,实施例并不限于图9中示出或描述的元素或情境。
如上所述,系统900可被实现为不同的物理风格或外形参数。图10图示了根据本公开的至少一些实现方式布置的示例小外形参数设备1000。在一些示例中,可经由设备1000来实现系统900。在其他示例中,可经由设备1000来实现系统100或其一些部分。在各种实施例中,例如,设备1000可被实现为具有无线能力的移动计算设备。移动计算设备例如可以指具有处理系统和移动电源或电力供应(例如一个或多个电池)的任何设备。
移动计算设备的示例可包括:个人计算机(PC)、膝上型计算机、超便携膝上型计算机、平板设备、触摸板、便携计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、智能设备(例如,智能电话、智能平板或智能移动电视)、移动互联网设备(MID)、消息传递设备、数据通信设备、相机,等等。
移动计算设备的示例还可包括被布置为被人穿戴的计算机,例如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带扣计算机、臂环计算机、鞋子计算机、衣服计算机和其他可穿戴计算机。在各种实施例中,例如,移动计算设备可被实现为除了语音通信和/或数据通信以外还能够执行计算机应用的智能电话。虽然作为示例,可利用被实现为智能电话的移动计算设备来描述一些实施例,但可明白也可利用其他无线移动计算设备来实现其他实施例。实施例不限于此情境中。
如图10所示,设备1000可包括具有正面1001和背面1002的外壳。设备1000包括显示器1004、输入/输出(I/O)设备1006、以及集成天线1008。设备1000还可包括导航特征1012。I/O设备1006可包括用于将信息输入到移动计算设备中的任何适当的I/O设备。I/O设备1006的示例可包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、麦克风、扬声器、语音识别设备和软件,等等。信息也可通过麦克风(未示出)被输入到设备1000中,或者可被语音识别设备来数字化。如图所示,设备1000可包括集成到设备1000的背面1002(或别处)的相机1005(例如,包括镜头、光圈和成像传感器)和闪光灯1010。在其他示例中,相机1005和闪光灯1010可被集成到设备1000的正面1001中,或者正面和背面相机都可被提供。相机1005和闪光灯1010可以是相机模块的组件,用于创作被处理成流视频的图像数据,该流视频例如被输出到显示器1004和/或被从设备1000经由天线1008远程通信。
可以利用硬件元素、软件元素或者两者的组合来实现各种实施例。硬件元素的示例可包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。软件的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任何组合。确定一实施例是否利用硬件元素和/或软件元素来实现可根据任何数目的因素而变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、以及其他设计或性能约束。
至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
虽然已参考各种实现方式描述了本文记载的某些特征,但此描述并不打算被从限制意义上来解释。因此,对本公开所属领域的技术人员来说显而易见的对本文描述的实现方式的各种修改以及其他实现方式,被认为属于本公开的精神和范围内。
在一个或多个第一实施例中,一种用于视频编码的方法,包括接收用于编码的输入视频,自适应地确定硬件操作要被应用于以下各项中的至少一者:所述输入视频的视频图片组的编码,所述输入视频的特定图片的编码,或者对所述输入视频的特定图片的至少一瓦片的编码操作,并且经由硬件执行所述视频图片组的编码、所述特定图片的编码或者对所述特定图片的瓦片的编码操作,并且经由软件执行所述输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。
在相对于第一实施例进一步的一个或多个第二实施例中,所述方法还包括访问目标视频质量水平、目标操作时延、以及所述硬件和所述软件的功能能力,并且使用目标视频质量水平、目标操作时延和所述功能能力,基于对表格的访问来选择所述硬件操作。
在相对于第一或第二实施例进一步的一个或多个第三实施例中,所述特定图片在所述输入视频的图片组中,并且其中响应于所述特定图片在所述图片组中处于较高时间层、或者所述特定图片的第一质量目标被与所述硬件操作相对应的仅硬件图片编码质量度量所满足中的一者,而为所述特定图片的编码确定所述硬件操作:,其中,响应于所述图片组中的第二图片在所述图片组中处于较低时间层、或者所述第二图片的第二质量目标没有被所述仅硬件图片编码质量度量所满足,而至少部分在软件中对所述第二图片进行编码。
在相对于第一至第三实施例中任一者进一步的一个或多个第四实施例中,响应于要求多遍编码来满足所述第二质量目标而使用多遍编码对所述第二图片进行编码,其中所述多遍编码包括使用所述硬件或第二硬件执行第一遍并且至少部分在软件中执行后续遍。
在相对于第一至第四实施例中任一者进一步的一个或多个第五实施例中,所述方法还包括确定不需要多遍编码来满足所述第二质量目标,并且执行所述第二图片的单遍编码,包括直到特定编码阶段为止的软件编码以及对该特定编码阶段后的一个或多个后续阶段的硬件编码。
在相对于第一至第五实施例中任一者进一步的一个或多个第六实施例中,所述方法还包括所述特定编码阶段包括模式决策阶段并且所述一个或多个后续阶段包括重建阶段、滤波阶段、以及熵编码阶段。
在相对于第一至第六实施例中任一者进一步的一个或多个第七实施例中,对于所述特定图片的瓦片的编码操作包括对于所述特定图片的瓦片的编码的多个第一编码操作之一,所述多个第一编码操作是经由硬件执行的,所述特定图片的瓦片的编码包括经由软件执行的一个或多个第二编码操作。
在相对于第一至第七实施例中任一者进一步的一个或多个第八实施例中,所述第一编码操作包括以下各项中的一个或多个:运动补偿时间滤波、全局运动估计、平坦图片分析、空间分析、开环内搜索、胶片颗粒合成、基于图片的插值、图片重建、循环滤波、或者熵编码,并且所述一个或多个第二编码操作包括模式决策。
在相对于第一至第八实施例中任一者进一步的一个或多个第九实施例中,所述硬件包括固定功能电路或专用集成电路中的一个,并且经由软件的所述第二编码包括经由通用设备运行多行指令代码。
在相对于第一至第九实施例中任一者进一步的一个或多个第十实施例中,所述方法还包括经由第二硬件对接收的比特流进行解码以生成所述输入视频。
在相对于第一至第十实施例中任一者进一步的一个或多个第十一实施例中,经由软件的所述第二编码是至少部分基于由接收的比特流的解码所生成的元数据的。
在一个或多个第十二实施例中,一种设备或系统包括存储器和一个或多个处理器来执行根据上述实施例中的任何一者的方法。
在一个或多个第十三实施例中,至少一个机器可读介质包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行根据上述实施例中的任何一者所述的方法。
在一个或多个第十四实施例中,一种装置包括用于执行根据上述实施例中的任何一者所述的方法的装置。
将会认识到,实施例不限于这样描述的实施例,而是可在带有修改和变更的情况下实现,而不脱离所附权利要求的范围。例如,上述实施例可包括特征的特定组合。然而,上述实施例不限于此,并且在各种实现方式中,上述实施例可包括仅从事这种特征的子集,从事这种特征的不同顺序,从事这种特征的不同组合,和/或从事除明确列出的那些特征以外的附加特征。因此,应当参考所附权利要求以及这种权利要求有权享有的等同物的完整范围来确定实施例的范围。
Claims (25)
1.一种用于视频编码的系统,包括:
存储器,用于存储输入视频的至少一部分以用于编码;以及
一个或多个处理器,与所述存储器耦合,所述一个或多个处理器用于:
自适应地确定硬件操作要被应用于以下各项中的至少一者:所述输入视频的视频图片组的编码,所述输入视频的特定图片的编码,或者对于所述输入视频的特定图片的至少一瓦片的编码操作;并且
经由对硬件的功能调用来执行所述视频图片组的编码、所述特定图片的编码或者对于所述特定图片的瓦片的编码操作,并且经由软件执行所述输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。
2.如权利要求1所述的系统,所述一个或多个处理器用于:
访问目标视频质量水平、目标操作时延、以及所述硬件和所述软件的功能能力;并且
使用所述目标视频质量水平、所述目标操作时延以及所述功能能力,基于对表格的访问来选择所述硬件操作。
3.如权利要求1所述的系统,其中,所述特定图片在所述输入视频的图片组中,并且其中,响应于所述特定图片在所述图片组中处于较高时间层、或者所述特定图片的第一质量目标被与所述硬件操作相对应的仅硬件图片编码质量度量所满足中的一者,而为所述特定图片的编码确定所述硬件操作,其中,响应于所述图片组中的第二图片在所述图片组中处于较低时间层、或者所述第二图片的第二质量目标没有被所述仅硬件图片编码质量度量所满足,而至少部分在软件中对所述第二图片进行编码。
4.如权利要求3所述的系统,所述一个或多个处理器用于:
响应于要求多遍编码来满足所述第二质量目标而使用多遍编码对所述第二图片进行编码,其中,所述多遍编码包括使用所述硬件或第二硬件的第一遍以及至少部分在软件中执行的后续遍。
5.如权利要求3所述的系统,所述一个或多个处理器用于:
确定不需要多遍编码来满足所述第二质量目标;以及
执行所述第二图片的单遍编码,该单遍编码包括直到特定编码阶段为止的软件编码和对于所述特定编码阶段后的一个或多个后续阶段的硬件编码。
6.如权利要求5所述的系统,其中,所述特定编码阶段包括模式决策阶段,并且所述一个或多个后续阶段包括重建阶段、滤波阶段、以及熵编码阶段。
7.如权利要求1至6中任一项所述的系统,其中,对于所述特定图片的瓦片的编码操作包括对于所述特定图片的瓦片的编码的多个第一编码操作之一,所述多个第一编码操作是经由硬件执行的,所述特定图片的瓦片的编码包括经由软件执行的一个或多个第二编码操作。
8.如权利要求7所述的系统,其中,所述第一编码操作包括以下各项中的一者或多者:运动补偿时间滤波、全局运动估计、平坦图片分析、空间分析、开环内搜索、胶片颗粒合成、基于图片的插值、图片重建、循环滤波、或者熵编码,并且所述一个或多个第二编码操作包括模式决策。
9.如权利要求1至6中任一项所述的系统,其中,所述硬件包括固定功能电路或专用集成电路中的一者,并且经由软件的所述第二编码包括经由通用设备运行多行指令代码。
10.如权利要求1至6中任一项所述的系统,所述一个或多个处理器用于:
经由对第二硬件的第二功能调用来对接收到的比特流进行解码,以生成所述输入视频。
11.如权利要求10所述的系统,其中,经由软件的所述第二编码是至少部分基于由接收到的比特流的解码所生成的元数据的。
12.一种用于视频编码的方法,包括:
接收输入视频以用于编码;
自适应地确定硬件操作要被应用于以下各项中的至少一者:所述输入视频的视频图片组的编码,所述输入视频的特定图片的编码,或者对于所述输入视频的特定图片的至少一瓦片的编码操作;并且
经由硬件执行所述视频图片组的编码、所述特定图片的编码或者对于所述特定图片的瓦片的编码操作,并且经由软件执行所述输入视频的剩余部分的一部分的至少第二编码,从而生成输出比特流。
13.如权利要求12所述的方法,还包括:
访问目标视频质量水平、目标操作时延、以及所述硬件和所述软件的功能能力;并且
使用所述目标视频质量水平、所述目标操作时延以及所述功能能力,基于访问表格来选择所述硬件操作。
14.如权利要求12所述的方法,其中,所述特定图片在所述输入视频的图片组中,并且其中,响应于所述特定图片在所述图片组中处于较高时间层、或者所述特定图片的第一质量目标被与所述硬件操作相对应的仅硬件图片编码质量度量所满足中的一者,而为所述特定图片的编码确定所述硬件操作,其中,响应于所述图片组中的第二图片在所述图片组中处于较低时间层、或者所述第二图片的第二质量目标没有被所述仅硬件图片编码质量度量所满足,而至少部分在软件中对所述第二图片进行编码。
15.如权利要求14所述的方法,还包括:
响应于要求多遍编码来满足所述第二质量目标而使用多遍编码对所述第二图片进行编码,其中,所述多遍编码包括使用所述硬件或第二硬件执行第一遍并且至少部分在软件中执行后续遍。
16.如权利要求14所述的方法,还包括:
确定不需要多遍编码来满足所述第二质量目标;以及
执行所述第二图片的单遍编码,该单遍编码包括直到特定编码阶段为止的软件编码和对于所述特定编码阶段后的一个或多个后续阶段的硬件编码。
17.如权利要求16所述的方法,其中,所述特定编码阶段包括模式决策阶段,并且所述一个或多个后续阶段包括重建阶段、滤波阶段、以及熵编码阶段。
18.如权利要求12至17中任一项所述的方法,其中,对于所述特定图片的瓦片的编码操作包括对于所述特定图片的瓦片的编码的多个第一编码操作之一,所述多个第一编码操作是经由硬件执行的,所述特定图片的瓦片的编码包括经由软件执行的一个或多个第二编码操作。
19.如权利要求18所述的方法,其中,所述第一编码操作包括以下各项中的一者或多者:运动补偿时间滤波、全局运动估计、平坦图片分析、空间分析、开环内搜索、胶片颗粒合成、基于图片的插值、图片重建、循环滤波、或者熵编码,并且所述一个或多个第二编码操作包括模式决策。
20.如权利要求12至17中任一项所述的方法,其中,所述硬件包括固定功能电路或专用集成电路中的一者,并且经由软件的所述第二编码包括经由通用设备运行多行指令代码。
21.如权利要求20所述的方法,还包括:
经由第二硬件对接收到的比特流进行解码,以生成所述输入视频。
22.如权利要求21所述的方法,其中,经由软件的所述第二编码是至少部分基于由接收到的比特流的解码所生成的元数据的。
23.一种设备,包括:
存储器;以及
一个或多个处理器,耦合到所述存储器,所述处理器用于执行如权利要求12至22中任一项所述的方法。
24.至少一个机器可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行,使得所述计算设备执行如权利要求12至22中任一项所述的方法。
25.一种系统,包括:
用于执行如权利要求12至22中任一项所述的方法的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/127,544 | 2020-12-18 | ||
US17/127,544 US12101475B2 (en) | 2020-12-18 | 2020-12-18 | Offloading video coding processes to hardware for better density-quality tradeoffs |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114650427A true CN114650427A (zh) | 2022-06-21 |
Family
ID=75275285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111352784.0A Pending CN114650427A (zh) | 2020-12-18 | 2021-11-16 | 将视频编码过程负载转移到硬件以获得更好密度质量折衷 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12101475B2 (zh) |
EP (1) | EP4017005A1 (zh) |
JP (1) | JP2022097392A (zh) |
CN (1) | CN114650427A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12101475B2 (en) * | 2020-12-18 | 2024-09-24 | Intel Corporation | Offloading video coding processes to hardware for better density-quality tradeoffs |
US20220408127A1 (en) * | 2021-06-16 | 2022-12-22 | Meta Platforms, Inc. | Systems and methods for selecting efficient encoders for streaming media |
CN118175157B (zh) * | 2024-05-09 | 2024-08-02 | 江苏北弓智能科技有限公司 | 一种远程移动云桌面采集方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101276A (en) | 1996-06-21 | 2000-08-08 | Compaq Computer Corporation | Method and apparatus for performing two pass quality video compression through pipelining and buffer management |
US6665872B1 (en) | 1999-01-06 | 2003-12-16 | Sarnoff Corporation | Latency-based statistical multiplexing |
US11089343B2 (en) * | 2012-01-11 | 2021-08-10 | Microsoft Technology Licensing, Llc | Capability advertisement, configuration and control for video coding and decoding |
US11128935B2 (en) * | 2012-06-26 | 2021-09-21 | BTS Software Solutions, LLC | Realtime multimodel lossless data compression system and method |
US10349069B2 (en) | 2012-12-11 | 2019-07-09 | Sony Interactive Entertainment Inc. | Software hardware hybrid video encoder |
JP6531398B2 (ja) * | 2015-01-19 | 2019-06-19 | 富士通株式会社 | プログラム |
US10303497B2 (en) * | 2017-06-22 | 2019-05-28 | Vmware, Inc. | Hybrid software and GPU encoding for UI remoting |
US10904552B2 (en) | 2018-02-15 | 2021-01-26 | Intel Corporation | Partitioning and coding mode selection for video encoding |
GB2620500B (en) | 2019-03-20 | 2024-05-15 | V Nova Int Ltd | Low complexity enhancement video coding |
US20210132688A1 (en) * | 2019-10-31 | 2021-05-06 | Nvidia Corporation | Gaze determination using one or more neural networks |
US20210400286A1 (en) * | 2020-06-19 | 2021-12-23 | Micron Technology, Inc. | Video Compression in Removable Storage Device having Deep Learning Accelerator and Random Access Memory |
US12101475B2 (en) | 2020-12-18 | 2024-09-24 | Intel Corporation | Offloading video coding processes to hardware for better density-quality tradeoffs |
-
2020
- 2020-12-18 US US17/127,544 patent/US12101475B2/en active Active
-
2021
- 2021-09-24 EP EP21198867.0A patent/EP4017005A1/en active Pending
- 2021-11-16 CN CN202111352784.0A patent/CN114650427A/zh active Pending
- 2021-11-19 JP JP2021188560A patent/JP2022097392A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022097392A (ja) | 2022-06-30 |
US20210105466A1 (en) | 2021-04-08 |
EP4017005A1 (en) | 2022-06-22 |
US12101475B2 (en) | 2024-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12120312B2 (en) | Video encoding rate control for intra and scene change frames using machine learning | |
JP6120390B2 (ja) | 次世代動画用コンテンツに適応的な特性補償済み予測 | |
US20180376153A1 (en) | Content, psychovisual, region of interest, and persistence based adaptive quantization for video coding | |
US11223831B2 (en) | Method and system of video coding using content based metadata | |
US10674151B2 (en) | Adaptive in-loop filtering for video coding | |
US9532048B2 (en) | Hierarchical motion estimation employing nonlinear scaling and adaptive source block size | |
CN113852821A (zh) | 使用深度学习的视频编解码器辅助实时视频增强 | |
US12101475B2 (en) | Offloading video coding processes to hardware for better density-quality tradeoffs | |
EP3873094B1 (en) | Reduction of visual artifacts in parallel video coding | |
US20190045198A1 (en) | Region adaptive data-efficient generation of partitioning and mode decisions for video encoding | |
EP3910941A1 (en) | Parallel video encoding of coding units from neighboring largest coding units | |
US20160173906A1 (en) | Partition mode and transform size determination based on flatness of video | |
CN107736026B (zh) | 样本自适应偏移编码 | |
CN112312140A (zh) | 用于视频编码的内容和量化自适应编码结构决策 | |
CN112565761A (zh) | 利用交叉通道引用进行多通道视频编码的方法和系统 | |
CN115623222A (zh) | 多层视频编码的方法和系统 | |
US10869041B2 (en) | Video cluster encoding for multiple resolutions and bitrates with performance and quality enhancements | |
US10687054B2 (en) | Decoupled prediction and coding structure for video encoding | |
NL2029548B1 (en) | Determining adaptive quantization matrices using machine learning for video coding | |
CN107743707B (zh) | 低位率视频编解码 | |
CN115550662A (zh) | 用于视频编码的细粒度前瞻增强 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |