CN106973297A - 视频编码方法和混合视频编码器 - Google Patents

视频编码方法和混合视频编码器 Download PDF

Info

Publication number
CN106973297A
CN106973297A CN201610833500.2A CN201610833500A CN106973297A CN 106973297 A CN106973297 A CN 106973297A CN 201610833500 A CN201610833500 A CN 201610833500A CN 106973297 A CN106973297 A CN 106973297A
Authority
CN
China
Prior art keywords
video
driver
information
frame
control information
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
CN201610833500.2A
Other languages
English (en)
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.)
MediaTek Inc
Original Assignee
MediaTek Inc
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 MediaTek Inc filed Critical MediaTek Inc
Publication of CN106973297A publication Critical patent/CN106973297A/zh
Pending legal-status Critical Current

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/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
    • 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/439Methods 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 cascaded computational arrangements for performing a single operation, e.g. filtering
    • 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/124Quantisation
    • 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/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • 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/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/423Methods 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 characterised by memory arrangements
    • 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/43Hardware specially adapted for motion estimation or compensation
    • 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
    • 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
    • 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access

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

视频编码方法和混合视频编码器
交叉引用
本发明请求美国临时案申请号62/221,958的优先权,且这些申请案的所有内容以引用方式纳入。
技术领域
本发明的实施例与视频编码有关,更具体来说,与一种视频编码方法和混合视频编码器。
背景技术
数位视频压缩技术已经广泛地使用在各式不同的装置上,包括现今各式消费类电子产品、手提式个人通讯装置、无线的或有线的网络通信产品、宽带网络、以及多媒体应用。若干个不同的数位视频压缩技术已经形成,例如MPEG-4、H.264/AVC、HEVC、VP8、VP9、以及AVS2。
尽管全硬件的视频编码器满足性能要求,但是全硬件的解决方案成本高昂。可编程驱动器(即一种执行代码命令的功能的软件驱动器)的计算能力越来越强,但依然无法满足视频编码的高端特性,例如720p@30fps或1080p@30fps的视频编码。此外,可编程驱动器的能源消耗也比全硬件的解决方案更高。更进一步,当使用可编程驱动器时,存储器频宽也将成为一个问题。此外,当不同的应用程序(包括操作系统OS)也在相同的可编程驱动器上运行时,在视频编码过程中可编程驱动器的资源将会实时变化。
因此,需要一种新型的视频编码设计,其能够综合基于硬件实现以及基于软件实现的优势来完成视频编码操作。
发明内容
为了解决上述问题,本发明的实施例中提供了一种软件驱动器与硬件驱动器彼此结合来实现勋和视频编码的方法及装置。
依据本发明的第一实施例,提供一种视频编码方法。方法包含接收与当前帧的编码单元相关的视频数据;由软件驱动器执行多个指令来实行视频编码操作的第一部分;以及由硬件驱动器依据控制信息来实行视频编码操作的第二部分。其中视频编码操作的第一部分包含,产生对应于编码单元的帧间预测子以及控制信息,其中帧间预测子包含具有亮度元素的图像区块和具有彩度元素的图像区块;以及储存帧间预测子以及控制信息于存储器。其中视频编码操作的第二部分包含,从存储器接收帧间预测子以及控制信息;将编码单元相关的视频数据与帧间预测子相减以产生预测残差信号;转换及量化预测残差信号并且产生转换及量化后的预测残差信号;以及编码转换及量化后的预测残差信号以形成压缩的视频比特流。
依据本发明的第二实施例,提供一种混合视频编码器,包含软件驱动器执行多个指令来对从存储器接收的与当前帧的编码单元相关的视频数据实行视频编码操作的第一部分,其中视频编码操作的第一部分包含;产生对应于编码单元的帧间预测子以及控制信息,其中帧间预测子包含具有亮度元素的图像区块和具有彩度元素的图像区块;以及储存帧间预测子以及控制信息于该存储器;以及硬件驱动器,耦合于软件驱动器,依据控制信息来实行视频编码操作的第二部分,其中视频编码操作的第二部分包含;加法器,将编码单元相关的视频数据与帧间预测子相减以产生预测残差信号;转换电路,转换预测残差信号并且产生转换后的预测残差信号;量化电路,量化转换后的预测残差信号并且产生转换及量化后的预测残差信号;以及熵编码器对转换及量化后的预测残差信号进行编码以形成压缩的视频比特流。
所提出的解决方案采用混合机制,其中至少由软件实现运动估计,以合理利用可编程处理器(即软件驱动器)中可用的新指令以及该可编程处理器的较大的高速缓存。此外,视频编码操作的其他部分的至少一部分,例如运动补偿、帧间预测、变换/量化、反变换、反量化、后端处理(例如去区块过滤、采样适应性便宜过滤、适应性环路滤波等等)、熵编码等等,是由硬件驱动器(即纯硬件)实现。在所提出的混合解决方案中,可编程处理器的高速缓存中存储的至少部分数据能够被硬件驱动器与软件驱动器两者存取。举例来说,至少一部分源视频帧存储在高速缓存中,并且被硬件驱动器与软件驱动器两者存取。另举一例来说,至少一部分参考帧存储在高速缓存中,并且被硬件驱动器与软件驱动器两者存取。在另举一例,由软件功能或者硬件功能产生的至少一部分中间数据存储在高速缓存中,并且被硬件驱动器与软件驱动器两者存取。
在阅读后续对各种数据和附图所示的较佳实施方式的详细叙述后,本领域技术人员将毫无疑义地了解本发明的上述和其他目的。
附图说明
被包括的附图用以提供对本发明的进一步理解,以及,被并入且构成本说明书的一部分。附图与描述一起用于说明本发明的实施例,有助于解释本发明的原理。在附图中:
图1是依据本发明的一实施例中的混合视频编码器的区块图;
图2绘示了由图1所示的混合视频编码器所执行的视频编码操作的前端组建区块。
图3是软件驱动器与硬件驱动器执行任务并且在帧编码时间的时间间隔交换信息的举例说明。
图4绘示了依据本发明第二实施例的混合视频编码器。
图5绘示了依据HEVC编码标准具有自适应帧内编码及运动补偿的视频编码器的区块图。
图6绘示了依据本发明第三实施例的混合视频编码器区块图。
图7绘示了符合ITU-T H.264编码标准的混合视频编码器的区块图。
图8是软件驱动器与硬件驱动器执行任务并且在帧编码时间的时间间隔交换信息的举例说明。
图9是软件驱动器与硬件驱动器执行任务并且在较小的时间间隔交换信息的举例说明。
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。所属领域中技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求书中所提及的“包含”是一个开放式的用语,故应解释成“包含但不限定于”。此外,“耦接”一词在此是包含任何直接及间接的电气连接手段,因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接电气连接于该第二装置,或者透过其他装置或连接手段间接地电气连接至该第二装置。
由于可编程驱动器的计算能力持续地提高,当前的CPU、DSP、或者GPU通常具有特定的指令(例如SIMD(single instruction multiple data)指令集)或者加速单元来增进通常计算的能力。通过一些传统的快速运动估计(ME)算法,软件运动估计在可编程处理器中可实现。本发明的全文中使用可编程驱动器、软件驱动器、可编程处理器、软件处理器等多种名称来指示具有相同特性的通过执行软件代码来完成任务的处理器。相似地,本发明的全文中使用硬件驱动器、硬件处理器等多种名称来指示具有相同特性的通过纯硬件来完成任务的处理器。本发明的实施例中所提出的方法使得在一个可编程处理器中可以使用新的指令。并在可编程处理器中大容量高速缓存的使用中取得优势。此外,由于提前的运动估计算法,软件运动估计可实现。上述软件执行运动估计的功能可以在一个单一可编程驱动器或者多可编程驱动器(例如多核)中实现。
请参考图1,图1是依据本发明的一实施例中的混合视频编码器100的区块图。图1中绘示了系统10中的视频编码器100。即混合视频编码器100可以是电子装置的一部分,更具体来说,可以是电子装置中的集成电路(IC)中的主处理电路的一部分。电子装置的例子包括,但不限于,移动电话(例如智能电话或者功能电话),移动电脑(例如电脑本),个人数字辅助,个人计算机(例如膝上电脑)。混合视频编码器100包含至少一个软件驱动器(即软件编码器部分),其通过执行指令(即编码代码)来实现预计的功能,更进一步包含至少一个硬件驱动器(即硬件编码器部分),其通过使用纯硬件来实现预计的功能。换句话说,混合视频编码器100是通过联合的软件与硬件来实现视频编码的操作。
在本实施例中,系统10是一个片上系统(SoC),具有多个可编程驱动器包含其中,其中一或多个可编程驱动器被用作混合视频编码器100所需的软件驱动器。举例来说,但并不局限于此,可编程驱动器是DSP子系统102,GPU子系统104以及CPU子系统106。需注意的是,系统10进一步包含其他的可编程硬件,其能够执行嵌入的指令或者被一个序列器(sequencer)控制。DSP子系统102包含DSP(例如CEVA XC321处理器)112以及高速缓存113。GPU子系统104包含GPU(例如nVidia TeslaK处理器)114以及高速缓存115。CPU子系统106包含CPU(例如IntelXeon处理器)116以及高速缓存117。每一高速缓存113、115、117可以由一个或者多个存储器组成。举例来说,CPU116可包含第一级高速缓存(L1)以及第二级高速缓存(L2)。另举一例,CPU116具有多核结构,并且每一核具有各自的第一级高速缓存(L1),同时多个核心共享一个第二级高速缓存(L2)。另举一例,CPU116具有多簇结构,并且每一簇具有一个核心或者多个核心。多个簇共享第三级高速缓存。不同类型的可编程驱动器进一步共享下一级高速缓存的缓存分层结构。举例来说,CPU116以及GPU114共享同一个缓存。
软件驱动器(即,混合视频编码器100的一或多个DSP子系统102、GPU子系统104以及CPU子系统106)被配置为通过执行多个指令执行视频编码操作第一部分。举例来说,视频编码操作的第一部分包含至少一运动估计功能。
图1中的视频编码(VENC)子系统108是混合视频编码器100的硬件驱动器,并且配置为通过使用纯硬件来执行视频编码操作第二部分。VENC子系统108包含视频编码器(VENC)118以及存储器管理单元(VMMU)119。具体的,VENC118执行除了可编程驱动器完成的步骤(例如运动估计)之外的其他编码步骤。因此,视频编码操作第二部分包含运动补偿功能,帧间预测功能,转换功能(例如,离散系数变换(DCT)),量化功能,反变换功能(例如,反DCT),反量化功能,后端处理功能(例如去块过滤(deblocking filter)以及样本自适应过滤器(sample adaptive offset filter),以及熵编码功能(entropy encoding)中至少一个。此外,使用主视频存储器(main video buffer)来存储源视频帧、重建帧、去区块帧或者视频编码中使用的杂项信息。该主视频存储器通常配置在芯片外存储器12(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、或者闪存)中。然而,该主视频存储器也可以配置在芯片内存储器(例如嵌入式DRAM)中。
可编程驱动器,包含DSP子系统102、GPU子系统104以及CPU子系统106,硬件驱动器(VENC子系统108),以及存储控制器110连接至总线101。因此可编程驱动器与硬件驱动器中的每一个能够通过存储控制器110存取芯片外存储器12。
请参考图2,其绘示了由图1所示的混合视频编码器100所执行的视频编码操作的前端组建区块。其中ME代表运动估计,MC代表运动补偿,T代表转换,IT代表反转换,Q代表量化,IQ代表反量化,REC代表重建,IP代表帧间预测,EC代表熵编码,DF代表去块过滤,并且SAO代表样本自适应过滤器。依据实际的设计考量,视频编码可以是有损的或者无损的。
一个或者多个组建区块是由软件来实现的(即,图1中所示的至少一可编程驱动器),并且其他的是由硬件来实现的(即,图1中所示的硬件驱动器)。需注意的是,软件部分至少实现了ME功能。一些视频可能包含或者不包含环路滤波(in-loop filter),例如DF或者SAO。源视频帧携带了原始视频帧数据,并且混合视频编码器100的前端任务是以有损方式或者无损方式压缩源视频帧数据。参考帧是用来定义未来帧的。在较老的视频编码标准中,例如MPEG-2,对于P帧仅仅使用一个参考帧(即先前帧)。对于B帧使用两个参考帧(即一个过去的帧以及一个未来的帧)。在较先进的视频编码标准中,使用更多的参考帧来完成视频编码。重建帧是经由反编码步骤由视频编码器/解码器产生的像素数据。视频解码器通常从压缩的比特流执行反编码步骤,并且视频编码器通常在其获得量化参数数据之后执行反编码步骤。
重建像素数据成为使用的视频编码标准(H.261,MPEG-2,H.264等等)先前定义的参考帧。在视频标准不支持环路滤波的第一个例子中,图2中所示的DF与SAO被省略。因此,重建帧被存储至参考帧存储器来作为一个参考帧使用。在视频标准仅支持一个环路滤波(即,DF)的第二个例子中,图2中所示的SAO被省略,因此后端处理帧是去区块帧(deblockedframe),并且存储至参考帧存储器来作为参考帧使用。在视频标准支持一个以上的环路滤波(即DF与SAO)的第三个例子中,后端处理帧是已完成SAO的帧,并且存储至参考帧存储器来作为参考帧使用。简单来说,存储至参考帧存储器的参考帧可以是一个重建帧或者是一个后端处理帧,这依据混合视频编码器100实际应用的视频编码标准而决定。在后续说明中,使用重建帧作为参考帧来举例说明,但本领域技术人员可以了解当使用的视频编码标准支持环路滤波器时,可以使用一个后端处理帧来代替重建帧作为参考帧。图2中所示的环路滤波器仅仅用来举例说明。在其他的替代设计中,可以使用不同的环路滤波器,例如适应性环路滤波器(adaptive loop filter,ALF)。进一步来说,中间数据(intermediate data)是视频编码过程中产生的数据,例如运动向量信息,量化参数残余,决定的编码模式(帧内/帧间/方向等等)等可以编码或者不编码至输出的比特流。此外,在图2所示的举例说明中,最大编码单元信息(LCU信息)与样本自适应过滤信息(SAO信息)经由熵编码至输出比特流。
由于硬件/软件参与至少一依据软件的编码步骤(例如,运动估计)以及其他依据硬件的编码步骤(例如,运动补偿、重建等),因此重建帧(或者后端处理帧)对于运动估计可能是可用的。举例来说,通常ME需要源视频帧M以及重建帧M-1来进行运动向量搜寻。然而,在以帧为基础的影响下,混合视频编码器100的硬件驱动器(VENC子系统108)依然可以处理帧M-1。在这种情况下,原来的视频帧(例如,源视频帧M-1)可用作运动估计的参考帧,即重建帧(或后端处理帧)不用做运动估计的参考帧。需注意的是,运动补偿是基于重建帧(或后端处理帧)M-1来进行的,依据从源视频帧M以及M-1或者获得的运动估计结果。简单来说,混合视频编码器100执行的视频编码操作包含运动估计功能以及运动补偿;当执行运动估计时,源视频帧被用作运动估计所需的参考帧;当执行后续的运动补偿时,重建帧(或者后端处理帧)被用作运动补偿所需的参考帧。
图3是软件驱动器与硬件驱动器执行任务并且在帧编码时间的时间间隔交换信息的举例说明。软件驱动器(例如,CPU子系统106)执行运动估计,并且发送运动信息(例如,运动向量)至硬件驱动器(例如,VENC子系统108)。硬件驱动器完成视频编码程序中除了运动估计之外的其他任务,例如运动补偿、变换、量化、反变换、反量化、熵编码等等。在图3的举例说明中以重建环&EC表示。换言之,在软件驱动器与硬件驱动器之间存在数据的传输/转换,其原因为完整的视频编码操作是由软件驱动器与硬件驱动器共同完成的。优选地,软件驱动器与硬件驱动器之间的数据的传输/转换是通过高速缓存来实现的。高速缓存机制的细节将如下详述。此处的互动间隔(interaction interval)指的是软件驱动器与硬件驱动器彼此沟通的时间或者空间间隔。举例来说,上述的沟通方法包含从硬件驱动器至软件驱动器发送一中断信号INT。如图3所示,软件驱动器在时间TM-2产生一个指示IND来通知硬件驱动器,并且当帧M-2的运动估计已完成并开始下一帧M-1的运动估计时,转移与帧M-2有关的信息至硬件部分。当接到软件驱动器的通知之后,硬件驱动器参考软件驱动器所提供的信息来开始与帧M-2有关的编码步骤,从而获得相对应的重建帧M-2以及帧M-2的压缩比特流。硬件驱动器当完成与帧M-2的编码步骤时在时间TM-2’通知软件驱动器。如图3所示,软件驱动器对于帧M-1的处理速度比硬件驱动器对于帧M-2的处理速度要快。因此软件驱动器等待硬件驱动器完成与帧M-2相关的编码步骤。
在接到了硬件驱动器的通知之后,软件部分传输与帧M-1有关的相关信息至硬件驱动器,并且开始在时间TM-1执行下一帧M的运动估计。软件驱动器可以从硬件驱动器获得帧M-2的相关信息。举例来说,软件驱动器可以从硬件驱动器获得压缩的帧M-2的比特流大小,编码模式信息,量化信息,处理时间信息,以及/或者存储器频宽信息等相关信息。当接收到软件驱动器的通知之后,硬件驱动器参考从软件驱动器获得的信息来开始与帧M-1相关的编码步骤来获得对应的重建帧M-1。当在时间TM-1’完成与帧M-1相关的编码步骤时,硬件驱动器通知软件驱动器。如图3所示,由于帧M软件部分的处理速度慢于硬件驱动器处理帧M-1的处理速度,因此硬件驱动器等待软件驱动器完成与帧M相关的编码步骤。
在完成帧M的运动估计之后,软件驱动器传输与帧M相关的信息至硬件部分,并在TM开始帧M+1的运动估计。当接收到软件驱动器的通知之后,硬件驱动器参考从软件驱动器获得的信息来开始与帧M相关的编码步骤,以获得相对应的重建帧M。硬件驱动器在时间TM’当完成了与帧M有关的编码步骤时通知软件驱动器。如图3所示,软件驱动器处理帧M+1的时间与硬件驱动器处理帧M的时间相等。因此硬件驱动器与软件驱动器不需要彼此等待。
需注意的是,软件部分与硬件部分的互动间隔并不局限于编码一个完整帧的时间区间。该间隔可是一个宏块(宏块,MB)、一个最大的编码单元(LCU)或者一个切片(slice)、或一个瓦片(tile)。该间隔也可是多个宏块、多个最大的编码单元(LCU)、多个切片、或多个瓦片。该间隔也可是一个或者多个宏块(或最大编码单元)行。当互动间隔的间隔尺寸小时,重建帧(或后端处理帧)的数据对于运动估计是可用的。举例来说,在一个以切片为基础的互动(即视频编码是依据切片而并非帧来进行的)的情况下,混合视频编码器100的硬件驱动器以及软件驱动器可处理相同源视频帧M的不同切片,并且重建帧M-1(其是从源视频帧M-1获得,源视频帧M-1在源视频帧M之前)在此时也可用。在这种情况下,混合视频编码器100的软件驱动器处理源视频帧M的一个切片,重建帧M-1可被用作一个参考帧,从而提供软件驱动器执行的运动估计所参考的参考像素数据。在图3所示的举例说明中,如果需要的话,软件驱动器可以在一个帧间隔内等待硬件驱动器。然而,这并非本发明的一个限制。举例来说,混合视频编码器100的软件驱动器可配置为依据一序列的源视频帧连续地执行运动估计,而并不等待混合视频编码器100的硬件驱动器。
依据本发明的精神,可提供其他多个实施例,这些实施例具有相同的特性,即运动估计是由在可编程驱动器上运行的软件来完成的。一个实施例是软件驱动器处理ME,并且硬件驱动器处理MC、T、Q、IQ、IT、EC。对于不同的视频编码标准,硬件驱动器可进一步处理后端流程,例如DB以及SAO。另一个实施例是软件驱动器处理ME以及MC,并且硬件驱动器处理T、Q、IQ、IT、EC。硬件驱动器可进一步处理后端流程,例如DB以及SAO。这些替代设计都通过软件来实现ME(即执行指令),因此都在本发明的范围之内。
在另一实施例中,混合视频编码器100的软件编码部分在一或多个可编程驱动器上执行运动估计。软件编码部分所执行的运动估计结果接着被混合视频编码器100的硬件编码部分使用。运动估计的结果包含,但不限于,运动向量、编码单元的编码模式、参考帧索引、单一参考帧或者多个参考帧、以及/或者用来执行帧内或帧间编码所需的其他信息。软件编码部分进一步决定每一编码区域(例如宏块、LCU、切片或帧)的比特预算(bit budget)以及量化设置。软件编码部分也决定当前要编码的帧的帧类型,并且上述决定可依据运动估计结果的至少部分信息来决定。举例来说,软件编码部分决定当前帧为I帧、P帧、B帧或其他帧类型。软件编码部分可进一步决定要编码的当前帧的片数量以及片类型,并且上述决定可依据运动估计结果的至少部分信息来决定。举例来说,软件编码部分可决定要编码的当前帧包含两个片。软件编码部分可决定当前帧具有编码为I片的第一片,并且其他的片为P片。软件编码部分进一步决定上述I片与P片的区域。可依据在运动估计中收集的统计信息来决定第一片编码为I片。举例来说,统计信息包含视频内容复杂度或者整体帧的一部分的活动性信息、运动信息、运动估计成本功能信息或者其他第一片的运动估计所产生的信息。
软件编码部分依据缩小比例的源视频帧(其通过原始源视频帧获得)以及缩小比例的参考帧(其通过原始参考帧获得)进行粗略的运动估计。粗略运动估计的结果输送给硬件编码部分。硬件编码部分执行最终的或者好的运动估计以及相对应的运动补偿。在另一方面,硬件编码部分直接进行运动补偿,而不进行最终的运动估计。
软件编码部分进一步从硬件编码部分获得精确的编码结果,来决定后续一个帧或者多个编码帧的搜索范围。举例来说,垂直搜索范围+/-48被应用至编码第一帧。该帧的编码结果指示编码的运动向量主要是在垂直搜索范围+/-16的范围之内。软件编码部分接着决定缩减该垂直搜索范围至+/-32并应用该范围来编码第二帧。通过这个举例说明,但并非本发明的限制,第二帧可是第一帧之后的任意一帧。决定的搜索范围可以进一步送至硬件编码部分来进行运动估计或者其他处理。上述搜索范围的确定可以被当做软件视频编码器所执行的运动估计的一部分。
软件编码部分进一步从其他外部装置获得运动信息来决定搜索范围。该外部装置可以是一个图像信号处理器(image signal processor,ISP)、电子/光学图像稳定单元(electronic/optical image stabilization unit)、图型处理单元(graphic processingunit,GPU)、显示处理器、运动过滤器或位置传感器。如果编码的第一帧被决定为一个静态场景,软件编码部分可进一步缩减垂直搜索区域至+/-32,并应用该区域来编码第一帧。
在一个例子中,当视频编码标准是高效率视频编码(High Efficiency VideoCoding,HEVC)/H.265时,软件编码部分也决定要编码的当前帧的瓦片数量与瓦片参数,并且该决定是至少依据运动估计的结果的信息来决定。举例来说,软件编码部分决定在要进行1080p编码的当前帧内有两个瓦片,每一个瓦片是960x1080。软件编码部分决定在要进行1080p编码的当前帧内有两个瓦片,每一个瓦片是1920x 540。上述决定被硬件编码部分所使用来完成编码的其他处理。
软件编码部分利用可编程驱动器的高速缓存来存储至少一部分当前源视频帧的数据与至少一部分参考帧的数据,以此获得优势,并由于较低的数据存储延时而增进编码性能。参考帧可以是重建帧或后端处理帧。混合视频编码器100所使用的高速缓存113/115/117可以是一级高速缓存、二级高速缓存、三级高速缓存或者更高级高速缓存。
为了简洁与方便,假设混合视频编码器100的软件驱动器使用CPU子系统106。因此当执行运动估计时,软件驱动器(即CPU子系统106)从较大尺寸的缓存(例如芯片外存储器12)获取源视频帧以及参考帧。当高速缓存117的上述数据是可用时,硬件驱动器(即VENC子系统108)将从软件驱动器的高速缓存117获得源视频帧数据或者参考帧数据。否则,源视频帧数据或者参考帧数据也将从较大尺寸的帧缓冲器存取。
在这个实施例中,使用高速缓存一致性机制(coherence mechanism)来检查是否高速缓存117中是否存在上述数据。该高速缓存一致性机制当数据存在于高速缓存117时,从高速缓存117中获取数据,或者将数据存取需求(即读取需求)传递至存储控制器110来从帧存储器中获得所需的数据。换言之,CPU子系统106的高速缓存控制器通过使用高速缓存117来服务硬件驱动器发出的数据存取需求。当高速缓存命中发生时,高速缓存控制器返回缓存的数据。当高速缓存缺失发生时,存储控制器110将收到硬件驱动器所需数据的数据存取需求,并且执行数据存取转换。
两种类型的高速缓存一致性机制可以在该实施例中使用。第一种是保守高速缓存一致性机制(conservative cache coherence mechanism),另外一种是攻击高速缓存一致性机制(aggressive cache coherence mechanism)。为了从硬件驱动器发出的数据存取需求的干扰,对于软件驱动器与硬件驱动器使用保守高速缓存一致性机制。保守高速缓存一致性机制仅仅处理读取交易(read transaction),此外当数据没有在高速缓存117中时,没有高速缓存确实发生并且没有数据替换执行。举例来说,软件驱动器中的高速缓存控制器(未显示)或者系统10内的总线控制器(未显示)监控/探听总线101上的读取交易地址,其中总线101连接至软件驱动器(CPU子系统106)以及硬件驱动器(VENC子系统108)。当硬件驱动器发出的读取需求的交易地址与高速缓存117内部高速缓存的数据的地址匹配时,高速缓存命中发生,并且高速缓存控制器直接传输缓存的数据至硬件驱动器。
需注意的是,从硬件驱动器发出的写入交易(write transaction)总是由分层结构的下一级存储器的管理器处理,分层结构的下一级存储器通常是芯片外存储器12或者下一级高速缓存。因此CPU子系统106的高速缓存控制器将决定从VENC子系统108发出的数据存取需求是存取高速缓存117还是存取不同于高速缓存117的其他存储装置(例如芯片外存储器12)。当从VENC子系统108发出的数据存取需求是写入需求时,决定该写入需求时存取该存储装置(例如芯片外存储器12)。因此,VENC子系统108与存储装置(例如芯片外存储器12)之间数据交易就不通过高速缓存117而执行。当软件驱动器不需要从硬件驱动器写入数据时,应用数据同步机制(data synchronization mechanism)来指示写入数据对于软件驱动器是可用的。数据同步机制的进一步详细说明如下。
在另一方面,为了让硬件驱动器更好地使用可编程驱动器的高速缓存,可以使用攻击高速缓存一致性机制。请参考图4,其绘示了依据本发明第二实施例的混合视频编码器400。图4所示的系统20与之间图1所示的系统10的区别是在软件驱动器与硬件驱动器之间具有专属高速缓存写入线(dedicated cache write line)(即额外的写入路径)402,因此,允许硬件驱动器写入数据至软件驱动器的高速缓存。为了简单清楚地描述,假设软件驱动器是由CPU子系统106实现,并且硬件驱动器是由VENC子系统108实现。然而,这仅仅作为举例说明使用,而并非本发明的限制。
在一个举例说明中,当CPU子系统106作为软件驱动器时,运动估计是由CPU子系统106中的CPU 116完成的,高速缓存写入线连接在CPU子系统106与VENC子系统108之间。如上所述,可编程驱动器(例如,CPU子系统106)内部的高速缓存控制器监控/探听总线101上的读取交易地址,其中总线101连接至软件驱动器(CPU子系统106)以及硬件驱动器(VENC子系统108)。因此CPU子系统106的高速缓存控制器可决定VENC子系统108是否发出一个数据存取需求来存取高速缓存117或者一个与高速缓存117不同的存储装置(例如芯片外存储器12)。当VENC子系统108发出的数据存取需求是一个读取存取并且所需的数据在高速缓存117内是可用状态的话,则发生高速缓存命中,并且使得高速缓存控制器将所需的数据从高速缓存117传输至VENC子系统108。当VENC子系统108发出的数据存取需求是一个读取存取并且所需的数据在高速缓存117内是不可用状态的话,则发生高速缓存缺失,并且使得高速缓存控制器发出一个存储器读取需求至它的下一级记忆分层组织,通常发送至芯片外存储器12或者下一级高速缓存。所读取的数据从下一级记忆分层组织返回,并且替代一个高速缓存线或者高速缓存117内的等量数据。从下一级记忆分层组织返回的数据也传输至VENC子系统108。
当从VENC子系统108发出的数据存取需求是一个写入需求,以请求写入数据至CPU子系统106的高速缓存117时,可以应用回写策略(write back)或者直写策略(writethrough)。对于回写策略来说,从VENC子系统108写入的数据传输至CPU子系统106并且因此初始地经由专属高速缓存写入线402写入高速缓存117。当包含写入数据的高速缓存块/线将要被新的内容修改/取代时,从VENC子系统108写入的数据通过总线101写入下一级记忆分层组织。对于直写策略来说,从VENC子系统108写入的数据同步地经由专属高速缓存写入线402写入高速缓存117以及经由总线写入下一级记忆分层组织。本领域技术人员能够了解回写策略与直写策略的细节,更详细的描述在此省略。
除了软件编码部分,在一些可编程驱动器可运行一个操作系统(operationsystem,OS)。在这种情况下,除了高速缓存,可编程驱动器还具有存储器保护单元(memoryprotect unit,MPU)或者存储器管理单元(MMU),在其中执行虚拟地址至物理地址的转换。为了使得存储在高速缓存内的数据被硬件驱动器存取,应用地址同步机制(addresssynchronization mechanism)使得高速缓存的相同的条目能够被正确地取址以及由硬件驱动器与软件驱动器存取。举例来说,从VENC子系统108发出的数据存取需求由通过VMMU119的另一转换来完成虚拟地址至物理地址的转换,并且这种转换与在CPU子系统106内的转换同步。
为了利用高速缓存,应用数据同步机制(data synchronization mechanism)。上述数据同步机制帮助增加要读取的数据已经在高速缓存内的机会,并且因此减少需要从下一级记忆分层组织(例如芯片外存储器12或者下一级高速缓存)获得数据的可能性。该数据同步机制也帮助减少高速缓存缺失或者高速缓存数据替代的机会。
数据同步机制包含一个指示(例如图3所示的IND),来指示硬件驱动器(例如VENC子系统108)其所需要的数据当前在软件驱动器的高速缓存(例如CPU子系统106的高速缓存117)内可用。举例来说,当软件驱动器完成了一帧的运动估计,软件驱动器设置该指示。硬件驱动器接着在同一帧上执行其余的编码操作。由软件驱动器读取的数据,例如源视频帧数据以及参考帧数据,较大可能地依然存在在高速缓存中。更具体来说,当如上所述的互动间隔的间隔尺寸设置较小时,当硬件驱动器被操作来执行在先前软件驱动器处理的同一帧上的其余编码步骤时,由软件驱动器读取的数据较大可能性地在软件驱动器的高速缓存中依然可用,因此,硬件驱动器能够从高速缓存而不是下一级记忆分层组织(例如芯片外存储器12)读取数据,例如运动向量、运动补偿系数数据、量化系数、上述的中间数据等可能依然存在于软件驱动器的高速缓存中。因此硬件驱动器也能够从高速缓存而不是下一级记忆分层组织(例如芯片外存储器12)读取这些数据。上述指示可以使用任意的可行的指示方式来实现,举例来说,上述指示可以是硬件驱动器的一个激发(trigger)、一个旗标(flag)或者一个命令序列。
此外,可以使用一个更攻击的数据同步机制。举例来说,当软件驱动器(例如CPU子系统106)在一个编码区域(例如在一个完整帧中的多个宏块)完成执行运动估计时,软件驱动器设置该指示。即,该指示是设置来每一次软件驱动器完成一个完整帧的一部分的运动估计时,通知硬件驱动器(例如VENC子系统108)。硬件驱动器接着执行在该帧的该部分执行剩余的编码步骤。由软件驱动器读取的数据,例如源视频帧数据以及参考帧数据、以及软件驱动器产生的数据(例如运动向量以及运动补偿系数数据)也较高可能性地依然存在在软件驱动器的高速缓存中。因此,硬件驱动器能够从高速缓存而不是下一级记忆分层组织(例如芯片外存储器12)来读取这些数据。相似地,上述指示可使用任意可行的指示方式来实现。举例来说,上述指示可以是硬件驱动器的一个激发(trigger)、一个旗标(flag)或者一个命令序列。另举一例来说,上述指示可以是已经处理的或者尚未处理的宏块的位置信息、或者已经处理的或尚未处理的宏块的数量。
此外,硬件驱动器能够应用与软件驱动器相似的数据同步方法。举例来说,当硬件驱动器完成重建帧数据(或后端处理帧数据)至软件驱动器的高速缓存的写入部分时,硬件驱动器也能够设置一个指示。举例来说,该由硬件驱动器设置的指示可以是一个中断(interrupt)、一个旗标、已经处理的或者尚未处理的宏块的位置信息、或者已经处理的或尚未处理的宏块的数量等等。
数据同步机制也可与一个停滞机制(stall mechanism)合作,例如当数据同步机制指示需要一个停滞时,软件驱动器或者硬件驱动器处于停滞状态。举例来说,当硬件驱动器无空闲(busy)并且不能接受下一处理器的另一触发时,硬件驱动器能够产生一个停滞指示,来指示软件驱动器停滞,从而软件驱动器的高速缓存内的数据不会被复写(overwrite)、替代或者冲刷(flush)。该停滞指示可以使用任意的可行的指示方式来实现。举例来说,该停滞指示可以是硬件驱动器的非空闲信号、或者命令序列的丰满信号(fullness signal)。另举一例来说,上述停滞指示可以是已经处理的或者尚未处理的宏块的位置信息、或者已经处理的或尚未处理的宏块的数量。
综上所述,本发明所述的视频编码的方法以及装置将硬件部分与软件部分协同起来。其利用了可编程驱动器及其相对应的高速缓存的力量并且部分应用特定的硬件来缩减芯片区域的成本。具体来说,所提出的混合视频编码器至少使得运动估计是由软件来实施,同时至少一个主要的任务(MC、T、Q、IT、IQ、IP、DF及SAO其中之一)是由硬件实施。
图5绘示了依据HEVC编码标准具有自适应帧内编码及运动补偿的视频编码器500的区块图。帧内预测单元510根据当前要编码的帧的重建帧产生帧内预测子(intrapredictors)。运动补偿预测单元(MCP)512根据参考帧的视频数据执行运动估计(ME)功能及运动补偿(MC)功能以提供帧间预测子(inter predictors)。帧间预测子(interpredictors)系由具有亮度元素(luma component)例如Y的图像区块,以及具有彩度元素(chroma component)例如U、V的图像区块所构成,每一个图像区块皆对应于当前帧的一编码单元(coding unit)或一宏块(macro block),且每一个图像区块皆包含若干个图像像素(image pixels)。开关514选择帧内预测单元510输出的帧内预测子或运动补偿预测单元(MCP)512输出的帧间预测子并且将所选的预测子传送至加法器(Adder)516用以形成预测误差(Prediction errors),亦称作预测残差信号(prediction residual signal)。预测残差信号则进一步被转换单元(T)518及量化单元(Q)520所处理。熵编码器534则将经过转换及量化后的预测残差信号进行熵编码作业,并将附加信息(side information),例如运动信息,一同打包以形成压缩的比特流。因此,附加信息(side information)数据也必须提供给熵编码器534。当运动补偿模式被启动时编码器端也需要进行重建功能(reconstruction)以提供所需的参考帧,所以经过转换及量化后的预测残差信号则需要被反量化单元(IQ)522以及反转换单元(IT)524所处理,藉此还原出预测残差信号。如同图5所示,反转换单元(IT)524输出的还原过的预测残差信号则在重建单元(REC)526中与由开关514所选择的预测子相加后产生重建的视频数据。重建的视频数据也可以被储存于参考帧缓存器(Reference Picture Buffer)532内,并且被用于作为预测其他帧的参考帧。
由重建单元(REC)526所输出的重建的视频数据在编码的过程中也许会遭受各种程度不一的数据损坏,因此将重建的视频数据储存到参考帧缓存器(Reference PictureBuffer)532之前,有需要将由重建单元(REC)526所输出的重建的视频数据传送至,例如去块过滤器(DF)528或者样本自适应过滤器(SAO)530,进行环路滤波(in-loop filter)以改善画质(picture quality)。去块过滤器(DF)528所产生的去块过滤信息(DF information)或者样本自适应过滤器(SAO)530所产生的样本自适应过滤信息(SAO information)需要被传送至熵编码器534作为附加信息(side information)的一部分,与压缩的比特流中的转换系数一同打包,藉此在解码器端若亦可使用相同的块过滤信息(DF information)以及样本自适应过滤信息(SAO information)进行解码。
图6绘示了依据本发明第三实施例的混合视频编码器600区块图。混合视频编码器600包含至少一个软件驱动器(即软件编码器部分),例如视频编码决策软件驱动器610,其通过执行指令(即编码代码)来实现预计的功能,更进一步包含至少一个硬件驱动器(即硬件编码器部分),例如视频编码硬件加速器620,其通过使用纯硬件来实现预计的功能。混合视频编码器可以是一个片上系统(SoC),视频编码决策软件驱动器610可以是DSP子系统102、GPU子系统104、CPU子系统106或其他的可编程硬件,其能够执行嵌入的指令或者被一个序列器(sequencer)控制。
请参阅图1、图5及图6,视频编码决策软件驱动器610(例如DSP子系统102、GPU子系统104、CPU子系统106)接收源视频帧数据612及重建的视频数据622并通过执行多个指令实现视频编码操作第一部分。视频编码操作的第一部分包含至少一运动估计(ME)功能以及一运动补偿(MC)功能,例如于图5所示的运动补偿预测单元(MCP)512中所执行的功能。视频编码决策软件驱动器610执行视频编码操作第一部分时输出包含帧间预测子(interpredictors)614以及控制信息(control information)616,并将帧间预测子(interpredictors)614以及控制信息(control information)616储存于存储器(buffer)中。存储器(buffer)可以是视频编码决策软件驱动器610中的高速缓存(例如图1及图4中的高速缓存113、115、117),或亦可是芯片外存储器(例如图1及图4芯片外存储器12)。视频编码操作的第一部分之外的其余编码操作都是由视频编码硬件加速器620所执行。视频编码硬件加速器620包含开关514、加法器516、转换单元(T)518、反转换单元(IT)524、量化单元(Q)520、反量化单元(IQ)522、重建单元(REC)526、帧内预测单元510、熵编码器534、去块过滤器(DF)528、以及样本自适应过滤器(SAO)530用以执行视频编码操作的第一部分之外的其余编码操作(称为视频编码操作的第二部分)。视频编码硬件加速器620发出一数据存取需求(dataaccess request)用来存取储存于高速缓存中的帧间预测子或一部分的控制信息。或者,视频编码硬件加速器620发出一数据存取需求(data access request)通过存储控制器110来存取储存于芯片外存储器12中的帧间预测子或一部分的控制信息。视频编码硬件加速器620根据源视频帧数据612及帧间预测子(inter predictors)614以及控制信息(controlinformation)616通过使用纯硬件来实现视频编码操作的第二部分。视频编码硬件加速器620执行视频编码操作第二部分时输出包含至少一压缩的比特流618、重建的视频数据622、以及任何与压缩的比特流618相关的附加信息(side information)或统计信息。在某些实施例,硬件驱动器会将从软件驱动器所产生的部分控制信息与压缩的比特流618整合在一起。
从视频编码决策软件驱动器610输出的控制信息(control information)616则是被视频编码硬件加速器620所运用来行视频编码操作的第二部分。该控制信息(controlinformation)616包含对应于当前帧的每一个图像区块,例如编码单元(coding unit)或宏块(macro block),的完整描述以及可调整的头参数(header parameters)。例如,该控制信息(control information)616包含对应于每一编码图像区块的模式信息(modeinformation)、运动信息(motion information)、环路滤波强度、以及参考帧索引信息(reference frame indications)。视频编码硬件加速器620根据所接收的控制信息(control information)616来产生压缩的比特流618,因此视频编码硬件加速器620仅能对有限的少数编码决策进行决定。这些有限的少数编码决策举例来说包含,决定coded blockpatterns(CBP)以及决定是否改变编码模式(mode)为一相当的捷径模式(short-cutmode)。例如,于符合H.264编码标准的混合视频编码器中的视频编码硬件加速器620可以将具有Skip-MV且无texture系数的P_16x16模式改变为P-Skip模式。
一些视频编码标准可能包含或者不包含环路滤波(in-loop filter),例如图5中的去块过滤器(DF)528或者样本自适应过滤器(SAO)530。但当视频编码标准有环路滤波(in-loop filter)功能时,环路滤波(in-loop filter)功能除了同前述可于硬件驱动器中执行之外,于某些实施例中,环路滤波(in-loop filter)功能亦可以由软件驱动器来执行。因此,当环路滤波(in-loop filter)功能由硬件驱动器执行时,提供到软件驱动器的重建的视频数据系经过环路滤波(in-loop filter)处理过的重建的视频数据。而当环路滤波(in-loop filter)功能由软件驱动器执行时,提供到软件驱动器的重建的视频数据则系从重建单元(REC)526输出且未经过环路滤波(in-loop filter)处理的重建的视频数据。
图5视频编码器500中的一个或若干个功能区块系以软件驱动器来实现,例如图6的视频编码决策软件驱动器610,而其它的区块则由硬件驱动器来实现,例如图6的视频编码硬件加速器620。值得注意的是,本实施例的软件驱动器执行至少一运动估计(ME)功能以及一运动补偿(MC)功能,例如于图5所示的运动补偿预测单元(MCP)512中所执行的相同功能。
图7绘示了符合ITU-T H.264编码标准的混合视频编码器的区块图。图7中仅绘示了一些视频编码硬件加速器730中的重要功能区块以及存储器(buffer)710用以提供数据给视频编码硬件加速器730,其中混合视频编码器700的软件驱动器则在图7中未显示。混合视频编码器700提供了丰富的编码工具用来对方型的图像区块(称作宏块)进行编码作业。一个视频序列包含了许多个视频帧,每个视频帧系由若干个相互独立的区域,亦称作条带(slice),所构成。并且每个条带(slice)含有许多的宏块,每个宏块再进一步分为一个或若干个的子宏块(sub-blocks),而子宏块则由若干个像素所构成。一个宏块系由各别的图像区块所构成,包含具有亮度元素(luma component)图像区块,以及具有彩度元素(chromacomponent)的图像区块,每个符合ITU-T H.264编码标准的宏块(macro block)一般包含有一个16x16像素的亮度(luma)图像区块以及二个8x8像素的彩度(chroma)图像区块。相似于图6的视频编码硬件加速器620,图7视频编码硬件加速器730的输入数据包含源视频帧数据702、帧间预测子(inter predictors)712、控制信息(control information)714。帧间预测子(inter predictors)712及控制信息(control information)714系由混合视频编码器700的软件驱动器(图未示)所计算并且于提供给视频编码硬件加速器730之前先暂时储存于存储器(buffer)710中。存储器(buffer)710可以用一个或若干个芯片内高速缓存、芯片外存储器、或两者的结合来实现。芯片外存储器可以是,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、或者闪存。
于本实施例中,控制信息(control information)714包含对应于每一宏块的模式信息(mode information)、运动信息(motion information)、宏块量化(quantization)信息、以及去块过滤(DF)参数。混合视频编码器700的软件驱动器(图未示)执行编码模式决策,例如考虑到编码率-失真优化,选择具有最低编码率-失真成本的编码模式,并且将模式信息(mode information)、运动信息(motion information)作为控制信息(controlinformation)714的一部分用来标示所选择的编码模式。模式信息(mode information)用来标示当前宏块的编码模式不是帧内预测(intra prediction)就是帧间预测(interprediction),以及该当前宏块的子宏块的分割方法。H.264支持三种帧内预测(intraprediction)编码模式,分别标示为Intra_16x16、Intra_8x8、Intra_4x4,七种帧间预测(inter prediction)编码模式,分别标示为P_16x16、P_16x8、P_8x16、P_8x8、P_8x4、P_4x8、P_4x4,以及skip模式。若当前宏块以帧内预测(intra prediction)编码模式编码时,模式信息(mode information)可以进一步包含子宏块编码模式(sub-block modes),例如垂直预测模式、水平预测模式、DC预测模式、斜角预测模式。若当前宏块以帧间预测(interprediction)编码模式编码时,运动信息(motion information)则进一步包含一个或若干个运动向量(Motion Vector)以及所对应的参考帧索引信息(reference frame indices)。模式信息(mode information)被提供至视频编码硬件加速器730的帧内预测(intraprediction)单元731、多任务器(Multiplexer)733、以及熵编码器736进行相关的操作。运动信息(motion information)则被提供至熵编码器736进行相关的操作。宏块量化(quantization)信息则被提供至转换及量化单元(T/Q)735以及熵编码器736进行相关的操作。而去块过滤(DF)参数则被提供至环路滤波单元(in-loop filter)738进行相关的操作。
图7的多任务器(Multiplexer)733根据控制信息(control information)714中的模式信息(mode information)选择从帧内预测(intra prediction)单元731输出的帧内预测子(intra predictors)731或选择从存储器(buffer)710读取来的帧间预测子(interpredictors),并将所选的预测子(predictor)输出至加法器734。加法器734则将源视频帧数据702与从多任务器(Multiplexer)733输出的预测子相减以产生预测误差(Predictionerrors),亦称作预测残差信号(prediction residual signal)。预测残差信号则进一步被转换及量化单元(T/Q)735所处理。熵编码器736则将经过转换及量化后的预测残差信号进行熵编码作业,并将控制信息(control information)714一同打包以形成压缩的比特流。经过转换及量化后的预测残差信号则进一步由反转换及反量化单元(IT/IQ)737进行反转换及反量化操作,接着加法器739将从反转换及反量化单元(IT/IQ)737输出的数据与前述从多任务器(Multiplexer)733输出的预测子(predictor)相加后储存于帧内预测行缓冲器(intra prediction line buffer)732以供帧内预测(intra prediction)单元731之用。加法器739的输出数据亦可被环路滤波单元(in-loop filter)738进行环路滤波操作并产生重建的视频数据734。视频编码硬件加速器730输出的重建的视频数据734将被传送至混合视频编码器700的软件驱动器用以进行帧间预测(inter prediction)。
于一符合MPEG-4编码标准的混合视频编码器的实施例中,混合视频编码器的软件驱动器决定当前宏块的编码模式,例如帧间预测(inter prediction)模式或帧内预测(intra prediction)模式。当决定当前宏块的编码模式为帧间预测(inter prediction),混合视频编码器的软件驱动器执行运动估计(ME)功能以及运动补偿(MC)功能以产生运动向量(motion vector)以及帧间预测子(inter predictor),并将帧间预测子(interpredictor)储存至芯片内高速缓存或芯片外存储器。当决定当前宏块的编码模式为帧内预测(intra prediction),混合视频编码器的硬件驱动器则对当前宏块执行DC/AC预测以产生帧内预测子(intra predictor)。考虑到当前宏块(current MB)与邻近宏块(neighborMBs)的DC预测系数及AC预测系数在统计数字上的相关性,当前宏块的帧内预测(intraprediction)操作可以藉由参考一个或若干个邻近宏块的预测模式来执行。于本实施例中DC/AC预测是由混合视频编码器的硬件驱动器来执行。而当决定当前宏块的编码模式为帧间预测(inter prediction)时,混合视频编码器的硬件驱动器则从存储器读取由混合视频编码器的软件驱动器所产生的帧间预测子(inter predictor)以及控制信息(controlinformation)。本实施例中控制信息(control information)包含模式信息(modeinformation)、运动信息(motion information)、及宏块量化(quantization)信息。根据模式信息(mode information)所指定的编码模式,将源视频帧数据与帧间预测子(interpredictor)或由AC/DC预测单元产生的帧内预测子(intra predictor)相减以产生预测残差信号(prediction residual signal)。接着对预测残差信号(prediction residualsignal)执行离散系数变换(DCT)及量化(Q)操作,接着进行可变长编码(VLC)以产生压缩的比特流。其中,混合视频编码器的硬件驱动器包含一量化(Q)单元,根据从混合视频编码器的软件驱动器所产生的宏块量化(quantization)信息执行量化(Q)操作。混合视频编码器的硬件驱动器的可变长编码(VLC)器也将运动信息(motion information)与压缩的比特流整合在一起。
于另一实施例,请参阅图1,图1中的视频编码(VENC)子系统108是混合视频编码器100的硬件驱动器,并且配置成通过使用纯硬件来执行视频编码操作第二部分。VENC子系统108包含视频编码器(VENC)118以及存储器管理单元(VMMU)119。具体的,VENC118执行除了可编程驱动器完成的步骤之外的其他编码步骤,亦即视频编码操作第二部分,例如帧间预测功能,转换功能(例如,离散系数变换(DCT)),量化功能,反变换功能(例如,反DCT),反量化功能,后端处理功能(例如去块过滤(deblocking filter)以及样本自适应过滤器(sample adaptive offset filter),以及熵编码功能(entropy encoding)。此外,使用主视频存储器(main video buffer)来存储源视频帧、重建帧、去区块帧或者视频编码中使用的杂项信息。该主视频存储器通常配置在芯片外存储器12(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、或者闪存)中。然而,该主视频存储器也可以配置在芯片内存储器(例如嵌入式DRAM)中。
于一符合HEVC编码标准的混合视频编码器的实施例,请参阅图1、及图5。本实施例中运动补偿预测单元(MCP)是由一个或若干个软件子系统来实现的,例如混合视频编码器100的DSP子系统102、GPU子系统104、或CPU子系统106。亦即运动估计(ME)功能以及运动补偿(MC)功能是由一个或若干个可编程驱动器例如图1所示的DSP子系统102、GPU子系统104、或CPU子系统106来实现的。图5参考帧缓存器(Reference Picture Buffer)532可以是DSP子系统102、GPU子系统104、或CPU子系统106中的高速缓存113、115、117,或亦可是芯片外存储器12。其它图5中的重要功能区块可以实现在视频编码硬件加速器例如图1所示的VENC子系统108。本实施例的运动补偿预测单元(MCP)通过可编程驱动器(programmable engine)执行指令(即编码代码)来执行实现运动估计(ME)功能以及运动补偿(MC)功能,以导出帧间预测子(inter predictor)。如同前述,帧间预测子(inter predictors)系由具有亮度元素(luma component)例如Y的图像区块,以及具有彩度元素(chroma component)例如U、V的图像区块所构成,每一个图像区块皆对应于当前帧的一编码单元(coding unit),且每一个图像区块皆包含若干个图像像素(image pixels)。可编程驱动器(programmable engine)也决定图像区块的区分结构、图像区块的编码模式、帧内编码单元的预测模式、帧间编码单元的运动信息(motion information)、用于执行量化(Q)操作的量化系数(quantizedcoefficients)、以及用于环路滤波(in-loop filter),例如去块过滤器(DF)或者样本自适应过滤器(SAO)的参数。因此,可编程驱动器(programmable engine)所产生的控制信息(control information)包含,最大编码单元(LCU)说明例如分割结构说明、编码单元(CU)区分结构说明、编码单元(CU)的类型、帧内预测模式、帧内编码单元的预测模式、帧间编码单元的运动信息(motion information)、量化系数(quantized coefficients)、去块过滤(DF)参数、以及样本自适应过滤(SAO)参数。可编程驱动器(programmable engine)(例如DSP子系统102、GPU子系统104、或CPU子系统106)可以将帧间预测子(inter predictor)及控制信息(control information)储存于一个或若干个高速缓存113、115、117或储存于芯片外存储器12。于一实施例中帧间预测子(inter predictor)及控制信息(controlinformation)被储存于高速缓存与芯片外存储器中,亦即高速缓存与芯片外存储器中皆存储有相同的帧间预测子(inter predictor)及控制信息(control information)数据,藉此视频编码器(VENC)118可以通过总线101灵活地自高速缓存或芯片外存储器来读取帧间预测子(inter predictor)及控制信息(control information)。本实施例的环路滤波(in-loop filter)功能包含去块过滤(DF)及样本自适应过滤(SAO)系由视频编码硬件加速器所执行。于另一个实施例,视频编码硬件加速器输出未经过环路滤波处理的重建像素数据(reconstructed data),而可编程驱动器(programmable engine)则进一步通过执行指令(即编码代码)来对未经过环路滤波处理的重建像素数据(reconstructed data)执行环路滤波(in-loop filter)功能,藉此来提供用于运动补偿预测操作的参考帧。
相似地,于一符合VP8及VP9编码标准包含软件驱动器及硬件驱动器的混合视频编码器的实施例中,软件驱动器通过执行指令(即编码代码)来执行帧间预测(interprediction)产生帧间预测子(inter predictor)。帧间预测子(inter predictor)系由具有亮度元素(luma component)例如Y的图像区块,以及具有彩度元素(chroma component)例如U、V的图像区块所构成。帧间预测子(inter predictor)被提供到混合视频编码器的硬件驱动器。硬件驱动器接收控制信息(control information),用以将源视频帧数据编码成压缩的比特流。本实施例的控制信息(control information)包含,图像区块说明例如分割信息、超级区块(SB)或宏块(MB)的区分结构、超级区块(SB)或宏块(MB)的类型、帧内编码单元的预测模式、帧间编码单元的运动信息(motion information)、量化系数(quantizedcoefficients)、以及去块过滤(DF)参数。VP8及VP9编码标准采用了全算术编码(fullyarithmetic coding),为了估算上下文概率表(context probability table)以及运用上下文概率表(context probability table)来进行重新编码(re-encode),VP8及VP9编码需要视频数据编码统计资料。本实施例的软件驱动器根据硬件驱动器的统计累计存储器(statistical accumulator)所计算的视频数据编码统计资料来精确的估算新的上下文概率表(context probability table)。该新的上下文概率表(context probability table)接着被提供给混合视频编码器的硬件驱动器用来进行重新编码(re-encode)。
另一个符合中国第二代数字视频编码标准(AVS2)的混合视频编码器的实施例中,软件驱动器通过执行指令(即编码代码)产生帧间预测子(inter predictor)及控制信息(control information),硬件驱动器根据所接收的控制信息(control information)来产生压缩的比特流。实施例的控制信息(control information)包含图像区块说明例如编码单元(coding unit,CU)区分结构、预测单元(prediction unit,PU)区分结构、转换单元(transform unit,TU)区分结构、编码单元(CU)类型、帧内预测单元(PU)的预测模式、帧间预测单元(PU)的运动信息(motion information)、量化信息(quantizationinformation)、去块过滤器(DF)参数、样本自适应过滤器(SAO)的参数、以及自适应环路滤波(adaptive loop filter,ALF)参数。
图8是软件驱动器与硬件驱动器执行任务并且在帧编码时间的时间间隔交换信息的举例说明。软件驱动器执行运动估计(ME)功能以及运动补偿(MC)功能,并且将所产生的帧间预测子(inter predictor)及控制信息(control information)储存于存储器中。硬件驱动器则读取存储器用以接收该帧间预测子(inter predictor)及控制信息(controlinformation)用以执行除了运动估计(ME)功能以及运动补偿(MC)功能之外的其他任务,例如变换(T)、量化(Q)、反变换(IT)、反量化(IQ)、熵编码、重建(REC)等等。在图8的举例说明中以重建&熵编码表示。换言之,在软件驱动器与硬件驱动器之间存在数据的传输/转换,其原因为完整的视频编码操作是由软件驱动器与硬件驱动器共同完成的。优选地,软件驱动器与硬件驱动器之间的数据的传输/转换是通过存储器(例如,高速缓存或芯片外存储器)来实现的。此处的互动间隔(interaction interval)指的是软件驱动器与硬件驱动器彼此沟通的时间间隔。举例来说,上述的沟通方法包含从软件驱动器至硬件驱动器发送一指示信号IND,及从硬件驱动器至软件驱动器发送一中断信号INT。如图8所示,当软件驱动器完成帧N-1的运动估计(ME)以及运动补偿(MC)之时,在时间TN-1’产生一个指示信号IND来通知硬件驱动器,并且将关于帧N-1的帧间预测子(inter predictor)及控制信息(controlinformation)储存于存储器中。当接到软件驱动器的通知之后,硬件驱动器参考软件驱动器所提供的信息来开始与帧N-1有关的编码步骤,从而获得相对应的重建帧N-1以及帧N-1的压缩比特流。硬件驱动器当完成与帧N-1的编码步骤时在时间TN通过发送一中断信号INT来通知软件驱动器。如图8所示,软件驱动器等待硬件驱动器完成与前一帧(例如帧N-1)相关的编码步骤之后才起动下一帧(例如帧N)相关的编码步骤。
图9是软件驱动器与硬件驱动器执行任务并且在较小的时间间隔交换信息的举例说明。软件驱动器执行运动估计(ME)功能以及运动补偿(MC)功能,并且将所产生的帧间预测子(inter predictor)及控制信息(control information)储存于存储器中。硬件驱动器则读取存储器用以接收该帧间预测子(inter predictor)及控制信息(controlinformation)用以执行除了运动估计(ME)功能以及运动补偿(MC)功能之外的其他任务,例如变换(T)、量化(Q)、反变换(IT)、反量化(IQ)、熵编码、重建(REC)等等。在图9的举例说明中以重建&熵编码表示。优选地,软件驱动器与硬件驱动器之间的数据的传输/转换是通过存储器(例如,高速缓存或芯片外存储器)来实现的。此处的互动间隔(interactioninterval)指的是软件驱动器与硬件驱动器彼此沟通的时间间隔。相较于图8的实施例,图9的实施例具有较短的互动间隔(interaction interval),每当完成一图像区块(图像区块比帧小,例如一个编码单元(CU)、一个条带(slice)、或一个瓦片(tile))的编码步骤时,就执行软件驱动器与硬件驱动器之间的数据的传输/转换。如图9所示,当软件驱动器完成帧N-1的一图像区块的运动估计(ME)以及运动补偿(MC)之时,在时间TN-1’产生一个指示IND来通知硬件驱动器,并且将关于帧N-1的该图像区块的帧间预测子(inter predictor)及控制信息(control information)储存于存储器中。当接到软件驱动器的通知之后,硬件驱动器参考软件驱动器所提供的信息来开始与帧N-1的该图像区块有关的编码步骤。如图9所示,于软件驱动器发送指示信号IND之后,软件驱动器持续地对帧N-1的下一个图像区块(例如,下一个编码单元(CU)、下一个条带(slice)、或下一个瓦片(tile))执行运动估计(ME)功能以及运动补偿(MC)功能,并且接续地发送指示信号IND来通知硬件驱动器,每当完成帧N-1的一图像区块的运动估计(ME)以及运动补偿(MC)之时。藉此,硬件驱动器参考软件驱动器所提供的信息来开始与帧N-1有关的编码步骤,从而获得相对应的重建帧N-1以及帧N-1的压缩比特流。硬件驱动器当完成与帧N-1的编码步骤时在时间TN通过发送一中断信号INT来通知软件驱动器。如图9所示,软件驱动器等待硬件驱动器完成与前一帧(例如帧N-1)相关的编码步骤之后才起动下一帧(例如帧N)相关的编码步骤。
混合视频编码器用可接受的系统带宽以及软件驱动器的计算负载来交换大幅降低硬件成本。与传统的纯硬件视频编码器相比混合视频编码器的硬件驱动器藉由移除部分视频编码逻辑电路以及静态随机存取存储器(SRAM)因而具有比较小的尺寸。例如移除用于实现运动估计(ME)功能、亮度图像区块的运动补偿(MC)功能、及彩度图像区块的运动补偿(MC)功能的逻辑电路,而改用混合视频编码器的软件驱动器来执行实现运动估计(ME)功能以及运动补偿(MC)功能。同时,原本在硬件视频编码器中与运动估计(ME)功能搭配所配置做为搜索窗之用的静态随机存取存储器(SRAM)以及配置做为亮度图像区块的运动补偿(MC)功能、及彩度图像区块的运动补偿(MC)功能的静态随机存取存储器(SRAM)也可以一并移除。
视频编码过程中,混合视频编码器的软件驱动器产生并储存帧间预测子(interpredictor)以及控制信息(control information)于一存储器。混合视频编码器的硬件驱动器发出数据存取需求(data access request)用来存取储存于存储器中的帧间预测子或控制信息。相较于本发明的混合视频编码器,传统的纯硬件视频编码器并不会将帧间预测子(inter predictor)以及控制信息(control information)储存于存储器。以图5为例,在传统的纯硬件视频编码器中,运动补偿预测单元(MCP)512所产生的帧间预测子(interpredictor)将被直接传送到加法器516以及重建单元(REC)526,控制信息(controlinformation)例如图像区块区分结构、模式信息(mode information)、运动信息(motioninformation)、环路滤波(in-loop filter)参数等信息亦将直接被传送至熵编码器534用来产生压缩的比特流。
如图1、图4及图6所示的混合视频编码器100、400,完整的视频编码操作需藉由软件驱动器(例如DSP子系统102、GPU子系统104、CPU子系统106、或视频编码决策软件驱动器610)及硬件驱动器(例如VENC子系统108、或视频编码硬件加速器620)的合作来完成。软件驱动器及硬件驱动器之间系藉由存储器(例如芯片内高速缓存、芯片外存储器、或两者的结合)来进行数据传输与存取。数据传输与存取机制的设计需要考虑到许多因素,包含存储器容量、数据量大小、数据传输互动间隔(interaction interval)等。
于一实施例,若以软件驱动器来执行实现运动估计(ME)功能及以硬件驱动器来执行实现运动补偿(MC)功能,于此情况下由于执行运动估计(ME)功能所产生的运动向量(motion vector)以及控制信息(control information)的数据量也许不大,因此运动向量(motion vector)以及控制信息(control information)可以储存于芯片内高速缓存113、115、或117来实现数据传输与存取机制。凭借此机制硬件驱动器可以得益于通过总线101快速的存取芯片内高速缓存113、115、或117。于另一实施例,若运动估计(ME)功能及运动补偿(MC)功能都是以软件驱动器来执行实现,相较于前例,因为软件驱动器所产生的帧间预测子(inter predictor)具有较大的数据量,因此帧间预测子(inter predictor)可以储存于芯片外存储器来实现数据传输与存取机制。相较于芯片内高速缓存,芯片外存储器具有容量大且节省成本的优势。凭借此机制硬件驱动器需要通过存储控制器110来存取储存于芯片外存储器的帧间预测子。虽然本实施例中帧间预测子需要被储存于芯片外存储器,但软件驱动器产生的控制信息(control information)仍然可以被储存于芯片内高速缓存113、115、或117或芯片外存储器12。
于一实施例,若运动估计(ME)功能及运动补偿(MC)功能都是以软件驱动器来执行实现,且数据传输互动间隔(interaction interval)较短的情形下,例如每完成一个编码单元(CU)或一个宏块(MB)的运动估计(ME)功能及运动补偿(MC)功能时即触发数据传输与存取操作,换句话说软件驱动器于每次产生并储存对应于一个编码单元(CU)或一个宏块(MB)的帧间预测子时,即通知硬件驱动器可以开始数据传输与存取操作。于此情况下由于执行运动估计(ME)功能所产生的运动向量(motion vector)以及控制信息(controlinformation)的数据量也许不大,因此运动向量(motion vector)以及控制信息(controlinformation)可以储存于芯片内高速缓存113、115、或117来实现数据传输与存取机制。凭借此机制硬件驱动器可以得益于通过总线101快速的存取芯片内高速缓存113、115、或117。于另一实施例,运动估计(ME)功能及运动补偿(MC)功能都是以软件驱动器来执行实现,且数据传输互动间隔(interaction interval)较长的情形下,例如每完成一个条带(slice)、一个瓦片(tile)或一个帧(frame)的运动估计(ME)功能及运动补偿(MC)功能时才触发数据传输与存取操作,相较于前例,因为软件驱动器所产生的对应于若干个编码单元(CU)或宏块(MB)的帧间预测子(inter predictor)具有较大的数据量,因此该些帧间预测子(interpredictor)可以储存于芯片外存储器12来实现数据传输与存取机制。相较于芯片内高速缓存,芯片外存储器具有容量大且节省成本的优势。凭借此机制硬件驱动器需要通过存储控制器110来存取储存于芯片外存储器的该些帧间预测子。虽然本实施例中这些帧间预测子需要被储存于芯片外存储器,但软件驱动器产生的控制信息(control information)仍然可以被储存于芯片内高速缓存113、115、或117或芯片外存储器12。
呈现上述描述是为了使所属技术领域中普通技术人员可以结合特定应用以及需求而实现本发明。所描述实施例的各种变形对于所属技术领域中普通技术人员是显而易见的,而且所定义的一般原则可以用于其他实施例。因此,本发明不限于上述特定实施例,而是根据所揭示的原则和新颖性特征符合最宽范围。在上述详细描述中,各种特定细节被描述以提供对于本发明的透彻理解。虽然如此,实现本发明可以被所属技术领域中普通技术人员所理解。
上述本发明的实施例可以以各种硬件、软件代码或者上述两者的组合而实现。举例说明,本发明的一实施例可以为集成到视频压缩芯片的电路或者集成到视频编码软件的程序代码,以实施上述处理。本发明的另一实施例也可为程序代码,在DSP上执行以实施上述处理。本发明也可以包含多个功能以被计算机处理器、DSP、微处理器或者现场可编程门阵列(Field Programmable Gate Array,FPGA)所实施。这些处理器可以配置为通过执行机器可读软件代码或者固件代码,根据本发明而实施特定任务,其中机器可读软件代码或者固件代码定义了本发明所体现的特定方法。软件代码或者固件代码可以以不同程序语言、不同格式或者风格而实现。也可以为不同目标平台编译软件代码。然而,根据本发明执行任务的软件代码与其他类型配置代码的不同代码样式、类型与语言不脱离本发明的精神与范围。
本发明中描述的例子和优选实施例,是帮助理解本发明的而并不局限于这些实施例。相反,它的目的是为了涵盖各种修改和类似的安排。因此,权利要求书的范围应给予最广泛的解释,包括所有这些修改和类似的安排。

Claims (14)

1.一种视频编码方法,包含:
接收与当前帧的编码单元相关的视频数据;
由软件驱动器执行多个指令来实行视频编码操作的第一部分,其中该视频编码操作的第一部分包含;
产生对应于该编码单元的帧间预测子以及控制信息,其中该帧间预测子包含具有亮度元素的图像区块和具有彩度元素的图像区块;以及
储存该帧间预测子以及该控制信息于存储器;以及
由硬件驱动器依据该控制信息来实行视频编码操作的第二部分,其中该视频编码操作的第二部分包含;
从该存储器接收该帧间预测子以及该控制信息;
将该编码单元相关的视频数据与该帧间预测子相减以产生预测残差信号;
转换及量化该预测残差信号并且产生转换及量化后的预测残差信号;以及
编码该转换及量化后的预测残差信号以形成压缩的视频比特流。
2.根据权利要求1所述的视频编码方法,其特征在于,实行该视频编码操作的第一部分的步骤包含:
决定该编码单元的描述,其中该描述包含对应于该编码单元的模式信息、运动信息、或模式信息以及运动信息;以及
将该描述加入该控制信息中,并且将该控制信息储存于存储器。
3.根据权利要求1所述的视频编码方法,其特征在于,实行该视频编码操作的第一部分的步骤包含:
决定该编码单元的至少一可调整的头参数,其中该可调整的头参数包含环路滤波强度、参考帧索引信息、或环路滤波强度以及参考帧索引信息;以及
将该可调整的头参数加入该控制信息中,并且将该控制信息储存于存储器。
4.根据权利要求1所述的视频编码方法,其特征在于,该硬件驱动器实行该视频编码操作的第二部分的步骤进一步包含下列操作的一个操作或若干个操作的组合,帧内预测功能、反转换功能、反量化功能、以及环路滤波功能;以及
其中,该硬件驱动器进一步产生对应于该当前帧的重建帧数据、附加信息、或统计资料。
5.根据权利要求1所述的视频编码方法,其特征在于,实行该视频编码操作的第一部分的步骤包含,利用重建帧数据作为参考帧对该当前帧的视频数据执行运动估计功能及运动补偿功能以产生该帧间预测子。
6.根据权利要求1所述的视频编码方法,其特征在于,其中该控制信息包含模式信息、运动信息、量化信息、区块区分结构、环路滤波参数、或上述的任意组合。
7.根据权利要求1所述的视频编码方法,其特征在于,其中至少一部分由软件驱动器产生的控制信息会与压缩的视频比特流整合在一起。
8.一种混合视频编码器,包含:
软件驱动器执行多个指令来对从存储器接收的与当前帧的编码单元相关的视频数据实行视频编码操作的第一部分,其中该视频编码操作的第一部分包含;
产生对应于该编码单元的帧间预测子以及控制信息,其中该帧间预测子包含具有亮度元素的图像区块和具有彩度元素的图像区块;以及
储存该帧间预测子以及该控制信息于该存储器;以及
硬件驱动器,耦合于该软件驱动器,依据该控制信息来实行视频编码操作的第二部分,其中该视频编码操作的第二部分包含;
加法器,将该编码单元相关的视频数据与该帧间预测子相减以产生预测残差信号;
转换电路,转换该预测残差信号并且产生转换后的预测残差信号;
量化电路,量化该转换后的预测残差信号并且产生转换及量化后的预测残差信号;以及
熵编码器对该转换及量化后的预测残差信号进行编码以形成压缩的视频比特流。
9.根据权利要求8所述的混合视频编码器,其特征在于,其中该软件驱动器决定该编码单元的描述,其中该描述包含对应于该编码单元的模式信息、运动信息、或模式信息以及运动信息。
10.根据权利要求8所述的混合视频编码器,其特征在于,其中该软件驱动器决定该编码单元的至少一可调整的头参数,其中该可调整的头参数包含环路滤波强度、参考帧索引信息、或环路滤波强度以及参考帧索引信息。
11.根据权利要求8所述的混合视频编码器,其特征在于,其中该硬件驱动器实行该视频编码操作的第二部分的步骤进一步包含下列操作的一个操作或若干个操作的组合,帧内预测功能、反转换功能、反量化功能、以及环路滤波功能;以及
其中,该硬件驱动器进一步产生对应于该当前帧的重建帧数据、附加信息、或统计资料。
12.根据权利要求8所述的混合视频编码器,其特征在于,其中该软件驱动器实行该视频编码操作的第一部分的步骤包含,利用重建帧数据作为参考帧对该当前帧的视频数据执行运动估计功能及运动补偿功能以产生该帧间预测子。
13.根据权利要求8所述的混合视频编码器,其特征在于,其中该控制信息包含模式信息、运动信息、量化信息、区块区分结构、环路滤波参数、或上述的任意组合。
14.根据权利要求8所述的混合视频编码器,其特征在于,其中该至少一部分由软件驱动器产生的控制信息会与压缩的视频比特流整合在一起。
CN201610833500.2A 2015-09-22 2016-09-20 视频编码方法和混合视频编码器 Pending CN106973297A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562221958P 2015-09-22 2015-09-22
US62/221,958 2015-09-22
US15/265,896 2016-09-15
US15/265,896 US10057590B2 (en) 2014-01-13 2016-09-15 Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding

Publications (1)

Publication Number Publication Date
CN106973297A true CN106973297A (zh) 2017-07-21

Family

ID=57683427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610833500.2A Pending CN106973297A (zh) 2015-09-22 2016-09-20 视频编码方法和混合视频编码器

Country Status (2)

Country Link
US (1) US10057590B2 (zh)
CN (1) CN106973297A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672890A (zh) * 2017-10-16 2019-04-23 三星电子株式会社 视频编码器件及编码器
CN111586443A (zh) * 2020-05-21 2020-08-25 上海大因多媒体技术有限公司 一种基于h.265协议分布式系统的信息输出方法及系统
CN111630858A (zh) * 2018-11-16 2020-09-04 北京字节跳动网络技术有限公司 组合帧间帧内预测模式中的权重
US11838539B2 (en) 2018-10-22 2023-12-05 Beijing Bytedance Network Technology Co., Ltd Utilization of refined motion vector
US11843725B2 (en) 2018-11-12 2023-12-12 Beijing Bytedance Network Technology Co., Ltd Using combined inter intra prediction in video processing
US11930165B2 (en) 2019-03-06 2024-03-12 Beijing Bytedance Network Technology Co., Ltd Size dependent inter coding
US11956465B2 (en) 2018-11-20 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Difference calculation based on partial position

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715818B2 (en) * 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US20180278948A1 (en) * 2017-03-23 2018-09-27 Qualcomm Incorporated Tile-based processing for video coding
US11070815B2 (en) 2017-06-07 2021-07-20 Mediatek Inc. Method and apparatus of intra-inter prediction mode for video coding
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US10291925B2 (en) * 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
CN111698504B (zh) * 2019-03-11 2022-05-20 杭州海康威视数字技术股份有限公司 编码方法、解码方法及装置
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US20210168354A1 (en) * 2019-12-03 2021-06-03 Mellanox Technologies, Ltd. Video Coding System
WO2021134011A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Signaling of slice type and video layers
JP7425204B2 (ja) 2019-12-26 2024-01-30 バイトダンス インコーポレイテッド ビデオビットストリームにおける仮想参照デコーダパラメータのシグナリングに対する制約
CN114902567A (zh) 2019-12-27 2022-08-12 字节跳动有限公司 视频编解码中的子图像信令
EP4088431A4 (en) 2020-01-09 2023-09-27 ByteDance Inc. DECODING THE ORDER OF DIFFERENT SEI MESSAGES
US20230156206A1 (en) * 2020-03-24 2023-05-18 Nec Corporation Video encoding system and video encoding method
US11425393B1 (en) 2021-06-10 2022-08-23 Meta Platforms, Inc. Hardware optimization of rate calculation in rate distortion optimization for video encoding
CN115878548A (zh) * 2021-09-27 2023-03-31 超威半导体(上海)有限公司 用于相机使能装置的低延迟增强现实架构
CN113873206B (zh) * 2021-10-30 2024-05-14 珠海研果科技有限公司 一种多路视频录制方法及系统
CN114584784A (zh) * 2022-03-03 2022-06-03 杭州中天微系统有限公司 视频编码系统、硬件加速装置及硬件加速方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101390397A (zh) * 2006-02-24 2009-03-18 微软公司 加速视频编码
CN102065288A (zh) * 2010-06-30 2011-05-18 美商威睿电通公司 结合软硬件实现的视频处理系统、方法及其装置
CN102067605A (zh) * 2008-08-01 2011-05-18 卓瑞公司 用集成的时间滤波器降噪的视频编码器
CN102547296A (zh) * 2012-02-27 2012-07-04 美商威睿电通公司 移动估计加速电路、移动估计方法及环路滤波加速电路
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

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2562364B1 (fr) * 1984-04-03 1987-06-19 Thomson Csf Procede et systeme de compression de debit de donnees numeriques transmises entre un emetteur et un recepteur de television
US5276785A (en) * 1990-08-02 1994-01-04 Xerox Corporation Moving viewpoint with respect to a target in a three-dimensional workspace
US5594813A (en) * 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US6388707B1 (en) * 1994-04-12 2002-05-14 Canon Kabushiki Kaisha Image pickup apparatus having means for appointing an arbitrary position on the display frame and performing a predetermined signal process thereon
US5920353A (en) 1996-12-03 1999-07-06 St Microelectronics, Inc. Multi-standard decompression and/or compression device
US6167090A (en) 1996-12-26 2000-12-26 Nippon Steel Corporation Motion vector detecting apparatus
US6321026B1 (en) 1997-10-14 2001-11-20 Lsi Logic Corporation Recordable DVD disk with video compression software included in a read-only sector
US8284844B2 (en) * 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7042449B2 (en) * 2002-06-28 2006-05-09 Autodesk Canada Co. Push-tumble three dimensional navigation system
JP3513148B1 (ja) * 2002-10-11 2004-03-31 株式会社エヌ・ティ・ティ・ドコモ 動画像符号化方法、動画像復号方法、動画像符号化装置、動画像復号装置、動画像符号化プログラム、及び動画像復号プログラム
CA2472887A1 (en) 2003-06-30 2004-12-30 Gravic, Inc. Methods for ensuring referential integrity in multithreaded replication engines
US8311113B2 (en) * 2004-11-12 2012-11-13 Broadcom Corporation Method and system for using motion prediction to equalize video quality across intra-coded frames
KR100640876B1 (ko) * 2004-11-17 2006-11-02 엘지전자 주식회사 이동 방송 수신기의 비디오 디코딩 시스템
EP3155998B1 (en) * 2005-10-20 2021-03-31 Intuitive Surgical Operations, Inc. Auxiliary image display and manipulation on a computer display in a medical robotic system
US20070236514A1 (en) * 2006-03-29 2007-10-11 Bracco Imaging Spa Methods and Apparatuses for Stereoscopic Image Guided Surgical Navigation
US7953284B2 (en) * 2007-03-29 2011-05-31 James Au Selective information handling for video processing
JP4900051B2 (ja) 2007-05-31 2012-03-21 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US8009758B2 (en) 2007-06-20 2011-08-30 Samsung Electronics Co., Ltd Apparatus and method for channel-interleaving and channel-deinterleaving data in a wireless communication system
US8576807B2 (en) 2007-06-25 2013-11-05 Qualcomm Incorporated Channel interleaving structure for a wireless communication system
US9332264B2 (en) 2007-12-30 2016-05-03 Intel Corporation Configurable performance motion estimation for video encoding
US8094714B2 (en) 2008-07-16 2012-01-10 Sony Corporation Speculative start point selection for motion estimation iterative search
US8311115B2 (en) 2009-01-29 2012-11-13 Microsoft Corporation Video encoding using previously calculated motion information
US8918207B2 (en) * 2009-03-09 2014-12-23 Intuitive Surgical Operations, Inc. Operator input device for a robotic surgical system
US8780991B2 (en) 2010-09-14 2014-07-15 Texas Instruments Incorporated Motion estimation in enhancement layers in video encoding
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
JP2012124673A (ja) * 2010-12-07 2012-06-28 Sony Corp 画像処理装置、画像処理方法、およびプログラム
US20120170648A1 (en) 2011-01-05 2012-07-05 Qualcomm Incorporated Frame splitting in video coding
US10440373B2 (en) * 2011-07-12 2019-10-08 Texas Instruments Incorporated Method and apparatus for coding unit partitioning
GB2498992B (en) 2012-02-02 2015-08-26 Canon Kk Method and system for transmitting video frame data to reduce slice error rate
US20130301727A1 (en) * 2012-05-14 2013-11-14 Qualcomm Incorporated Programmable and scalable integer search for video encoding
WO2015101716A1 (en) 2014-01-03 2015-07-09 Nokia Technologies Oy Parameter set coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101390397A (zh) * 2006-02-24 2009-03-18 微软公司 加速视频编码
CN102067605A (zh) * 2008-08-01 2011-05-18 卓瑞公司 用集成的时间滤波器降噪的视频编码器
CN102065288A (zh) * 2010-06-30 2011-05-18 美商威睿电通公司 结合软硬件实现的视频处理系统、方法及其装置
CN102547296A (zh) * 2012-02-27 2012-07-04 美商威睿电通公司 移动估计加速电路、移动估计方法及环路滤波加速电路
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

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672890A (zh) * 2017-10-16 2019-04-23 三星电子株式会社 视频编码器件及编码器
US11838539B2 (en) 2018-10-22 2023-12-05 Beijing Bytedance Network Technology Co., Ltd Utilization of refined motion vector
US11889108B2 (en) 2018-10-22 2024-01-30 Beijing Bytedance Network Technology Co., Ltd Gradient computation in bi-directional optical flow
US11843725B2 (en) 2018-11-12 2023-12-12 Beijing Bytedance Network Technology Co., Ltd Using combined inter intra prediction in video processing
US11956449B2 (en) 2018-11-12 2024-04-09 Beijing Bytedance Network Technology Co., Ltd. Simplification of combined inter-intra prediction
CN111630858A (zh) * 2018-11-16 2020-09-04 北京字节跳动网络技术有限公司 组合帧间帧内预测模式中的权重
CN111630858B (zh) * 2018-11-16 2024-03-29 北京字节跳动网络技术有限公司 组合帧间帧内预测模式中的权重
US11956465B2 (en) 2018-11-20 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Difference calculation based on partial position
US11930165B2 (en) 2019-03-06 2024-03-12 Beijing Bytedance Network Technology Co., Ltd Size dependent inter coding
CN111586443A (zh) * 2020-05-21 2020-08-25 上海大因多媒体技术有限公司 一种基于h.265协议分布式系统的信息输出方法及系统
CN111586443B (zh) * 2020-05-21 2022-06-10 上海大因多媒体技术有限公司 一种基于h.265协议分布式系统的信息输出方法及系统

Also Published As

Publication number Publication date
US20170006294A1 (en) 2017-01-05
US10057590B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
CN106973297A (zh) 视频编码方法和混合视频编码器
CN104937931B (zh) 使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置
CN104935942B (zh) 对帧内预测模式进行解码的方法
US8000388B2 (en) Parallel processing apparatus for video compression
US11082706B2 (en) Method and system of video coding with a multi-pass prediction mode decision pipeline
US9473778B2 (en) Skip thresholding in pipelined video encoders
CN106464894B (zh) 视频处理方法及装置
CN101371584B (zh) 提供用于多视图视频编码的降低分辨率的更新模式的方法和装置
CN109792540A (zh) 利用每帧参数控制的硬件加速的视频编码方法和系统
US20110274178A1 (en) Method and device for parallel decoding of video data units
CN105684036B (zh) 并行的硬件块处理流水线和软件块处理流水线
CN101472181A (zh) 用于视频编码的可配置性能运动估计
DE112016002026T5 (de) Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung
CN101166277B (zh) 在用于处理运动图像的设备中访问存储器的方法
KR20190015218A (ko) 비디오 코딩을 위해 이웃 블록 패턴을 이용하는 모션 추정 방법 및 시스템
CN106576168A (zh) 图像压缩解压缩装置
CN101909212B (zh) 可重构多媒体SoC的多标准宏块预测系统
Chang et al. A dynamic quality-adjustable H. 264 video encoder for power-aware video applications
CN101383971A (zh) 一种基于图像编解码的帧内预测的处理方法
CN102137257B (zh) 基于tms320dm642芯片的嵌入式h.264编码方法
CN113767626B (zh) 视频增强的方法及装置
KR101051871B1 (ko) 디블록킹 필터에서의 경계면 세기 계수 판단 장치 및 방법
Jiang et al. Highly paralleled low-cost embedded HEVC video encoder on TI KeyStone multicore DSP
CN102595137A (zh) 基于图像像素块行/列流水线的快速模式判决装置和方法
CN101977317A (zh) 帧内预测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20200522