使用软件驱动器及硬件驱动器彼此联合来实现混合视频编码器的方法及装置的制造方法_3

文档序号:9221971阅读:来源:国知局
帧M-2的相关信息。举例来说,软件驱动器可以从硬件驱动器获得压缩的帧M-2的比特流大小,编码模式信息,量化信息,处理时间信息,以及/或者存储器频宽信息等相关信息。当接收到软件驱动器的通知之后,硬件驱动器参考从软件驱动器获得的信息来开始与帧M-1相关的编码步骤来获得对应的重建帧M-1。当在时间TM_/完成与帧M-1相关的编码步骤时,硬件驱动器通知软件驱动器。如图3所示,由于帧M软件部分的处理速度慢于硬件驱动器处理帧M-1的处理速度,因此硬件驱动器等待软件驱动器完成与帧M相关的编码步骤。
[0032]在完成帧M的运动估计之后,软件驱动器传输与帧M相关的信息至硬件部分,并在Tm开始帧M+1的运动估计。当接收到软件驱动器的通知之后,硬件驱动器参考从软件驱动器获得的信息来开始与帧M相关的编码步骤,以获得相对应的重建帧M0硬件驱动器在时间TM’当完成了与帧M有关的编码步骤时通知软件驱动器。如图3所示,软件驱动器处理帧M+1的时间与硬件驱动器处理帧M的时间相等。因此硬件驱动器与软件驱动器不需要彼此等待。
[0033]需注意的是,软件部分与硬件部分的互动间隔并不局限于编码一个完整帧的时间区间。该间隔可是一个宏块(宏块,MB)、一个最大的编码单元(LCU)或者一个切片(slice)、或一个瓦片(tile)。该间隔也可是多个宏块、多个最大的编码单元(LCU)、多个切片、或多个瓦片。该间隔也可是一个或者多个宏块(或最大编码单元)行。当互动间隔的间隔尺寸小时,重建帧(或后端处理帧)的数据对于运动估计是可用的。举例来说,在一个以切片为基础的互动(即视频编码是依据切片而并非帧来进行的)的情况下,混合视频编码器100的硬件驱动器以及软件驱动器可处理相同源视频帧M的不同切片,并且重建帧M-1 (其是从源视频帧M-1获得,源视频帧M-1在源视频帧M之前)在此时也可用。在这种情况下,混合视频编码器100的软件驱动器处理源视频帧M的一个切片,重建帧M-1可被用作一个参考帧,从而提供软件驱动器执行的运动估计所参考的参考像素数据。在图3所示的举例说明中,如果需要的话,软件驱动器可以在一个帧间隔内等待硬件驱动器。然而,这并非本发明的一个限制。举例来说,混合视频编码器100的软件驱动器可配置为依据一序列的源视频帧连续地执行运动估计,而并不等待混合视频编码器100的硬件驱动器。
[0034]依据本发明的精神,可提供其他多个实施例,这些实施例具有相同的特性,即运动估计是由在可编程驱动器上运行的软件来完成的。一个实施例是软件驱动器处理ME,并且硬件驱动器处理MC、T、Q、IQ、IT, ECo对于不同的视频编码标准,硬件驱动器可进一步处理后端流程,例如DB以及SA0。另一个实施例是软件驱动器处理ME以及MC,并且硬件驱动器处理T、Q、IQ、IT、EC。硬件驱动器可进一步处理后端流程,例如DB以及SA0。这些替代设计都通过软件来实现ME (即执行指令),因此都在本发明的范围之内。
[0035]在另一实施例中,混合视频编码器100的软件编码部分在一或多个可编程驱动器上执行运动估计。软件编码部分所执行的运动估计结果接着被混合视频编码器100的硬件编码部分使用。运动估计的结果包含,但不限于,运动向量、编码单元的编码模式、参考帧指数、单一参考帧或者多个参考帧、以及/或者用来执行帧内或帧间编码所需的其他信息。软件编码部分进一步决定每一编码区域(例如宏块、LCU、切片或帧)的比特预算(bitbudget)以及量化设置。软件编码部分也决定当前要编码的帧的帧类型,并且上述决定可依据运动估计结果的至少部分信息来决定。举例来说,软件编码部分决定当前帧为I帧、P帧、B帧或其他帧类型。软件编码部分可进一步决定要编码的当前帧的片数量以及片类型,并且上述决定可依据运动估计结果的至少部分信息来决定。举例来说,软件编码部分可决定要编码的当前帧包含两个片。软件编码部分可决定当前帧具有编码为I片的第一片,并且其他的片为P片。软件编码部分进一步决定上述I片与P片的区域。可依据在运动估计中收集的统计信息来决定第一片编码为I片。举例来说,统计信息包含视频内容复杂度或者整体帧的一部分的活动性信息、运动信息、运动估计成本功能信息或者其他第一片的运动估计所产生的信息。
[0036]软件编码部分依据缩小比例的源视频帧(其通过原始源视频帧获得)以及缩小比例的参考帧(其通过原始参考帧获得)进行粗略的运动估计。粗略运动估计的结果输送给硬件编码部分。硬件编码部分执行最终的或者好的运动估计以及相对应的运动补偿。在另一方面,硬件编码部分直接进行运动补偿,而不进行最终的运动估计。
[0037]软件编码部分进一步从硬件编码部分获得精确的编码结果,来决定后续一个帧或者多个编码帧的搜索范围。举例来说,垂直搜索范围+/-48被应用至编码第一帧。该帧的编码结果指示编码的运动向量主要是在垂直搜索范围+/-16的范围之内。软件编码部分接着决定缩减该垂直搜索范围至+/-32并应用该范围来编码第二帧。通过这个举例说明,但并非本发明的限制,第二帧可是第一帧之后的任意一帧。决定的搜索范围可以进一步送至硬件编码部分来进行运动估计或者其他处理。上述搜索范围的确定可以被当做软件视频编码器所执行的运动估计的一部分。
[0038]软件编码部分进一步从其他外部装置获得运动信息来决定搜索范围。该外部装置可以是一个图像信号处理器(image signal processor,ISP)、电子/光学图像稳定单元(electronic/optical image stabilizat1n unit)、图型处理单元(graphic processingunit, GPU)、显示处理器、运动过滤器或位置传感器。如果编码的第一帧被决定为一个静态场景,软件编码部分可进一步缩减垂直搜索区域至+/-32,并应用该区域来编码第一帧。
[0039]在一个例子中,当视频编码标准是高效率视频编码(High Efficiency VideoCoding, HEVO/H.265时,软件编码部分也决定要编码的当前帧的瓦片数量与瓦片参数,并且该决定是至少依据运动估计的结果的信息来决定。举例来说,软件编码部分决定在要进行1SOp编码的当前帧内有两个瓦片,每一个瓦片是960x1080。软件编码部分决定在要进行1SOp编码的当前帧内有两个瓦片,每一个瓦片是1920x 540。上述决定被硬件编码部分所使用来完成编码的其他处理。
[0040]软件编码部分利用可编程驱动器的高速缓存来存储至少一部分当前源视频帧的数据与至少一部分参考帧的数据,以此获得优势,并由于较低的数据存储延时而增进编码性能。参考帧可以是重建帧或后端处理帧。混合视频编码器100所使用的高速缓存113/115/117可以是一级高速缓存、二级高速缓存、三级高速缓存或者更高级高速缓存。
[0041]为了简洁与方便,假设混合视频编码器100的软件驱动器使用CPU子系统106。因此当执行运动估计时,软件驱动器(即CPU子系统106)从较大尺寸的缓存(例如芯片外存储器12)获取源视频帧以及参考帧。当高速缓存117的上述数据是可用时,硬件驱动器(即VENC子系统108)将从软件驱动器的高速缓存117获得源视频帧数据或者参考帧数据。否贝1J,源视频帧数据或者参考帧数据也将从较大尺寸的帧缓冲器存取。
[0042]在这个实施例中,使用高速缓存一致性机制(coherence mechanism)来检查是否高速缓存117中是否存在上述数据。该高速缓存一致性机制当数据存在于高速缓存117时,从高速缓存117中获取数据,或者将数据存取需求(即读取需求)传递至存储控制器110来从帧存储器中获得所需的数据。换言之,CPU子系统106的高速缓存控制器通过使用高速缓存117来服务硬件驱动器发出的数据存取需求。当高速缓存命中发生时,高速缓存控制器返回缓存的数据。当高速缓存缺失发生时,存储控制器110将收到硬件驱动器所需数据的数据存取需求,并且执行数据存取转换。
[0043]两种类型的高速缓存一致性机制可以在该实施例中使用。第一种是保守高速缓存一致性机制(conservative
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1