CN105681807A - 一种基于h264协议的分像素运动矢量计算方法和装置 - Google Patents

一种基于h264协议的分像素运动矢量计算方法和装置 Download PDF

Info

Publication number
CN105681807A
CN105681807A CN201610008191.5A CN201610008191A CN105681807A CN 105681807 A CN105681807 A CN 105681807A CN 201610008191 A CN201610008191 A CN 201610008191A CN 105681807 A CN105681807 A CN 105681807A
Authority
CN
China
Prior art keywords
motion vector
block
pixel
sub
pixel motion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610008191.5A
Other languages
English (en)
Other versions
CN105681807B (zh
Inventor
李仙辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rockchip Electronics Co Ltd
Original Assignee
Fuzhou Rockchip Electronics Co Ltd
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 Fuzhou Rockchip Electronics Co Ltd filed Critical Fuzhou Rockchip Electronics Co Ltd
Priority to CN201610008191.5A priority Critical patent/CN105681807B/zh
Publication of CN105681807A publication Critical patent/CN105681807A/zh
Application granted granted Critical
Publication of CN105681807B publication Critical patent/CN105681807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/513Processing of motion vectors
    • 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/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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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/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/523Motion estimation or motion compensation with sub-pixel accuracy

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种基于H264协议的分像素运动矢量计算方法和装置,所述装置用于计算宏块的分像素运动矢量,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元。所述方法在计算H264协议的分像素运动矢量过程中,所获取的原始块像素基于16x16块的大小进行获取,保证了8x8块和4x4块的原始块像素的复用性;在获取参考块像素时,根据参考帧复用维护单元记录整像素运动矢量之间的对应关系,选择性地获取整像素运动矢量不相同的子块的参考块像素,而对于整像素运动矢量相同的参考块像素则不再重复获取,从而大大提高了参考像素的复用率,并提高了分像素运动矢量的计算效率,节省了功耗,同时还节约了硬件成本。

Description

一种基于H264协议的分像素运动矢量计算方法和装置
技术领域
本发明涉及计算机芯片领域,尤其涉及一种基于H264协议的分像素运动矢量计算方法和装置。
背景技术
随着计算机技术、通信技术、互联网技术和多媒体技术的迅猛发展,多媒体应用已经深入人们日常生活的方方面面,并逐渐地改变着人们的生活方式。视频是多媒体应用中最为常见和信息量最大的媒体。目前,多媒体业务已从以音频为主发展成以视频为主,无论是电影、电视、视频监控等传统多媒体应用,还是网流媒体视频、可视电话和视频会议等新兴多媒体应用,视频都是其中最为核心的组成部分。
视频编码的协议有很多种,H264协议就是其中重要一项。而在视频编码过程中,通过获取整像素运动矢量来计算分像素运动矢量又是视频编码步骤的重要一环。由于计算分像素运动矢量需要获取原始块像素以及参考块像素,而参考块的像素又是基于整像素运动矢量来进行获取。现有的方法在获取参考块的像素往往采用逐一获取的方法,即每一原始块像素都需要根据整像素运动矢量去对应的缓存单元中获取参考块像素,导致参考块像素获取时复用率低下、步骤繁琐、功耗大、硬件面积大、成本高等问题。
发明内容
为此,需要提供一种基于H264协议的分像素运动矢量计算的技术方案,用以解决在计算视频像素块的分像素运动矢量时,由于获取参考块像素步骤繁琐、复用率低,导致视频编码功耗大、硬件面积大、成本高等问题。
为实现上述目的,发明人提供了一种基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;
所述第一获取模块用于从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
所述参考帧复用维护单元用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
所述第二获取模块用于从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元用于缓存16x16子块对应的原始块像素;
所述第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
所述SAD代价计算单元用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
所述SAD代价选取单元用于将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
所述主控单元用于接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述“主控单元用于将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
发明人还提供了一种基于H264协议的分像素运动矢量计算方法,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;所述方法包括如下步骤:
第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
参考帧复用维护单元记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元缓存16x16子块对应的原始块像素;
第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元缓存参考块像素;
SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
进一步地,所述步骤“主控单元将分像素运动矢量写入第一缓存模块中”包括:
主控单元将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
上述技术方案所述的基于H264协议的分像素运动矢量计算方法和装置,所述方法应用于所述装置,所述装置用于计算宏块的分像素运动矢量,所述方法包括如下步骤:首先第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量,;而后参考帧复用维护单元记录整像素运动矢量之间的对应关系;而后第二获取模块用于从所述第二缓存模块中获取16x16子块对应的原始块像素;而后第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
SAD代价计算单元用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
上述方案所述的基于H264协议的分像素运动矢量计算方法和装置,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元。所述方法包括如下步骤:首先第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量;而后参考帧复用维护单元记录整像素运动矢量之间的对应关系;而后第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素;而后SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;而后SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;而后主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。这样,在计算H264协议的分像素运动矢量过程中,所获取的原始块像素基于16x16块的大小进行获取,保证了8x8块和4x4块的原始块像素的复用性;在获取参考块像素时,根据参考帧复用维护单元记录整像素运动矢量之间的对应关系,选择性地获取不存在复用情况的各层(16x16层、8x8层以及4x4层)的参考块像素进行获取,而对于可以复用的参考块像素则不再重复获取,从而大大提高了参考像素的复用率,并提高了分像素运动矢量的计算效率,节省了功耗,同时还节约了硬件成本。
附图说明
图1为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算装置的示意图;
图2为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算方法的流程图。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1,为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算装置的示意图。所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元109、参考帧复用维护单元106、SAD代价计算单元107、SAD代价选取单元108;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块101、第二缓存模块102、第三缓存模块105;所述主控单元109包括获取单元103和寄存器单元104;所述获取单元103包括第一获取模块113、第二模块获取123和第三获取模块133;所述寄存器单元104包括第一寄存器单元114和第二寄存器单元124;
所述第一获取模块113用于从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
所述参考帧复用维护单元106用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
所述第二获取模块123用于从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元用于缓存16x16子块对应的原始块像素;
所述第三获取模块133用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
所述SAD代价计算单元107用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
所述SAD代价选取单元108用于将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
所述主控单元109用于接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
在使用基于H264协议的分像素运动矢量计算装置时,首先第一获取模块113从所述第一缓存模块中获取16x16子块的整像素运动矢量。所述第一缓存模块为具有存储数据功能的电子元件,例如可以为ROM存储器。对于每一个16x16子块而言,都可以将其划分为“三层”结构,即16x16层、8x8层和4x4层。对于16x16层而言,即以16x16为单位进行划分的话,16x16子块可以被划分为1个16x16块,因而每一个16x16子块对应有1个16x16层的整像素运动矢量,即第一整像素运动矢量。对于8x8层而言,即以8x8为单位进行划分的话,16x16子块可以被划分为4个8x8块,因而每一个16x16子块对应有4个16x16层的整像素运动矢量,即第二整像素运动矢量。对于4x4层而言,即以4x4为单位进行划分的话,16x16子块可以被划分为16个4x4块,因而每一个16x16子块对应有16个4x4层的整像素运动矢量,即第三整像素运动矢量。综上,在计算每一个16x16子块的分像素运动矢量时,第一获取模块需要从所述第一缓存模块中获取1个16x16层、4个8x8层以及16个4x4层共计21个整像素运动矢量。
所述参考帧复用维护单元106用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系。在本实施方式中,在计算16x16层的分像素运动矢量时,也是基于8x8大小的块为单位进行计算的,因而第一整像素运动矢量和第二像素运动矢量的对应关系具体包括:记录相同位置的8x8子块的第一整像素运动矢量和第二像素运动矢量是否相同。
例如对于16x16层而言,包含有4个16x16层的8x8子块,分别是8x8子块1、8x8子块2、8x8子块3和8x8子块4。对于8x8层而言,包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块d。8x8子块a与8x8子块1的位置相对应,8x8子块b与8x8子块2的位置相对应,8x8子块c与8x8子块3的位置相对应,8x8子块d与8x8子块4的位置相对应。则参考帧复用维护单元会判断8x8子块a与8x8子块1的整像素运动矢量是否相同,若相同则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块a的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的16x16层的8x8子块1的SAD代价,一方面无需重新获取8x8子块1的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。
而后第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元缓存16x16子块对应的原始块像素。在本实施方式中,获取原始块像素是基于16x16子块为单位进行获取。这样,在计算每个16x16子块的的分像素运动矢量时,就将所需的不同层的原始块像素一次性获取到主控单元中,并通过第一寄存器单元加以缓存。由于无论是16x16层的4个8x8块,还是8x8层的4个8x8块,或者是4x4层的16个4x4块,它们对应的原始块像素均包含于16x16子块的原始块像素中,因而在计算各个不同的层子块的SAD代价时,第二获取模块只需从第一寄存器单元中获取即可,而无需再分多次从第二缓存模块中获取,从而提高了原始块像素的复用程度。
而后第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元缓存参考块像素。在本实施方式中,所述“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
在本实施方式中,8x8层不同8x8子块的第二整像素运动矢量的对应关系具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。例如8x8层包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块d。编码顺序依次是子块a、子块b、子块c和子块d。那么参考帧复用维护单元会依次判断8x8子块a与8x8子块b之间、8x8子块b与8x8子块c之间、8x8子块c和8x8子块d之间的第二像素运动矢量是否相同,并对结果予以记录。例如子块a和子块b的第二像素运动矢量相同,则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块b的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的8x8层的8x8子块a的SAD代价,一方面无需重新获取8x8子块b的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。4x4层不同4x4子块的第三整像素矢量的对应关系同理可得,具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。而如果子块a和子块b的第二像素运动矢量不同,则说明两个子块之间的SAD代价的计算结果是不同的,因而在计算子块b的SAD代价时,需要从第三缓存模块中获取子块b对应的参考块像素,以便继续子块b的SAD计算。
在某些实施方式中,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
对于4x4层而言,包含有16个4x4层的4x4子块,以4x4层依据编码顺序排序的前4个4x4子块为例,分别是4x4子块1、4x4子块2、4x4子块3和4x4子块4。参考帧复用维护单元会判断4x4子块1与4x4子块2之间、4x4子块2与4x4子块3之间、4x4子块3和4x4子块4之间的第三整像素运动矢量是否相同,并对结果予以存储记录。在获取4x4子块1的参考块像素时,第三获取单元会从第三缓存模块中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中,例如在本实施方式中,所获取的参考块的大小为32x10或10x32大小。在计算4x4子块2的SAD代价时,若参考帧复用维护单元所记录的4x4子块1与4x4子块2之间第三整像素运动矢量相同,则说明4x4子块1与4x4子块2的参考像素为可以复用参考像素的4x4子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算4x4子块2的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的4x4子块1的SAD代价,一方面无需重新获取4x4子块2的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。而如果4x4子块1与4x4子块2的第三整像素运动矢量不同,则说明它们所要获取的参考块像素是不同的,因而第三获取模块首先会在第二寄存器中搜索是否存在着4x4子块2所需的参考块像素,(由于缓存的是一个数倍于4x4子块大小的参考块,因而首先会在第二寄存器中进行搜索),若存在则第三获取模块从第二寄存器中获取4x4子块2对应的参考块像素,以便进行4x4子块2的SAD代价的计算,若不存在则第三获取模块会重新从第三缓存单元中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中(刷新寄存器),而后重复上述步骤从第二寄存器中重新获取4x4子块2所需的参考块像素。
而后SAD代价计算单元107从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价。SAD代价可以是一个数值,计算某个像素块的SAD代价所需的必要参数是该像素块对应的原始块像素和参考块像素,具体地,在H264协议中,对于每个参考块像素而言,SAD代价计算单元会在其附近插值出49个不同位置的参考块像素,并分别计算这49个不同位置的参考块像素对应的SAD代价,具体的算法依据H264协议。
而后SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量。SAD代价为表征该参考块像素是否为最优的参考块像素的物理量,SAD代价越小,说明参考块像素越接近原始块像素。SAD代价选取单元会从所插值出的49个不同位置的参考块像素中,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量,计算得到的分像素运动矢量即为所获取的原始块像素的分像素运动矢量。至此,分像素运动矢量计算完毕,可以进入下一步骤。
而后主控单元109接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。在本实施方式中,所述“主控单元将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
请参阅图2,以及发明人还提供了一种基于H264协议的分像素运动矢量计算方法,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;其特征在于,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;所述方法包括如下步骤:
首先进入步骤S201第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量。所述第一缓存模块为具有存储数据功能的电子元件,例如可以为ROM存储器。对于每一个16x16子块而言,都可以将其划分为“三层”结构,即16x16层、8x8层和4x4层。对于16x16层而言,即以16x16为单位进行划分的话,16x16子块可以被划分为1个16x16块,因而每一个16x16子块对应有1个16x16层的整像素运动矢量,即第一整像素运动矢量。对于8x8层而言,即以8x8为单位进行划分的话,16x16子块可以被划分为4个8x8块,因而每一个16x16子块对应有4个16x16层的整像素运动矢量,即第二整像素运动矢量。对于4x4层而言,即以4x4为单位进行划分的话,16x16子块可以被划分为16个4x4块,因而每一个16x16子块对应有16个4x4层的整像素运动矢量,即第三整像素运动矢量。综上,在计算每一个16x16子块的分像素运动矢量时,第一获取模块需要从所述第一缓存模块中获取1个16x16层、4个8x8层以及16个4x4层共计21个整像素运动矢量。
而后进入步骤S203参考帧复用维护单元记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系。在本实施方式中,在计算16x16层的分像素运动矢量时,也是基于8x8大小的块为单位进行计算的,因而第一整像素运动矢量和第二像素运动矢量的对应关系具体包括:记录相同位置的8x8子块的第一整像素运动矢量和第二像素运动矢量是否相同。
例如对于16x16层而言,包含有4个16x16层的8x8子块,分别是8x8子块1、8x8子块2、8x8子块3和8x8子块4。对于8x8层而言,包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块d。8x8子块a与8x8子块1的位置相对应,8x8子块b与8x8子块2的位置相对应,8x8子块c与8x8子块3的位置相对应,8x8子块d与8x8子块4的位置相对应。则参考帧复用维护单元会判断8x8子块a与8x8子块1的整像素运动矢量是否相同,若相同则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块a的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的16x16层的8x8子块1的SAD代价,一方面无需重新获取8x8子块1的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。
而后进入步骤S203第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元缓存16x16子块对应的原始块像素。在本实施方式中,获取原始块像素是基于16x16子块为单位进行获取。这样,在计算每个16x16子块的的分像素运动矢量时,就将所需的不同层的原始块像素一次性获取到主控单元中,并通过第一寄存器单元加以缓存。由于无论是16x16层的4个8x8块,还是8x8层的4个8x8块,或者是4x4层的16个4x4块,它们对应的原始块像素均包含于16x16子块的原始块像素中,因而在计算各个不同的层子块的SAD代价时,第二获取模块只需从第一寄存器单元中获取即可,而无需再分多次从第二缓存模块中获取,从而提高了原始块像素的复用程度。
而后进入步骤S204第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元缓存参考块像素。在本实施方式中,所述“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
在本实施方式中,8x8层不同8x8子块的第二整像素运动矢量的对应关系具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。例如8x8层包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块d。编码顺序依次是子块a、子块b、子块c和子块d。那么参考帧复用维护单元会依次判断8x8子块a与8x8子块b之间、8x8子块b与8x8子块c之间、8x8子块c和8x8子块d之间的第二像素运动矢量是否相同,并对结果予以记录。例如子块a和子块b的第二像素运动矢量相同,则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块b的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的8x8层的8x8子块a的SAD代价,一方面无需重新获取8x8子块b的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。4x4层不同4x4子块的第三整像素矢量的对应关系同理可得,具体包括:记录相邻编码顺序的8x8层的8x8子块的第二像素运动矢量是否相同。而如果子块a和子块b的第二像素运动矢量不同,则说明两个子块之间的SAD代价的计算结果是不同的,因而在计算子块b的SAD代价时,需要从第三缓存模块中获取子块b对应的参考块像素,以便继续子块b的SAD计算。
在某些实施方式中,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
对于4x4层而言,包含有16个4x4层的4x4子块,以4x4层依据编码顺序排序的前4个4x4子块为例,分别是4x4子块1、4x4子块2、4x4子块3和4x4子块4。参考帧复用维护单元会判断4x4子块1与4x4子块2之间、4x4子块2与4x4子块3之间、4x4子块3和4x4子块4之间的第三整像素运动矢量是否相同,并对结果予以存储记录。在获取4x4子块1的参考块像素时,第三获取单元会从第三缓存模块中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中,例如在本实施方式中,所获取的参考块的大小为32x10或10x32大小。在计算4x4子块2的SAD代价时,若参考帧复用维护单元所记录的4x4子块1与4x4子块2之间第三整像素运动矢量相同,则说明4x4子块1与4x4子块2的参考像素为可以复用参考像素的4x4子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算4x4子块2的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的4x4子块1的SAD代价,一方面无需重新获取4x4子块2的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。而如果4x4子块1与4x4子块2的第三整像素运动矢量不同,则说明它们所要获取的参考块像素是不同的,因而第三获取模块首先会在第二寄存器中搜索是否存在着4x4子块2所需的参考块像素,(由于缓存的是一个数倍于4x4子块大小的参考块,因而首先会在第二寄存器中进行搜索),若存在则第三获取模块从第二寄存器中获取4x4子块2对应的参考块像素,以便进行4x4子块2的SAD代价的计算,若不存在则第三获取模块会重新从第三缓存单元中获取一个数倍于4x4子块大小的参考块,并将所获取的参考块像素缓存于第二寄存器中(刷新寄存器),而后重复上述步骤从第二寄存器中重新获取4x4子块2所需的参考块像素。
而后进入步骤S205SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价。SAD代价可以是一个数值,计算某个像素块的SAD代价所需的必要参数是该像素块对应的原始块像素和参考块像素,具体地,在H264协议中,对于每个参考块像素而言,SAD代价计算单元会在其附近插值出49个不同位置的参考块像素,并分别计算这49个不同位置的参考块像素对应的SAD代价,具体的算法依据H264协议。
而后进入步骤S206SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量。SAD代价为表征该参考块像素是否为最优的参考块像素的物理量,SAD代价越小,说明参考块像素越接近原始块像素。SAD代价选取单元会从所插值出的49个不同位置的参考块像素中,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量,计算得到的分像素运动矢量即为所获取的原始块像素的分像素运动矢量。至此,分像素运动矢量计算完毕,可以进入下一步骤。
而后进入步骤S207主控单元109接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。在本实施方式中,所述“主控单元将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
上述方案所述的基于H264协议的分像素运动矢量计算方法和装置,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元。所述方法包括如下步骤:首先第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量;而后参考帧复用维护单元记录整像素运动矢量之间的对应关系;而后第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素;而后SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;而后SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;而后主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。这样,在计算H264协议的分像素运动矢量过程中,所获取的原始块像素基于16x16块的大小进行获取,保证了8x8块和4x4块的原始块像素的复用性;在获取参考块像素时,根据参考帧复用维护单元记录整像素运动矢量之间的对应关系,选择性地获取不存在复用情况的各层(16x16层、8x8层以及4x4层)的参考块像素进行获取,而对于可以复用的参考块像素则不再重复获取,从而大大提高了参考像素的复用率,并提高了分像素运动矢量的计算效率,节省了功耗,同时还节约了硬件成本。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

Claims (10)

1.一种基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,其特征在于,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;
所述第一获取模块用于从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
所述参考帧复用维护单元用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
所述第二获取模块用于从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元用于缓存16x16子块对应的原始块像素;
所述第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
所述SAD代价计算单元用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
所述SAD代价选取单元用于将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
所述主控单元用于接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
2.如权利要求1所述的基于H264协议的分像素运动矢量计算装置,其特征在于,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
3.如权利要求1或2所述的基于H264协议的分像素运动矢量计算装置,其特征在于,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
4.如权利要求1或2所述的基于H264协议的分像素运动矢量计算装置,其特征在于,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
5.如权利要求1所述的基于H264协议的分像素运动矢量计算装置,其特征在于,所述“主控单元用于将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
6.一种基于H264协议的分像素运动矢量计算方法,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,其特征在于,所述宏块被划分为多个16x16子块;每一16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;所述方法包括如下步骤:
第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
参考帧复用维护单元记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,第一寄存器单元缓存16x16子块对应的原始块像素;
第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,第二寄存器单元缓存参考块像素;
SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
7.如权利要求6所述的基于H264协议的分像素运动矢量计算方法,其特征在于,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
8.如权利要求6或7所述的基于H264协议的分像素运动矢量计算方法,其特征在于,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
9.如权利要求6或7所述的基于H264协议的分像素运动矢量计算方法,其特征在于,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
10.如权利要求6所述的基于H264协议的分像素运动矢量计算方法,其特征在于,所述步骤“主控单元将分像素运动矢量写入第一缓存模块中”包括:
主控单元将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
CN201610008191.5A 2016-01-06 2016-01-06 一种基于h264协议的分像素运动矢量计算方法和装置 Active CN105681807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610008191.5A CN105681807B (zh) 2016-01-06 2016-01-06 一种基于h264协议的分像素运动矢量计算方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610008191.5A CN105681807B (zh) 2016-01-06 2016-01-06 一种基于h264协议的分像素运动矢量计算方法和装置

Publications (2)

Publication Number Publication Date
CN105681807A true CN105681807A (zh) 2016-06-15
CN105681807B CN105681807B (zh) 2018-11-02

Family

ID=56299337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610008191.5A Active CN105681807B (zh) 2016-01-06 2016-01-06 一种基于h264协议的分像素运动矢量计算方法和装置

Country Status (1)

Country Link
CN (1) CN105681807B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107197281A (zh) * 2017-05-12 2017-09-22 武汉斗鱼网络科技有限公司 一种实现运动估计的方法及电子设备
CN110677666A (zh) * 2018-07-02 2020-01-10 北京字节跳动网络技术有限公司 Lamvr中取整和修剪的顺序
US20200413044A1 (en) 2018-09-12 2020-12-31 Beijing Bytedance Network Technology Co., Ltd. Conditions for starting checking hmvp candidates depend on total number minus k
CN112866702A (zh) * 2019-03-11 2021-05-28 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
US11134267B2 (en) 2018-06-29 2021-09-28 Beijing Bytedance Network Technology Co., Ltd. Update of look up table: FIFO, constrained FIFO
US11140383B2 (en) 2019-01-13 2021-10-05 Beijing Bytedance Network Technology Co., Ltd. Interaction between look up table and shared merge list
US11140385B2 (en) 2018-06-29 2021-10-05 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in LUT
US11146785B2 (en) 2018-06-29 2021-10-12 Beijing Bytedance Network Technology Co., Ltd. Selection of coded motion information for LUT updating
US11159817B2 (en) 2018-06-29 2021-10-26 Beijing Bytedance Network Technology Co., Ltd. Conditions for updating LUTS
US11159807B2 (en) 2018-06-29 2021-10-26 Beijing Bytedance Network Technology Co., Ltd. Number of motion candidates in a look up table to be checked according to mode
US11528501B2 (en) 2018-06-29 2022-12-13 Beijing Bytedance Network Technology Co., Ltd. Interaction between LUT and AMVP
US11528500B2 (en) 2018-06-29 2022-12-13 Beijing Bytedance Network Technology Co., Ltd. Partial/full pruning when adding a HMVP candidate to merge/AMVP
US11589071B2 (en) 2019-01-10 2023-02-21 Beijing Bytedance Network Technology Co., Ltd. Invoke of LUT updating
US11641483B2 (en) 2019-03-22 2023-05-02 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
US11895318B2 (en) 2018-06-29 2024-02-06 Beijing Bytedance Network Technology Co., Ltd Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
US11956464B2 (en) 2019-01-16 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Inserting order of motion candidates in LUT
US12034914B2 (en) 2021-12-01 2024-07-09 Beijing Bytedance Network Technology Co., Ltd Checking order of motion candidates in lut

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101600112A (zh) * 2009-07-09 2009-12-09 杭州士兰微电子股份有限公司 分像素运动估计装置和方法
CN102377995A (zh) * 2010-08-05 2012-03-14 富士通株式会社 分数像素运动估计方法和***
WO2012043884A1 (en) * 2010-10-01 2012-04-05 Sharp Kabushiki Kaisha Nested entropy encoding
CN104363451A (zh) * 2014-10-27 2015-02-18 华为技术有限公司 图像预测方法及相关装置
JP2015508247A (ja) * 2012-01-19 2015-03-16 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュートElectronics And Telecommunications Research Institute 映像符号化/復号化方法及び装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101600112A (zh) * 2009-07-09 2009-12-09 杭州士兰微电子股份有限公司 分像素运动估计装置和方法
CN102377995A (zh) * 2010-08-05 2012-03-14 富士通株式会社 分数像素运动估计方法和***
WO2012043884A1 (en) * 2010-10-01 2012-04-05 Sharp Kabushiki Kaisha Nested entropy encoding
JP2015508247A (ja) * 2012-01-19 2015-03-16 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュートElectronics And Telecommunications Research Institute 映像符号化/復号化方法及び装置
CN104363451A (zh) * 2014-10-27 2015-02-18 华为技术有限公司 图像预测方法及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夏小建: "嵌入式双流视频编码器的算法研究与优化", 《中国优秀硕士学位论文全文数据库-信息科技辑》 *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107197281A (zh) * 2017-05-12 2017-09-22 武汉斗鱼网络科技有限公司 一种实现运动估计的方法及电子设备
WO2018205781A1 (zh) * 2017-05-12 2018-11-15 武汉斗鱼网络科技有限公司 一种实现运动估计的方法及电子设备
US11146786B2 (en) 2018-06-20 2021-10-12 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in LUT
US11877002B2 (en) 2018-06-29 2024-01-16 Beijing Bytedance Network Technology Co., Ltd Update of look up table: FIFO, constrained FIFO
US11528501B2 (en) 2018-06-29 2022-12-13 Beijing Bytedance Network Technology Co., Ltd. Interaction between LUT and AMVP
US11895318B2 (en) 2018-06-29 2024-02-06 Beijing Bytedance Network Technology Co., Ltd Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
US11134267B2 (en) 2018-06-29 2021-09-28 Beijing Bytedance Network Technology Co., Ltd. Update of look up table: FIFO, constrained FIFO
US11153557B2 (en) 2018-06-29 2021-10-19 Beijing Bytedance Network Technology Co., Ltd. Which LUT to be updated or no updating
US11973971B2 (en) 2018-06-29 2024-04-30 Beijing Bytedance Network Technology Co., Ltd Conditions for updating LUTs
US11695921B2 (en) 2018-06-29 2023-07-04 Beijing Bytedance Network Technology Co., Ltd Selection of coded motion information for LUT updating
US11140385B2 (en) 2018-06-29 2021-10-05 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in LUT
US11245892B2 (en) 2018-06-29 2022-02-08 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in LUT
US11909989B2 (en) 2018-06-29 2024-02-20 Beijing Bytedance Network Technology Co., Ltd Number of motion candidates in a look up table to be checked according to mode
US11528500B2 (en) 2018-06-29 2022-12-13 Beijing Bytedance Network Technology Co., Ltd. Partial/full pruning when adding a HMVP candidate to merge/AMVP
US11146785B2 (en) 2018-06-29 2021-10-12 Beijing Bytedance Network Technology Co., Ltd. Selection of coded motion information for LUT updating
US11706406B2 (en) 2018-06-29 2023-07-18 Beijing Bytedance Network Technology Co., Ltd Selection of coded motion information for LUT updating
US11159817B2 (en) 2018-06-29 2021-10-26 Beijing Bytedance Network Technology Co., Ltd. Conditions for updating LUTS
US11159807B2 (en) 2018-06-29 2021-10-26 Beijing Bytedance Network Technology Co., Ltd. Number of motion candidates in a look up table to be checked according to mode
US11134244B2 (en) 2018-07-02 2021-09-28 Beijing Bytedance Network Technology Co., Ltd. Order of rounding and pruning in LAMVR
CN110677666A (zh) * 2018-07-02 2020-01-10 北京字节跳动网络技术有限公司 Lamvr中取整和修剪的顺序
US11153559B2 (en) 2018-07-02 2021-10-19 Beijing Bytedance Network Technology Co., Ltd. Usage of LUTs
CN110677666B (zh) * 2018-07-02 2022-06-14 北京字节跳动网络技术有限公司 Lamvr中取整和修剪的顺序
US11463685B2 (en) 2018-07-02 2022-10-04 Beijing Bytedance Network Technology Co., Ltd. LUTS with intra prediction modes and intra mode prediction from non-adjacent blocks
US11153558B2 (en) 2018-07-02 2021-10-19 Beijing Bytedance Network Technology Co., Ltd. Update of look-up tables
US11134243B2 (en) 2018-07-02 2021-09-28 Beijing Bytedance Network Technology Co., Ltd. Rules on updating luts
US11159787B2 (en) 2018-09-12 2021-10-26 Beijing Bytedance Network Technology Co., Ltd. Conditions for starting checking HMVP candidates depend on total number minus K
US11997253B2 (en) 2018-09-12 2024-05-28 Beijing Bytedance Network Technology Co., Ltd Conditions for starting checking HMVP candidates depend on total number minus K
US20210297659A1 (en) 2018-09-12 2021-09-23 Beijing Bytedance Network Technology Co., Ltd. Conditions for starting checking hmvp candidates depend on total number minus k
US20200413044A1 (en) 2018-09-12 2020-12-31 Beijing Bytedance Network Technology Co., Ltd. Conditions for starting checking hmvp candidates depend on total number minus k
US11589071B2 (en) 2019-01-10 2023-02-21 Beijing Bytedance Network Technology Co., Ltd. Invoke of LUT updating
US11909951B2 (en) 2019-01-13 2024-02-20 Beijing Bytedance Network Technology Co., Ltd Interaction between lut and shared merge list
US11140383B2 (en) 2019-01-13 2021-10-05 Beijing Bytedance Network Technology Co., Ltd. Interaction between look up table and shared merge list
US11962799B2 (en) 2019-01-16 2024-04-16 Beijing Bytedance Network Technology Co., Ltd Motion candidates derivation
US11956464B2 (en) 2019-01-16 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Inserting order of motion candidates in LUT
CN112866702A (zh) * 2019-03-11 2021-05-28 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
US11902563B2 (en) 2019-03-11 2024-02-13 Hangzhou Hikvision Digital Technology Co., Ltd. Encoding and decoding method and device, encoder side apparatus and decoder side apparatus
CN112866702B (zh) * 2019-03-11 2022-03-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
US11641483B2 (en) 2019-03-22 2023-05-02 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
US12034914B2 (en) 2021-12-01 2024-07-09 Beijing Bytedance Network Technology Co., Ltd Checking order of motion candidates in lut

Also Published As

Publication number Publication date
CN105681807B (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
CN105681807A (zh) 一种基于h264协议的分像素运动矢量计算方法和装置
CN101115205B (zh) 视频流处理装置与方法
JP2018533261A (ja) 画像予測方法および装置
KR20200020915A (ko) 화상 데이터 인코딩 방법 및 장치 및 화상 데이터 디코딩 방법 및 장치
CN105933708B (zh) 一种数据压缩和解压缩的方法和装置
US8498342B1 (en) Deblocking filtering
CN106470323B (zh) 视频数据的存储方法及设备
US20140086309A1 (en) Method and device for encoding and decoding an image
CN110944187B (zh) 点云编码方法和编码器
CN106170093B (zh) 一种帧内预测性能提升编码方法
CN102176750B (zh) 高性能自适应二进制算术编码器
CN105554502A (zh) 基于前景背景分离的分布式压缩感知视频编解码方法
CN109688407A (zh) 编码单元的参考块选择方法、装置、电子设备及存储介质
CN1703094B (zh) 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法
CN110278443B (zh) 划分标志位的上下文建模方法及装置
Hu et al. Deep inter prediction with error-corrected auto-regressive network for video coding
TWI418219B (zh) 用於動態補償系統之資料映像方法及快取記憶體系統
CN101394559B (zh) 动态图像处理方法、译码方法及其装置
CN115442617A (zh) 一种基于视频编码的视频处理方法和装置
CN102420989B (zh) 帧内预测方法和装置
CN107172425B (zh) 缩略图生成方法、装置及终端设备
Zhang et al. Hardware architecture design of block-matching and 3D-filtering denoising algorithm
CN110049339A (zh) 图像编码中的预测方向选取方法、装置和存储介质
Chang et al. Efficient algorithms and architectures for MPEG-4 object-based video coding
CN106534850A (zh) 图像处理装置、图像插值方法和图像编码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 350003 building, No. 89, software Avenue, Gulou District, Fujian, Fuzhou 18, China

Patentee after: Ruixin Microelectronics Co., Ltd

Address before: 350003 building, No. 89, software Avenue, Gulou District, Fujian, Fuzhou 18, China

Patentee before: Fuzhou Rockchips Electronics Co.,Ltd.