CN112087628A - 使用两级帧内搜索对视频进行编码 - Google Patents

使用两级帧内搜索对视频进行编码 Download PDF

Info

Publication number
CN112087628A
CN112087628A CN202010227067.4A CN202010227067A CN112087628A CN 112087628 A CN112087628 A CN 112087628A CN 202010227067 A CN202010227067 A CN 202010227067A CN 112087628 A CN112087628 A CN 112087628A
Authority
CN
China
Prior art keywords
intra
stage
search
candidates
examples
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
Application number
CN202010227067.4A
Other languages
English (en)
Inventor
詹姆斯·M·霍兰德
斯里尼瓦桑·恩巴·拉古克里希南
雷志军
德米特里·E·雷若夫
徐理东
萨蒂亚·N·耶迪迪
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 CN112087628A publication Critical patent/CN112087628A/zh
Pending legal-status Critical Current

Links

Images

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/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
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本公开涉及使用两级帧内搜索对视频进行编码。一种示例系统包括处理器,该处理器用于对视频帧执行帧内搜索第一级,以生成帧内候选。处理器将对帧内候选执行帧内搜索第二级,以生成最终帧内候选和残差。处理器还执行最终模式决策,以及基于最终帧内候选和残差来生成重构的像素。

Description

使用两级帧内搜索对视频进行编码
技术领域
本公开大体涉及图像处理领域,更具体地,涉及使用两级帧内搜索(intrasearch)对视频进行编码。
背景技术
可以将视频流编码成各种视频压缩格式,或者可以改变该流的特性。视频流的特性包括但不限于视频流的分辨率和比特率。当为在设备或计算设备的组件之间的传输而准备视频流时,也可以使用编码。
发明内容
本公开的一些方面提供了一种用于视频编码的装置。该装置包括:编码器,该编码器包括:帧内第一级,用于对视频帧执行帧内搜索第一级以生成帧内候选;和帧内第二级,用于对帧内候选执行帧内搜索第二级,以生成最终的帧内候选和残差;以及检查和细化执行器,用于执行最终模式决策,并基于最终的帧内候选和残差生成重构的像素。
附图说明
图1是示出用于使用两级帧内搜索对视频进行编码的示例系统的框图;
图2是示出用于使用两级帧内搜索对视频进行编码的示例管线的框图;
图3是示出用于使用统一的多编解码器速率失真估计对视频进行编码的示例系统的框图;
图4是用于使用两级帧内搜索对视频进行编码的示例方法的过程流程图;
图5是示出用于执行两级帧内搜索级的示例方法的过程流程图;
图6是用于使用统一的速率失真估计来执行矩阵乘法的示例方法的过程流程图;
图7是示出实现具有两级帧内搜索的硬件视频编码的示例电子设备的框图;并且
图8是示出示例介质的框图,该介质包含用于使用两级帧内搜索的硬件视频编码的逻辑。
在整个公开和附图中使用相同的数字来引用相似的组件和特征。100系列中的数字指的是最初在图1中找到的特征;200系列中的数字指的是最初在图2中找到的特征;以此类推。
具体实施方式
一些用于对视频进行编码的系统可采用运行内核程序的多个可编程引擎,这些内核程序使用硬件协处理器。此外,还可使用基于硬件的高级视频编码(AVC)类编码器或高效视频编码(HEVC)类编码器对视频进行编码。例如,AVC类编码器可根据2003年5月发布的ISO/IEC 14496-10–MPEG-4第10部分,高级视频编码规范(Advanced Video CodingSpecification)对视频进行编码。HEVC类编码器可根据在2016年12月22日被批准为ITU-T标准的HEVC/H.265第4版规范对视频进行编码。
可在膝上型计算机、移动电话和云中使用实时和低功率硬件编码器。然而,随着编码器发展并提高压缩效率和质量,出现了对于保持高性能的挑战。此外,随着新编解码器的数量增加和当前编解码器持续使用,实现质量和性能目标可具有硅面积约束。此外,速率失真估计提供了对编码误差的更准确估计,但是利用了离散余弦变换(DCT),DCT要高速运行通常是非常昂贵的。此外,每个编解码器可具有更改每个编解码器的设计的不同类型的DCT。
本技术包括用于改善硬件视频编码器的性能、质量和可扩展性的技术。在实施例中,本技术改进了编码器,该编码器没有执行编码器算法的主循环(即所谓的固定功能编码)的可编程引擎。固定功能编码可用于例如电话、平板、计算机、相机、汽车、游戏系统等中,以出于多种原因执行用于像素的实时压缩的许多编码任务。本技术包括但不限于下面的算法和技术。首先,提供了具有两级的分割帧内搜索。帧内搜索包括帧内第一级,其是没有反馈的开环。帧内第二级是具有反馈的闭环,其实现用于馈送变量的粗搜索。其次,还提供了包括细粒度增强的技术,这些细粒度增强利用候选的交织来快速计算变换单元(TU)的速率失真估计(RDE)成本。候选是给定块的潜在编码。最后,提供了用于归纳RDE级以支持多个编解码器并实现质量、面积和性能的改进折衷的技术。
本文描述的技术因此使得能够使用对屏幕内容进行高效编码的硬件来实现高效视频编码(HEVC)类的视频编码。例如,本文描述的技术可用来根据2015年5月发布的第二版HEVC标准或2016年3月31日发布的0.6版VP9比特流和解码过程规范对视频进行编码。先前的标准将“宏块”看作静态大小的元素,而在更新的树递归编解码器中,编码器可以根据针对最高视觉质量最终产生最低比特成本的许多因素来评估何时应当将像素块分成更精细的“编码单元(CU)”或使其变为更大的CU。此外,先前的标准使用统一的预测类型(诸如帧间或帧内预测类型)和统一的变换大小(诸如8×8或4×4)来处理每个宏块,而高效标准基于编码器决策过程而允许预测类型的混合和变换大小的混合。相比之下,本技术的编码单元是动态确定大小的,并且可包括不同预测类型的任意组合。因此,具有屏幕内容改进的HEVC类编码的速率失真优化可用于实现与包括基于软件或硬件的编码器的AVC类编码器以及HEVC类编码器相比的显著压缩增益。与基于软件的解决方案相比,这样的硬件实现可提供更好的功率和性能。这些技术因此在诸如移动设备之类的具有有限处理能力的设备上实现实时HD和4K编码。另外,这些技术可以使用单个引擎提供与多个基于递归的编解码器和多种格式的兼容性。最后,在保持实时性能的同时提高压缩效率以更高质量的视频编码来改善许多最终用户可见的改进。本技术的潜在使用包括视频会议、视频游戏流送、远程托管的桌面访问、屏幕记录等。此外,这些使用超越了编解码器标准,所有视频标准都希望跨最大数量的使用模型的最高质量的体验。这些技术直接提高了解决方案的质量,同时保持较高的性能,而没有显著的硅面积或功率成本。
在下面的描述和权利要求中,可以使用术语“耦合”和“连接”及其派生词。应该理解的是,这些术语不旨在作为彼此的同义词。而是,在特定实施例中,“连接”可用于指示两个或更多个元素彼此直接物理接触或电接触。“耦合”可表示两个或更多个元素直接物理接触或电接触。然而,“耦合”也可表示两个或更多个元素彼此不直接接触,但仍彼此协作或交互。
一些实施例可以以硬件、固件和软件中的一者或组合来实现。一些实施例还可被实现为存储在机器可读介质上的指令,这些指令可被计算平台读取和执行以执行本文描述的操作。机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质可包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;或者电、光、声或其他形式的传播信号,例如,载波、红外信号、数字信号,或者发送和/或接收信号的接口,等等。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、“各种实施例”或“其他实施例”的引用表示结合这些实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例但不一定是所有实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指相同的实施例。
图1是示出用于使用两级帧内搜索的硬件视频编码的示例系统的框图。可以在下面的图7的电子设备700中实现示例系统100。例如,可以使用电子设备700的编码器728和微控制器752来实现系统100。
系统100包括存储器/缓存接口102,存储器/缓存接口102通信地耦合到命令流送器(CS)104、微控制器106、共享的L2缓存108、视频编码器AVC VDENC 110、HEVC/VP9硬件比特打包器(PAK)112、和增强型视频编码器VDENC++114。增强型视频编码器VDENC++114还包括HEVC整数运动估计器116以及HEVC检查和细化引擎(CRE)118。增强型视频编码器VDENC++114还包括HEVC帧内第一级120、HEVC帧内第二级122、和速率失真优化单元(RDO)124。
如图1所示,CS 104可从存储器/缓存接口102接收一组命令,并向微控制器106发送信息。例如,CS 104可以是存储器中的缓冲区,在主机CPU或微控制器上运行的软件可以使用该缓冲区来向硬件固定功能注入命令缓冲区。例如,主机可以使头部指针前进,而硬件消耗命令并使尾部指针前进。硬件无法使尾部指针前进超过头部指针,并且软件无法使头部指针前进超过尾部指针。在一些示例中,信息可包括用于基于速率控制分析来控制是否要执行第二遍的命令。例如,因为CS 104是负责分配作业的单元,所以CS 104可以在前进到下一个作业之前基于微控制器统计信息再次分配作业。微控制器106可以向存储器缓存接口102发送信息和从存储器缓存接口102接收信息。例如,该信息可包括诸如微控制器统计信息、视频编码器统计信息、PAK统计信息、和条件通过标志统计信息之类的统计信息。共享的L2缓存108也可以向存储器/缓存接口102发送信息和从存储器/缓存接口102接收信息。例如,该信息可包括视频编码器114与PAK 112之间的共享像素。例如,如果视频编码器114加载像素数据的给定块,则当提到对给定的LCU\CU等执行PAK时,PAK 112可能不必从存储器中加载像素数据的该块。PAK 112可以从共享的L2缓存108而不是较慢的存储器中访问像素数据的特定块。CS 104可以将状态发送到视频编码器110,并将状态发送到增强型视频编码器114。例如,状态可以是控制信息,例如帧或瓦片类型、目标QP、基于应用程序控制的各种启用或禁用等。在一些示例中,状态还可包括源像素。
除了状态之外,视频编码器110还可以从存储器/缓存接口102接收视频。例如,视频或视觉图像的其他序列可被呈现为一系列的帧或瓦片或像素集。如本文所使用的,瓦片(tile)指的是填充整个帧的马赛克图案。因此,帧可以由许多可能的瓦片组成。在前进到下一个瓦片之前,可以重复每个单独的瓦片,以在可能已经发生场景变化的情况下提高效率。例如,不是等待整个帧在场景变化时被不正确地编码,而是在第一个瓦片完成时,编码器可以仅重复这一个瓦片并更新未来的瓦片以意识到所发生的场景变化。如果每个帧有4个瓦片,则这可能花费1帧时间的1.25倍,而基于帧的重复可能花费2倍,假设第一个瓦片检测到错误预测并且该过程被重复的话。
在一些示例中,每个瓦片可以被独立地解码。例如,在分别为1920×1080或3840×2160直到7680×4320的HD与UHD分辨率下,在不使用瓦片的情况下,解码器可能必须在前进到LCU的下一行之前解码7680像素宽。这可能对解码器施加保存可能被下一行引用的大量临时信息的压力。在一些示例中,帧可以分成8个瓦片,每个瓦片1920宽且仍4320高。例如,解码器可以像在移至下一专栏之前的报纸专栏条(strip)一样对帧进行解码。瓦片也可以用来减少帧的高度。如果瓦片的大小为1920×1080,则7680×4320的帧可包括4×4的瓦片(4×1920乘4×1080=7680×4320)。然而,在一些示例中,也可以将瓦片大小设置为帧大小,产生1×1的瓦片。视频编码器110可以执行两级运动估计。运动估计可以用来通过选择帧或瓦片作为参考帧或瓦片并根据该参考帧或瓦片预测后续的帧或瓦片,来利用相邻的帧或瓦片之间的冗余来实现压缩。可以通过多个运动向量来描述预测。具体而言,视频编码器110可以对接收到的帧或瓦片执行分层运动估计搜索和整数运动估计搜索。在运动估计中,通常根据至少一个参考帧或瓦片来预测帧或瓦片的序列中的当前帧或瓦片。在一些示例中,可以分析帧或瓦片的序列中的对象的运动以获得表示这些对象在帧或瓦片之间的估计运动的向量。在一些示例中,每个帧或瓦片可以被划分为编码单元(CU),并且运动向量表示CU在帧或瓦片之间的位置变化。CU可以是可调整的像素块。例如,CU可以是大小为十六乘八像素的像素块。
因此可以将当前帧或当前瓦片划分为CU,使得使用误差测量将每个CU与参考帧或参考瓦片中具有相同大小的区域进行比较,并且选择最佳匹配区域。在搜索区域上进行搜索。确定运动向量,该运动向量表示参考帧或参考瓦片中的区域相对于当前帧或当前瓦片中的CU的位移。在一些示例中,视频编码器110可以使用多个参考帧或多个参考瓦片作为缩减后的参考,这些缩减后的参考被搜索以提供用于全分辨率IME搜索的候选。例如,可以执行IME来找到时间匹配。另外,可以在对前一块做出完整模式决策之前进行对随后块的运动估计。这样的运动估计是作为近似预测或伪预测的试探法进行的,这可能违反精确的解码器规范,但是对于大多数CU中的编码器和编码决策而言可能足够接近。预测模式还可以确定为了将当前帧或瓦片大小压缩为目标帧或瓦片大小而进行的遍数。视频编码器110然后可以输出一个或多个搜索中心,以由增强型视频编码器114加以完善并用于生成PAK编码单元(CU)对象,这些PAK CU对象被发送到HEVC/VP9 PAK 112以对视频帧进行编码的。因此,VDENC++114可以被包括在系统中,以使能视频的HEVC/VP9类硬件编码。
增强型视频编码器VDENC++114可包括运动估计的第三级,即HEVC IME 116。如下面关于图2更详细地描述的,HEVC IME 116可以生成形状候选,并从HEVC CRE 118接收预测的运动向量。HEVC CRE 118可以执行许多功能。例如,HEVC CRE 118可以执行跳过检查、分数运动估计、双向运动估计、帧内角度预测、以及模式决策。跳过检查可以是对前一帧或瓦片的具体位置的抽查,以查看该具体位置与预测的运动向量的匹配程度。跳过检查可用于确定何时应当跳过CU的编码,使得不生成给定CU的向量信息。在当前CU遵循与相邻CU相同的运动模式(无论它们是静态的还是遵循平移运动)时,跳过检查得以确认。在跳过的情况下,可以不为关联的CU生成信息。
在一些示例中,HEVC CRE 118可以基于图像帧或瓦片和/或分区信息来执行分数运动估计(FME)。例如,可以以分数运动分辨率进一步搜索具有其运动向量的选中CU候选。在分割之后,所产生的运动向量可以处于整数分辨率。例如,每个CU形状的运动向量可以是按照像素。各种编码规范可以指定像素之间的一半分辨率,或者甚至更确切地说指定像素之间的四分之一分辨率。例如,从帧到帧或从瓦片到瓦片移动的对象可能不会移动两个帧或瓦片之间的整个像素。而是,对象可能仅移动半个像素。因此,半分数分辨率可以使得能够捕获这样的运动。在一些示例中,运动向量可以被编码并且被存储或发送到解码器。
在一些示例中,HEVC CRE 118可以执行双向运动估计。例如,HEVC CRE 118可以在未来和过去的帧或瓦片中定位对象,并将它们两者融合在一起以平均预测的结果。因此,所产生的预测运动向量可以比仅在过去的帧或瓦片上预测的运动向量或仅在未来的帧或瓦片上预测的运动向量更准确。在一些示例中,可以以与显示顺序不同的方式对帧或瓦片进行重新排序。例如,如果5个帧的显示顺序为0、1、2、3、4,则可以按0、2、1、4、3的顺序对帧进行编码(或在该示例中为IPBPB)。第1帧和第3帧可以根据过去(0)和未来(2)进行预测。这样的重新排序可以产生更好的压缩。
在一些示例中,HEVC CRE 118可以执行帧内或瓦片内预测。例如,可能已经发生场景变化或其他主要变化,使得对象在任何过去的帧中都不存在。因此,必须完全根据帧内的像素来预测运动向量。HEVC CRE 118可以分析在每个像素上方和左侧的像素,并选择可以复制这些像素的角度。例如,可以水平地复制水平图案,并且可以垂直地复制垂直图案。在一些示例中,在水平轴和垂直轴之间可以存在许多预定角度以从中进行选择。例如,更高性能的模式可包括用更少的IME预测指标候选进行搜索。在一些示例中,正常性能可以是给定帧的质量和执行时间的平衡。更高性能的模式可以以某一质量为代价减少执行时间。更低性能的模式可以提高质量,同时也增加执行时间。在一些示例中,HEVC CRE 118在正常模式和更低性能模式(提供更高的质量)下都可以检查所有35个角度,但是对于某些CU级别可减少以更高性能(更低质量)搜索的角度。例如,HEVC CRE 118可以仅对于32×32CU减少角度,而不是对于16×16或8×8减少角度,并且继续在那里搜索所有角度。
在一些示例中,对于IME搜索,HEVC IME 116的正常性能模式可以使用8个候选。在高性能模式下,HEVC IME 116可以对于IME搜索仅使用4个候选,以通过执行更少的计算来节省时间。在更高质量或更低性能的模式下,对于IME搜索,HEVC IME 116可以搜索12个候选。在各种示例中,HEVC IME 116还可以执行TBC IME候选搜索。
在一些示例中,对于HME搜索,在正常性能模式下,AVC视频编码器110可以仅考虑一个参考帧。在更高质量的模式下,AVC视频编码器110可以考虑多于一个参考帧。
在一些示例中,可以为具体地包括VP9编解码器在内的多个编解码器提供支持。例如,HEVC和VP9在跳过和并置运动向量(MV)列表中是不同的。例如,对于VP9,仅考虑最近的邻居。由于VP9还使用不同的变换和量化方法,因此下面描述的RDO计算可能需要考虑0-255个量化步骤。另外,可以使用不同的变换矩阵。此外,比特率估计可以基于概率。对于VP9还可以禁用邻居像素平滑。此外,可以为了VP9支持而提供MPM列表推导、模式掩码、分区掩码。在一些示例中,还可以为了4×4、8×8、16×16、32×32和非正方形形状而包括帧内真实运动支持。还可以为了16×8/8×16、32×16/16×32、8×4/4×8形状而提供非正方形帧内预测。另外,当执行运动搜索时,可以即时提供参考帧大小缩放。
针对每个帧做出的预测的类型可被称为模式决策。例如,HEVC CRE118可以基于各种类型的预测(包括跳过检查、分数运动估计、双向运动估计、帧内运动估计、剩余块复制(left block copy)、和调色板预测)中的任何一种来确定是否对帧进行编码。为确定具体编码模式,HEVC CRE118可以基于运动估计来做出模式决策。具体而言,运动估计的输出可用于确定可被应用以对当前图像帧进行编码的每种不同模式的编码成本。在一个实现方式中,这可以导致选择表现出最低成本的模式。在一些示例中,HEVC CRE 118可以选择作为原始图像的最接近匹配并且消耗最少量的比特来在比特流中发送的模式。例如,四种预测模式可产生紧密匹配的图像,但是这些预测模式之一与其余者相比可以消耗更少的比特。HEVC CRE 118因此可以选择导致更少比特的预测模式。在一些示例中,HEVC CRE 118可以将模式决策基于从率失真优化(RDO)124接收到的RDO成本。例如,RDO成本可以由RDO 124的正向变换和量化(FTQ)模块(未示出)基于从CRE 118接收到的候选来计算。在一些示例中,FTQ模块(未示出)可以使用离散余弦变换(DCT)和量化来计算RDO成本。FTQ模块还可以基于要校正的误差的量来估计用于发送块的比特的量。如箭头所示,RDO 124可以将各种模式决策的RDO成本发送到CRE 118。如箭头所示,RDO 124还可以从CRE 118接收数据以计算RDO成本。数据可以包括比特成本估计、指令和预测的像素。
在一些示例中,HEVC CRE 118可以基于由RDO 124确定的编码单元的不同组合的组合RDO成本来比较编码单元的不同组合。例如,可以将16×16编码单元与四个8×8编码单元的任意组合进行比较。同样地,可以将以不同方式估计的32×32编码单元与4×4编码单元的不同组合进行比较。类似地,可以将64×64编码单元与四个32×32编码单元的各种组合进行比较。HEVC CRE 118然后可以关于向PAK 112发送哪些编码单元或最大编码单元做出最终决策。
所选择的预测模式还可以确定为了将当前帧大小压缩为目标帧大小而进行的遍数。在一些示例中,可以由应用程序或驱动程序确定目标帧大小。在一些情况下,进行若干遍以确定当前帧大小是否等于目标帧大小,其中一遍是通过用于实现目标帧大小的编码器的一部分的单次迭代。目标帧大小可以由速率控制模块(未示出)指定。在一些示例中,使当前帧达到目标帧的大小的遍数受每个帧的模式限制。对于每一遍,可以修改量化参数以实现目标帧大小。在各种示例中,由CRE 118选择的模式决策被发送到PAK 122。
PAK 112可以基于接收到的模式决策对视频进行编码,并生成统计信息流。统计信息流可以包括在编码期间收集的各种参数,并且可以被返回到存储器以供另一过程使用,或者为了更好的压缩或质量而进一步调节编码器。例如,来自PAK 112的统计信息可包括用于发送CU的比特的实际比特量。在一些示例中,统计信息流可包括平方误差(SSE)分类器立方体的总和。例如,可以在PAK 112中生成源图片与解码图片之间的最终准确SSE,并将其分类到各种组中,以供微控制器106进行更快的软件分析。在一些示例中,可以通过基于帧间CU或帧内失真的运动向量长度以及帧中的特定感兴趣区域对SSE的低阈值和高阈值进行标记来执行该分箱(binning)。在一些示例中,微控制器106可以响应于检测到超过阈值的错误而使帧被重新编码。在一些示例中,响应于检测到低于较高阈值但大于较低阈值的误差,微控制器106可以指定预测参数的调整值,来以更少误差对未来帧进行编码。在一些示例中,应用程序可以指定用于调节阈值的调整值。例如,一些应用程序可能更宽容,而另一些应用程序可能更严格。以这种方式,与将阈值设置为静态值相比,可以调节阈值以支持更多使用。
此外,PAK 112可以生成重构的视频帧以用于运动估计。可以将重构的帧保存到存储器,例如共享的L2缓存108。在一些示例中,可以将10比特或12比特的输入截断到源中的8个最高有效比特(MSB),并且可以以分割格式将重构的图像写入到存储器108,该分割格式将8比特MSB发送到存储器108的一个区域,同时将最低有效比特(LSB)中的2比特或4比特发送到存储器108的另一区域。这允许运动估计仅将8b MSB用于搜索,同时10b和12b原始值可以用于PAK 112的运动补偿,从而显著减小带宽并提高有噪声内容的质量。
如图1所示,PAK 112从存储器/缓存接口102接收数据并向存储器/缓存接口102发送数据。在一些示例中,共享的L2缓存108可以是由AVC VDENC 110和VDENC++114执行的编码过程与PAK 112之间的共享缓存。视频编码可包括运动估计和运动补偿两者。运动估计是搜索最佳运动向量的过程。运动补偿是如下过程:获取指定的运动向量,然后预测该运动向量的位置处的像素,这些像素然后可被用于编码。编码组件110、116、118和112中的每一个可以从存储器/缓存接口102接收要处理的像素。具体而言,编码进程加载用于搜索和确定运动向量的像素,并且PAK 112处理像素以向运动向量所指定的位置应用运动。共享的L2缓存108是过程可以访问以读取/写入数据的共同缓存。因此,在一些示例中,当首先加载数据以进行编码时,那些像素在共享的L2缓存108中停留的时间长到足以使PAK进程112找到运动补偿所需的每个特定像素。在一些示例中,该共享的L2缓存108因此防止加载和发送像素两次。在一些示例中,共享的L2缓存108可包括与列瓦片宽度遍历模式配对的可变寄存器传送逻辑(RTL)缓存容量声明。在一些示例中,在存储器带宽必须被最小化并且片上缓存必须是最小大小的情况下,可以使用具有瓦片宽度的缓存来代替具有帧宽度的缓存。
图1未示出可以应用于AVC VDENC 110、HEVC IME 116和HEVC CRE 118所做出的每个决策的各种成本计算。软件驱动程序可具有用于通过成本计算来覆盖上述任何功能的信息。另外,微控制器106也可具有用于通过成本计算来覆盖上述任何功能的信息。在一些示例中,成本计算可以是权重和控制,这些权重和控制用于在整个过程中从实质上使决策有偏向。例如,在HEVC CRE 118中,可以将各种候选运动估计与跳过候选进行比较。在一些情况下,所得到并用于比较的原始数字可导致当可以影响编码单元选择的信息可用时将不会被选择的编码单元。在一些示例中,一些先验知识或预定值可以表明三个候选是否接近,然后始终把跳过当作最佳选择。这些成本计算产生来自某一其他源的可编程权重。然后可以分发成本计算,以在每次搜索或决策时使决策和选择有偏向。即使当使用固定功能的硬件单元时,成本计算也利用每个搜索功能实现高度的可编程性。因此,本技术实现了针对不同应用的高度可重用性。
在一些示例中,成本计算可以用于创建可重新配置的编码管线。例如,各种成本计算和/或参数可以用于在编码期间使模式决策有偏向。可以基于不同的内容类型、可用带宽、分辨率、目标编解码器和比特预算对诸如量化参数(QP)之类的参数进行调整以使模式选择有偏向。在实施例中,对于主观视频优化,可以针对每个CU单独地调整每个QP,以在一些情况下提高质量并在不那么明显的区域中隐藏视觉伪像。换句话说,作为成本计算的QP实现直接控制反馈回路,在该直接控制反馈回路中,通过向上或向下改变QP偏向,本技术可以通过在用户没有在看的地方增加伪像和在用户在看的地方减少伪像来改善用户对视频质量的感知。用户可编程阈值的多个级可以用于控制QP。第1级QP可以基于该块与帧的四分位数的其余部分的相对失真。每个四分位数在QP或ΔQP(增量QP)方面可具有其自己的变化。第2级QP可以基于模式特定信息,比如帧内预测模式类型或用于帧间预测的运动向量长度。第3级QP可以基于兴趣地图中的用户指定的区域,该兴趣地图具有关联的ΔQP的多个级别。每个增量可以在与sliceQP(切片QP)组合之前和之后在必要时进行组合和夹紧。
在整数QP值产生显著超过目标比特预算的帧并且一个QP更高的整数值产生显著未达到目标比特预算的帧的情况下,可使用两个最接近的整数QP值之间的分数精度QP,并且可以在整个帧中按比例指派较低和较高的整数QP值,使得整个帧的CU QP的平均值允许更精确的结果,这些更精确的结果以较少的过冲和下冲量满足目标比特预算。
在一些示例中,量化参数是这样的值,该值用于划分当前帧的系数以便获得目标帧大小的值。较高的量化参数可导致更多不必被编码的零系数,以质量为代价来降低比特率。因此,可以以使得每帧的比特数与目标视频流的编码格式的比特率相称的方式来确定帧的大小。在一些情况下,在比特率控制已被应用于每个帧之后,编码器可以再次执行运动估计,以确定帧的更精细的运动向量和CU类型。在一些示例中,附加的第四级可以基于运动长度来进行每编码单元的调整。例如,运动可被分类为静态运动、低运动或高运动。因为与具有高运动的物体相比,人类视觉系统对静态物体上的伪像可能更敏感,因此可以分别在静态运动或低运动的区域中减小QP并在高运动的区域中增加QP,以相应地使细节模糊和增强编码。
图1的图示不是旨在表明示例系统100将包括图1所示的所有组件。而是,可以使用更少的组件或未在图1中示出的附加组件(例如,附加的运动估计器、反馈回路、微控制器、遍等)来实现示例系统100。例如,VDENC++还可包括用于FTQ的单独模块,和与HEVC CRE 118分开的最终决策模块(未示出)以做出关于单元的最终决策。
图2是示出用于使用两级帧内搜索的硬件视频编码的示例管线的框图。可以使用下面的图4至图6的方法400-600在上面图1的系统100中或在图7中的以下电子设备700中实现示例管线200。管线200包括多个级,包括分层运动估计(HME)搜索级202、整数运动估计(IME)搜索级204、检查和细化引擎(CRE)/速率失真优化(RDO)级206、以及硬件比特打包(PAK)级208。例如,HME搜索级202可以经由视频编码器AVC VDENC 110来实现,IME搜索级204可以经由HEVC IME 116来实现,CRE/RDO级206可以经由HEVC CRE 118来实现,并且PAK级208可以经由以上图1的HEVC/VP9 PAK 112来实现。PAK级208的输出可以是参考像素210和比特流212。此外,图2包括被示出为在HME 202、IME 204、CRE/RDO 206、PAK 208处接收的一组源像素214。管线200包括通信地耦合到CRE/RDO 206的存储器216。管线200还包括通信地耦合到IME 204的HEVC帧内第一级120。管线200还包括通信地耦合到CRE/RDO 206和PAK208的HEVC帧内第二级122。
可以执行分层运动估计(HME)搜索202以获得多个参考。在各种示例中,可以对每个后续帧执行HME 202,从而确定每个帧的运动向量。HME搜索202涉及对每个帧的运动向量执行粗搜索,以基于前一帧为该帧内的每个CU确定估计的运动向量。例如,当分析第一I帧时,因为不存在前一帧,因此可以不执行HME搜索。此时,源像素214可被缩减,使得当下一帧被编码时,下采样的像素220可以成为与源216进行比较以进行运动估计的参考。因此,可以从第三帧向前使用参考220。因此,源像素216可以由HME 202在内部进行下采样,并且如反馈回路220所指示被写入和读回,以在未来用作下采样参考。可以通过以更精细的粒度水平执行附加搜索来细化初始估计的运动向量。例如,可以以从粗粒度水平到细粒度水平的各种分辨率来搜索CU,以便确定运动向量。其他HME搜索技术可包括但不限于在搜索运动向量时改变CU的大小。
在各种示例中,可以将比特率控制应用于每个帧,以便创建满足目标视频流的编码格式的帧大小的帧。例如,各种视频压缩格式对视频流使用规定的比特率,并且比特率是在播放视频时存在的每秒的比特数。在一些示例中,可以通过确定使帧达到目标帧大小的理想量化参数来执行比特率控制。
在一些示例中,HME搜索级202可以将全分辨率CU作为输入并且将分辨率按比例缩小至四分之一、八分之一或更高分之一的分辨率。然后,可以用按比例缩小的分辨率执行HME运动估计。例如,输入CU的全分辨率可以是64×64像素,并且按比例缩小的分辨率可以是32×32、16×16和8×8像素。这产生当与以全分辨率执行HME搜索202(这可以是非常功率性能密集的)相比时的性能优势。在一些示例中,可以使用两个参考来执行HME搜索202。例如,两个参考可以是紧接在当前帧之前的两个帧。在其他实施例中,两个参考可以是前一帧和长期参考帧。如本文所使用的,长期参考帧是在前预定数量个帧内被处理的高质量编码帧。例如,长期参考可以是自前100帧起的以非常好的质量的编码的帧。在一些示例中,可以为了运动估计而考虑预定数量的候选。例如,可以将候选的数量设置为十六个候选。在一些示例中,HME搜索202可包括两级。例如,第一HME级可以比第二HME级更加按比例缩小。第二HME级可以从第一HME级接收预测指标。以这种方式,可以增加级的数量以减少由于使用更少级的更大缩小比例而导致的丢失细节。HME搜索202的输出可以是HME预测指标222。例如,HME预测指标222可以是一对降低精度的运动向量。如从下采样的源像素216分析的,HME预测指标222可以是关于在哪里搜索匹配的良好猜测。
整数运动估计器(IME)204可以使用HME预测指标222、源像素224以及来自PAK 208的参考像素244来执行全搜索。例如,IME 204可以使用在双重HME搜索202期间找到的降低精度的运动向量来获得精确的运动向量。IME 204可以将从源像素214叙述的当前帧的编码单元的各种块大小的所有值与来自参考像素244的参考图像帧的搜索区域中的整数像素的值进行比较。
在一些示例中,IME 204可以使用多达12个40×40搜索窗口或预测指标。例如,IME204可以基于性能模式使用四个预测指标或任何其他数量的预测指标。例如,较高性能模式可选择两个空间邻居和两个HME预测指标,而正常性能模式可能能够包括四个或更多个附加的预测指标候选。
检查和细化引擎(CRE)206可以使用嵌套循环将CU分割为像素编码单元。例如,分割可以基于从IME 204接收到的CU记录226。CU记录是诸如16×16CU之类的CU内的每单个形状的枚举。另外,某一CU可以分成在CU内是更细粒度的多个预测单元(PU)或变换单元(TU)。各种编码标准具有可供选择的多个块大小,比如16×16、8×8、4×4等。在IME搜索204期间,在第一全搜索中找到的候选中的一些可以与来自第二全搜索的其他候选进行组合。CU记录保持跟踪CU的形状,并且根据找到的运动向量,可以经由分割来组合一些CU。当确定整数运动估计的组合以用于生成要被变换和评分以进行比较的残差时,CRE 206可使用MB记录。如本文所使用的,残差指的是预测值与来自源缓冲区的像素或来自PAK的重构像素的值之间的差异。
如从CRE 206到IME 204的反馈回路所指示,CRE 206可以将邻居预测指标234提供给IME 204。邻居预测指标234可以是关于在给定在前的邻居发现什么是良好匹配的情况下去哪里搜索匹配的良好猜测。例如,邻居预测指标234可包括成本中心和搜索中心。例如,成本中心可以基于编解码器内的高级运动向量预测(AMVP)和合并列表。成本中心可表示与解码器将通过先前解码的邻居运动向量的某种组合来在当前块的运动向量中预测的内容最紧密匹配的位置,因为当前块228的运动向量可以与预测的运动向量区别地进行编码。例如,如果预测的运动向量是(10,-5),则(10,-5)可被标记为对如下运动向量的搜索的中心,该运动向量具有最佳匹配并且接近该中心。例如,如果(11,-5)是最佳匹配,则编码器可以在比特流中发送(1,0),以供解码器添加到预测的向量(10,-5),而得到正确的位置(11,-5)。
如箭头230所示,CRE 206将模式决策发送到PAK 208。在一些示例中,如另一箭头236所示,模式决策可以存储在存储器216中。
PAK级208将与根据模式决策编码的源像素232相对应的比特打包为数据格式。在一些示例中,数据根据递归视频标准进行格式化。递归视频标准可包括但不限于HEVC、VP9等。在各种示例中,基于从CRE 206接收到的编码器模式选择,将结果二进制化为不同的视频格式。如箭头238和240所示,PAK级208的结果可包括参考像素210和比特流212,它们可以通过遵循视频标准而被精确且独特地解码。编码器模式选择可产生多个模式决策。本文所使用的模式决策指的是编码器如何表示每个CU。编码器模式选择可被设置为用最高量的质量对最少数量的比特进行编码。在一些示例中,PAK 208可被设置为以64×64的粒度进行编码。例如,在可以由单个比特来表示64×64的块的情况下,则64×64的粒度将比32×32的粒度(其将需要至少四个比特)更高效。在一些示例中,PAK 208可被设置为以32×32的粒度进行编码。另一方面,PAK 208可以被设置为以32×32的粒度运行,以减少PAK 208生成统计信息所花费的时间。在一些示例中,如反馈回路242所示,这样的统计信息可被从PAK 208发送到CRE 206并用于改善CRE 206处的预测。例如,统计信息可用于切片大小一致性特征,以预测当前切片何时将被关闭以及另一切片何时开始以使切片大小对齐到网络分组。在一些示例中,PAK 208可具有精确的比特流大小计数器,而系统200的其余部分可使用近似的比特流计数器。与每个64×64CU获得一次反馈相比,每个64×64CU获得四次反馈可以实现更精确的切片大小终止。在一些示例中,如反馈回路244所指示,参考像素210也可被提供给IME级204。例如,IME级204可以将后一帧与参考像素210进行比较以在参考像素210中找到合适的块。因此,IME级204可以使用参考像素210来执行如本文描述的运动估计。
在一些示例中,IME搜索204在管线200中被解耦,以在执行合并、帧间(FME)和帧内检查的RDE回路之前运行一个32×32块。尽管帧内搜索可以稍后在管线中被执行,但是它被分为两个单独的级以实现帧内重构反馈。这两个级包括称为HEVC帧内第一级120的开环帧内搜索,然后是称为HEVC帧内第二级122的精确帧内预测和重构。HEVC帧内第一级120的开环帧内搜索完全基于源像素,从而允许HEVC帧内第一级120在精度有一些损失的情况下在管线200中更早地运行。在一些示例中,为了补偿该精度的损失,可以针对每个帧内CU大小通过精确的速率失真估计(RDE)管线来发送在开环搜索期间被识别为最佳选项的多个候选。例如,对于全精度帧内RDO,可以选择35种中的三种最佳的开环模式。
在各种示例中,帧内RDE逻辑可具有增强的帧内TU决策逻辑,其在每个TU边界处使用重构的像素。在一些示例中,还可包括帧内4×4性能优化。例如,可以通过在8×8块内禁用4×4_1的左角(右上)和4×4_2的顶角(左下)来实现4×4性能优化,并且对于CU 8×8仍然支持PU 4×4预测。该4×4性能优化可以要么实现更快的性能,要么实现更高的质量和更低的性能。在一些示例中,管线200还可包括利用CU大小和TU深度在RDE管线中进行的帧内候选排序,以减少由于重构像素依赖性而引起的时延。在各种示例中,可以总是在TU边界处但是以仔细选择的依赖性限制生成重构的像素。例如,依赖性限制可以取决于管线200的性能与质量模式之间的关系。作为一个示例,如果16×16CU中的第二8×8TU块正在使用水平预测,则第二8×8TU块可以等待,直到第一8×8TU块已经准备好其最终的重构像素为止,但如果第二8×8TU块正在使用垂直预测则不是如此。因此,在各种示例中,一些块可具有可用于使并发处理加速的角度的不同子集。在一些示例中,在更高质量的模式下,可能未设置该依赖性限制。在这些示例中,所有块可以在处理之前等待其邻居完成,并且允许选择所有角度以提高预测精度。
在各种示例中,为了降低TU 4×4管线的时延,可以在管线200中包括专用的变换单元(未示出)以减少反馈路径延迟。例如,该专用的变换单元可包括正向变换和反向变换。在一些示例中,可以基于块索引来限制对PU 4×4的内角支持,以确保一些块可以背靠背行进,从而提高整体4×4检查性能。例如,块索引可以是从左到右并从上到下编号的如下索引编号的顺序z模式:0、1、2、3。在一些示例中,可以限制较大LCU内的RDE中的4×4TU的数量,以确保关键性能时间线得到满足。例如,在一些情况下,对于太多的4×4TU,诸如PAK 208之类的更下游的单元可能经历性能问题。因此,试探法可被包括在管线200中以确保对于每个32×32块仅检查有限数量的4×4。以这种方式,HEVC VDENC管线200将始终在相应模式的分配时间预算内。
在各种示例中,可以在来自HEVC帧内第一级120以及在CU内的识别出的PU候选之间交织帧内候选排序。例如,HEVC帧内第二级122交织更小的TU以最高效地使用硬件计算来隐藏反馈延迟,因为可以为了最大质量而在每个TU边界处执行重构,但是该重构也可能引入显著的时延。
在各种示例中,如箭头250所示,PAK 208可以将箭头248所示的重构像素246提供给HEVC帧内第二级122。例如,来自PAK 208的未滤波的重构像素的反馈可被包括在系统200中。在各种示例中,HEVC帧内第二级122还接收源像素214。例如,所有帧内级都可以接收内部的源像素。边缘像素将是原始源像素,完全重构的像素,或这两者的某种组合。例如,左边缘可以是原始的,而顶边缘可以被重构。但是,无论是哪种情况,内部像素都是正被编码的源块。如箭头252所示,HEVC帧内第二级122还可以基于重构像素246、源像素214或两者来生成块向量候选。HEVC帧内第一/第二级120/122可以基于源像素214生成块向量候选,并将这些块向量候选发送到IME级204,以包括在上述IME搜索中。这些候选可能是在源像素214与重构像素246之间具有最低预测误差的块向量候选。例如,HEVC帧内第一/第二级120/122可以使用图5的方法500来生成块向量候选。
在一些示例中,PAK 208还可以仅执行PAK多遍,而无需针对小帧QP变化执行运动估计和模式决策。例如,如果需要多遍以通过比特率控制(BRC)算法实现期望的帧大小,则可以为第二遍提供两个选项。在第一选项中,PAK 208可以用新的QP基于更新后的成本计算来重做整个编码。在第二选项中,PAK 208可以绕过编码,并且仅使用PAK 208硬件、以修改后的QP来重放来自第一遍的模式决策。例如,如箭头236所示,PAK 208可以检索保存到存储器216的模式决策。第二选项可节省功率和时间。在一些示例中,可以基于帧QP变化的阈值水平来选择第一或第二选项。例如,响应于检测到小于第一阈值且高于第二阈值的帧QP变化,PAK可以执行仅PAK多遍。因此,可以绕过HME 202、IME 204和CRE206,并且可以节省计算资源以少量地增加精度。
图2的图不是旨在表明示例管线200将包括图2中所示的所有组件。而是,可以使用更少的组件或未在图2中示出的附加组件(例如,附加的级、反馈回路等)来实现示例管线200。
图3是示出用于使用统一的多编解码器速率失真估计来对视频进行编码的示例系统的框图。可以在下面的图7的电子设备700中实现示例系统300。例如,可以使用电子设备700的编码器728和微控制器752来实现系统100。
图3的系统300包括VDENC速率失真估计(RDE)前端(FE)302,其被示出为接收残差304和状态306。VDENC RDE FE 302包括状态控制双缓冲区308以接收状态306。VDENC RDEFE 302还包括残差存储双缓冲区310,以接收和存储残差304。VDENC RDE FE 302还包括第一级水平正向变换(HFT Stg 1)312,其通信地耦合到残差存储双缓冲区310。VDENC RDE FE302还包括FT Stg 1缓冲区314,以接收和临时存储来自HFT Stg 1 312的变换后的残差。VDENC RDE FE 302还包括第二级垂直正向变换(VFT Stg2)316,其通信地耦合到HFT Stg 1缓冲区314。VDENC RDE FE 302还包括VFT Stg 2缓冲区318,其通信地耦合到VFT Stg 2316。VDENC RDE FE 302还包括状态(BCE)双缓冲区320,其通信地耦合到状态控制双缓冲区308。VDENC RDE FE 302还包括前向量化(FQ)322,其通信地耦合到VFT Stg 2缓冲区318。VDENC RDE FE 302还包括扫描器324,其通信地耦合到FQ 322。VDENC RDE FE 302还包括比特成本计算器326和逆量化(IQ)328,比特成本计算器326和逆量化(IQ)328通信地耦合到扫描器324。VDENC RDE FE 302包括平方误差和(SSE)计算器330,其通信地耦合到IQ 328。VDENC RDE FE 302包括逆垂直变换(IVT)输入缓冲区332,其通信地耦合到SSE计算器330。VDENC RDE FE 302还包括IVT第一级(Stg1)334,其通信地耦合到IVT输入缓冲区332。VDENCRDE FE 302还包括IVT Stg1缓冲区336,其通信地耦合到IVT Stg1 334。VDENC RDE FE 302还包括反水平变换(IHT)第二级(Stg2)338,其通信地耦合到IVT Stg1缓冲区336。VDENCRDE FE 302还包括IT输出缓冲区340,其通信地耦合到IHT Stg2338。VDENC RDE FE 302还包括状态(IT)双缓冲区342,其通信地耦合到状态控制双缓冲区308。系统300进一步包括状态接口344、比特成本接口346、误差接口348、以及重构像素接口350。系统300还进一步包括多个编解码器查找表(LUT),包括编解码器LUT1 352A、编解码器LUT2 352B和编解码器LUT3352C。例如,编解码器LUT1 352A、编解码器LUT2 352B、和编解码器LUT3 352C可各自包括用于特定编解码器的语法结构和变换系数。
在示例系统300中,VDENC RDE FE 302接收残差304和状态306,并为每个CU的一个或多个候选计算RDE成本,并处理HEVC规范支持的所有CU大小。例如,CU大小可包括64×64、32×32、16×16和8×8。在各种示例中,VDENC RDE FE 302包括多个子管道。例如,VDENCRDE FE 302包括正向变换(FT)管道,包括HFT Stg1 312、HFT Stg 1缓冲区314、VFT Stg 2316和VFT Stg 2缓冲区318。VDENC RDE FE 302还包括逆变换(IT)管道。IT管道包括反垂直变换(IVT)输入缓冲区332、IVT Stg1 334、IVT Stg1缓冲区336、IHT Stg2 338、IT输出缓冲区340、以及状态(IT)双缓冲区342。VDENC RDE FE 302还包括比特成本估计(BCE)管道。BCE管道包括状态(BCE)双缓冲区320、FQ 322、扫描器324、以及比特成本计算器326。VDENC RDEFE 302还包括误差估计(EE)管道。EE管道包括IQ 328和SSE计算器330。VDENC RDE FE 302包括状态接口344、比特成本接口346、误差接口348、以及重构像素350。
仍参考图3,RDE FE(302)接收每个CU的一个或多个候选中的每一个的残差数据304。例如,残差数据304可以是原始像素与参考像素之间的差异,或者说original_pi×el–reference_pi×el。RDE FE(302)还接收指示诸如大小、变换深度、帧内模式、帧间运动向量(MV)等的CU参数的对应状态数据306。在各种示例中,为了维持硬件管线吞吐量(throughput),状态306和残差304数据输入都被存储在RDE FE内部的双缓冲区中,使得当正在从一个缓冲区处理当前CU候选时,另一个缓冲区继续接受下一个CU候选的数据。例如,状态控制双缓冲区308可存储状态数据306,并且残差存储双缓冲区310可存储残差数据304。
在各种示例中,来自残差缓冲区310的残差数据304被馈送到由HFT Stg1 312和HFT暂存缓冲区314组成的两级正向变换(FT)管道中,以临时接收和存储来自HFT Stg1 312的中间变换后的残差。第二级由VFT Stg2 316和VFT暂存缓冲区318组成。两级FT管道以及对应的缓冲区314和318可被定制为支持基于变换大小的可变吞吐量。例如,可以实现两级FT管道,使得乘法器被重新使用,并且只有常数被基于变换大小以不同的方式选择。在各种示例中,存储结构被配置为促进对将基于变换大小而异的中间变换后的残差数据的访问。
在各种示例中,来自VFT分级缓冲区(318)的数据被馈送到比特成本估计管道的FQ322并且还被馈送到误差估计管道的SSE 330。来自输入状态缓冲区308的状态数据306也被馈送到状态(BCE)管道中的BCE双缓冲区320和状态(IT)管道中的IT双缓冲区342。在各种示例中,状态数据306与在子管道中处理的系数和残差数据304同步。残差是源块与预测之间的增量。增量可表示源块与预测之间的误差或错误预测。残差被发送到正向变换中,正向变换将空间域像素残差转换到频域中。例如,频域可以由交流(AC)\直流(DC)系数幅度表示。在各种示例中,然后可以通过FQ 322处的正量化来减小这些幅度。IT管道的IQ 328然后可以在空间域中重新生成残差,但是因为量化步骤是有损过程,所以可能发生损失。残差和系数因此通过FT\IT过程链接起来。
在一些示例中,BCE管道中的FQ 322包括并行运行的任意数量的量化器,以为最快的变换大小维持像素吞吐量。例如,最快的变换大小可以是变换T 8×8和T 4×4。该输出被馈送到定制的扫描器324,该扫描器用于以每个4×4块为基础识别非零系数(NZC)的数量。可以实现对每个4×4块的非零系数的数量的识别,从而保持每个时钟16个像素的吞吐量,这相当于用于包括T 8×8和T 4×4在内的较小变换的其他子管道。来自扫描器324的扫描输出被馈送到比特成本计算器326,比特成本计算器326基于系数自身的值来累积每个非零系数的成本,并且还为4×4块内的零系数的数量添加额外成本。比特成本计算器326的输出被馈送到RDE FE 300的比特成本接口346。
在各种示例中,EE管道中的IQ 328对通过扫描器324发送的来自FQ322的FQ系数执行逆量化。IQ 328输出被馈送到SSE 330,并且还被馈送到IT管道的输入缓冲区332。SSE330通过计算来自VFT Stg2缓冲区318的量化前输出和来自IQ 328的量化后输出的系数的平方误差和,来计算在量化期间引入的误差。SSE 330的输出被馈送到RDE FE 300的误差接口348。
IT管道是包括IVT级1 334和IHT级2 338的两级变换管道。IVT Stg1 334的输出被存储在中间变换系数缓冲区IVT stg1缓冲区336中。在各种示例中,IHT Stg2 338被定制为仅为每个CU累积右边界重构像素和下边界重构像素,这是因为只有CU中的那些重构像素被随后的相邻CU用于参考像素生成。在一些示例中,IHT Stg3 338的输出被馈送到IT输出缓冲区340,IT输出缓冲区340被优化为仅存储右边界像素和下边界像素。IT管道缓冲区340的输出被馈送到RDE FE 300的重构像素接口350。
来自BCE管道块320的状态数据通信地耦合到RDE FE 302的状态接口344。在各种示例中,该状态数据与在比特成本接口346处接收的来自BCE管道的比特成本数据和在误差接口348处从EE管道接收的误差数据同步。
因此,可以仅在系数常数矩阵中具有变化的情况下在编解码器之间共享DCT计算逻辑,以支持诸如AVC和HEVC之类的多个编解码器。具体而言,可以使用系数常数查找表(未示出)在多个编解码器之间共享昂贵的乘法单元。例如,可以使用通用矩阵乘法,其中可以对编解码器特定的变换系数进行调制,以更好地按编解码器进行优化。
在一些示例中,可以使用针对水平变换(HT)和垂直变换(VT)使用同一组乘法器的可变变换吞吐量逻辑,以使得更小的TU得到更高的加速。例如,32×32TU可以以每个时钟4个像素(PPC)运行,16×16TU可以以8PPC运行,8×8TU可以以16PPC运行,并且4×4TU可以以32PPC运行。
某些逻辑可能是不太特定于编解码器的,并且可以被更容易地共享。这样的逻辑可包括位于正向量化器FQ 322和逆量化器IQ 328内部的量化器和缩放矩阵元素。在一些示例中,可将共享的缩放矩阵实现为只读存储器(ROM)表,并且可以基于编解码器来选择不同的矩阵值。例如,这些矩阵值可被在FQ 322和IQ 328的乘法器元件中使用。因此,可以在VDENC RDE FE 302中共享该逻辑。但是,一些编解码器特定的语法和系数比特成本估算器(例如图3中的比特成本计算器326)在其查找表中可具有差异,并且可以通过更精确的速率估计来提供提高的质量。因此,在各种示例中,这些元素在VDENC RDE FE 302中可保持分离。
图3示出了统一RDE逻辑的各级,其中通过对各种常数使用编解码器特定的查找表来在编解码器之间共享共同计算元件。例如,在图3中,通过HFT Stg1 312、HVT Stg2 316、IVT Stg1 334和IHT Stg2 338来支持四种变换大小。这四种变换大小包括32×32、16×16、8×8和4×4变换大小。对于每种变换大小,常数可以基于编解码器而异。例如,可以如在各种编解码器LUT 352A-352C中一样在HFT Stg1 312和VFT Stg2 318中以硬件实现编解码器,但是乘法器元件本身可被在所有编解码器之间共享。共同计算元件的另一个示例是SSE330。例如,对于HEVC在频域中计算误差平方和,并且对于AVC在像素域中计算误差平方和。然而,在两种情况下,所使用的计算元件都是共享的。例如,计算元件可包括加法器和乘法器。
图3的图示不旨在表明示例系统300将包括图3中示出的所有组件。而是,可以使用更少的组件或未在图3中示出的附加组件(例如,附加的级、缓冲区等)来实现示例系统300。
图4是用于使用两级帧内搜索对视频进行编码的示例方法的过程流程图。可以在系统100或管线200或电子设备700中实现方法400。
在块402处,对两个接收到的视频帧执行分层运动估计搜索。在一些示例中,使用缩减的参考来执行该分层运动估计搜索。例如,每个视频帧的每个最大编码单元(LCU)(64×64)可以缩减为8×8块,并以1/8分辨率进行搜索。然后可以将结果提供给1/4分辨率搜索级。最后,可以为用于64×64LCU的每个32×32CU的1倍分辨率IME生成候选的列表。这可以作为64×64来完成,以确保8倍下采样后的8×8大到足以具有足够的特征来跟踪小到中等大小的对象,而不是使用按8倍缩减的32×32并搜索4×4匹配。1倍IME候选的列表可包括空间邻居,HME得到的预测指标,时间预测指标,以及用户提供的预测指标。在一些示例中,IME所使用的预测指标的数量可以基于性能模式。例如,在高性能模式下,IME可以从一组预测指标中选择12个预测指标。在较低性能模式下,IME可以仅使用四个预测指标。在一些示例中,可以基于预定义的排名列表对预测指标进行排序,该排名列表为每个预测指标指派了优先级编号。例如,如果使用预测指标的子集,则可以基于优先级编号选择较高优先级的预测指标。在一些示例中,可以使用搜索中心距离参数来检测冗余的预测指标,该搜索中心距离参数可以用于分析预测指标之间的重叠。如果预测指标相对于已经用于搜索的预测指标是冗余的,则冗余的预测指标可被丢弃,并且具有下一更高优先级编号的预测指标可被使用。在一些示例中,用于确定冗余的重叠量可以是可编程的阈值。
在块404处,基于分层运动估计搜索的结果以及空间邻居和时间邻居来执行整数运动估计(IME)搜索。可以执行该搜索以识别将获胜的候选。在一些示例中,该搜索还可以是针对将对其进行进一步搜索以找到最终候选的预测指标。在一些示例中,IME搜索可包括空间和时间邻居预测指标的使用。32×32IME的结果可以是将32×32细分为各种编码单元(CU)和预测单元(PU)组合的49个正方形和矩形形状的列表。在各种示例中,这些结果可能经历部分和双向改进。
在块406处,基于源像素来执行帧内第一级。例如,基于相邻块的源像素来执行帧内第一级。在各种示例中,帧内预测的过程对最接近的邻居块具有强依赖性。具体而言,帧内预测可以取决于解码器生成的像素,因为那些是用于对当前块进行解码的像素。在一些示例中,当前块的帧内搜索包括基于邻居重构的像素针对多个不同的角度模式和非角度模式执行帧内预测。在编码期间,在发生最终模式决策之前可能不知道重构的邻居像素,这引入短反馈回路,短反馈回路限制了编码器的性能。通过在第一级帧内搜索中将重构的邻居像素替换为相邻块的源像素,可以以合理的精度完成将角度和非角度帧内预测的数量减少到更小子集的过程。因此可以在基于邻居重构的像素的短反馈回路级之前准备候选帧内模式的该更小列表,从而允许其在RDO反馈回路内在第二级帧内搜索中的有限时间预算内专注于更有可能是良好最终选择的候选。在各种示例中,如果放松时间约束,则在块408处在第二级中可以考虑更多的候选,多达并包括在第一级中考虑的所有候选。此外,因为帧内第一级是用于获得候选的试探法,因此帧内第一级可具有与帧内第二级不同的角度和非角度帧内预测逻辑等式。因此,在一些示例中,可以用一个编解码器标准中的角度的超集来执行帧内第一级,然后帧内第二级可以使用适用于当前源块正被压缩到的编解码器标准的角度的子集。
在块408处,基于重构的邻居块来执行帧内第二级以生成残差。还可以使用嵌套循环来执行检查和细化以生成残差。例如,可以基于至少一个空间域预测和至少一个频域预测来生成残差。CRE嵌套循环可以以自下而上的如下方式处理CU:首先解析每个8×8,然后比较4×8×8与1×16×16,然后比较4×16×16与1×32×32,最后比较4×32×32与1×64×64,如上面关于图3更详细描述的。在一些示例中,每个嵌套循环可以是直到所描述的级别和下面的级别的多个深度的CU树。例如,如果4×8×8具有比1×16×16更低的RDO成本,则对于与4×16×16分组的更大比较,该4×8×8将被看作1×16×16。在一些示例中,合并渐缩可用于附加的候选生成。例如,在执行给定CU级别的跳过(合并)处理时,可以保存部分结果并将其重新用作更低级别的CU帧间候选。这些更低级别的CU帧间候选然后可被AMVP编码而不是被合并编码。在一些示例中,基于LCU的邻居重构可用于提高的性能。例如,由于64×64LCU内的32×32Z模式遍历,因此可以重构顶行和左LCU边缘的像素并从PAK反馈它们,以提供更准确的帧内预测,而不显著影响硬件复杂性。
在块410处,为所生成的残差中的每一个计算速率失真优化(RDO)成本,以及执行模式决策。例如,可以针对直到编码单元的大小的变换单元大小执行模式决策。例如,所生成的残差中的每一个可以经由离散余弦变换而被变换到频域中,然后被量化。
在一些示例中,CRE可以基于运动长度进行按照CU QP的调整。例如,运动可以分类为静态、低运动和高运动。在一些示例中,可以包括附加的运动长度级以提供附加的增量QP调整。例如,与具有高运动的物体相比,人类视觉系统对静态物体上的伪像可能更敏感。因此,可以在PAK MB对象中减少和增加QP,以分别使细节模糊和增强细节。以这种方式,可以在人类视觉系统可能较不敏感的区域中节省附加的比特。
在块412处,可以比较所生成的残差的RDO成本以基于具有较低RDO成本的残差来生成最大编码单元(LCU),以及执行最终模式决策。例如,虽然IME和CRE可以将绝对变换失真的总和(SATD)用于决策标准,但是最终模式决策可以基于重构块的平方误差(SSE)的RDO估计的总和(失真)以及估计的比特成本,该估计的比特成本基于非零系数的数量、其大小及其频率。然后可以将所生成的LCU发送到PAK,以用于基于所生成的LCU在PAK处对视频帧的32×32或64×64部分进行编码。
在块414处,将LCU发送到PAK以生成重构的像素和比特流。LCU可以对应于要被重构和在本地存储的图像的一部分。IME可以在下一帧的编码期间使用重构的图像。例如,IME可以对重构的像素执行运动估计。比特流可以被发送到显示设备。
该过程流程图不旨在表明将以任何特定顺序执行示例方法400的各块,或表明在每种情况下都将包括所有这些块。另外,取决于具体实现方式的细节,示例方法400内可包括未示出的任何数量的附加块。
图5是用于执行两级帧内搜索的示例方法的过程流程图。可以在上面的系统100或下面的电子设备700中实现方法500。
在块502处,接收要编码的输入像素。例如,输入像素可以是视频的帧的。
在块504处,执行帧内搜索第一级以生成帧内候选。在一些示例中,可以使用来自相邻块的源像素。在各种示例中,可以使用与在执行帧内搜索第二级时所使用的编解码器不同的编解码器的预测类型。
在块506处,接收重构的像素。例如,重构的像素可以与帧内候选相关联并被从速率失真估计单元接收。
在块508处,使用重构的像素来执行帧内搜索第二级以生成最终的帧内候选。在一些示例中,可以使用相邻块的部分重构的像素或相邻块的完全重构的像素。可以使用更加细粒度的分析来选择最终的帧内候选。例如,在帧内搜索第一级试图识别哪个角度预测具有最小误差的情况下,帧内搜索第一级可能未捕获该角度的编码成本(语法开销)或解码器所使用的实际相邻像素。因此,帧内搜索第二级可以通过使用精确的邻居像素并估计与包括量化系数编码成本的实际成本更接近的编码成本来解决这两者。
该过程流程图不旨在表明将以任何特定顺序执行示例方法500的各块,或表明在每种情况下都将包括所有块。另外,取决于具体实现方式的细节,示例方法500内可包括未示出的任何数量的附加块。例如,方法500可包括限制要在帧内搜索第一级或帧内搜索第二级中搜索的4×4块的数量。在一些示例中,方法500可包括基于块索引来限制对4×4预测单元的内角支持。在各种示例中,方法500还可包括在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织更小的变换单元。
图6是用于使用统一速率失真估计来执行矩阵乘法的示例方法的过程流程图。可以在上面的系统100或下面的电子设备700中实现方法600。
在块602处,检测正在用于对像素进行编码的编解码器。例如,编解码器可以是AVC编解码器、HEVC编解码器、或任何其他兼容的编解码器。
在块604处,基于检测到的编解码器在查找表中查找变换系数。在一些示例中,可以基于检测到的编解码器在查找表中查找语法结构。
在块606处,基于检测到的编解码器的变换系数,执行矩阵乘法以进行速率失真估计。在一些示例中,可以使用统一的多编解码器单元来执行其他运算。例如,使用两个输入乘法器元件的阵列或加法器阵列以及累加器,可以跨不同的编解码器执行2D DCT变换。在一些示例中,LUT可以将输入之一提供给乘法器/加法器阵列,并且另一输入可以是残差(source_pi×el–reference_pi×el)输入。
该过程流程图不旨在表明将以任何特定顺序执行示例方法600的各块,或表明在每种情况下都将包括所有块。另外,取决于具体实现方式的细节,示例方法600内可包括未示出的任何数量的附加块。
图7是实现具有两级帧内搜索的硬件视频编码的电子设备700的框图。电子设备700可以例如是服务器、膝上型计算机、平板计算机、移动电话、智能电话或可穿戴设备、无人机等。电子设备700可包括被配置为执行所存储的指令的中央处理单元(CPU)702,以及存储可由CPU 702执行的指令的存储器设备704。CPU可以通过总线706耦合到存储器设备704。此外,CPU 702可以是单核处理器、多核处理器、计算群集或任何数量的其他配置。另外,电子设备700可包括多于一个CPU 702。存储器设备704可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存或任何其他合适的存储器系统。例如,存储器设备704可包括动态随机存取存储器(DRAM)。
电子设备700还包括图形处理单元(GPU)708。如图所示,CPU 702可以通过总线706耦合到GPU 708。GPU 708可以被配置为在电子设备700中执行任何数量的图形操作。例如,GPU 708可以被配置为渲染或操纵要向电子设备700的用户显示的图形图像、图形帧、视频等。在一些实施例中,GPU 708包括多个图形引擎,其中每个图形引擎被配置为执行特定的图形任务或执行特定类型的工作负载。例如,GPU 708可包括经由无损像素压缩来处理视频数据的引擎。
CPU 702可以通过总线706链接到显示接口710,显示接口710被配置为将电子设备700连接到多个显示设备712。显示设备712可以包括作为电子设备700的内置组件的显示屏。显示设备712还可以包括在外部连接到电子设备700的计算机监视器、电视或投影仪等。
CPU 702还可以通过总线706连接到输入/输出(I/O)设备接口714,该接口被配置为将电子设备700连接到一个或多个I/O设备716。I/O设备716可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等。I/O设备716可以是电子设备700的内置组件,或者可以是在外部连接到电子设备700的设备。
电子设备700还可包括存储设备718。存储设备718是诸如硬盘驱动器、光盘驱动器、闪存驱动器、驱动器阵列或其任意组合之类的物理存储器。存储设备718可以存储用户数据,例如音频文件、视频文件、音频/视频文件和图片文件等。存储设备718还可以存储诸如设备驱动程序、软件应用程序、操作系统之类的编程代码。存储到存储设备718的编程代码可以由CPU 702、GPU 708或电子设备700中所可以包括的任何其他处理器执行。
CPU 702可以通过总线706链接到蜂窝硬件720。蜂窝硬件720可以是任何蜂窝技术,例如,4G标准(国际电信联盟–无线电通信部门(ITU-R)所发布的高级国际移动通信(IMT-Advanced)标准)。以这种方式,电子设备700可以在不被栓系或配对到另一设备的情况下访问任何网络722,其中网络722是蜂窝网络。
CPU 702还可以通过总线706链接到WiFi硬件724。WiFi硬件是根据WiFi标准(作为电气和电子工程师协会(IEEE)802.11标准发布的标准)的硬件。WiFi硬件724使电子设备700能够使用传输控制协议和因特网协议(TCP/IP)连接到因特网,其中网络722是因特网。因此,电子设备700可以在不使用另一设备的情况下通过根据TCP/IP协议对数据进行寻址、路由、发送和接收来实现与因特网的端到端连通性。此外,蓝牙接口726可以通过总线706耦合到CPU 702。蓝牙接口726是根据蓝牙网络(基于由蓝牙特别兴趣小组发布的蓝牙标准)的接口。蓝牙接口726使电子设备700能够通过个人局域网(PAN)与其他具有蓝牙功能的设备配对。因此,网络722可以是PAN。具有蓝牙功能的设备的示例包括膝上型计算机、台式计算机、超极本、平板计算机、移动设备或服务器等。
电子设备700可包括编码器728。编码器728可以是没有在编码器算法的主循环内执行的可编程引擎的硬件编码器。在实施例中,这可被称为固定功能编码。通常,对视频数据进行编码包括对视频进行编码以满足用于记录和回放的适当格式和规范。运动估计器730可以是由编码器728的固定功能硬件执行的算法。运动估计是视频编码和视频压缩中的重要且计算密集的任务。在一些示例中,运动估计器730可包括HME 732、AVC IME 734和HEVC IME 736。例如,HME 732可以执行如上所述的更粗粒度的搜索。PAK 750可以基于目标大小或比特率来计算诸如多遍打包(PAK)参数之类的参数。在实施例中,可以以迭代方式使用编码器以实现条件多遍编码。例如,编码器可以使用基于瓦片或帧的重复。
电子设备700包括帧内第一级738。帧内第一级738可以对视频帧执行帧内搜索第一级以生成帧内候选。例如,帧内第一级738可以使用相邻块的源像素来执行帧内第一级。在一些示例中,帧内第一级738可以使用与帧内搜索第二级不同的编解码器的预测类型。在各种示例中,帧内第一级738可以限制要在帧内搜索第一级中搜索的4×4块的数量。在一些示例中,帧内第一级738可以基于块索引来限制对4×4预测单元的内角支持。
电子设备700还包括帧内第二级740。帧内第二级740可以对帧内候选执行帧内搜索第二级,以生成最终的帧内候选以及残差。例如,帧内第二级740可以使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级。在一些示例中,帧内第二级740可以在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
电子设备700还包括编解码器查找表(LUT)742。编解码器LUT 742可以存储诸如HEVC或AVC之类的编解码器的特定代码的语法结构和系数。例如,可以使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换,并使用来自编解码器查找表的语法结构来估计比特成本。在一些示例中,可以针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量。
电子设备700还包括检查和细化执行器(CRE)744。CRE 744可基于一个或多个预测来生成残差。电子设备700还包括RDO 746,以计算残差的RDO成本。例如,RDO 746可以为各种候选的一组生成的残差计算RDO成本。在一些示例中,RDO可以包括正向变换和量化器(FTQ),以将残差变换到频域和量化残差。RDO 746然后可计算量化的残差的RDO成本。
电子设备700还包括PAK MB对象生成器748,PAK MB对象生成器748用于执行用于生成LCU的最终模式决策,以及生成要发送到硬件比特打包器(PAK)750以用于对帧进行编码的PAK MB对象。例如,PAK MB对象生成器748可以基于速率失真优化(RDO)成本的比较来执行最终模式决策。在各种示例中,PAK MB对象可包括CU大小和估计类型的组合。电子设备700因此包括PAK 750,以使用接收到的PAK MB对象对视频帧进行编码。
电子设备700还包括微控制器746。微控制器746可以处理用于覆盖编码器728或PAK 750的功能的信息。可以通过如上所述的成本计算和其他统计信息来启用该覆盖。例如,可以向微控制器746提供亮度数据的直方图,以用于分析和与先前的帧进行比较,以确定是否正在发生淡入或淡出事件。在一些示例中,可以使用累积分布函数来转换两个帧中的每个帧的直方图,并且可以使用所得到的曲线之间的偏移来确定权重因子。微控制器746可以计算帧之间的平均亮度差,并且生成加权的预测参数以在运动向量的预测中使亮度的变化正规化。在一些示例中,加权的预测参数可被包括在发送到解码器的比特流中,使得解码器可以应用相同的权重因子来精确地解码视频帧。
图7的框图不旨在表明电子设备700将包括图7所示的所有组件。而是,计算系统700可以包括更少的组件或未在图7中示出的附加组件(例如,传感器、功率管理集成电路、附加的网络接口等)。根据具体实现方式的细节,电子设备700可包括未在图7中示出的任何数量的附加组件。另外,CPU 702的任何功能可以部分地或完全地以硬件实现和/或在处理器中实现。例如,可以用专用集成电路、以在处理器中实现的逻辑、以在专用图形处理单元中实现的逻辑或在任何其他设备中实现该功能。
图8是示出了介质800的框图,介质800包含用于使用两级帧内搜索的硬件视频编码的逻辑。介质800可以是计算机可读介质,包括存储可以由处理器802通过计算机总线804访问的代码的非暂态介质。例如,计算机可读介质800可以是易失性或非易失性的数据存储设备。例如,介质800还可以是逻辑单元,比如专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者在一个或多个集成电路中实现的逻辑门的布置。
介质800可包括被配置为执行本文描述的技术的模块806-818。例如,HME模块806可被配置为基于缩减的运动估计搜索来确定编码模式。AVC IME模块808可被配置为执行IME搜索。例如,IME搜索可以基于双重HME搜索的结果。HEVC IME模块810可以基于第一IME搜索的结果来执行第二IME搜索。HEVC CRE模块812包括用于执行最终模式决策并基于最终帧内候选和残差来生成重构像素的代码。HEVC CRE模块812包括用于为所生成的残差计算速率失真优化(RDO)成本并基于所识别出的候选类型的RDO成本的比较来执行最终模式决策的代码。HEVC CRE模块812因此可确定用来对视频的帧进行编码的编码单元和对应的编码器模式。帧内第一级模块814包括用于对视频帧执行帧内搜索第一级以生成帧内候选的代码。例如,帧内第一级模块814包括用于使用相邻块的源像素来执行帧内第一级的代码。在一些示例中,帧内第一级模块814包括用于使用与帧内搜索第二级不同的编解码器的预测类型的代码。在各种示例中,帧内第一级模块814包括用于限制要在帧内搜索第一级中搜索的4×4块的数量的代码。在一些示例中,帧内第一级模块814包括用于基于块索引来约束对4×4预测单元的内角支持的代码。帧内第二级模块816包括用于对帧内候选执行帧内搜索第二级以生成最终帧内候选和残差的代码。例如,帧内第二级模块816包括用于使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级的代码。在一些示例中,帧内第二级模块816包括用于在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序以交织较小的变换单元的代码。最后,在框818处,HEVC/VP9 PAK模块将比特打包成与编码器模式决策相对应的分组,以供消费者消费。例如,分组可被发送到解码器以将分组解包为视频帧。
图8的框图不旨在表明介质800将包括图8所示的所有组件。另外,取决于具体实现方式的细节,介质800可包括未在图8中示出的任意数量的附加组件。例如,介质800还可包括到编解码器查找表的代码,其中处理器802将使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换,以及使用来自编解码器查找表的语法结构来估计比特成本。在一些示例中,介质800还可包括用于针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量的代码。编码器算法必须将规范所定义的几乎无限数量的语法和工具组合减少为所有解码器都能够理解的单个选项。本技术产生了如下选项,该选项使用最少量的功率,或者提供最大量的视频保真度,或最大量的压缩,或这些度量的某种组合。在实施例中,本技术关注具有主观视频质量增强的低功率下的4K分辨率的视频压缩。
示例
示例1是一种用于视频编码的装置。该装置包括编码器,该编码器包括帧内第一级,用于对视频帧执行帧内搜索第一级以生成帧内候选。编码器还包括帧内第二级,用于对帧内候选执行帧内搜索第二级以生成最终帧内候选和残差。该装置还包括检查和细化执行器,用于执行最终模式决策并且基于最终帧内候选和残差来生成重构的像素。
示例2包括示例1的装置,包括或排除可选特征。在该示例中,装置包括硬件比特打包器(PAK),用于将根据最终模式决策进行编码的比特打包。
示例3包括示例1至2中任一项的装置,包括或排除可选特征。在该示例中,编码器将使用来自前一最终模式决策的部分重构的像素来执行帧内第一级。
示例4包括示例1至3中任一项的装置,包括或排除可选特征。在该示例中,编码器将使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级。
示例5包括示例1至4中任一项的装置,包括或排除可选特征。在该示例中,编码器将限制要搜索的4×4变换单元的数量。
示例6包括示例1至5中任一项的装置,包括或排除可选特征。在该示例中,编码器将基于块索引来约束对4×4预测单元的内角支持。
示例7包括示例1至6中任一项的装置,包括或排除可选特征。在该示例中,编码器将使用与在帧内搜索第二级中使用的编解码器不同的编解码器的预测类型来执行帧内搜索第一级。
示例8包括示例1至7中任一项的装置,包括或排除可选特征。在该示例中,编码器将在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
示例9包括示例1至8中任一项的装置,包括或排除可选特征。在该示例中,编码器将使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换,并使用来自编解码器查找表的语法结构来估计比特成本
示例10包括示例1至9中任一项的装置,包括或排除可选特征。在该示例中,编码器将针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量。
示例11是一种用于硬件视频编码的方法。该方法包括执行帧内搜索第一级以生成帧内候选。该方法还包括使用帧内候选来执行帧内搜索第二级以生成最终的帧内候选。该方法还包括执行最终模式决策和生成重构的像素。
示例12包括示例11的方法,包括或排除可选特征。在该示例中,执行帧内搜索第一级包括:使用相邻块的源像素。
示例13包括示例11至12中任一项的方法,包括或排除可选特征。在该示例中,对帧内候选执行帧内搜索第二级包括:使用相邻块的部分重构的像素或该相邻块的完全重构的像素。
示例14包括示例11至13中任一项的方法,包括或排除可选特征。在该示例中,方法包括:限制要在帧内搜索第一级或帧内搜索第二级中搜索的4×4块的数量。
示例15包括示例11至14中任一项的方法,包括或排除可选特征。在该示例中,方法包括:基于块索引来约束对4×4预测单元的内角支持。
示例16包括示例11至15中任一项的方法,包括或排除可选特征。在该示例中,执行帧内搜索第一级包括:使用与在执行帧内搜索第二级时使用的编解码器不同的编解码器的预测类型。
示例17包括示例11至16中任一项的方法,包括或排除可选特征。在该示例中,方法包括:在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
示例18包括示例11至17中任一项的方法,包括或排除可选特征。在该示例中,方法包括:使用嵌套循环来执行跳过检查、帧间细化、和帧内搜索,以生成残差。
示例19包括示例11至18中任一项的方法,包括或排除可选特征。在该示例中,方法包括为所生成的残差中的每一残差计算速率失真优化(RDO)成本。
示例20包括示例11至19中任一项的方法,包括或排除可选特征。在该示例中,方法包括:比较所生成的残差的速率失真优化(RDO)成本,以基于具有较低RDO成本的残差来生成最大编码单元(LCU)。
示例21是至少一种用于校正图像中的凝视(gaze)的计算机可读介质,具有存储在其中的指令,这些指令指导处理器对视频帧执行帧内搜索第一级以生成帧内候选。该计算机可读介质还包括指令,这些指令指导处理器对帧内候选执行帧内搜索第二级以生成最终帧内候选和残差。该计算机可读介质还包括指令,这些指令指导处理器执行最终模式决策并且基于最终帧内候选和残差来生成重构像素。
示例22包括示例21的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括使用相邻块的源像素来执行帧内第一级的指令。
示例23包括示例21至22中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级的指令。
示例24包括示例21至23中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括限制要在帧内搜索第一级或帧内搜索第二级中搜索的4×4块的数量的指令。
示例25包括示例21至24中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括基于块索引来约束对4×4预测单元的内角支持的指令。
示例26包括示例21至25中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括与帧内搜索第二级相比在帧内搜索第一级中使用不同编解码器的预测类型的指令。
示例27包括示例21至26中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序以交织较小的变换单元的指令。
示例28包括示例21至27中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换并且使用来自编解码器查找表的语法结构来估计比特成本的指令。
示例29包括示例21至28中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量的指令。
示例30包括示例21至29中任一项的计算机可读介质,包括或排除可选特征。在该示例中,计算机可读介质包括为所生成的残差计算速率失真优化(RDO)成本并基于所识别出的候选类型的RDO成本的比较来执行最终模式决策的指令。
示例31是一种用于视频编码的系统。该系统包括指令,这些指令指导处理器对视频帧执行帧内搜索第一级以生成帧内候选。处理器对帧内候选执行帧内搜索第二级,以生成最终的帧内候选和残差。处理器还执行最终模式决策以及基于最终帧内候选和残差来生成重构的像素。
示例32包括示例31的系统,包括或排除可选特征。在该示例中,处理器将使用相邻块的源像素来执行帧内第一级。
示例33包括示例31至32中任一项的系统,包括或排除可选特征。在该示例中,处理器将使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级。
示例34包括示例31至33中任一项的系统,包括或排除可选特征。在该示例中,处理器将限制要在帧内搜索第一级或帧内搜索第二级中搜索的4×4块的数量。
示例35包括示例31至34中任一项的系统,包括或排除可选特征。在该示例中,处理器将基于块索引来约束对4×4预测单元的内角支持。
示例36包括示例31至35中任一项的系统,包括或排除可选特征。在该示例中,帧内搜索第一级使用与帧内搜索第二级不同的编解码器的预测类型。
示例37包括示例31至36中任一项的系统,包括或排除可选特征。在该示例中,处理器将在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
示例38包括示例31至37中任一项的系统,包括或排除可选特征。在该示例中,系统包括编解码器查找表。处理器将使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换,并且使用来自编解码器查找表的语法结构来估计比特成本。
示例39包括示例31至38中任一项的系统,包括或排除可选特征。在该示例中,处理器将针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量。
示例40包括示例31至39中任一项的系统,包括或排除可选特征。在该示例中,处理器将为所生成的残差计算速率失真优化(RDO)成本,并基于所识别出的候选类型的RDO成本的比较来执行最终模式决策。
示例41是一种用于校正图像中的凝视的系统。该系统包括用于对视频帧执行帧内搜索第一级以生成帧内候选的装置。该系统还包括用于对帧内候选执行帧内搜索第二级以生成最终帧内候选和残差的装置。该系统还包括用于执行最终模式决策并且基于最终帧内候选和残差来生成重构的像素的装置。
示例42包括示例41的系统,包括或排除可选特征。在该示例中,用于执行帧内搜索第一级的装置将使用相邻块的源像素来执行帧内第一级。
示例43包括示例41至42中任一项的系统,包括或排除可选特征。在该示例中,用于执行帧内搜索第二级的装置将使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级。
示例44包括示例41至43中任一项的系统,包括或排除可选特征。在该示例中,系统包括:用于限制要在帧内搜索第一级或帧内搜索第二级中搜索的4×4块的数量的装置。
示例45包括示例41至44中任一项的系统,包括或排除可选特征。在该示例中,系统包括:用于基于块索引来约束对4×4预测单元的内角支持的装置。
示例46包括示例41至45中任一项的系统,包括或排除可选特征。在该示例中,用于执行帧内搜索第一级的装置将使用与帧内搜索第二级不同的编解码器的预测类型。
示例47包括示例41至46中任一项的系统,包括或排除可选特征。在该示例中,系统包括:用于在帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序以交织较小的变换单元的装置。
示例48包括示例41至47中任一项的系统,包括或排除可选特征。在该示例中,系统包括:用于使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换并且使用来自编解码器查找表的语法结构来估计比特成本的装置。
示例49包括示例41至48中任一项的系统,包括或排除可选特征。在该示例中,系统包括:用于针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量的装置。
示例50包括示例41至49中任一项的系统,包括或排除可选特征。在该示例中,处理器将为所生成的残差计算速率失真优化(RDO)成本并基于所识别出的候选类型的RDO成本的比较来执行最终模式决策。
将会理解,可以在一个或多个实施例中的任何地方使用前述示例中的细节。例如,也可以关于本文描述的方法或计算机可读介质中的任一个来实现上面描述的电子设备的所有可选特征。另外,尽管本文中可能已经使用流程图和/或状态图来描述实施例,但是技术不限于那些图或本文中的对应描述。例如,流程不需要移动通过每个所示的框或状态,或者以如在本文中示出和描述的完全相同的顺序移动。
不是在本文中描述和示出的所有组件、特征、结构、特性等都需要被包括在特定的一个或多个实施例中。例如,如果说明书声明“可以”、“可能”、“能够”或“能”包括组件、特征、结构或特性,则不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求提到“一”或“一个”元素,那并不意味着只有一个该元素。如果说明书或权利要求提到“一个附加”元素,那不排除存在多于一个该附加元素。
要注意的是,尽管已经参考特定实施方式描述了一些实施例,但根据一些实施例,其它实施方式也是可能的。此外,在附图中示出并且/或者在本文中描述的电路元件或其他特征的布置和/或顺序不需要以所示出和描述的特定方式来布置。根据一些实施例,许多其他布置是可能的。
在图中示出的每个系统中,在一些情况下,元素可以各自具有相同的附图标记或不同的附图标记,以表明所表示的元素可以是不同的和/或类似的。然而,元素可以灵活到足以具有不同的实现方式和与在本文中示出或描述的一些或所有系统一起工作。图中示出的各种元素可以是相同的或不同的。哪个被称为第一元素和哪个被称为第二元素是任意的。
本技术不限于本文列出的具体细节。事实上,受益于本公开的本领域技术人员将认识到,可以在本技术的范围内做出前述描述和附图的许多其他变型。因此,限定本技术范围的是所附权利要求,包括对其任何修改。

Claims (25)

1.一种用于视频编码的装置,包括:
编码器,该编码器包括:
帧内第一级,用于对视频帧执行帧内搜索第一级以生成帧内候选;和
帧内第二级,用于对所述帧内候选执行帧内搜索第二级,以生成最终的帧内候选和残差;以及
检查和细化执行器,用于执行最终模式决策,并基于所述最终的帧内候选和所述残差生成重构的像素。
2.如权利要求1所述的装置,包括硬件比特打包器(PAK),用于将根据最终模式决策进行编码的比特打包。
3.如权利要求1所述的装置,其中,所述编码器将使用来自前一最终模式决策的部分重构的像素来执行所述帧内第一级。
4.如权利要求1所述的装置,其中,所述编码器使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行所述帧内第二级。
5.如权利要求1所述的装置,其中,所述编码器限制要搜索的4×4变换单元的数量。
6.如权利要求1到5的任何组合所述的装置,其中,所述编码器基于块索引来约束对4×4预测单元的内角支持。
7.如权利要求1到5的任何组合所述的装置,其中,所述编码器使用与在所述帧内搜索第二级中使用的编解码器不同的编解码器的预测类型来执行所述帧内搜索第一级。
8.如权利要求1到5的任何组合所述的装置,其中,所述编码器在所述帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
9.如权利要求1到5的任何组合所述的装置,其中,所述编码器使用与检测到的编解码器相关联的一组系数基于该编解码器来执行可变变换,并使用来自编解码器查找表的语法结构来估计比特成本。
10.如权利要求1到5的任何组合所述的装置,其中,所述编码器针对水平变换和垂直变换使用同一组乘法器来执行可变变换吞吐量。
11.一种用于硬件视频编码的方法,包括:
执行帧内搜索第一级以生成帧内候选;
使用所述帧内候选来执行帧内搜索第二级,以生成最终的帧内候选;并且
执行最终模式决策以及生成重构的像素。
12.如权利要求11所述的方法,其中,执行所述帧内搜索第一级包括:使用相邻块的源像素。
13.如权利要求11所述的方法,其中,对所述帧内候选执行所述帧内搜索第二级包括:使用相邻块的部分重构的像素或该相邻块的完全重构的像素。
14.如权利要求11所述的方法,包括:限制要在所述帧内搜索第一级或所述帧内搜索第二级中搜索的4×4块的数量。
15.如权利要求11所述的方法,包括:基于块索引来限制对4×4预测单元的内角支持。
16.如权利要求11到15的任何组合所述的方法,其中,执行所述帧内搜索第一级包括:使用与在执行所述帧内搜索第二级时使用的编解码器不同的编解码器的预测类型。
17.如权利要求11到15的任何组合所述的方法,包括:在所述帧内搜索第一级中识别出的预测单元候选和编码单元内的预测单元候选之间交织帧内候选排序,以交织较小的变换单元。
18.如权利要求11到15的任何组合所述的方法,包括:使用嵌套循环来执行跳过检查、帧间细化、和帧内搜索,以生成残差。
19.如权利要求11到15的任何组合所述的方法,包括为所生成的残差中的每一残差计算速率失真优化(RDO)成本。
20.如权利要求11到15的任何组合所述的方法,包括:比较所生成的残差的速率失真优化(RDO)成本,以基于具有较低RDO成本的残差来生成最大编码单元(LCU)。
21.一种用于校正图像中的凝视的系统,包括:
用于对视频帧执行帧内搜索第一级以生成帧内候选的装置;
用于对所述帧内候选执行帧内搜索第二级以生成最终帧内候选和残差的装置;以及
用于执行最终模式决策并且基于所述最终帧内候选和所述残差来生成重构的像素的装置。
22.如权利要求21所述的系统,其中,用于执行所述帧内搜索第一级的装置使用相邻块的源像素来执行帧内第一级。
23.如权利要求21所述的系统,其中,用于执行所述帧内搜索第二级的装置使用相邻块的部分重构的像素或该相邻块的完全重构的像素来执行帧内第二级。
24.如权利要求21到23的任何组合所述的系统,包括:用于限制要在所述帧内搜索第一级或所述帧内搜索第二级中搜索的4×4块的数量的装置。
25.如权利要求21到23的任何组合所述的系统,包括:用于基于块索引来约束对4×4预测单元的内角支持的装置。
CN202010227067.4A 2019-06-13 2020-03-27 使用两级帧内搜索对视频进行编码 Pending CN112087628A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/440,159 2019-06-13
US16/440,159 US10855983B2 (en) 2019-06-13 2019-06-13 Encoding video using two-stage intra search

Publications (1)

Publication Number Publication Date
CN112087628A true CN112087628A (zh) 2020-12-15

Family

ID=67985897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010227067.4A Pending CN112087628A (zh) 2019-06-13 2020-03-27 使用两级帧内搜索对视频进行编码

Country Status (3)

Country Link
US (2) US10855983B2 (zh)
CN (1) CN112087628A (zh)
DE (1) DE102020108428A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7224892B2 (ja) 2018-12-18 2023-02-20 ルネサスエレクトロニクス株式会社 動画像符号化装置及びその動作方法、動画像符号化装置を搭載する車両
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
US12015785B2 (en) * 2020-12-04 2024-06-18 Ofinno, Llc No reference image quality assessment based decoder side inter prediction
CN113055674B (zh) * 2021-03-24 2022-05-10 电子科技大学 一种基于两阶段多帧协同的压缩视频质量增强方法
WO2023177198A1 (ko) * 2022-03-15 2023-09-21 주식회사 케이티 영상 부호화/복호화 방법 및 장치

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2684258B1 (fr) 1991-11-27 1998-06-05 Thomson Consumer Electronics Procede d'estimation et de codage hierarchise du mouvement de sequences d'images.
US6876702B1 (en) 1998-10-13 2005-04-05 Stmicroelectronics Asia Pacific (Pte) Ltd. Motion vector detection with local motion estimator
EP1181828B1 (en) 1999-05-13 2010-03-17 STMicroelectronics Asia Pacific Pte Ltd. Adaptive motion estimator
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
WO2001058170A1 (en) 2000-02-01 2001-08-09 Koninklijke Philips Electronics N.V. Video encoding and decoding with selectable image resolution
ATE330429T1 (de) 2001-09-07 2006-07-15 Koninkl Philips Electronics Nv Bildprozessor und anzeigegerät mit einem solchen bildprozessoren
US7038676B2 (en) 2002-06-11 2006-05-02 Sony Computer Entertainmant Inc. System and method for data compression
US6981119B1 (en) 2002-08-29 2005-12-27 Advanced Micro Devices, Inc. System and method for storing performance-enhancing data in memory space freed by data compression
US7293178B2 (en) 2002-12-09 2007-11-06 Microsoft Corporation Methods and systems for maintaining an encrypted video memory subsystem
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US7656561B2 (en) 2004-05-31 2010-02-02 Phase One A/S Image compression for rapid high-quality imaging
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
US8149915B1 (en) 2007-11-29 2012-04-03 Lsi Corporation Refinement of motion vectors in hierarchical motion estimation
US8488673B2 (en) * 2009-09-09 2013-07-16 Telefonaktiebolaget Lm Ericsson (Publ) Latency rate distortion optimisation
CN103210410B (zh) 2010-09-23 2016-08-10 诺基亚技术有限公司 用于情境确定的方法和装置
US10171813B2 (en) 2011-02-24 2019-01-01 Qualcomm Incorporated Hierarchy of motion prediction video blocks
JP5905582B2 (ja) 2011-09-30 2016-04-20 インテル コーポレイション ビデオ符号化パイプラインのためのシステム、方法及びコンピュータプログラム
US8934544B1 (en) 2011-10-17 2015-01-13 Google Inc. Efficient motion estimation in hierarchical structure
EP2769549A1 (en) 2011-10-21 2014-08-27 Dolby Laboratories Licensing Corporation Hierarchical motion estimation for video compression and motion analysis
WO2013095322A1 (en) 2011-12-19 2013-06-27 Intel Corporation Exhaustive sub-macroblock shape candidate save and restore protocol for motion estimation
US9787985B2 (en) * 2011-12-23 2017-10-10 Synopsys, Inc. Reduction of spatial predictors in video compression
US20140098880A1 (en) * 2012-10-05 2014-04-10 Qualcomm Incorporated Prediction mode information upsampling for scalable video coding
US8444166B1 (en) * 2012-10-22 2013-05-21 Charles Dwight Jarvis Transport system
US9438928B2 (en) 2012-11-05 2016-09-06 Lifesize, Inc. Mechanism for video encoding based on estimates of statistically-popular motion vectors in frame
US20140205012A1 (en) 2013-01-21 2014-07-24 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding
US20160073107A1 (en) * 2013-04-15 2016-03-10 Intellectual Discovery Co., Ltd Method and apparatus for video encoding/decoding using intra prediction
US9398297B2 (en) 2013-11-04 2016-07-19 Intel Corporation Integral image coding
US10924753B2 (en) 2013-12-23 2021-02-16 Intel Corporation Modular motion estimation and mode decision engine
US9652236B2 (en) 2013-12-23 2017-05-16 Intel Corporation Instruction and logic for non-blocking register reclamation
US20150264348A1 (en) 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
US20150276496A1 (en) 2014-03-25 2015-10-01 Joseph Lawrence Kellogg Thermoelastic Beverage Qualifier
US20150279055A1 (en) 2014-03-28 2015-10-01 Nikos Kaburlasos Mipmap compression
US9438923B2 (en) * 2014-06-05 2016-09-06 Blackberry Limited Apparatus and method to support encoding and decoding video data
EP3054685A1 (en) 2015-02-04 2016-08-10 Thomson Licensing Hierarchical motion estimation and video segmentation in presence of more than one moving object in a block
US20160269747A1 (en) * 2015-03-12 2016-09-15 NGCodec Inc. Intra-Picture Prediction Processor with Dual Stage Computations
US9892053B2 (en) 2015-03-24 2018-02-13 Intel Corporation Compaction for memory hierarchies
US10244250B2 (en) 2015-05-29 2019-03-26 Samsung Electronics Co., Ltd. Variable-rate texture compression using fixed-rate codes
US10142627B2 (en) * 2015-06-18 2018-11-27 Qualcomm Incorporated Intra prediction and intra mode coding
GB2543736B (en) 2015-09-10 2019-03-27 Advanced Risc Mach Ltd An interface apparatus and method of operating an interface apparatus
US10218975B2 (en) 2015-09-29 2019-02-26 Qualcomm Incorporated Transform precision manipulation in video coding
US10269326B2 (en) 2015-12-19 2019-04-23 Intel Corporation Method and apparatus for color buffer compression
US10181176B2 (en) 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture
US10127625B2 (en) 2016-05-27 2018-11-13 Intel Corporation Bandwidth-efficient lossless fragment color compression of multi-sample pixels
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US10602174B2 (en) 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10368107B2 (en) * 2016-08-15 2019-07-30 Qualcomm Incorporated Intra video coding using a decoupled tree structure
EP3301931A1 (en) * 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for omnidirectional video coding with adaptive intra prediction
US10291925B2 (en) 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
US10965941B2 (en) * 2017-10-09 2021-03-30 Qualcomm Incorporated Position-dependent prediction combinations in video coding
CN112567743A (zh) * 2018-08-15 2021-03-26 日本放送协会 图像编码装置、图像解码装置及程序
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search

Also Published As

Publication number Publication date
US11323700B2 (en) 2022-05-03
US10855983B2 (en) 2020-12-01
US20190297344A1 (en) 2019-09-26
US20210084294A1 (en) 2021-03-18
DE102020108428A1 (de) 2020-12-17

Similar Documents

Publication Publication Date Title
CN110024392B (zh) 用于视频译码的低复杂度符号预测
US10291925B2 (en) Techniques for hardware video encoding
US10051273B2 (en) Video decoder and video decoding method
US11323700B2 (en) Encoding video using two-stage intra search
CN105453570B (zh) 用于下一代视频的对分区数据的内容自适应熵编码
US9554145B2 (en) Re-encoding image sets using frequency-domain differences
US9948934B2 (en) Estimating rate costs in video encoding operations using entropy encoding statistics
US20200359034A1 (en) Techniques for hardware video encoding
US11025913B2 (en) Encoding video using palette prediction and intra-block copy
KR102390162B1 (ko) 데이터 인코딩 장치 및 데이터 인코딩 방법
JP6042001B2 (ja) 動画像符号化装置及び動画像符号化方法
CN115567722A (zh) 应用加速
US10142633B2 (en) Flexible coding unit ordering and block sizing
US10951900B2 (en) Speeding up small block intra-prediction in video coding
KR20180018903A (ko) 참조 프레임 선택 방법 및 그 장치
KR101525325B1 (ko) 인트라 예측 모드 결정 방법 및 그 장치
JP2024510433A (ja) ビデオ圧縮のための時間的構造ベースの条件付き畳み込みニューラルネットワーク
CN115552912A (zh) 神经图像压缩中的分块内容自适应在线训练
JP2015005957A (ja) 画像符号化装置及び、画像符号化方法及びプログラム

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