CN109792540A - 利用每帧参数控制的硬件加速的视频编码方法和系统 - Google Patents

利用每帧参数控制的硬件加速的视频编码方法和系统 Download PDF

Info

Publication number
CN109792540A
CN109792540A CN201780058747.4A CN201780058747A CN109792540A CN 109792540 A CN109792540 A CN 109792540A CN 201780058747 A CN201780058747 A CN 201780058747A CN 109792540 A CN109792540 A CN 109792540A
Authority
CN
China
Prior art keywords
frame
encoder
coding
setting
adjustment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780058747.4A
Other languages
English (en)
Other versions
CN109792540B (zh
Inventor
杰弗里·麦卡利斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109792540A publication Critical patent/CN109792540A/zh
Application granted granted Critical
Publication of CN109792540B publication Critical patent/CN109792540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/172Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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

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

利用每帧参数控制的硬件加速的视频编码方法和系统
优先权声明
本申请要求于2016年10月1日递交的名为“MEHTOD AND SYSTEM OF HARDWAREACCELERATED VIDEO CODING WITH PER-FRAME PARAMETER CONTROL”的、序列号为15/283,321的美国临时专利申请的优先权,并且该美国临时专利申请的全部内容通过引用结合于此。
背景技术
视频压缩使得以很多不同方式使用视频数据成为可能。没有视频压缩,通过磁带、磁盘、网络、或任何其他形式的视频分发将更加困难。由于视频分辨率不断增加并且对于高质量视频图像的期望不断提高,非常需要视频的高效图像数据压缩。视频压缩在计算上比较复杂,并且需要速度与质量的折中。对于诸如高级视频编码(AVC)、H.265/HEVC(高效视频编码)、VP#、和其他视频编码标准的任何视频编码标准都是如此。上述标准使用传统方法的扩展形式来解决压缩不充分和/或质量问题,并且结果通常仍然是不充分的并且需要相对大量的计算和时间来计算这些结果。因此,高分辨率编码通常很慢,甚至比实时还慢。
减少由编码导致的延迟的一种方案是使用具有通用硬件的图形硬件加速器来处理大量视频编码数据。这种硬件可以比实时更快地频繁处理多个流。但是,多个视频编码加速会产生其他问题。加速器仍然必须足够快地处理帧数据,以允许编码器横跨多个编码以某个目标帧速率提供帧。为了对所有的可能输入保证这些帧速率,不管例如图像的复杂性或图像内容或递送中的其他变化如何,必须使用保守的编码器质量/性能折中设置来考虑最差情况场景。这牺牲了提高视频编码的整体质量的机会。不存在基于正在处理的图像内容的速率或延迟自动调谐编码器设置,以在横跨多个编码保持指定的输出帧速率的同时最大化质量的机制。
附图说明
通过示例而非限制,在附图中示出了本文描述的材料。为了图示的简单和清楚,图中所示的元件不一定按比例绘制。例如,为了清楚,一些元件的尺寸可以相对于其他元件被放大。另外,在合适的情况下,参考标号在多个附图中重复来指示相应或相似的元件。在附图中:
图1是根据本文中的实施方式的利用多个编码器会话的视频编码设备的示意图;
图2是根据本文中的实施方式的利用每帧参数控制的视频编码方法的流程图;
图3是根据本文中的实施方式的提供多个编码器单元的硬件加速器的示意图;
图4是用于图像处理系统的示例编码器的示意图;
图5是用于视频编码系统的解码器的示意图;
图6A至6B是根据本文中的实施方式的利用帧速率控制的视频编码方法的流程图;
图7是根据本文中的实施方式的用于调整帧速率以满足目标帧速率的图表;
图8A至8B是根据本文中的实施方式的利用延迟控制的替代视频编码方法的流程图;
图9是根据本文中的实施方式的用于调整延迟以满足目标延迟的图表;
图10是根据本文中的实施方式的操作用于提供利用每帧参数控制的视频编码方法的示例系统的说明性示意图;
图11是示例系统的说明性示意图;
图12是另一示例系统的说明性示意图;以及
图13示出了完全根据本公开的至少一些实施方式布置的另一示例设备。
具体实施方式
现在,参考附图描述一个或多个实施方式。尽管讨论了具体配置和布置,但是应该理解的是这么做仅仅出于说明性目的。相关领域技术人员将认识到,在不偏离本说明书的精神和范围的条件下可以采用其他配置和布置。对于相关领域技术人员将显而易见的是,本文描述的技术和/或布置也可以用在不同于本文描述的系统和应用的各种其他系统和应用中。
尽管下面的描述给出了可以在例如片上系统(SoC)架构的架构中表示的各种实施方式,但是本文描述的技术和/或布置的实施方式不限于特定架构和/或计算系统并且可以由用于相似目的的任何架构和/或计算系统实现(除非该架构被特别限制到本文描述的结构)。例如,采用例如图形加速器和/或图形处理单元(GPU)、超长指令字(VLIW)处理器、专用编解码器加速硬件等的各种计算架构可以实现本文描述的技术和/或布置。另外,尽管下面的描述可以给出诸如系统组件的类型和相互关系、逻辑实施方式、逻辑划分和/或集成选择之类的多个具体细节,但是请求保护的主题可以在没有这些具体细节的条件下实施。在其他实例中,诸如控制结构和完全软件指令序列之类的一些材料可以不被详细示出,以避免模糊本文公开的材料。
当没有具体提及时,本文公开的材料可以实现在硬件、固件、软件、或它们的任意组合中。本文公开的一些材料还可以实现为存储在机器可读介质上的指令,这些指令可以由一个或多个处理器读取并执行。机器可读介质可以包括用于存储或发送机器(例如,计算设备)可读形式的信息的任意介质和/或机制。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。在另一种形式中,诸如非暂态计算机可读介质的非暂态物品可以用于以上提到的任意示例或其他示例(除了其不包括暂态信号本身以外)。其还包括除了信号本身以外的可以临时以“暂态”形式保存数据的那些元件(例如,RAM等)。
说明书中对于“一个实施方式”、“实施方式”、“示例实施方式”等的引用指示所描述的实施方式可以包括特定特征、结构、或特性,但是不一定每个实施方式都包括该特定特征、结构、或特性。另外,这些短语不一定指代相同的实施方式。另外,当结合实施方式描述特定特征、结构、或特性时,应该明白的是结合其他实施方式(不管是否明确描述)实现这些特征、结构、或特性将落入本领域技术人员的认知范围内。
下面描述与根据本文中的实施方式的利用每帧参数控制的硬件加速的视频编码有关的系统、介质、和方法。
传统上,调整量化等级(QP或量化参数)来保持比特率。当QP较高时,大部分像素数据被丢弃。当量化(QP)降低时,更多的像素数据被保留。由于压缩帧序列所需的比特数目高度依赖于内容的类似运动复杂性、场景变化等的方面,所以QP本身不足以设置比特率。必须添加反馈机制以动态地调整内容。诸如VBR(可变比特率)的传统比特率控制方法调整QP来保持目标比特率。如果帧大小太大,则增大QP(降低质量),并且如果帧大小正在变得低于比特率目标,则减小QP(提高质量)。相比设置恒定的QP,该反馈机制可以增加比特率可预见性以及给定比特率处的质量。
但是,如上所述,图形加速器和类似架构现在提供了可以比实时更快地执行多个同时编码的专用硬件。但是,恰恰因为在给定QP设置的情况下每帧的比特依赖于内容,所以每秒可以由编码器处理的帧数目基于内容复杂性而改变。当每个编码器每秒编码的帧数目被约束到目标数目时,诸如这里描述的控制机制可以最大化质量。
图形加速器(在这里也称为图形处理单元(GPU))或类似专用硬件在横跨多个编码提供目标帧速率方面遇到困难。横跨多个编码保持目标帧输出速率对于类似直播流的用例是必需的,因为针对这种数据的播放器需要以稳定的速率接收新帧。对于批处理编码,必需保持总体编码速率,以在所分配的时间内完成多个编码(例如,必需在下一批到达之前对一组视频进行转码)。直播编码器通常提供目标帧速率或接近目标帧速率的压缩帧,使得这些帧可以在准时型系统中的比特流上递送,使得解码器处的存储器(例如,抖动缓冲器)不会被淹没,并且以足够的速度提供视频序列的及时、连续的显示。解码器将以与显示帧速率有关的速度从缓冲器提取帧。尽管递送帧的速率会由于网络问题变化,但是由编码器处的长计算持续时间或设置导致的延迟同样会导致递送帧速率的变化。当帧被太早递送时,解码器处的缓冲器可以丢弃这些帧(如果缓冲器太满的话),并且当帧太晚时,这些帧不能被按时显示。不管怎样,以实际编码器帧速率提供帧并以相对于目标帧速率有较大变化的速率递送帧可以导致帧到帧的跳跃运动甚至暂停或显示用户可以注意到的停止。
一种已知方案是在多个编码器单元中的每个编码器单元设置编码器设置和编码器帧速率,以按照目标帧速率设置提供帧从而补偿最差情况场景。这种最差情况场景假定帧具有复杂图像并且每帧被提供以某最大数目的处理,例如,在确定用于运动估计的运动向量时假定更少的零运动向量或跳过块和/或使用更多的蛮匹配搜索而不使用快捷方式算法或搜索。这种搜索算法还可以使用与所分析的块在同一帧上的更多空间像素数据,这要求系统在处理当前块的运动向量之前首先等待对于参考块的分析(和运动向量)被提供。在帧可以非常简单时,例如,所有这些类型的最差情况假设都没有充分利用系统能力。这会导致用于比最差情况更简单和/或更快编码的视频序列的系统能力的浪费。
为了解决这些问题,可以自动调整与编码器处的质量折中有关的算法复杂性设置,使得在加速器使用单独的编码器单元(或作为整体的编码器单元群组)产生的实际帧速率或延迟可以更好地匹配目标编码器输出帧速率或延迟,动态地调整到内容的改变或其他性能变化。容量是可以比可以类似于目标比特率配置的“实时”阈值更快地处理的同时编码(包括转码)的数目。通过监测针对每个编码器的新帧比特流输出变得对于系统可用时的时间来测量容量(或帧从编码器出现的速率)。延迟是用于对帧进行编码的持续时间,包括从认为帧已经进入编码器时的时间到帧可用于输出比特流的时间。这里的转码是指包括原始序列的解码、帧处理、以及编码在内的完整编码周期。
参考图1,视频编码设备100可以具有监测器单元102,该监测器单元102监测一组编码或编码会话104至110(编号为1至N)上的延迟和帧容量,其中,每个编码会话至少部分地与其他编码会话并行执行。每个编码会话可以包括从一直通过编码获取帧数据时的预处理直到压缩数据被放置在比特流中的操作。编码会话的一些编码操作由加速器上的共享通用固定功能硬件和软件(和例如CPU)执行。但是,编码会话的其他编码操作可以由并行操作的不同编码器单元执行。这些编码器单元可以由例如图形加速器或GPU上的并行硬件切片或硬件子切片执行。通过一种形式,可以向每个编码器单元分配与分配给其他编码器单元的帧不同的帧。下面参考图3说明这些细节。
当编码会话104至110的实际帧速率或延迟分别偏离目标帧速率或延迟太远时,可以自动调整编码器质量和/或编码时间折中设置以使系统返回到目标帧速率或延迟。通过一种方法,将编码器设置预先布置到一组数字质量等级,其中,提供编码时间范围和质量参数。当来自监测器单元102的读取信息指示应该将与至少一个编码器单元相关联的帧速率或延迟朝向目标帧速率或延迟调整时,可以在所有编码器单元上或仅在特定编码器单元上改变编码器质量等级,其中特定编码器单元具有与目标值之间的差值足够大以触发调整的实际值(帧速率或延迟)。下面提供具体细节。
现在参考图2,根据本公开的至少一些实施方式布置示例处理200。一般,处理200可以提供一种计算机实现的利用每帧参数控制的硬件加速的视频编码方法。在所示出的实施方式中,处理200可以包括由均匀编号的操作202至208中的一个或多个操作示出的一个或多个操作、功能、或动作。通过非限制性示例,这里可以参考针对图6A至6B、图8A至8B、和图10讨论的操作描述处理200,并且可以针对本文讨论的示例系统100、300、400、500、或1100讨论处理200。
处理200可以包括“获取待编码的至少一个视频序列的帧的图像数据”202,并且如下所述可以包括接收原始图像数据并完成至少一些预处理(例如,去马赛克、去噪等),使得图像数据至少准备好被提供用于诸如颜色空间或动态范围转换的编码器特定的预处理。
处理200可以包括“监测具有多个编码器单元的图形加速器型设备,该多个编码器单元用于执行多个帧的同时编码任务并用于至少确定各个帧的压缩完成并且准备好被放置在比特流中时的编码完成时间”204。因此,这涉及具有各个硬件切片或子切片的那些单晶片设备(例如,片上系统(SoC)),其中,可以将每个这样的部分看作为执行编码会话的至少一些编码任务的编码器单元。这些任务可以包括例如比特率控制、运动估计、帧内估计、以及预测模式选择。当使用编码器单元的编码会话已经生成压缩帧和开销(包括解压缩该帧所需要的像素图像数据、残差、运动向量等),即准备好被放置在分组中以用于放置在比特流中时,记下帧的时间戳、时间、或时钟。可以通过测量当前帧从编码器出现与前一帧出现之间经过的时间来确定这类编码完成时间。可以针对每个帧或多个单独的帧重复该处理。如下面讨论的,这可以是监测每个编码器的每帧速率所需要的所有信息。但是,也可以监测未压缩帧进入编码器时与该帧的编码比特流从编码器出现时之间的时间来确定如本文所述的延迟。
处理200可以包括“通过使用至少一个编码完成时间,确定至少一个帧和多个编码器单元中的至少一个编码器单元的实际每帧编码时间相关值”206。具体地,如下面具体描述的,可以使用多个帧的编码完成时间来确定编码会话的实际容量或帧速率,从而确定与该编码会话相关联的编码器单元。实际值可以是来自使用相同编码器单元的连续帧或诸如连续帧群组的帧群组的帧速率中的最小帧速率。随后将使用该实际帧速率值与目标帧速率进行比较。可以针对接收帧的每个编码器单元执行该处理。尽管提到了使用相对于目标值的最小帧速率,但是将理解的是,帧群组可以是连续帧或相隔一定间隔的帧或随机帧等,也可以是视频序列的所有帧。另外,替代地,将理解的是,实际帧速率可以是容量或延迟的某个中间值、平均值、或其他组合。对于帧速率,还将理解的是,可以使用表示帧速率的值。例如,当前帧和下一帧之间的时间间隔可以表示用来与目标值(也可以是目标时间间隔)比较的实际帧速率,而不用间隔除1秒来计算例如FPS中的实际帧速率。
替代地或者另外,系统还可以通过监测帧进入编码器时与它们横跨一组编码器退出时之间的时间来确定各个帧的延迟。在这种情况下,帧群组的延迟中的最大延迟用来像实际帧速率值一样表示帧群组,但是可以是与以上利用帧速率描述的最大值不同的值。编码开始时间可以是设置预处理点或帧的某个版本被保存在输入缓冲器或被从输入缓冲器提取以开始核心编码操作(例如,帧的划分)时的时间点。另外,可以在某个预处理操作之前或之后(例如,在用于兼容编码器的格式转换(例如,颜色空间或动态范围转换)之后)设置编码开始时间。可以将实际延迟确定为编码开始时间与编码完成时间之间的差值。
处理200还可以包括“调整至少一个编码器操作的至少一个编码器设置,以将实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值”208。该操作可以包括分别比较实际容量(或输出帧速率)和/或延迟与目标帧速率和/或延迟。当实际帧速率小于目标值时,编码器单元操作太慢。为了对此进行补偿并且使实际帧速率更接近目标容量,可以降低编码器的质量设置,以降低帧质量并增大帧速率。当实际容量大于目标容量时可以执行相反的操作。当实际延迟低于(或小于)目标延迟时,编码器单元操作太快,并且可以提高帧的质量以将实际延迟延长到更接近或等于目标延迟,并且当实际延迟大于目标延迟时,将应用相反的操作。
一旦确定了实际值和目标值之间的差值,就可以调整编码器设置进行补偿。通过一种示例形式,这可以包括根据期望质量等级,预先确定编码器可以自动调整到的数字比例尺上的多个质量等级。通过一种形式,可以设置七个等级,其中,等级一是最佳质量(和最慢),并且等级七是最低质量(和最快)。所调整的编码器设置可以包括不同的编码器特征或设置组合。这可以包括调整运动估计搜索的完全性(例如,启动或关断子像素搜索或者将搜索限制到分区类型),使用加权预测进行运动补偿等。另外,可以放松或加强比特率控制假设参考解码器(HDR)一致性,可以调整量化参数,或者可以关断栅格量化,并且可以开启或关断某些帧类型(例如,可以使用多个参考帧的B帧),或者可以限制参考帧的数目。因此,相同的编码设置针对不同等级可以具有不同的值,和/或不同类型的编码器设置可以是帧到帧的修改形式。可以预见到很多其他替代,并且将理解的是,可以一起调整这些特征(或编码器设置类型)中的任意一者或它们的组合。下面提供更多细节。
参考图3,提供了一种示例视频编码系统或设备300(例如,图形加速器或图形处理单元(GPU)),该示例视频编码系统或设备包括具有可以用来执行本文描述的利用每帧参数控制的视频编码方法的固定功能硬件和多个编码器单元的一个示例硬件架构。这样的硬件加速器架构可以类似于例如已知的IrisTM Graphics、SandybridgeTM、IvybridgeTM、HaswellTM、BroadwellTM、和SkylakeTM。仅详细描述与本文描述的方法有关的那些组件。
可以经由环形或其他类型的总线提取图像数据用于处理,其中,该总线如所指示地提供去往和来自终极缓存(LLC)和其他临时和/或永久存储器(统称为总线/LLC/存储器302)的信道。全球单元304具有执行3G图形任务的多个图形相关模块(这里不太相关),并且可以使用形成编码器单元的切片。线程调度306是读取命令并且管理设备300上的组件之间的数据流的命令拖缆(streamer)。需要解释的是,视频前端308也存在但是这里不是特别相关。
设备300还具有编码为1至N的多个子切片310至314,其中,每个这样的子切片都可以被认为是编码器单元。子切片分别具有L1指令缓存(L1IC$)330以及多个执行单元(EU)332(例如,每个子切片具有8个或10个执行单元,每个执行单元具有其自己的处理器和多个线程)。EU可以是例如SIMD处理器。用于图形的3D纹理采样器339和纹理缓存(Te$)336、以及提供对于视频存储器像素的访问的媒体采样器338和可以保存用于直接处理数据的多个本地缓冲器的数据端口334也可以提供在子切片上。提供编码器单元的子切片也可以替代地执行不一定是编码的很多其他任务。
与普通切片(slice common)316通信的子切片一起形成完整切片。普通切片316可以至少包括执行单元,并且在这种情况下还可以包括光栅器/深度单元340、不用于这里的相关操作的像素操作单元342、L3缓存(L3$)344、以及作为附加的本地存储器的渲染和深度缓存346。
固定功能硬件部分318可以包括执行多个不同VDBOX(视频编码和/或解码)和VEBOX(视频增强)任务(这些任务不由编码器单元执行)的多格式编码解码器(MFX)单元320、使能低功率视频处理的视频质量引擎(VQE)322、以及执行像素重建(例如,缩放到某个分辨率或转换到某个颜色空间等)的缩放器和格式转换器(SFC)单元324。通过一种形式并且与这里相关,尽管编码器单元310至314执行速率控制、运动估计、帧内估计、以及预测模式选择,但是固定功能部分318,尤其是MFX单元320可以执行运动补偿、帧内预测生成、前向量化、和熵编码。
通过总线接收到的数据被提供给编码器单元310至314。根据编码器设置,可以在每个EU上调度工作。例如,加速器300可以被编程,使得图像数据和视频序列的单个帧的编码被分配给单个编码器单元。尽管本方法在单个帧(例如,分割为帧切片)的编码任务可以由多个编码器单元执行时可以工作,但是这样的系统将如本文所述地调整所有编码器单元和各个编码器单元上的设置。因此,下一步假设编码器单元分别接收不同于其他编码器单元的帧的数据。
如所提到的,单个编码会话可以包括一些可以或不可以使用编码器单元执行的预处理任务,以及核心编码任务,包括熵编码,一些核心编码任务由编码器单元执行,并且一些核心编码任务由MFX形式的共享固定功能硬件执行。压缩帧的放置随后可以由CPU执行(参见图11至图12)。因此,一个编码会话从而一个编码器单元上的帧编码可以独立于其他编码器单元上的编码被处理(除了一个编码器单元必须等待来自共享固定功能会话316的数据时或者一个编码器单元必须等待来自另一编码器单元的参考帧数据时以外)。具体地,当运动估计被执行并且编码器单元需要来自参考帧的图像数据时,一个编码器单元可能需要等待另一编码器单元处理该参考帧。这样的延迟会导致实际帧速率的降低和等待编码器单元处的延迟(使得这些参数变化)。
参考图4,示例视频编码系统400可以是或具有可以由例如硬件加速器300实现的编码器,并且其中与视频帧序列有关的数据形式的当前视频信息可以被接收用于压缩。系统400可以接收视频序列的视频帧的原始图像数据,这些原始图像数据可以首先被放置在存储器或帧缓冲器402(例如,RAM、DRAM、或其他类型的RAM)中或者也可以被缓存。系统400随后可以在预处理单元403执行预处理。这可以首先包括去马赛克、去噪等。这还可以包括预处理,该预处理包括某些颜色空间、动态范围、或分辨率格式之间的转换。那些经过预处理的帧(现在准备好用于压缩或核心编码)可以再次被放置在帧缓冲器402中或者被看作输入图片缓冲器的不同缓冲器中。帧缓冲器402可以是与以下帧缓冲器相同的存储器或者在该存储器中,该帧缓存器保存各种中间版本的帧数据(帧在被放置在比特流中之前被编码)。很多变形是可能的。系统400随后可以包括可选的图片重排序器404,该图片重排序器按照不同于记录和显示顺序的编码顺序放置帧。例如,视频序列可以按照I、B、B、P顺序用于显示,但是按照I、P、B、B编码顺序从输入缓冲器提取以用于首先对I帧编码(不使用其他参考帧),然后对P帧编码(使用I帧作为参考帧),最后对使用P帧和I帧作为参考帧的B帧编码。
存储来自原始图像数据的初始接收的帧的这些版本中的任意版本到在输入图片缓冲器中存储经过预处理的帧或从输入图片缓冲器或其他缓冲器提取可以被认为是用于测量延迟的编码开始时间。通过一种方法,可以测量从帧通过诸如放置在本地存储器中、运动搜索、宏块类型搜索、CABAC、比特流包装、和其他步骤的所有阶段进入编码器的时间开始直到该帧的经过压缩的输出比特流变得可用为止的延迟。
系统400还可以具有将帧划分为诸如用于编码标准(例如,高效视频编码(HEVC))的图像切片的块或其他分区的预测单元分区器405。另外,系统400可以具有减法单元406、残差分区器408、变换单元410、量化器412、熵编码器414、以及编码器控制器416。控制器416管理编码的很多方面,包括例如正确运动分区大小的选择或速率失真、正确编码分区大小、预测参考类型的最佳选择、模式的最佳选择、以及管理总体比特速率。编码器控制器还可以具有每帧参数质量控制单元454,该每帧参数质量控制单元根据诸如由类似于监测器102(图1)的每帧监测单元452确定的帧速率(或容量)和/或延迟值的每帧参数调整编码器设置。下面详细说明。
量化器412的输出可以被提供给编码器处提供的解码环路450,以生成与解码器处生成的相同的参考或重建块、帧、或其他单元。因此,解码环路450可以使用反向量化和反向变换单元418和420重建帧,并使用残差装配器422、加法器424和预测单元装配器426重建用在每帧中的单元。解码环路450随后提供滤波器428来提高重建图像的质量以更好地匹配对应的原始帧。这可以包括去块滤波器、采样自适应偏移(SAO)滤波器、以及质量恢复(QR)滤波器。解码环路450还可以具有解码图片缓冲器430,以保存将用作帧间预测的参考帧的那些帧。
编码器400还具有提供如下所述的运动向量的运动估计模块或单元432,以及使用运动向量形成预测块的运动补偿模块434。运动估计单元432和运动补偿模块434形成编码器的帧间预测能力。运动估计器432可以使用各种技术来形成包括块匹配的运动向量,例如蛮整数或分数块匹配、层级运动估计(HME)、空间依赖性、和零运动向量(ZMV)。帧内预测模块436提供帧内预测能力。运动补偿模块434和帧内预测模块436二者可以向预测模式单元438提供预测。
预测模式单元438选择用于特定块的最佳预测模式。它可以比较用于单个块的不同子块布置的基于帧间预测的预测、基于帧内预测的预测(其还可以包括比较多个子块布置)、和跳过。模式选择器438可以具有确定何时考虑子块布置以及考虑哪个子块布置的分区单元440、执行实际比较的模式比较单元442、以及基于比较结果做出最佳预测决策的模式选择器444。
如图4所示,选择器438的预测块形式的预测输出随后被提供给减法单元406以生成残差,并且在解码环路中被提供给加法器424以将预测与来自反向变换的残差相加来重建帧。可以在向用于HEVC或其他标准操作的加法器424和减法器406提供块之前,在预测模式单元438的输出端提供PU装配器(未示出)。
更具体地,像素数据帧形式的视频数据可以被提供给输入图片缓冲器402。缓冲器402按照输入视频序列顺序保存帧,并且这些帧被按照它们需要被编码的顺序从缓冲器提取。例如,后向参考帧在使用这些后向参考帧作为参考的帧之前被编码,但是在该帧之后被显示。输入图片缓冲器还可以向帧分配分类,例如I帧(帧内编码)、P帧(帧间编码,从在先的参考帧预测得出)、以及B帧(帧间编码帧,其可以从在先帧、后续帧、或它们二者双向预测得出)。在每种情况中,整个帧可以被相同地分类或者可以具有不同分类的切片(因此,I帧可以仅包括I切片,P帧可以包括I切片和P切片等)。在I切片中,使用空间预测,并且在一种形式中,仅使用来自该帧本身的数据。在P切片中,可以通过估计帧之间的运动进行时间(而不是空间)预测,并且时间预测还可以包括推导运动向量的空间依赖性。在B切片中,并且对于HEVC,可以使用表示每个分区单元(PU)的两个运动估计的两个运动向量来进行时间(和空间依赖MV)预测或运动估计。换言之,例如,可以从来自相对于B切片的过去、未来、或者过去和未来二者的帧上的切片来预测该B切片。另外,可以从相对于显示顺序在过去或未来出现的多个图片估计运动。在各种实施方式中,可以在对应于下面提到的大小的各种编码单元(CU)或PU等级估计运动。对于更老的标准,宏块或其他块基础可以是所使用的分区单元。
具体地,当使用HEVC标准时,预测分区器单元405可以将帧划分为预测单元。这可以包括使用编码单元(CU)或大型编码单元(LCU)。对于这种标准,可以通过编码分区器将当前帧划分为编码树块的一个或多个切片(例如,具有对应的色度采样的64x64亮度采样),用于压缩。还可以利用四叉树分裂机制将每个编码树块划分为编码单元(CU)。另外,可以进一步将四叉树上的每个叶CU分割为4个CU或划分为用于运动补偿预测的分区(或预测)单元(PU)。在根据本公开的各种实施方式中,CU可以具有各种大小,包括但不限于64x64、32x32、16x16、和8x8。而对于2Nx2N CU,对应的PU也可以具有包括但不限于2Nx2N、2NxN、Nx2N、NxN、2Nx0.5N、2Nx1.5N、0.5Nx2N、和2.5Nx2N的各种大小。但是,应该注意的是,以上仅是示例CU分区和PU分区形状和大小,本公开不限于任何特定的CU分区和PU分区形状和/或大小。
本文使用的术语“块”可以指代用于HEVC等的视频数据的CU或PU。通过一些替代,除非有相反的定义,否则这可以包括认为块是用于H.264/AVC、VP8、VP9等的视频或像素数据的宏块或宏块的划分。
另外,在视频编码系统400中,划分为LCU、CU、和/或PU单元的当前视频帧可以被提供给运动估计单元或估计器432和预测模式单元438二者。系统400可以按照光栅或不同的扫描顺序(例如,波形)处理图像的指定单元中的当前帧。当视频编码系统400在帧间预测模式下操作时,运动估计单元432可以响应于预测模式单元436的分区选择、当前视频帧、和参考视频帧而生成运动向量。
本文描述了多种不同的基于块的搜索方法,并且可以使用这些搜索方法来匹配当前帧的块与参考帧上的一个或多个候选块,从而确定针对预测块待编码的运动向量。另外,可以使用其他确定运动向量的、降低了对于相应块处的块匹配的需求的运动估计方法,这些方法包括例如空间依赖性方法、使用ZMV、或者甚至使用前一帧上的块的运动向量。运动补偿模块434随后可以使用运动估计模块432提供的运动向量和参考视频帧来生成预测块或预测帧,并将这些预测提供给预测模式单元438。
在预测模式单元438的分区单元440中,例如对于HEVC,如果CU的大小为2Nx2N,则向运动估计单元发送提供用于多个块子划分的MV的请求,使得模式比较单元442可以使用诸如2Nx2N、2NxN、Nx2N、NxN、3N/4x2N、N/4x2N、2Nx3N/4、2NxN/4等级上的多个模式或穷尽所有模式检查预测的拉格朗日代价函数。例如,可以通过使用拉格朗日乘法器将比特转换为失真,来确定每个模式的拉格朗日代价函数。可以定义模式选择的拉格朗日代价函数,其中,通过每个CU的模式确定结果比特R和失真D。基于代价函数的最小值选择等级的最佳预测模式。例如,如果选择除NxN以外的任何预测模式,则所选择的模式是用于CU的最终模式。如果基于代价函数在编码树的最高等级选择NxN,则相对于NxN模式的代价函数检查NxN/2、N/2xN、N/2xN/2、3N/4xN、N/4xN、Nx3N/4、和NxN/4模式。如果N/2xN/2模式提供最小代价函数,则进一步测试下一个较低等级。否则,例如,最终决策采用编码树的N/2xN/2等级。
随后,可以在减法器406从当前块减去来自预测模式单元438的最佳预测块,并且将结果残差(如果有的话)提供给残差编码分区器408。编码分区器408可以将残差分区为一个或多个块,并且对于一种形式的HEVC,进一步将CU划分为用于变换或进一步压缩的变换单元(TU),并且可以将结果提供给变换模块410。使用例如可变块大小离散余弦变换(VBSDCT)和/或4x4离散正弦变换(DST),将相关块或单元变换为系数。使用控制器416设置的量化参数(QP),量化器412随后对这些系数使用损失重采样或量化。熵编码器模块414可以对所生成的量化变换系数集进行重新排序和熵编码,以生成由视频编码系统400提供的压缩比特流(例如,网络抽象层(NAL)比特流)的一部分。熵编码器414可以提取经过量化的系数并且将准备好用于封包的完全编码帧和比特流保存在编码(或压缩或编码)帧缓冲器(CFB)446中。在各种实施方式中,视频编码系统400提供的比特流除了包括用于解码每个块的辅助信息(例如,预测模式、量化参数、运动向量信息、分区信息、环内滤波信息等)以外还包括经过熵编码的系数,并且可以被提供给其他系统和/或设备进行传输或存储。帧数据随后可以由比特流构建/多路复用器单元448从CFB 446提取,以对帧数据进行封包并将其与伴随视频序列(如果有的话)的音频数据一起放置在比特流中。
量化模块412的输出也可以被提供给解码环路中的去量化单元418和反向变换模块420。去量化单元418和反向变换模块420可以执行由变换单元410和量化模块412进行的操作的反向操作。残差装配器单元422随后可以从TU重建残差CU。残差装配器单元422的输出随后可以在加法器424与预测帧组合在一起,以生成粗重建块。预测单元(LCU)装配器426随后从CU重建LCU,以完成帧重建。
对重建帧进行滤波并且随后将其提供给解码图片缓冲器430,在解码图片缓冲器430,可以使用这些帧作为参考帧来构建用于本文所述的运动估计和补偿的对应预测。当视频编码系统400在帧内预测模式操作时,帧内预测模块436可以使用当前帧的重建像素进行帧内预测机制(在本文中将不详细描述帧内预测机制)。
对于每帧监测单元(或仅监测单元)452的操作,例如,监测器单元452确定帧何时由图片重排序器404按照编码顺序从输入缓冲器402获取并且被提供给预测单元分区器405以便在需要延迟持续时间时确定编码开始时间从而测量延迟。如上所述,实际上或者有利的,可以在接近初始编码处理的不同点定义编码开始时间。否则,对于容量(或帧速率)和延迟,监测器单元454通过确定压缩帧被放置在保存压缩版本的帧的编码帧缓冲器(CFB)446中并且准备好被放置在分组中且随后被放置在比特流中的时间,确定编码完成(或结束)时间。编码完成时间可以替代地被设置在接近编码处理(包括例如由比特流构建单元448处理的版本)完成或者熵编码之前的任意点(仅举一些替代示例)。
接下来,不管是由监测器单元452执行还是由每帧参数质量控制单元454执行,将表示性实际帧速率值(或间隔值)(例如,表示帧群组并且通过使用帧序列或两个连续帧之间的时间间隔确定的最小实际帧速率)形式的帧速率与目标帧速率进行比较。替代地,将各个帧的编码开始时间和编码完成时间相减来形成实际帧延迟,并且将来自帧群组的延迟中的最大实际延迟与目标延迟进行比较。根据实际值和目标值之间的差值的大小和方向,指示期望的预定质量等级(这里,分别对应于编码器处的某个质量设置的一个至七个预定质量等级)。
通过一种方法,向每帧参数质量控制单元454提供质量等级或者在每帧质量参数控制单元454生成质量等级,该每帧参数质量控制单元随后调整与该等级相关联的每个特征的编码器设置从而调整算法复杂性。更高的复杂性意味着以更低的帧速率和/或更高的延迟为代价的更好质量。如下面详细说明的,这可以包括调整量化、帧内预测、帧间预测设置、比特率一致性设置、或提高或降低图像质量的其他特征的设置,从而修改各个帧的帧速率和/或延迟以提高或降低编码器的每帧速度。将理解的是,可以认为每帧参数质量控制单元454与编码器控制器416相分离,并且可以认为每帧参数质量控制单元454是设备400的另一组件的一部分(不管是否认为是编码器或编码器单元的部分)。因此,可以为每个编码器单元提供单独的每帧参数质量控制单元454,或者可以将单独的每帧参数质量控制单元454与单个图形加速器上的多个或所有编码器单元相关联。
在一些示例中,视频编码系统400可以包括为了清楚起见在图4中没有示出的附加条目。例如,视频编码系统400可以包括处理器、网络、射频型(RF)收发器、分离器和/或多路复用器、显示器、和/或天线。另外,视频编码系统400可以包括诸如,扬声器、麦克风、存储器、路由器、网络接口逻辑等的附加条目。在本文描述的其他实施方式上示出了这些组件中的一些组件。
参考图5,系统500可以具有或者可以是解码器,并且可以接收具有各个块的预测模式、残差、运动向量、以及块分区的比特流形式的编码视频数据。系统500可以利用熵解码模块502处理比特流,以提取经过量化的残差系数以及运动向量、预测模式、分区、量化参数、滤波器信息等。系统500随后可以使用反向量化器模块504和反向变换模块506重建残差像素数据。系统500随后可以使用残差编码装配器508、将残差添加到预测块的加法器510、以及预测单元(LCU)装配器512。系统500还可以使用基于比特流的语法中指示的编码模式采用的、并且经由预测模式开关或选择器522实现的解码环路对结果数据进行解码,并且第一路径包括帧内预测模块520或第二路径是包括一个或多个滤波器514的帧间预测解码路径。第二路径可以具有解码图片缓冲器516,该解码图片缓冲器存储用作参考帧的经过重建和滤波的帧并且发送重建帧用于显示或存储以用于稍后查看或另一应用或设备。
运动补偿预测器518利用来自解码图片缓冲器516的重建帧和来自比特流的运动向量来重建预测块。因此,解码器不需要其自己的运动估计单元,因为运动向量已经被提供(尽管解码器仍然具有一个运动估计单元)。预测模式选择器522设置用于每个块的正确模式,并且PU装配器(未示出)可以在块被提供给加法器510之前被提供在选择器522的输出处。本文中针对系统400和500描述的模块的功能(除了与例如监测器单元452和每帧参数质量控制单元454有关的以及在下面详细描述的单元以外)将在本领域中被很好地认出并且将不在本文中详细描述。
现在参考图6A至6B,根据本公开的至少一些实施方式布置示例处理600。一般,处理600可以提供一种计算机实现的利用每帧参数控制的硬件加速的视频编码方法,并且在处理600的情况中,参数是多编码器单元系统的帧速率或容量。在所示出的实施方式中,处理600可以包括通常均匀编号的操作602至630中的一个或多个操作示出的一个或多个操作、功能、或动作。通过非限制性示例,这里可以参考针对图1、图3至图5、和图11讨论的操作描述处理600,并且可以针对下面讨论的示例系统100、300、400、500或1100讨论处理600。
处理600可以包括“接收视频序列的帧的图像数据”602,并且具体地,系统或设备可以具有相机以记录第一位置的视频或从存储器(易失性或非易失性存储器)提取视频。可以对原始数据形式的视频进行预处理(包括去马赛克、去噪等),直到图像数据被放置在输入缓冲器中并准备好和可访问用于压缩操作为止。
处理600可以包括“向多个编码器单元1至N提供视频序列的帧”604。具体地,如上所述的加速器或图形处理单元可以并行执行不同帧上的多个编码操作。通过一种形式,当每个硬件单元变得可用于新帧时,可以将来自多个视频序列的帧递送到专门用于编码的多个硬件单元。因为编码器单元具有容量,所以每次可以向编码器单元分配一个帧。如所提到的,多个编码器单元执行诸如比特率控制、用于帧间预测的运动估计、帧内预测任务、以及预测模式决策任务之类的某些任务,同时使用单独的共享固定功能硬件来执行编码器的解码器环路上的运动补偿、帧间预测、前向量化、像素重建,并且在一些可能的示例中执行熵编码。当将执行分配给编码器单元的任务时,向编码器单元提供帧数据或者使得编码器单元可以访问帧数据。
处理600可以包括“监测帧群组的帧输出时间”606,或者换言之,监测例如形成定义群组的各个帧的编码完成时间。帧群组仅是使用相同参数集编码的代表性帧集合,其输出帧速率可以与目标值进行比较。通过一种形式,本文中使用的术语帧群组中的帧可以是或可以不是按编码顺序的连续帧,因为可以基于编码器单元的容量将这些帧分配给相同或不同的编码器单元。因此,系统可以定义两种不同类型的帧群组。帧群组可以是来自相同编码器单元的所有帧,其中,在这些帧退出编码器并且被放置在比特流中时,这些帧不一定是按编码顺序的连续帧(可以存在来自被跳过的其他编码器单元并且不认为是群组的一部分的插入帧)。在这种情况下,来自不同编码器的帧群组可以在这些帧退出编码器时重叠。通过一种选项,替代地,帧群组可以是按编码顺序的连续帧但是来自不同的编码器单元。在每种情况下,群组的大小可以是预定的,使得可以从每个某数目的帧(例如,随机数目50帧)中选择群组的帧。作为又一替代,不形成群组,并且以某个间隔或随机采样测试每个帧。
处理600可以包括“确定实际编码器帧速率”608。可以存在确定正在编码的一个或多个帧的帧速率的很多不同的可接受方式。通过一种方法,将单个帧的帧速率确定为当前帧与下一帧(或前一帧)之间的时间间隔。不需要用间隔除一秒来计算每秒的实际帧,因为每个间隔对应于速率(例如,33ms间隔对应于大约30FPS),尽管可以通过任意方式计算FPS。通过一种形式,一旦确定了以上定义的帧群组的每个或多个帧速率(或间隔),使用来自该帧群组中的帧的帧速率中的最小帧速率(其可以由最大间隔表示)作为实际帧速率与期望的目标帧速率进行比较。替代地,可以通过确定整个帧群组的平均或其他组合帧速率(或间隔)计算帧速率(或间隔),并且可以使用该平均帧速率与目标平均FPS(或间隔)比较。另一种可能的方式是使用每帧之前和/或之后的某个数目的帧从而建立旋转或重叠帧群组来确定每帧的平均、组合、或最小帧速率(或间隔)。例如,当前帧的FPS是当前帧之前和之后的五个(或一些其他数目)帧的最小或平均FPS。针对每帧重复该处理。很多其他示例也是可能的。结果是用于与目标帧速率比较的实际帧速率。
处理600可以包括“确定实际帧速率和目标帧速率之间的差值”610。通过一种形式,可以基于期望显示设备的可接受速度选择目标FPS,例如,对于具有低延迟和最小缓冲的直播显示器选择30FPS。替代地,目标帧速率可以基于内容的类型(例如,电影视频、现场电话会议、计算机或智能电话屏幕上的虚拟桌面界面(VDI)的递送、例如用于游戏的动画或图形等)而不同。目标速率应该是可任意配置的,因为递送帧速率容量可以是一种产品分化方法。预先记录的内容在其元数据中记录播放帧速率,并且通常基于网络条件在发送方和接收方之间协商用于视频会议、VDI、游戏等的实时流传输帧速率。一旦获取到了实际帧速率值和目标帧速率值(不管是实际FPS值还是由间隔值表示),可以对它们相减以获取差值。
处理600可以包括查询“实际编码器帧速率在目标帧速率的范围内?”612。当差值在可接受范围(例如,1ms)中时,保持帧速率并且不进行调整。在这种情况中,处理600随后可以包括查询“最后帧群组?”614,以确定另一帧群组是否在正在分析的视频序列中。如果当前帧群组是视频序列的最后帧群组,则处理结束。如果不是,则处理600随后可以包括“获取下个帧群组”616,其中,处理循环回到操作606,并且系统开始监测获取用于编码的下个帧群组。
另外,当实际帧速率和目标帧速率或帧速率的表示之间的差值不在目标帧速率的可接受范围中时,处理600可以包括查询“实际编码器帧速率大于目标帧速率?”618。当实际帧速率大于目标帧速率时,系统操作太快,并且有足够的容量将帧速率放慢到仍然可接受的速率同时提高图像质量。反之亦然。当实际帧速率低于目标帧速率时,系统操作太慢,存在解码器处存在延迟的风险。在这种情况下,应该增大帧速率,并且应该在可接受限制中降低图像质量。
该关系在图表700(图7)中示出,并且示出了帧速率随时间的变化,其中,帧速率各自为正在编码的帧群组的最小帧速率,并且这里的目标帧速率为30FPS。如图表上示出的,当帧速率下降到目标帧速率以下时,应该通过降低编码器质量设置提高帧速率,将实际帧速率移到目标帧速率,并且当帧速率在目标帧速率以上时,应该提高帧质量,将帧速率降低到目标帧速率。
因此,当实际帧速率在目标帧速率以上时,处理600可以包括“改变至少一个编码器设置以提高图像质量”620。替代地,当实际帧速率在目标帧速率以下时,处理600可以包括“改变至少一个编码器设置以降低图像质量”626。可以通过各种方式实现这些调整。通过一种形式,可以单独调整每个编码器单元。这包括跟踪每个编码器的帧速率和/或质量/性能折中设置。
替代地,如果任意一个编码器单元具有在目标帧速率以上或以下的帧速率(例如,在以上提到的范围以外),则该群组中的所有编码器的质量/性能折中设置使用相同的设置。如果实际帧速率大于目标帧速率,则提高所有编码器单元的图像质量,反之亦然。替代地,当对于某个数目的帧或在某个时间量上帧速率一直太高或太低时,调整所有或多个编码器单元。这些替代可以或可以不被限制到向正在分析的帧群组提供帧的那些编码器单元。
通过一种形式,可以设置系统,以调整单个编码器特征设置。这可以是帧间预测、帧内预测、量化相关设置、或本文提到的或者可以调整用于编码的任何其他编码器特征设置。
通过另一替代形式,将多个编码器设置组合在一起,以形成连续的质量性能折中选项。一端是指示最高算法复杂性、表示每秒的最低输出帧但是最高质量的设置集合。另一端是相反的情况:表示最小复杂性但是最低质量的选项群组。通过一种示例形式,存在七个等级,其中,等级一是最佳图像质量(和最低帧速率),并且等级七提供最低图像质量(和最快帧速率)。因此,例如,处理600可以包括“将差值与质量等级比例比较”622,其中,比例可以在从低到高的FPS范围内。由于实际输出FPS不是恒定的并且随着内容变化,所以需要管理本文描述的反馈机制以利用受约束的输出帧速率最大化质量。
处理600随后可以包括“基于比例值设置可用质量等级范围中的质量等级”624。因此,当输出帧速率不同于目标FPS(超过指定公差)时,触发对于质量/性能折中设置的调整。除了可以根据实际值大于还是小于目标值将编码器设置设置在不同等级(以提高质量或降低质量)以外,不管实际值大于还是小于目标值,应用这些相同的操作。
一旦设置了质量等级,处理600可以包括“调整编码器设置”628。如所提到的,这可以包括调整单个编码器设置或者可选地可以包括“将编码器设置调整到所设置的质量等级的预定设置”630。将调整的编码器设置可以包括以下设置,并且可以是或不是下面描述的各个编码器单元处的调整。
编码器设置的数目可以与帧间预测期间的运动估计有关,并且直接应用于编码器单元(或者更精确地,应用于操作编码器单元的指令)。这可以包括调整参考帧上的搜索的完全性,用于匹配块以形成相对于正在压缩的当前帧上的当前块的运动向量。一些替代包括纯粹通过相对于零运动向量位置(参考帧上与正在匹配的当前块的位置相同的位置)的像素距离减小或增大帧上的搜索面积。替代地,编码器设置可以包括限制将使用的搜索模式的面积或大小,限制将在层级搜索中使用的模式(例如,准许或限制子像素(分像素)搜索,以及通过分区类型准许搜索)。分区限制可以包括仅搜索某个大小的块(例如,16x16宏块或8x8块)而不搜索小于该大小的块。存在很多变形。在需要时,准许更完全的搜索的任意设置将使用更多时间,从而减慢帧速率。
与运动估计有关的另一编码器设置可以包括改变运动估计器将使用的图片群组,从而改变可以用作参考帧的帧。因此,通过一个示例,将调整的编码器设置可以为是否将使用具有两个以上参考帧的帧或B帧来重新构建当前帧(或者当运动估计基于帧部分时,则重新构建具有一个以上参考帧的帧的切片或块)。通过一种形式,编码器单元可以被限制为仅使用I帧(不具有时间参考)或P帧(分别具有单个参考帧)。这种限制将增大帧速率,同时有可能降低匹配精确度从而降低图像质量。
可以调整其他编码器设置,例如,运动搜索算法的范围和形状、模式搜索的限制、有限模式估计、使用自适应量化等。但是,一般,组织为预设质量/性能折中等级的这些选项群组应该由编码器提供,使得它们不需要直接由仅用于本文所述的延迟和容量控制的专门管理器管理。
通过一种示例形式,示例质量等级1可以包括用于提高质量的所有可能设置类型(包括子像素的完全运动搜索、完全模式搜索等),同时最低质量等级将运动和模式搜索限制到最小而不存在对于延迟或容量的其他控制,或者可以具有被控制的其他单一设置类型。
现在参考图8A至8B,提供了利用每帧参数控制的硬件加速的示例视频编码方法800,并且其中参数是延迟。在所示出的实施方式中,处理800可以包括通常均匀编号的动作802至832中的一个或多个动作示出的一个或多个操作、功能、或动作,并且被替代或组合使用。通过非限制性示例,可以参考针对本文描述的任意实施方式讨论的操作描述处理800。
包括接收视频序列的帧的图像数据(802)、向多个编码器单元提供帧(804)、以及监测帧输出时间(808)在内的处理800的初始操作与处理600的那些操作相同或类似,因此不需要重复这些操作的描述。
处理800具有“监测帧群组的帧输入时间”806的附加初始操作。在这种情况下,可以如上所述地针对帧群组的每个或各个帧确定编码开始时间。可以从对帧进行充分预处理以准备好在输入缓冲器处用于主要或核心编码的时间测量编码开始时间。换言之,帧处于准备好不按照显示顺序而按照编码顺序被提供给将帧划分为切片和/或预测块的划分单元或类似单元的状态。可以认为所执行的将帧置于符合编码处理的状态的其他格式变换(例如,颜色空间、分辨率大小、或动态范围变换)发生于在编码开始时间提取帧之前或之后。其他变形也是可能的,其中可以在其他某些预处理操作(例如,去马赛克、其他亮度或色度值转换、色温转换、装饰图案消除、临时去噪、图像锐化、色彩子采样标准转换等)之前或之后定义编码开始时间。
因此,编码开始时间对应于帧指针被传递到编码器时。这不一定是加速器的编码器单元接收到帧数据时,而是帧应该被认为“锁定”时(因为编码处理可以在该点之后的任意时间开始)。对于编码完成时间是相同的,编码完成时间是在帧缓冲器和输出比特流可以被认为是“未锁定”并且毫无疑义地完成而不是在并行编码器单元本身退出时。
处理800可以包括“确定实际编码器单元每帧延迟”810。如本文提到的,延迟值是使用特定编码器单元的编码会话的编码开始时间和编码完成时间之间的差值(或者特定帧开始编码处理时和该特定帧可用在输出比特流中时之间的差值)。另外如上面提到的,每个编码会话包括使用编码器单元之一用于与比特率控制、运动估计、帧内估计、以及预测模式选择有关的多个编码操作中的至少一个编码操作,但是也可以是其他编码器操作。在这些情况中的任一种情况中,存储编码时间和延迟的双端队列。向一端添加新值,并且从另一端弹出值(当这些值太老,与监测目标FPS或延迟以上或以下的趋势的算法不相关时)。
如果设置了延迟目标,则通过获取来自相同编码器单元的具有帧速率的以上定义的帧群组的延迟、以及帧群组是否包括连续帧和/或来自相同的单个编码器单元的帧来确定实际延迟。但是,这里的差异在于例如,利用具有最大延迟趋势的编码来确定是否调整质量/性能折中设置(而不利用具有最小帧速率的编码器)。可以提供毫秒持续值的延迟。
一旦确定了实际延迟,处理800可以包括询问“实际延迟在目标延迟范围内?”812。类似于帧速率处理,如果实际延迟在目标延迟的可接受范围内(例如,±1ms),则处理循环到确定当前帧群组是否是正在分析的视频序列的“最后帧群组”814。如果是,则处理结束,帧编码完成并且发送尚未在比特流中发送的编码帧。如果不是,则处理继续“获取下个帧群组”816,并且循环返回到806以开始监测下个帧群组。
另外,当实际延迟不在目标延迟的可接受范围中时,处理800可以继续另一查询“实际延迟大于目标延迟?”818。当实际延迟大于目标延迟时,系统或编码器花费的时间太长,并且应该降低图像质量。类似地,当实际延迟小于目标延迟时,处理800还可以包括“改变至少一个编码器设置以提高图像质量”820,或者当实际延迟大于目标延迟时,处理800还可以包括“改变至少一个编码器设置以降低图像质量”826。将理解的是,改变的编码器设置可以是或不是各个编码器单元处的设置。
参考图9,图表900示出当图形加速器和编码器单元由于多个并行编码器会话变得更忙时,每个帧的延迟增大到约20-40ms,并且当加速器不忙时(例如,只需要单个编码器单元时),延迟下降到约0至10ms。输出FPS可以作为时间窗中的平均值被管理,同时延迟可以作为该窗口中超过延迟阈值的帧的可配置计数被管理。如果超过阈值的延迟的计数大于可配置截止点,则下调编码质量。相反,如果不存在接近超过阈值的延迟,则可以将质量/性能折中设置更多地向质量提高设置。
一旦确定实际延迟和目标延迟之间的差值(包括哪个大和大多少),系统可以基于预设数字质量/性能折中设置(例如,以上所述的一至七比例)进行调整。
因此,随着帧速率改变,针对延迟的处理800可以包括“调整编码器设置”828。该操作可以包括“将编码器设置调整到所设置的质量等级的预定设置”830,如已经针对帧速率描述的。相应地,对于所有或多个编码器单元和/或各个编码器单元的编码器设置调整的相同应用同等地应用于延迟(如同帧速率一样)。
可以提供对于延迟的附加调整,其中处理800可以包括“根据差值调整编码器单元之间的异步性”832。这是指调整在编码期间保存帧数据的缓冲器的容量。当在编码操作期间认为帧数据被保存在输入缓冲器中时,这可以被认为是输入缓冲器的一部分,或者可以使用可以与输入缓冲器位于相同或不同存储器中的另一缓冲器在编码操作期间保存帧数据。可以认为其可以与编码器的解码环路上的解码帧缓冲器(或参考帧缓冲器)和保存准备好放置在比特流中的压缩帧数据的编码帧缓冲器相分离或不认为它们相分离。
对于指定目标延迟的场景,编码器的异步可以被认为是另一可变因素。这是可以同时处理的编码的数目。如果每次仅允许一帧通过流水线,则延迟被最小化,但是并行处理的机会也被最小化。当允许更多帧被异步处理时,FPS会增大,但是延迟也将增大。也可以利用这种机制来管理这种性能和/或延迟折中。如果延迟在容忍范围内,则增大异步。如果延迟超过容忍范围,则减小可以同时处理的帧的数目。
通过一种形式,替代针对指定帧速率的处理,使用针对延迟的处理800。因为仅需要监测后续编码之间的时间而不需要监测各个帧何时进入和离开编码器的额外复杂性,所以帧速率处理被认为是更简单的处理。通过其他替代,可以一起使用两个处理。当使用两个处理时,当两个处理选择相同的性能/质量折中等级时,可以仅选择并改变该性能和/或质量折中等级。否则,在这两者中的最低或最高质量等级实际被用于每个调整的情况下,可以使用变化。另外,当延迟和帧速率指示不同的预定质量等级或不同的质量调整时(在没有使用预定等级时),可以向各个编码器设置应用一些平均设置值。
现在参考图10,在利用每帧参数控制的硬件加速的示例视频编码方法1000的操作中示出了系统1100。在所示出的实施方式中,处理1000可以包括由通常均匀编码且替代或组合使用的一个或多个动作1002至1026所示的一个或多个操作、功能、或动作。通过非限制性示例,可以参考针对本文描述的任意实施方式讨论的操作描述处理1000。
在所示出的实施方式中,系统1100可以包括具有专门的编码硬件或模块1150和/或它们的组合的处理单元1120。例如,逻辑电路或模块1150可以包括具有多个组件(在此最相关的是编码器控件1140)的视频编码器1130,编码器控件1140可以具有每帧参数质量控制单元454和监测器单元452,监测器单元监测来自硬件加速器或GPU的多个编码器单元的帧的帧速率和/或延迟。每帧参数质量控制单元454根据监测器单元452发现的帧速率和/或延迟调整编码器设置。尽管图10所示的系统1100可以包括与特定模块相关联的一个特定集合的操作或动作中的操作,但是这些操作或动作可以与本文示出的特定模块不同的模块相关联。
处理1000可以可选地包括“确定被提供给多个编码器单元中的至少一个编码器单元的至少一个视频序列的帧群组的编码开始时间”1002,其中,当监测各个帧的延迟时,该系统可以确定编码开始时间。这可以包括定义帧群组,从而计算表示以上所述的帧群组的表示性实际延迟。如上面提到的,这可以包括记录按照核心编码操作的编码顺序从输入缓冲器或其他存储器提取帧的时间,其中,核心编码操作可以开始于对帧进行分区并且还可以包括格式转换(例如,颜色空间、动态范围等)。上面提供了具体细节。
处理1000可以包括“确定由多个编码器单元处理的至少一个视频序列处的帧群组的编码完成时间”1004,并且这可以包括确定帧何时通过例如熵编码被完全编码,以及帧数据何时准备好被封包和/或放置在比特流中。对于帧速率(容量)确定和延迟可以执行该处理。
处理1000可以包括“确定帧群组的实际最小帧速率”1006。当将使用帧速率来调整编码器性能/质量折中设置时应用该处理。通过一种形式,通过如上所述地确定当前帧的编码完成时间与下一帧的编码完成时间之间的时间间隔来确定帧速率。当用时间间隔除一秒时,得出FPS值。但是,如上面提到的,可以用间隔本身而不用分割步长来表示帧速率。以上说明了用于计算各个帧的帧速率的选项和其他选项。一旦确定了各个帧的帧速率,就可以使用所定义的帧群组的帧速率中的最小帧速率作为表示帧群组的实际帧速率以用于与目标帧速率进行比较。另外,可以使用诸如帧速率的平均值或其他组合之类的其他替代与目标帧速率进行比较。
处理1000可以包括“确定帧群组的实际最大延迟”1008。替代地或者另外,当使用延迟调整编码器设置时,使用相同帧的编码开始时间和编码完成时间之间的差值作为该相应帧的延迟。所定义的帧群组的最大延迟可以是与该帧群组的目标延迟比较的实际延迟。
处理1000可以包括“比较实际值与目标值,以确定差值”1010,如上所述,随后将帧群组的实际帧速率或实际延迟与目标值比较。如上所述地确定目标值,并且当实际值足够接近目标值(例如,在一定的+/-范围内)时,不进行调整。否则,将如下所述地调整编码器设置。
处理1000可以包括“如果差值大于允许数量,则比较实际值与质量等级比例”1012。这里的差值是指实际值与目标值之间的差值以及其是否落入可接受范围中。通过一种方法,如果没有落入可接受范围,则将差值与定义多个预定质量等级(这里,以上提到的七个质量等级)的差值的比例相比。每个质量等级可以对应于某个差值范围,当差值落入一个质量等级的差值范围时,向系统指示该质量等级以将编码器设置修改为与该质量等级相关联的编码器设置类型的设置值。如上所述,每个质量等级可以具有不同的编码器设置类型(或不同特征)和/或可以针对不同等级的相同编码器设置类型具有不同的设置值。以上说明了很多示例。
处理1000可以继续到“提供质量等级指示符”1014,其中,监测器单元提供所指示的预定性能/质量折中等级,并且处理1000可以包括“获取待修改的一个或多个编码器单元的标识”1016。这里,当处理包括根据可以不同于相同加速器上的其他编码器单元的设置的各个编码器单元的预设性能/质量等级调整编码器设置时,该系统获取GPU或加速器的将调整的编码器单元的标识。帧编码之间的时间和帧延迟可以保存在如上所述的双端队列中。
处理1000可以包括“获取与所指示的质量等级相关联的编码器设置”1018。因此,系统可以确定或获取与所指示的质量等级相关联的每个编码器设置类型的每个设置。如上面提到的,不管是帧间预测、帧内预测、量化、比特率一致、或其他编码器设置,都可以应用。
处理1000随后可以包括“执行编码器设置调整,以将一个或多个每帧参数朝向目标值修改”1020,并且随后调整如上所述的是否应用自预定质量等级、以及是应用到各个编码器单元还是应用到所有编码器单元的编码器设置。
处理1000随后可以包括“如果正在针对延迟调整编码器,则应用多编码器异步”1022。因此,系统可以在编码操作期间改变保存帧数据的输入或其他缓冲器或存储器的帧容量(其中,存储例如帧在不同阶段的不同版本)。通过一种方法,当延迟太小时,增大缓冲器的帧容量(以保存更多帧)以允许系统通过分析更多帧从而降低帧速率而不是增大图像质量而变得更加彻底。当延迟太大时,系统可以减小缓冲器帧容量,使得其丢弃更多帧从而降低图像质量但增大帧速率。以上说明了具体细节。
处理1000随后可以包括“获取下一帧群组(如果有的话)”1024,并且在存在待编码的更多帧群组时处理循环回到操作1002。否则,处理1000随后可以包括“如果没有更多帧,则结束”1026,其中,处理可以结束并且编码在到达视频末尾时即完成。
尽管示例处理200、600、800、和/或1000的实施方式可以包括执行如图所示顺序示出的所有操作,但是本公开在这方面不做限制。在各种示例中,本文的任意处理的实施方式可以包括仅执行所示出的操作的子集和/或以所示出的顺序不同的顺序执行。
在实施方式中,本文描述的特征可以响应于一个或多个计算机程序产品提供的指令实现。这些程序产品可以包括提供指令的信号承载介质,这些指令在被例如处理器执行时可以提供本文描述的功能。可以通过一个或多个机器可读介质的任意形式提供计算机程序产品。因此,例如,包括一个或多个处理器核的处理器可以响应于由一个或多个机器可读介质传送给处理器的程序代码和/或指令或指令集实现本文描述的一个或多个特征。一般,机器可读介质可以通过程序代码和/或指令或指令集的形式传送软件,这些程序代码和/或指令或指令集可以使本文描述的任意设备和/或系统实现本文描述的至少一部分特征。如前所述,在另一形式中,诸如非暂态计算机可读介质的非暂态物品可以用于以上提到的任意示例或其他示例(除了它不包括暂态信号本身以外)。其可以包括信号本身以外的、可以以“临时”方式暂时保存数据的那些元件,例如RAM等。
本文描述的任意实施方式中使用的术语“模块”指代被配置为提供本文描述的功能的软件逻辑、固件逻辑、和/或硬件逻辑的任意组合。软件可以具体化为软件包、代码、和/或指令集或指令,并且本文描述的任意实施方式中使用的“硬件”可以包括例如硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件中的任意一者或它们的任意组合。模块可以一起或分别具体化为形成较大系统的部分的电路,该较大系统为例如集成电路(IC)、片上系统(SoC)等。例如,模块可以具体化在用于经由编码系统的软件、硬件、或固件实现的逻辑电路中(除非如本文讨论地限制到某个形式)。
本文描述的任意实施方式中使用的术语“逻辑单元”指代被配置为提供本文描述的功能的硬件逻辑和/或固件逻辑的任意组合。本文描述的任意实施方式中使用的“硬件”可以包括例如硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件中的任一者或它们的任意组合。逻辑单元可以一起或分别被实现为形成较大系统的部分的电路,该较大系统是例如集成电路(IC)、片上系统(SoC)等。例如,逻辑单元可以具体化在用于实现本文讨论的编码系统的硬件或固件的逻辑电路中。除非如上所述地限制为以上讨论的图形加速器的某个部分或编码器单元的部分,否则本领域普通技术人员将明白的是,由硬件和/或固件执行的操作可以替代地经由软件实现,该软件可以具体化为软件包、代码、和/或指令集或指令,并且还将明白的是,逻辑单元还可以利用软件的一部分来实现其功能。
本文描述的任意实施方式中使用的术语“组件”可以指代模块或逻辑单元(当这些术语在上面描述时)。因此,术语“组件”可以指代被配置为提供本文描述的功能的软件逻辑、固件逻辑、和/或硬件逻辑的任意组合。例如,本领域普通技术人员将明白的是,由硬件和/或固件执行的操作可以替代地经由软件模块实现,该软件模块可以具体化为软件包、代码、和/或指令集,并且还将理解的是,逻辑单元也可以利用软件的一部分来实现其功能。
参考图11,可以根据本公开的至少一些实施方式布置用于利用每帧参数控制提供硬件加速的视频编码的示例图像处理系统(或视频编码系统)1100。在所示出的实施方式中,系统1100可以包括一个或多个中央处理单元或处理器1103,该一个或多个中央处理单元或处理器包括固定功能硬件和编码器单元1至N(例如,1104至1110)。另外,一个或多个处理单元1120可以提供类似于编码器400的编码器1130和类似于解码器500的解码器1144,并且如本文讨论的,可以提供捕捉图像的一个或多个成像设备1101、接收或发送图像数据的天线1112、显示设备1105、以及一个或多个存储器存储设备1106。一个或多个处理器1103、存储器存储设备1104、和/或显示设备1105可以经由例如总线、电线、或其他入口相互通信。在各种实施方式中,显示设备1105可以集成在系统1100中或者独立于系统1100实现。
如图11所示,如上所述,处理单元1120可以具有逻辑电路1150,逻辑电路1150可以具有编码器1130并且可以可选地具有解码器1144。编码器1130可以具有量化单元1132、帧间预测单元1134、帧内预测单元1136、预测模式单元1152、和编码器控件1140,该编码器控件1140具有每帧参数质量控制单元454和比特率控制单元1142。将理解的是,可以认为每帧参数质量控制单元454与编码器1130相分离。逻辑电路1150还可以包括监测器单元452。逻辑电路的这些单元提供了本文描述的并且利用本文描述的处理说明的很多功能。
将明白的是,除非上述多个编码器单元的讨论做出了限制,否则图11所示的模块可以包括各种软件和/或硬件模块和/或可以经由软件或硬件或它们的组合实现的模块。例如,模块可以经由处理单元1120实现为软件,或者模块可以经由专用硬件部分(例如,图形处理单元或加速器300所述的专用硬件部分)实现。另外,系统1100可以通过各种方式实现。例如,系统1100(不包括显示设备1105)可以实现为具有加速器或图形处理器单元(GPU)的单个芯片或设备,该加速器或图形处理器单元例如是可以或可以不具有或伴随有图像信号处理器(ISP)、四核中央处理单元、和/或存储器控制器输入/输出(I/O)模块的加速器300。在其他示例中,系统1100(再次排除显示设备1105)可以实现为芯片集或片上系统(SoC)。除了在以上所述的加速器或图形处理单元上提供多个编码器单元以外,结构不做特别限制。还将理解的是,可以使用天线1102来接收图像数据用于编码。
另外,除了具有多个编码器单元的加速器以外,一个或多个处理器1103还可以包括任何适当的实施方式,这些实施方式包括例如一个或多个微处理器、多核处理器、专用集成电路、一个或多个芯片、芯片集、可编程逻辑器件、图形卡、集成图形、一个或多个通用图形处理单元、固定功能GPU、其他加速器等。如上面提到的,实施方式不受限制,只要多个编码器单元被提供在单个晶片或片上系统型布置上即可。
另外,存储器存储设备1104可以为任意类型的存储器,例如,易失性存储器(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如,闪存等)、内部缓存等。在非限制性示例中,存储器存储设备1004还可以经由高速缓存实现。
在各种实施方式中,示例视频编码系统1100可以使用成像设备1101形成或接收捕捉图像数据。这可以通过各种方式实现。因此,在一种形式中,图像处理系统1100可以为一个或多个数字相机或其他图像捕捉设备,并且在这种情况下,成像设备1101可以为相机硬件和相机传感器软件、模块、或组件1150。在其他示例中,视频编码系统1100可以具有成像设备1101,该成像设备包括或者可以是一个或多个相机,逻辑模块1150可以与成像设备1101远程通信或者可以通信地耦合到成像设备1101,用于进一步处理图像数据。
因此,视频编码系统1100可以为智能电话、平板、膝上型计算机、或诸如可穿戴设备(包括智能眼镜、智能耳麦或耳机、运动带等)的其他移动设备,或者可以是这些设备的一部分,或者可以与这些设备通信。在这些情况中的任意一种情况下,这种技术可以包括相机,诸如数字相机系统、专用相机设备、成像电话或平板、静止图片或视频相机、提供预览屏幕的相机、或者它们的一些组合。因此,在一种形式中,成像设备1101可以包括相机硬件和光学器件,该相机硬件和光学器件包括一个或多个传感器以及自动聚焦、放大、孔径、ND-滤波器、自动-曝光、闪光灯、以及制动控件。成像设备1101还可以具有透镜、具有RGB Bayer颜色滤波器的图像传感器、模拟放大器、A/D转换器、将入射光转换为数字信号的其他组件等、和/或它们的组合。数字信号在本文中也可以被称为原始图像数据。
其他形式包括传感器型成像设备等(例如,网络摄像机或网络摄像机传感器或其他互补金属氧化物半导体型图像传感器(CMOS)),而不使用红-绿-蓝(RGB)深度相机和/或麦克风阵列来定位谁在说话。在其他示例中,除了使用相机传感器以外还可以使用RGB-深度相机和/或麦克风阵列,或者可以使用RGB-深度相机和/或麦克风阵列来代替相机传感器。在一些示例中,可以向成像设备1101提供眼镜跟踪相机。另外,成像设备1101可以为记录、显示、或处理数字图像的任何其他设备,例如,视频游戏面板或控制台、机顶盒等。
如图所示,这些组件中的任意组件可以相互通信和/或与逻辑模块1150和/或成像设备1101的部分通信。因此,处理器1103可以通信地耦合到图像设备1101和逻辑模块1150,用于操作这些组件。尽管图11所示的图像处理系统1100可以包括与特定组件或模块相关联的一个特定集合的块或动作,但是这些块或动作可以与不同于这里示出的特定组件或模块的组件或模块相关联。
参考图12,根据本公开和各种实施方式的示例系统1200可以体现例如系统1100,并且可以是媒体系统(尽管系统1200不限于该上下文)。例如,系统1200可以结合到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板、或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等中。
在各种实施方式中,系统1200包括通信地耦合到显示器1220的平台1202。平台1202可以从例如一个或多个内容服务设备1230、一个或多个内容递送设备1240、或其他类似内容源的内容设备接收内容。包括一个或多个导航特征的导航控制器1250可以用来与例如平台1202和/或显示器1220交互。下面更详细地描述这些组件中的每个组件。
在各种实施方式中,平台1202可以包括芯片集1205、处理器1210、存储器1212、存储设备1214、图形子系统1215、应用1216、和/或无线电设备1218以及一个或多个天线1211的任意组合。芯片集1205可以提供处理器1210、存储器1212、存储设备1214、图形子系统1215、应用1216、和/或无线电设备1218之间的相互通信。例如,芯片集1205可以包括能够提供与存储设备1214的相互通信的存储适配器(未示出)。
处理器1210可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器;x86指令集兼容处理器、多核处理器、或者具有或使用以上描述的图形处理单元(GPU)或加速器实现以上描述的方法的操作的任何其他微处理器或中央处理单元(CPU)。在各种实施方式中,处理器1210可以为一个或多个双核处理器、一个或多个双核移动处理器等。
存储器1212可以实现为非易失性存储设备,例如但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或静态RAM(SRAM)。
存储设备1214可以实现为非易失性存储设备,例如但不限于,磁盘驱动、光盘驱动、磁带驱动、内部存储设备、附接存储设备、闪存、电池备份SDRAM(同步DRAM)、和/或网络可访问存储设备。在各种实施方式中,存储设备1214可以包括例如,在包括多个硬驱动时增加对于有价值的数字媒体的存储性能增强保护的技术。
图形子系统1215可以执行用于显示的诸如静止图像或视频的图像的处理。图形子系统1215可以为例如图形处理单元(GPU)或视觉处理单元(VPU)。可以使用模拟或数字接口通信地耦合图形子系统1215和显示器1220。例如,接口可以是高分辨率多媒体接口、显示端口、无线HDMI、和/或无线HD兼容技术中的任一者。图形子系统1215可以集成到处理器1210或芯片集1205中。在一些实施方式中,图形子系统1215可以是通信地耦合到芯片集1205的独立卡。图形子系统至少包括以上针对图形硬件和其他特征描述的限制。
本文描述的图形和/或视频处理技术可以实现在包括诸如视频运动估计(VME)引擎或类似并行处理电路的固定功能硬件的各种硬件架构中。例如,图形和/或视频功能可以集成在芯片集中。替代地,可以使用离散的图形和/或视频处理器。作为另一实施方式,图形和/或视频功能可以由通用处理器(包括多核处理器)提供。在其他实施方式中,这些功能可以实现在消费者电子设备中。
无线电设备1218可以包括能够使用各种适当的无线通信技术发送和接收信号的一个或多个无线电设备。这些技术可以包括横跨一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个人域网(WPAN)、无线城域网(WMAN)、蜂窝网络、以及卫星网络。在横跨这些网络进行通信时,无线电设备1218可以根据任意版本的一个或多个可用标准进行操作。
在各种实施方式中,显示器1220可以包括任意电视型监测器或显示器。显示器1220可以包括例如计算机显示屏、触摸屏显示器、视频监测器、电视型设备、和/或电视。显示器1220可以是数字和/或模拟的。在各种实施方式中,显示器1220可以是全息显示器。另外,显示器1220可以是可以接收视觉投影的透明表面。这些投影可以传递各种形式的信息、图像、和/或对象。例如,这些投影可以是移动增强显示(MAR)应用的视觉覆盖。在一个或多个软件应用1216的控制下,平台1202可以在显示器1220上显示用户界面1222。
在各种实施方式中,一个或多个内容服务设备1230可以由任何国家、国际、和/或独立服务托管,因此对于平台1202来说可以经由例如互联网访问。一个或多个内容服务设备1230可以耦合到平台1202和/或显示器1220。平台1202和/或一个或多个内容服务设备1230可以耦合到网络1260,以传送(例如,发送和/或接收)去往和来自网络1260的媒体信息。一个或多个内容递送设备1240也可以耦合到平台1202和/或显示器1220。
在各种实施方式中,一个或多个内容服务设备1230可以包括有线电视盒、个人计算机、网络、电话、能够递送数字信息和/或内容的互联网使能设备或电器、以及能够在内容提供商和平台1202/显示器1220之间经由网络1260或直接地单向或双向传送内容的任何其他类似设备。将明白的是,可以经由网络1260单向和/或双向地传送去往和来自系统1200中的任意一个组件和内容提供商的内容。内容的示例可以包括任何媒体信息,该媒体信息包括例如视频、音乐、医疗和游戏信息等。
一个或多个内容服务设备1230可以接收诸如包括媒体信息、数字信息、和/或其他内容的有线电视节目的内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或互联网内容提供商。所提供的示例不用于以任何方式限制根据本公开的实施方式。
在各种实施方式中,平台1202可以从具有一个或多个导航特征的导航控制器1250接收控制信号。控制器1250的导航特征可以用来例如与用户界面1222交互。在实施方式中,导航控制器1250可以是指针设备,该指针设备可以是允许用户向计算机输入空间(例如,连续多维)数据的计算机硬件组件(具体地,人机接口设备)。诸如图形用户界面(GUI)、电视、和监测器的很多系统允许用户使用身体姿势控制计算机或电视并向计算机或电视提供数据。
可以通过显示在显示器上的指针、光标、对光环、或其他视觉指示符的移动,在显示器(例如,显示器1220)上复制控制器1250的导航特征的移动。例如,在软件应用1216的控制下,可以将位于导航控制器1250上的导航特征映射到例如用户界面1222上显示的虚拟导航特征。在实施方式中,控制器1250可以不是单独组件,而是可以集成到平台1202和/或显示器1220中。但是,本公开不限于本文示出或描述的元件或上下文中。
在各种实施方式中,驱动器(未示出)可以包括使能用户通过在初始启动后触摸按钮来立即开启和关断例如电视的平台1202(例如,在被使能时)的技术。程序逻辑可以允许平台1202即使在该平台被关断时也能够向媒体适配器或一个或多个其他内容服务设备1230或一个或多个内容递送设备1240流传输内容。另外,芯片集1205可以包括例如用于音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实施方式中,图形驱动器可以包括外围组件互连(PCI)快速图形卡。
在各种实施方式中,系统1200中示出的任意一个或多个组件可以集成在一起。例如,平台1202和一个或多个内容服务设备1230可以集成在一起,或者平台1202和一个或多个内容递送设备1240可以集成在一起,或者平台1202、一个或多个内容服务设备1230、以及一个或多个内容递送设备1240可以集成在一起。在各种实施方式中,平台1202和显示器1220可以是集成单元。例如,显示器1220和一个或多个内容服务设备1230可以集成在一起,或者显示器1220和一个或多个内容递送设备1240可以集成在一起。这些示例不用于限制本公开。
在各种实施方式中,系统1200可以实现为无线系统、有线系统、或它们二者的组合。当实现为无线系统时,系统1200可以包括适合用于在无线共享介质上进行通信的组件和接口,例如一个或多个天线、发送器、接收器、收发器、放大器、滤波器、控制逻辑等。无线共享介质的示例可以包括诸如RF频谱等的无线频谱的部分。当实现为有线系统时,系统1200可以包括适合用于在有线通信介质上进行通信的组件和接口,例如输入/输出(I/O)适配器、将I/O适配器与对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括电线、线缆、金属引线、印刷电路板(PCB)、背板、开关网络、半导体材料、双绞线、同轴线缆、光纤等。
平台1202可以建立一个或多个逻辑或物理信道,以传送信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表示供用户使用的内容的任何数据。内容的示例可以包括例如,来自语音对话、语音会议、流传输视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音对话的数据可以是例如,话语信息、静默时段、背景噪声、舒适噪声、声调等。控制信息可以指代表示供自动化系统使用的命令、指令、或控制字的任何数据。例如,控制信息可以用来将媒体信息路由通过系统,或指令节点以预定方式处理媒体信息。但是,实施方式不限于图12中示出或描述的元件或上下文中。
如上所述,系统1100或1200可以实现为各种物理形式或样式因素。图13示出了可以实现系统1100或1200的小型设备1300的实施方式。在实施方式中,例如,设备1300可以实现为具有无线功能的移动计算设备。移动计算设备可以指具有处理系统和移动电源(例如,一个或多个电池)的任何设备。
如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板、或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等。
移动计算设备的示例还可以包括被布置为由用户穿戴的计算机,例如,手腕计算机、手指计算机、项链计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋计算机、衣服计算机、以及其他可穿戴计算机。在各种实施方式中,例如,移动计算设备可以实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管利用例如实现为智能电话的移动计算设备描述了一些实施方式,但是可以明白的是,也可以使用其他无线移动计算设备实现其他实施方式。实施方式不限于本上下文。
如图13所示,设备1300可以包括外壳1302、显示器1304、输入/输出(I/O)设备1306、以及天线1308。设备1300还可以包括导航特征1312。显示器1304可以包括用于显示适用于移动计算设备的信息的显示单元上的任何适当屏幕1310。I/O设备1306可以包括用于向移动计算设备输入信息的任何适当的I/O设备。I/O设备1306的示例可以包括字母数字键盘、数字键区、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音辨认设备和软件等。信息也可以通过麦克风(未示出)输入到设备1300。这些信息可以由语音辨认设备(未示出)进行数字化。实施方式不限于本上下文。
各种实施方式可以使用硬件元件、软件元件、或它们二者的组合实现。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或它们的任意组合。判定实施方式是否使用硬件元件和/或软件元件实现可以根据任意数目的因素变化,这些因素例如是期望计算速率、功率等级、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、以及其他设计或性能约束条件。
以上描述的一个或多个方面可以由存储在机器可读介质上的表示性指令实现,这些表示性指令表示处理器中的各种逻辑并且在被机器读取时使得机器制造执行本文描述的技术的逻辑。被称为“IP内核”的这些表示可以被存储在有形的机器可读介质上并且被提供给各种客户或制造设施以加载到实际制作逻辑或处理器的制造机器中。
尽管已经参考各种实施方式描述了本文给出的某些特征,但是本说明书不希望被理解为限制性含义。因此,认为本文描述的实施方式的各种变形以及对于本公开所属领域的技术人员显而易见的其他实施方式落入本公开的精神和范围内。
下面的示例涉及附加的实施方式。
一种计算机实现的利用每帧参数控制的硬件加速的视频编码方法,包括:获取待编码的至少一个视频序列的帧的图像数据;监测具有多个编码器单元的图形加速器型设备,该多个编码器单元用于执行多个帧的同时编码任务,并用于至少确定各个帧的压缩完成并准备好被放置在比特流中时的编码完成时间;通过使用至少一个编码完成时间确定至少一个帧和多个编码器单元中的至少一个编码器单元的实际每帧编码时间相关值;以及调整至少一个编码器操作的至少一个编码器设置,以将实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值。
该方法还可以包括以下各者中的至少一者:(1)其中,使用编码完成时间生成与目标帧速率值比较的平均实际帧速率;以及(2)该方法包括对各个帧的编码开始时间与各个帧的编码完成时间进行差分,以生成作为各个帧的实际延迟的差值,该方法包括比较实际延迟与目标延迟,其中,监测包括:确定视频序列的各个帧的编码开始时间;通过调整与多个预定质量等级中的质量等级相关联的编码器设置来调整至少一个编码器设置,其中,根据实际每帧编码时间相关值和目标每帧编码时间相关值之间的差值的大小以及哪个更大来选择各个质量等级;该方法包括以下各者中的至少一者:(a)其中,至少一个质量等级调整与在另一质量等级调整的编码器设置不同的编码器设置,(b)其中,每个质量等级针对包括帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值;以及(c)其中,每个质量等级针对帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的每一者具有至少一个设置;该方法包括以下各者中的至少一者:(A)在实际每帧编码时间相关值大于目标每帧编码时间相关值并且这两个值都与帧速率相关时,调整编码器设置以按照更低的帧速率提供质量提高的帧,以及(B)在目标每帧编码时间相关值大于实际每帧编码时间相关值并且这两个值都与帧的延迟相关时,调整编码器设置以按照更长的延迟持续时间提供质量提高的帧;该方法包括以下各者中的至少一者:(i)其中,调整编码器设置包括当少于多个编码器单元触发对于调整的需求时,调整针对多个编码器单元的编码器设置,以及(ii)其中,调整编码器设置包括根据编码器单元是否触发对于调整的需求,单独针对各个编码器单元调整编码器设置。
通过一种方法,一种计算机实现的系统包括:至少一个存储器,该至少一个存储器存储待编码的视频序列的帧的图像数据;通信地耦合到至少一个存储器的图形加速器设备的至少一个处理器,该至少一个处理器具有执行多个帧的同时编码任务的多个编码器单元;由至少一个处理器操作的监测器单元,该监测器单元监测图形加速器型设备以至少确定各个帧的压缩完成并准备好被放置在比特流中时的编码完成时间,并通过使用至少一个编码完成时间来确定多个编码器单元中的至少一个编码器单元和至少一个帧的实际每帧编码时间相关值;以及每帧参数质量控制单元,由至少一个处理器操作并且通过调整至少一个编码器操作的至少一个编码器设置进行操作,以将实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间值。
该系统还可以包括其中,实际每帧编码时间相关值为以下各者中的至少一者:(1)通过由编码器单元处理的多个帧的编码完成时间确定的编码器单元处的平均帧速率;以及(2)作为编码完成时间与具有编码完成时间的相同帧的编码开始时间之间的差值的延迟;该系统还可以包括以下各者中的至少一者:(A)其中,在任意一个编码器单元具有不在目标编码时间相关值的预定范围内的实际每帧编码时间相关值时,每帧参数控制单元通过降低或提高所有编码器单元的帧质量进行操作,(B)其中,调整包括单独针对各个编码器单元调整编码器设置,以及(C)其中,调整包括提高多个编码器单元的质量,直到多个编码器单元中的最慢编码器单元的实际每帧编码时间相关值在目标编码时间相关值的预定范围中为止;其中,调整包括调整包括以下各者中的至少一者的帧间预测设置:(a)准许或限制使用B帧,和(b)改变包括以下各者中的至少一者的块匹配搜索的穷尽性:(1)确定是否可以使用子像素搜索;(2)通过层级搜索中的阶数、帧区域、或分区类型限制搜索,和(3)当应用运动向量时,通过使用偏移的缩放使用加权预测,以及(c)其中,调整包括修改保存帧数据的缓冲器的帧容量;其中,调整包括通过调整与多个预定质量等级中的质量等级相关联的编码器设置调整至少一个编码器设置,其中,根据实际每帧编码时间相关值和目标每帧编码时间相关值之间的差值大小以及哪个值更大来选择各个质量等级;其中,每个质量等级针对包括帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值;并且其中,调整编码器设置包括根据编码器单元是否触发了对于调整的需求,单独针对各个编码器单元调整编码器设置。
作为另一实施方式,一种存储有指令的计算机可读介质,所述指令在被执行时使得计算设备通过以下处理进行操作:获取待编码的至少一个视频序列的帧的图像数据;监测具有多个编码器单元的图形加速器型设备,该多个编码器单元用于执行多个帧的同时编码任务,并且用于至少确定各个帧的压缩完成并准备好被放置在比特流中时的编码完成时间;通过使用至少一个编码完成时间确定至少一个帧和多个编码器单元中的至少一个编码器单元的实际每帧编码时间相关值;以及调整至少一个编码器操作的至少一个编码器设置,以将实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值。
计算机可读介质还可以包括其中,实际每帧编码时间相关值为以下各者中的至少一者:与编码器单元之一相关联的帧速率有关,作为编码完成时间与具有编码完成时间的相同帧的编码开始时间之间的差值的延迟;其中,调整包括通过调整与多个预定质量等级中的质量等级相关联的编码器设置来调整至少一个编码器设置,其中,根据实际每帧编码时间相关值和目标每帧编码时间相关值之间的差值大小和哪个值更大来选择各个质量等级;其中,每个质量等级针对包括帧内预测、帧间预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值;并且其中,调整编码器设置包括根据编码器单元是否触发了对于调整的需求,单独针对各个编码器单元调整编码器设置。
在进一步示例中,至少一个机器可读介质可以包括多个指令,这些指令响应于在计算设备上被执行而使得计算设备执行根据以上示例中的任意示例的方法。
在又一示例中,一种装置可以包括用于执行根据以上示例中的任意示例的方法的部件。
以上示例可以包括特征的特定组合。但是,以上示例在这方面不做限制。在各种实施方式中,以上示例可以包括仅执行这些特征的子集,执行这些特征的不同顺序,执行这些特征的不同组合,和/或执行明确列出的这些特征以外的附加特征。例如,可以针对示例装置、示例系统、和/或示例物品实现针对示例方法描述的所有特征,反之亦然。

Claims (25)

1.一种计算机实现的视频编码方法,包括:
获取待编码的至少一个视频序列的帧的图像数据;
监测具有多个编码器单元的图形加速器型设备,所述多个编码器单元用于执行所述帧中的多个帧的同时编码任务,并用于至少确定各个帧的压缩完成并且准备好被放置在比特流中时的编码完成时间;
通过使用所述编码完成时间中的至少一个编码完成时间,确定所述多个编码器单元中的至少一个编码器单元和至少一个帧的实际每帧编码时间相关值;以及
调整至少一个编码器操作的至少一个编码器设置,以将所述实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值。
2.如权利要求1所述的方法,其中,所述编码完成时间用于生成与目标帧速率值进行比较的平均实际帧速率。
3.如权利要求1所述的方法,其中,监测包括确定所述视频序列的各个帧的编码开始时间。
4.如权利要求1所述的方法,包括:对各个帧的编码开始时间与各个帧的编码完成时间进行差分,以生成作为各个帧的实际延迟的差值。
5.如权利要求4所述的方法,包括:比较所述实际延迟和目标延迟。
6.如权利要求1所述的方法,包括:通过调整与多个预定质量等级中的质量等级相关联的编码器设置来调整至少一个编码器设置,其中,各个质量等级是根据所述实际每帧编码时间相关值和所述目标每帧编码时间相关值之间的差值大小以及哪个值更大来选择的。
7.如权利要求6所述的方法,其中,至少一个质量等级调整与在另一质量等级调整的编码器设置不同的编码器设置。
8.如权利要求6所述的方法,其中,每个质量等级针对包括帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值。
9.如权利要求8所述的方法,其中,每个质量等级针对所述帧间预测、所述帧内预测、所述运动搜索复杂性、所述模式搜索复杂性中的每一者具有至少一个设置。
10.如权利要求1所述的方法,包括:当所述实际每帧编码时间相关值大于所述目标每帧编码时间相关值并且这两个值都与帧速率有关时,调整编码器设置来以更低的帧速率提供质量提高的帧。
11.如权利要求1所述的方法,包括:当所述目标每帧编码时间相关值大于所述实际每帧编码时间相关值并且这两个值都与帧的延迟有关时,调整编码器设置来以更长的延迟持续时间提供质量提高的帧。
12.如权利要求1所述的方法,其中,调整编码器设置包括:调整帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者。
13.如权利要求1所述的方法,其中,调整编码器设置包括:当少于所述多个编码器单元中的不止一个编码器单元触发了对于调整的需求时,针对所述多个编码器单元中的所述不止一个编码器单元调整编码器设置。
14.如权利要求1所述的方法,其中,调整编码器设置包括:根据编码器单元是否触发了对于调整的需求,单独针对各个编码器单元调整编码器设置。
15.如权利要求1所述的方法,包括通过调整与多个预定质量等级中的质量等级相关联的编码器设置来调整至少一个编码器设置,其中,各个质量等级是根据所述实际每帧编码时间相关值和所述目标每帧编码时间相关值之间的差值大小以及哪个值更大来选择的;
其中,每个质量等级针对包括帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值,并且
其中,调整编码器设置包括根据编码器单元是否触发了对于调整的需求,单独针对各个编码器单元调整编码器设置。
16.一种计算机实现的系统,包括:
至少一个存储器,所述至少一个存储器存储待编码的视频序列的帧的图像数据;
图形加速器设备的至少一个处理器,通信地耦合到所述至少一个存储器并且具有多个编码器单元,所述多个编码器单元用于执行多个帧的同时编码任务;
监测器单元,由所述至少一个处理器操作并且监测所述图形加速器型设备,以至少确定各个帧的压缩完成并且准备好被放置在比特流中时的编码完成时间,并通过使用所述编码完成时间中的至少一个编码完成时间确定所述多个编码器单元中的至少一个编码器单元和至少一个帧的实际每帧编码时间相关值;以及
每帧参数质量控制单元,由所述至少一个处理器操作并且通过调整至少一个编码器操作的至少一个编码器设置进行操作以将所述实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值。
17.如权利要求16所述的系统,其中,所述实际每帧编码时间相关值为以下各者中的至少一者:(1)使用由编码器单元处理的多个帧的所述编码完成时间确定的编码器单元处的平均帧速率,以及(2)延迟,所述延迟是所述编码完成时间与具有所述编码完成时间的相同帧的编码开始时间之间的差值。
18.如权利要求16所述的系统,其中,以下各者中的至少一者:
当任意一个编码器单元具有不在所述目标编码时间相关值的预定范围中的实际每帧编码时间相关值时,所述每帧参数控制单元用于通过降低或提高所有编码器单元的帧的质量进行操作,并且
其中,调整包括单独针对各个编码器单元调整编码器设置。
19.如权利要求16所述的系统,其中,调整包括提高多个编码器单元的质量,直到该多个编码器单元中的最慢编码器单元的实际每帧编码时间相关值在所述目标编码时间相关值的预定范围中为止。
20.如权利要求16所述的系统,其中,调整包括调整帧间预测设置,该帧间预测设置包括以下各者中的至少一者:
准许或限制B帧的使用;以及
改变块匹配搜索的穷尽性,该块匹配搜索包括以下各者中的至少一者:
(1)确定是否能够使用子像素搜索,
(2)通过层级搜索中的阶数、帧区域、或分区类型限制搜索;以及
(3)当应用运动向量时,通过使用偏移的缩放来使用加权预测。
21.如权利要求16所述的系统,其中,调整包括修改保存帧数据的缓冲器的帧容量。
22.一种其上存储有指令的计算机可读介质,所述指令在被执行时使得计算设备通过以下处理进行操作:
获取待编码的至少一个视频序列的帧的图像数据;
监测具有多个编码器单元的图形加速器型设备,其中,所述多个编码器单元用于执行所述帧中的多个帧的同时编码任务,并用于至少确定各个帧的压缩完成并且准备好被放置在比特流中时的编码完成时间;
通过使用所述编码完成时间中的至少一个编码完成时间,确定所述多个编码器单元中的至少一个编码器单元和至少一个帧的实际每帧编码时间相关值;以及
调整至少一个编码器操作的至少一个编码器设置,以将所述实际每帧编码时间相关值改变为更接近或等于目标每帧编码时间相关值。
23.如权利要求22所述的计算机可读介质,其中,所述实际每帧编码时间相关值为以下各者中的至少一者:与编码器单元之一相关联的帧速率有关,以及延迟,所述延迟是所述编码完成时间与具有所述编码完成时间的相同帧的编码开始时间之间的差值;
其中,调整包括通过调整与多个预定质量等级中的质量等级相关联的编码器设置来调整至少一个编码器设置,其中,各个质量等级是根据所述实际每帧编码时间相关值和所述目标每帧编码时间相关值之间的差值大小以及哪个值更大来选择的;
其中,每个质量等级针对包括帧间预测、帧内预测、运动搜索复杂性、模式搜索复杂性中的至少一者的相同编码器设置具有不同的值;并且
其中,调整编码器设置包括根据编码器单元是否触发了对于调整的需求,单独针对各个编码器单元调整编码器设置。
24.包括多个指令的至少一种机器可读介质,所述多个指令响应于在计算设备上被执行而使得所述计算设备执行根据权利要求1至15中任一项的方法。
25.一种装置,包括用于执行根据权利要求1至15中任一项的方法的部件。
CN201780058747.4A 2016-10-01 2017-08-28 利用每帧参数控制的硬件加速的视频编码方法和系统 Active CN109792540B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/283,321 2016-10-01
US15/283,321 US10567775B2 (en) 2016-10-01 2016-10-01 Method and system of hardware accelerated video coding with per-frame parameter control
PCT/US2017/048865 WO2018063635A1 (en) 2016-10-01 2017-08-28 Method and system of hardware accelerated video coding with per-frame parameter control

Publications (2)

Publication Number Publication Date
CN109792540A true CN109792540A (zh) 2019-05-21
CN109792540B CN109792540B (zh) 2021-09-17

Family

ID=61757356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780058747.4A Active CN109792540B (zh) 2016-10-01 2017-08-28 利用每帧参数控制的硬件加速的视频编码方法和系统

Country Status (3)

Country Link
US (1) US10567775B2 (zh)
CN (1) CN109792540B (zh)
WO (1) WO2018063635A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110418144A (zh) * 2019-08-28 2019-11-05 成都索贝数码科技股份有限公司 一种基于nvidia gpu实现一入多出转码多码率视频文件的方法
CN111131817A (zh) * 2019-12-31 2020-05-08 科大讯飞股份有限公司 屏幕共享方法、设备、存储介质及屏幕共享系统
CN113382258A (zh) * 2021-06-10 2021-09-10 北京百度网讯科技有限公司 视频编码方法、装置、设备和介质
CN113496501A (zh) * 2021-07-08 2021-10-12 中国科学技术大学 基于视频预测的动态场景中的入侵物检测方法和系统
CN115841804A (zh) * 2023-02-21 2023-03-24 深圳曦华科技有限公司 分辨率实时切换控制方法及装置

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929353B2 (en) 2015-04-29 2021-02-23 Box, Inc. File tree streaming in a virtual file system for cloud-based shared content
CN108235144B (zh) * 2016-12-22 2021-02-19 阿里巴巴(中国)有限公司 播放内容获取方法、装置及计算设备
US10402932B2 (en) * 2017-04-17 2019-09-03 Intel Corporation Power-based and target-based graphics quality adjustment
TWI681666B (zh) 2017-04-21 2020-01-01 美商時美媒體公司 用於基於編碼器提示以演現及預編碼負載估計的系統及方法
US11470131B2 (en) 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
US10623744B2 (en) * 2017-10-04 2020-04-14 Apple Inc. Scene based rate control for video compression and video streaming
US20190114548A1 (en) * 2017-10-17 2019-04-18 Xilinx, Inc. Static block scheduling in massively parallel software defined hardware systems
US10594940B1 (en) * 2018-01-12 2020-03-17 Vulcan Inc. Reduction of temporal and spatial jitter in high-precision motion quantification systems
US20190238856A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Estimating video quality of experience
US10872400B1 (en) 2018-11-28 2020-12-22 Vulcan Inc. Spectral selection and transformation of image frames
US11044404B1 (en) 2018-11-28 2021-06-22 Vulcan Inc. High-precision detection of homogeneous object activity in a sequence of images
CN109862362A (zh) * 2018-12-29 2019-06-07 深圳市网心科技有限公司 一种视频的mpeg2编码方法、系统、介质及设备
CN111510715B (zh) 2019-01-31 2022-03-01 上海哔哩哔哩科技有限公司 视频处理方法、系统、计算机设备及存储介质
EP3706393B1 (de) * 2019-03-04 2024-04-24 Siemens Healthineers AG Verfahren zur übertragung einer benutzeroberfläche, medizingerät und anordnung
CN110381316B (zh) * 2019-07-17 2023-09-19 腾讯科技(深圳)有限公司 一种视频传输控制方法、装置、设备及存储介质
US20200029086A1 (en) * 2019-09-26 2020-01-23 Intel Corporation Distributed and parallel video stream encoding and transcoding
JP2021061501A (ja) * 2019-10-04 2021-04-15 シャープ株式会社 動画像変換装置及び方法
US11233669B2 (en) * 2019-12-17 2022-01-25 Google Llc Context-dependent in-call video codec switching
US20200128271A1 (en) * 2019-12-20 2020-04-23 Intel Corporation Method and system of multiple channel video coding with frame rate variation and cross-channel referencing
US11127221B1 (en) * 2020-03-18 2021-09-21 Facebook Technologies, Llc Adaptive rate control for artificial reality
US11470139B2 (en) * 2020-06-23 2022-10-11 Comcast Cable Communications, Llc Video encoding for low-concurrency linear channels
US11206415B1 (en) * 2020-09-14 2021-12-21 Apple Inc. Selectable transcode engine systems and methods
US11561698B2 (en) * 2021-04-20 2023-01-24 EMC IP Holding Company LLC NVMEoF flow control from initiator based on transaction latency

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735208A (zh) * 2004-07-12 2006-02-15 微软公司 在运动补偿的时间滤波中的自适应更新
US20110305273A1 (en) * 2010-06-11 2011-12-15 Microsoft Corporation Parallel multiple bitrate video encoding
CN102685493A (zh) * 2011-03-10 2012-09-19 微软公司 用于视频编码速率控制的平均决定差预测
US20150131748A1 (en) * 2013-11-12 2015-05-14 Kabushiki Kaisha Toshiba Encoding device and encoding method
CN104902272A (zh) * 2012-06-11 2015-09-09 三星电子株式会社 视频解码设备
CN105392001A (zh) * 2015-11-16 2016-03-09 四川大学 基于梯度的自适应高性能视频编码码率控制方法
US20160099022A1 (en) * 2014-05-30 2016-04-07 Paofit Holdings Pte. Ltd. Systems and Methods For Motion-Vector-Aided Video Interpolation Using Real-Time Smooth Video Playback Speed Variation
CN105847806A (zh) * 2010-01-06 2016-08-10 杜比实验室特许公司 视频信息编码方法和视频信息编码系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2163097A2 (en) 2007-05-25 2010-03-17 Arc International, Plc Adaptive video encoding apparatus and methods
US9055301B2 (en) 2008-03-18 2015-06-09 Texas Instruments Incorporated Changing motion estimation precision to maintain encoding within desired time
US8724712B1 (en) 2011-07-07 2014-05-13 Google Inc. Apparatus and method for encoding at non-uniform intervals
US10694214B2 (en) * 2012-12-21 2020-06-23 Qualcomm Incorporated Multi-type parallelized sample adaptive offset in video coding
WO2014120367A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive parametric transforms for coding for next generation video
WO2014193631A1 (en) 2013-05-31 2014-12-04 Intel Corporation Adjustment of intra-frame encoding distortion metrics for video encoding
US10063872B2 (en) * 2015-09-11 2018-08-28 Facebook, Inc. Segment based encoding of video

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735208A (zh) * 2004-07-12 2006-02-15 微软公司 在运动补偿的时间滤波中的自适应更新
CN105847806A (zh) * 2010-01-06 2016-08-10 杜比实验室特许公司 视频信息编码方法和视频信息编码系统
US20110305273A1 (en) * 2010-06-11 2011-12-15 Microsoft Corporation Parallel multiple bitrate video encoding
CN102685493A (zh) * 2011-03-10 2012-09-19 微软公司 用于视频编码速率控制的平均决定差预测
CN104902272A (zh) * 2012-06-11 2015-09-09 三星电子株式会社 视频解码设备
US20150131748A1 (en) * 2013-11-12 2015-05-14 Kabushiki Kaisha Toshiba Encoding device and encoding method
US20160099022A1 (en) * 2014-05-30 2016-04-07 Paofit Holdings Pte. Ltd. Systems and Methods For Motion-Vector-Aided Video Interpolation Using Real-Time Smooth Video Playback Speed Variation
CN105392001A (zh) * 2015-11-16 2016-03-09 四川大学 基于梯度的自适应高性能视频编码码率控制方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110418144A (zh) * 2019-08-28 2019-11-05 成都索贝数码科技股份有限公司 一种基于nvidia gpu实现一入多出转码多码率视频文件的方法
CN111131817A (zh) * 2019-12-31 2020-05-08 科大讯飞股份有限公司 屏幕共享方法、设备、存储介质及屏幕共享系统
CN111131817B (zh) * 2019-12-31 2023-12-01 科大讯飞股份有限公司 屏幕共享方法、设备、存储介质及屏幕共享系统
CN113382258A (zh) * 2021-06-10 2021-09-10 北京百度网讯科技有限公司 视频编码方法、装置、设备和介质
CN113382258B (zh) * 2021-06-10 2022-10-21 北京百度网讯科技有限公司 视频编码方法、装置、设备和介质
CN113496501A (zh) * 2021-07-08 2021-10-12 中国科学技术大学 基于视频预测的动态场景中的入侵物检测方法和系统
CN113496501B (zh) * 2021-07-08 2023-09-01 中国科学技术大学 基于视频预测的动态场景中的入侵物检测方法和系统
CN115841804A (zh) * 2023-02-21 2023-03-24 深圳曦华科技有限公司 分辨率实时切换控制方法及装置

Also Published As

Publication number Publication date
CN109792540B (zh) 2021-09-17
US10567775B2 (en) 2020-02-18
US20180098083A1 (en) 2018-04-05
WO2018063635A1 (en) 2018-04-05

Similar Documents

Publication Publication Date Title
CN109792540A (zh) 利用每帧参数控制的硬件加速的视频编码方法和系统
CN111066326B (zh) 机器学习视频处理系统和方法
CN104885455B (zh) 一种用于视频编码的计算机实现的方法及装置
CN104854866B (zh) 下一代视频的内容自适应、特性补偿预测
CN109565587B (zh) 具有上下文解码和重构旁路的视频编码的方法和系统
US10554977B2 (en) Method and system of high throughput arithmetic entropy coding for video coding
US11223831B2 (en) Method and system of video coding using content based metadata
AU2014275405B2 (en) Tuning video compression for high frame rate and variable frame rate capture
CN108432253A (zh) 长期参考图片译码
US20110305273A1 (en) Parallel multiple bitrate video encoding
US20110274178A1 (en) Method and device for parallel decoding of video data units
CN110214447A (zh) 用于360视频的解块滤波
EP2410752B1 (en) Image coding apparatus, image coding control method and image coding program
CN101164344A (zh) 感兴趣区域视频编码的内容自适应背景跳过
CN107005701A (zh) 使用减少数量的角模式来降低帧内预测复杂度及其后续改进
US11659193B2 (en) Framework for video conferencing based on face restoration
CN107667528A (zh) 用于视频编解码的自适应参考帧缓存的方法和系统
CN109155856A (zh) 用于视频编解码的利用近邻块模式的运动估计的方法和系统
CN115623222A (zh) 多层视频编码的方法和系统
WO2023051156A1 (zh) 视频图像的处理方法及装置
CN110035290A (zh) 用于视频编码的解耦预测和编码结构
WO2023059689A1 (en) Systems and methods for predictive 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