CN113873236B - 基于自适应帧内刷新机制的解码、编码方法及相关设备 - Google Patents
基于自适应帧内刷新机制的解码、编码方法及相关设备 Download PDFInfo
- Publication number
- CN113873236B CN113873236B CN202111123861.5A CN202111123861A CN113873236B CN 113873236 B CN113873236 B CN 113873236B CN 202111123861 A CN202111123861 A CN 202111123861A CN 113873236 B CN113873236 B CN 113873236B
- Authority
- CN
- China
- Prior art keywords
- frame
- virtual boundary
- refreshed
- area
- current frame
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请实施例公开了一种基于自适应帧内刷新机制的解码、编码方法及相关设备,属于视频编解码领域。在本申请实施例中,在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示虚拟边界的位置,且该虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界的位置即可,从而提高了划分强制帧内区域的灵活性,也即是本申请实施例提供了一种自适应划分强制帧内区域的自适应帧内刷新机制。此外可以允许跨越虚拟边界上的各种方式的环路滤波,从而提升该虚拟边界上的图像的主观质量。
Description
本申请是申请日为2021年02月23日、申请号为202110204286.5、发明名称为“基于自适应帧内刷新机制的解码、编码方法及相关设备”的发明专利申请的分案申请。
技术领域
本申请实施例涉及视频编解码领域,特别涉及一种基于自适应帧内刷新机制的解码、编码方法及相关设备。
背景技术
帧内刷新机制是指将I帧的码率分散到若干个P帧上,从而解决由于I帧码率过大而导致解码I帧所需时间较长的问题。具体地,将一个完整图像帧基于刷新周期划分为N个强制帧内区域,在编码时,依次编码针对该图像帧的N个帧内刷新帧,每个帧内刷新帧包括前述N个强制帧内区域中的一个强制帧内区域,这N个强制帧内区域的编码模式为强制帧内(intra)模式,每个帧内刷新帧中的其他区域的编码模式允许采用帧间(inter)模式,这样每个帧内刷新帧的码率不仅相对于I帧的码率得以减小,各个帧内刷新帧的码率也比较稳定。其中,每个帧内刷新帧中的强制帧内区域和刷新周期内位于该帧内刷新帧前面的帧内刷新帧中的强制帧内区域合并后称为该帧内刷新帧的已刷新区域,该帧内刷新帧中除了已刷新区域之外其他区域称为未刷新区域。为了便于解码端确定使用哪种解码模式进行解码,对于任一帧内刷新帧需要在码流中携带标记信息,以便于解码时基于该标记信息确定该帧内刷新帧的已刷新区域和未刷新区域,进而确定使用哪种解码模式进行解码。
发明内容
本申请实施例提供了一种基于自适应帧内刷新机制的解码、编码方法及相关设备,可以提高划分为强制帧内区域的灵活性。所述技术方案如下:
一方面,提供了一种基于自适应帧内刷新机制的解码方法,所述方法包括:
接收当前帧的码流,所述当前帧的码流中携带帧类型标记信息,所述帧类型标记信息指示所述当前帧是否为帧内刷新帧;
在所述帧类型标记信息指示所述当前帧为帧内刷新帧的情况下,获取所述码流中携带的虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域;
基于所述虚拟边界位置标记信息,确定所述已刷新区域的区域位置和所述未刷新区域的区域位置;
基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息指示所述虚拟边界在所述当前帧水平方向上的位置,所述第二虚拟边界位置标记信息指示所述虚拟边界在所述当前帧垂直方向上的位置;
其中,所述当前帧中的所述虚拟边界在所述当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在所述相邻帧垂直方向上的位置不同,所述相邻帧为所述当前帧在解码顺序中的前一帧或后一帧。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点,宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述已刷新区域在所述当前帧水平方向上的宽度和所述当前帧图像宽度之间的比例,所述第二位置标记信息为所述已刷新区域在所述当前帧垂直方向上的高度和所述当前帧图像高度之间的比例。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述已刷新区域的宽度精度为一个编码单元CU的宽度,所述已刷新区域的高度精度为所述CU的高度;或者,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度;或者,
所述已刷新区域的宽度精度为一个图像片的宽度,所述已刷新区域的高度精度为所述图像片的高度,所述图像片包括一个或多个LCU。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域;
所述基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码,包括:
基于所述已刷新区域的区域位置和所述当前帧在解码顺序中的前一帧的已刷新区域,确定所述强制帧内区域的区域位置以及所述帧间区域的区域位置;
基于所述强制帧内区域的区域位置以及所述帧间区域的区域位置,对所述当前帧的码流进行解码。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述帧间区域为所述前一帧的已刷新区域;
所述强制帧内区域为所述当前帧的已刷新区域中除了所述帧间区域之外的区域。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述基于所述强制帧内区域的区域位置以及所述帧间区域的区域位置,对所述当前帧的码流进行解码,包括:
如果基于所述帧间区域的区域位置确定当前图像块为所述帧间区域中的图像块,且所述当前图像块的运动矢量MV信息指向所述当前图像块的参考帧中的已刷新区域,则基于所述当前图像块的MV信息,解码所述当前图像块。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述接收当前帧的码流之后,所述方法还包括:
如果所述当前帧中待解码的当前图像块的参考帧是帧内刷新帧,并且所述当前图像块不满足“当前帧是帧内刷新帧、且当前图像块落在未刷新区域、且当前帧和所述参考帧处于同一个刷新周期”时,则将所述当前图像块的MV信息调整为指向的区域为所述参考帧中的已刷新区域的MV信息;
基于调整后的所述MV信息,解码所述当前图像块。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述调整后的所述MV信息满足下述条件:
MvE->x’=Min(MvE->x,(RefAirBoundX–MaxFilterLineBuf–W–xE)<<PixelResolution)
MvE->y’=Min(MvE->y,(RefAirBoundY–MaxFilterLineBuf–H–yE)<<PixelResolution)
其中,MvE是当前图像块的运动矢量,MvE->x’是调整后的当前图像块的运动矢量在X方向上的分量,MvE->y’是调整后的当前图像块的运动矢量在y方向上的分量,MvE->x是码流中携带的当前图像块的运动矢量在X方向上的分量,MvE->y是码流中携带的当前图像块的运动矢量在y方向上的分量,RefAirBoundX和RefAirBoundY分别是参考帧的虚拟边界坐标AirBoundX和AirBoundY,MaxFilterLineBuf是对所述参考帧的虚拟边界进行环路滤波所使用的滤波器的最大行缓存,PixelResolution是运动矢量的像素精度,W为所述当前图像块的图像宽度,H为所述当前图像块的图像高度,(xE,yE)是当前图像块左上角样本在当前帧的亮度样本矩阵中的位置。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,所述码流中携带环路滤波标记信息,所述环路滤波标记信息指示关闭或允许所述虚拟边界上的环路滤波。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述方法还包括:
对于基于所述虚拟边界确定的待滤波区域,不执行对所述待滤波区域进行环路滤波的操作。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述方法还包括:
对于基于所述虚拟边界确定的待滤波区域,基于所述已刷新区域中的像素,执行对所述待滤波区域进行环路滤波的操作。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述方法还包括:
对于基于所述虚拟边界确定的待滤波区域,基于所述已刷新区域中的像素和所述未刷新区域中的像素,执行对所述待滤波区域进行环路滤波的操作,位于所述已刷新区域中的待滤波的区域不能作为所述当前帧在解码顺序中的后一帧中的图像块的MV信息所指向的区域。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码,包括:
解析当前最大编码单元LCU的码流,得到所述当前LCU的位置信息;
如果基于所述当前LCU的位置信息确定所述当前LCU位于所述未刷新区域,则不执行重建所述当前LCU的操作,执行解析所述当前LCU的下一个LCU的码流的操作;
如果所述当前LCU位于所述已刷新区域,则执行重建所述当前LCU的操作。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码,包括:
如果当前图像片的码流开始标记信息指示所述当前图像片位于所述未刷新区域,则不执行对所述当前图像片的码流进行解析的操作,基于所述码流开始标记信息,在所述当前帧的码流中获取下一个图像片的码流的起始位置,以对下一个图像片进行解码;
如果当前图像片的码流开始标记信息指示所述当前图像片位于所述已刷新区域,则执行对所述当前图像片的码流进行解析的操作,以对所述当前图像片进行解码。
基于上述提供的基于自适应帧内刷新机制的解码方法,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码,包括:
对所述当前帧中的码流全部进行解码。
另一方面、提供了一种基于自适应帧内刷新机制的编码方法,所述方法包括:
发送当前帧的码流;
其中,所述当前帧的码流中携带帧类型标记信息,所述帧类型标记信息指示所述当前帧是否为帧内刷新帧,在所述帧类型标记信息指示所述当前帧为帧内刷新帧的情况下,所述码流中还携带有虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息指示所述虚拟边界在所述当前帧水平方向上的位置,所述第二虚拟边界位置标记信息指示所述虚拟边界在所述当前帧垂直方向上的位置;
其中,所述当前帧中的所述虚拟边界在所述当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在所述相邻帧垂直方向上的位置不同,所述相邻帧为所述当前帧在编码顺序中的前一帧或后一帧。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点、宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述已刷新区域在所述当前帧水平方向上的宽度和所述当前帧图像宽度之间的比例,所述第二位置标记信息为所述已刷新区域在所述当前帧垂直方向上的高度和所述当前帧图像高度之间的比例。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述已刷新区域的宽度精度为一个编码单元CU的宽度,所述已刷新区域的高度精度为所述CU的高度;或者,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度;或者,
所述已刷新区域的宽度精度为一个图像片的宽度,所述已刷新区域的高度精度为所述图像片的高度,所述图像片包括一个或多个LCU。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域,所述码流中携带的所述帧间区域中的图像块的运动矢量MV信息指向所述图像块的参考帧中的已刷新区域。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域,所述码流中携带的所述帧间区域中的图像块的运动矢量MV信息指向所述图像块的参考帧中的已刷新区域和/或所述图像块的参考帧中的未刷新区域。
基于上述提供的基于自适应帧内刷新机制的编码方法,在一种可能的实现方式中,所述码流中携带环路滤波标记信息,所述环路滤波标记信息指示关闭或允许所述虚拟边界上的环路滤波。
另一方面、提供了一种解码装置,所述解码装置包括:
接收模块,用于接收当前帧的码流,所述当前帧的码流中携带帧类型标记信息,所述帧类型标记信息指示所述当前帧是否为帧内刷新帧;
处理模块,用于在所述帧类型标记信息指示所述当前帧为帧内刷新帧的情况下,获取所述码流中携带的虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域;
所述处理模块,还用于基于所述虚拟边界位置标记信息,确定所述已刷新区域的区域位置和所述未刷新区域的区域位置;
所述处理模块,还用于基于所述已刷新区域的区域位置和所述未刷新区域的区域位置,对所述当前帧的码流进行解码。
基于上述提供的解码装置,在一种可能的实现方式中,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息指示所述虚拟边界在所述当前帧水平方向上的位置,所述第二虚拟边界位置标记信息指示所述虚拟边界在所述当前帧垂直方向上的位置;
其中,所述当前帧中的所述虚拟边界在所述当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在所述相邻帧垂直方向上的位置不同,所述相邻帧为所述当前帧在解码顺序中的前一帧或后一帧。
基于上述提供的解码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置。
基于上述提供的解码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点,宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
基于上述提供的解码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述已刷新区域在所述当前帧水平方向上的宽度和所述当前帧图像宽度之间的比例,所述第二位置标记信息为所述已刷新区域在所述当前帧垂直方向上的高度和所述当前帧图像高度之间的比例。
基于上述提供的解码装置,在一种可能的实现方式中,所述已刷新区域的宽度精度为一个编码单元CU的宽度,所述已刷新区域的高度精度为所述CU的高度;或者,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度;或者,
所述已刷新区域的宽度精度为一个图像片的宽度,所述已刷新区域的高度精度为所述图像片的高度,所述图像片包括一个或多个LCU。
基于上述提供的解码装置,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域;
所述处理模块用于:
基于所述已刷新区域的区域位置和所述当前帧在解码顺序中的前一帧的已刷新区域,确定所述强制帧内区域的区域位置以及所述帧间区域的区域位置;
基于所述强制帧内区域的区域位置以及所述帧间区域的区域位置,对所述当前帧的码流进行解码。
基于上述提供的解码装置,在一种可能的实现方式中,所述帧间区域为所述前一帧的已刷新区域;
所述强制帧内区域为所述当前帧的已刷新区域中除了所述帧间区域之外的区域。
基于上述提供的解码装置,在一种可能的实现方式中,所述处理模块用于:
如果基于所述帧间区域的区域位置确定当前图像块为所述帧间区域中的图像块,且所述当前图像块的运动矢量MV信息指向所述当前图像块的参考帧中的已刷新区域,则基于所述当前图像块的MV信息,解码所述当前图像块。
基于上述提供的解码装置,在一种可能的实现方式中,所述处理模块还用于:
如果所述当前帧中待解码的当前图像块的参考帧是帧内刷新帧,并且所述当前图像块不满足“当前帧是帧内刷新帧、且当前图像块落在未刷新区域、且当前帧和所述参考帧处于同一个刷新周期”时,则将所述当前图像块的MV信息调整为指向的区域为所述参考帧中的已刷新区域的MV信息;
基于调整后的所述MV信息,解码所述当前图像块。
基于上述提供的解码装置,在一种可能的实现方式中,所述调整后的所述MV信息满足下述条件:
MvE->x’=Min(MvE->x,(RefAirBoundX–MaxFilterLineBuf–W–xE)<<PixelResolution)
MvE->y’=Min(MvE->y,(RefAirBoundY–MaxFilterLineBuf–H–yE)<<PixelResolution)
其中,MvE是当前图像块的运动矢量,MvE->x’是调整后的当前图像块的运动矢量在X方向上的分量,MvE->y’是调整后的当前图像块的运动矢量在y方向上的分量,MvE->x是码流中携带的当前图像块的运动矢量在X方向上的分量,MvE->y是码流中携带的当前图像块的运动矢量在y方向上的分量,RefAirBoundX和RefAirBoundY分别是参考帧的虚拟边界坐标AirBoundX和AirBoundY,MaxFilterLineBuf是对所述参考帧的虚拟边界进行环路滤波所使用的滤波器的最大行缓存,PixelResolution是运动矢量的像素精度,W为所述当前图像块的图像宽度,H为所述当前图像块的图像高度,(xE,yE)是当前图像块左上角样本在当前帧的亮度样本矩阵中的位置。
基于上述提供的解码装置,在一种可能的实现方式中,所述码流中携带环路滤波标记信息,所述环路滤波标记信息指示关闭或允许所述虚拟边界上的环路滤波。
基于上述提供的解码装置,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述处理模块还用于:
对于基于所述虚拟边界确定的待滤波区域,不执行对所述待滤波区域进行环路滤波的操作。
基于上述提供的解码装置,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述处理模块还用于:
对于基于所述虚拟边界确定的待滤波区域,基于所述已刷新区域中的像素,执行对所述待滤波区域进行环路滤波的操作。
基于上述提供的解码装置,在一种可能的实现方式中,在所述环路滤波标记信息指示允许所述虚拟边界上的环路滤波的情况下,所述处理模块还用于:
对于基于所述虚拟边界确定的待滤波区域,基于所述已刷新区域中的像素和所述未刷新区域中的像素,执行对所述待滤波区域进行环路滤波的操作,位于所述已刷新区域中的待滤波的区域不能作为所述当前帧在解码顺序中的后一帧中的图像块的MV信息所指向的区域。
基于上述提供的解码装置,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述处理模块用于:
解析当前最大编码单元LCU的码流,得到所述当前LCU的位置信息;
如果基于所述当前LCU的位置信息确定所述当前LCU位于所述未刷新区域,则不执行重建所述当前LCU的操作,执行解析所述当前LCU的下一个LCU的码流的操作;
如果所述当前LCU位于所述已刷新区域,则执行重建所述当前LCU的操作。
基于上述提供的解码装置,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述处理模块用于:
如果当前图像片的码流开始标记信息指示所述当前图像片位于所述未刷新区域,则不执行对所述当前图像片的码流进行解析的操作,基于所述码流开始标记信息,在所述当前帧的码流中获取下一个图像片的码流的起始位置,以对下一个图像片进行解码;
如果当前图像片的码流开始标记信息指示所述当前图像片位于所述已刷新区域,则执行对所述当前图像片的码流进行解析的操作,以对所述当前图像片进行解码。
基于上述提供的解码装置,在一种可能的实现方式中,在随机接入解码的场景中,如果所述当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则所述处理模块用于:
对所述当前帧中的码流全部进行解码。
另一方面,提供了一种编码装置,所述编码装置包括:
发送模块,用于发送当前帧的码流;
其中,所述当前帧的码流中携带帧类型标记信息,所述帧类型标记信息指示所述当前帧是否为帧内刷新帧,在所述帧类型标记信息指示所述当前帧为帧内刷新帧的情况下,所述码流中还携带有虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域。
基于上述提供的编码装置,在一种可能的实现方式中,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息指示所述虚拟边界在所述当前帧水平方向上的位置,所述第二虚拟边界位置标记信息指示所述虚拟边界在所述当前帧垂直方向上的位置;
其中,所述当前帧中的所述虚拟边界在所述当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在所述相邻帧垂直方向上的位置不同,所述相邻帧为所述当前帧在编码顺序中的前一帧或后一帧。
基于上述提供的编码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置。
基于上述提供的编码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点、宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
基于上述提供的编码装置,在一种可能的实现方式中,所述第一虚拟边界位置标记信息为所述已刷新区域在所述当前帧水平方向上的宽度和所述当前帧图像宽度之间的比例,所述第二位置标记信息为所述已刷新区域在所述当前帧垂直方向上的高度和所述当前帧图像高度之间的比例。
基于上述提供的编码装置,在一种可能的实现方式中,所述已刷新区域的宽度精度为一个编码单元CU的宽度,所述已刷新区域的高度精度为所述CU的高度;或者,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度;或者,
所述已刷新区域的宽度精度为一个图像片的宽度,所述已刷新区域的高度精度为所述图像片的高度,所述图像片包括一个或多个LCU。
基于上述提供的编码装置,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域,所述码流中携带的所述帧间区域中的图像块的运动矢量MV信息指向所述图像块的参考帧中的已刷新区域。
基于上述提供的编码装置,在一种可能的实现方式中,所述已刷新区域包括强制帧内区域和帧间区域,所述码流中携带的所述帧间区域中的图像块的运动矢量MV信息指向所述图像块的参考帧中的已刷新区域和/或所述图像块的参考帧中的未刷新区域。
基于上述提供的编码装置,在一种可能的实现方式中,所述码流中携带环路滤波标记信息,所述环路滤波标记信息指示关闭或允许所述虚拟边界上的环路滤波。
另一方面、提供了一种解码端设备,所述解码端设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述所述的基于自适应帧内刷新机制的解码方法中的任一步骤。
另一方面、提供了一种编码端设备,所述编码端设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述所述的基于自适应帧内刷新机制的解码方法中的任一步骤。
另一方面、提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述基于自适应帧内刷新机制的解码方法、或者基于自适应帧内刷新机制的解码方法中的任一步骤。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述基于自适应帧内刷新机制的解码方法、或者基于自适应帧内刷新机制的解码方法中的任一步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示虚拟边界的位置,且该虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界的位置即可,从而提高了划分强制帧内区域的灵活性,也即是本申请实施例提供了一种自适应划分强制帧内区域的自适应帧内刷新机制。比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种帧内刷新机制的示意图;
图2是本申请实施例提供的一种采用帧内刷新机制后的图像序列的示意图;
图3是本申请实施例提供的一种采用帧内刷新机制后的图像序列的示意图;
图4是本申请实施例提供的一种基于自适应帧内刷新机制的编码方法流程图;
图5是本申请实施例提供的一种自适应帧内刷新机制中帧内刷新帧的区域分布示意图;
图6是本申请实施例提供的一种基于自适应帧内刷新机制的解码方法流程图;
图7是本申请实施例提供的一种参考帧的示意图;
图8是本申请实施例提供的一种解码装置的结构示意图;
图9是本申请实施例提供的一种编码装置的结构示意图;
图10是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的方法进行解释说明之前,先对本申请实施例涉及的应用场景进行解释说明。
在视频编解码中,用于做基准参考的图像帧称为I帧,I帧也称为关键帧。编码I帧时,压缩率很低,目的在于后续解码时能够直接基于I帧的码流解码得到I帧,从而无需参考其他图像帧。在编码时,基于前一帧图像和当前图像帧之间的差值进行编码的图像帧称为P帧,编码后的P帧的码流中携带的是前一帧图像和当前图像帧之间的差值,以便于后续基于I帧、解码得到的前一帧图像和码流中的差值解码得到当前图像帧。此外,在编码时,基于前一帧图像和当前图像帧之间的差值、以及当前图像帧和后一帧图像之间的差值进行编码的图像帧称为B帧,编码后的B帧的码流中携带的是前一帧图像和当前图像帧之间的差值以及当前图像帧和后一帧图像之间的差值,以便于后续基于I帧、解码得到的前一帧图像和后一帧图像以及码流中的差值解码得到当前图像帧。将编码后的一个I帧以及若干个B帧或若干个P帧组成的序列称为一个图像序列。该图像序列也称为IPPP或IBBB序列。
在解码端通过随机接入方式访问IPPP或IBBB序列时,通常情况下I帧的码率会远大于P帧或B帧的码率,使得I帧的解码时间比P帧或B帧的解码时间更长。尤其在弱网环境中解码I帧所需的时间更长,从而导致可能会出现视频卡顿现象。
为了避免由于解码I帧所需时长过长导致出现视频卡顿现象,目前业内提供了一种帧内刷新机制。该帧内刷新机制的核心思想是:将I帧的码率分散到若干个P帧上,每个P帧都有一小块区域的编码模式是强制帧内模式,其他区域的编码模式允许采用帧间模式,最终每个P帧的码率都比原来的I帧小很多。同时,帧内刷新机制中要求不同P帧的强制帧内区域互不相交,如此经过若干个P帧之后,基于强制帧内模式变能够刷新完整个图像区域。
为了便于后续说明,下面对帧内刷新机制的原理进行详细说明。
图1是本申请实施例提供的其中一种帧内刷新机制的示意图。图1中的帧内刷新机制是把I帧的码率分散到四个P帧上,每个P帧都有一个区域是强制帧内区域。其中标记为①的区域是强制帧内区域。标记为②的区域是编码顺序中前一帧的已刷新区域,该区域的编码模式允许采用帧间模式,因此也称为当前帧的帧间区域。标记为③的区域是未刷新区域,该区域的编码模式允许采用帧间模式。
如图1所示,将完整的图像帧划分了4个强制帧内区域,刷新周期内包括4个帧内刷新帧,分别为图1中从左到右的4帧图像。对于刷新周期内第一帧图像,该图像包括一个帧内刷新区域和未刷新区域,由于第一帧图像为刷新周期内的第一帧图像,因此,第一帧图像中的已刷新区域仅仅包括当前图像帧中的强制帧内区域。对于刷新周期内第二帧图像,该图像包括第一帧图像中的已刷新区域、一个帧内刷新区域和未刷新区域,第二帧图像中第一帧图像的已刷新区域和当前图像帧包括的帧内刷新区域合并后统称为第二帧图像的已刷新区域。对于刷新周期内第三帧图像,该图像包括第二帧图像中的已刷新区域、一个帧内刷新区域和未刷新区域,第三帧图像中第二帧图像的已刷新区域和当前图像帧包括的帧内刷新区域合并后统称为第三帧图像的已刷新区域。对于刷新周期内第四帧图像,该图像包括第三帧图像中的已刷新区域、一个帧内刷新区域,第四帧图像中第三帧图像的已刷新区域和当前图像帧包括的帧内刷新区域合并后统称为第四帧图像的已刷新区域。由于前面是将完整图像划分了4个强制帧内区域,因此,第四帧图像中是没有未刷新区域的。
此外,未刷新区域也称为脏(dirty)区域,编码顺序中前一帧的已刷新区域和当前帧的强制帧内区域合并后还可以统称为当前帧的清洁(clean)区域,二者的分界线是图1中的分界线。本申请实施例所涉及的虚拟边界也是用于区分clean区域和dirty区域的分界线,只是分界线的划分方式更加灵活,可以是折线的分界线,不限于垂直分界线。在本申请实施例中,对于任一帧内刷新帧,该帧内刷新帧的已刷新区域和未刷新区域之间的虚拟边界是指已刷新区域和未刷新区域之间的分界线,该分界线也是该帧内刷新帧的clean区域和dirty区域之间的分界线。
图2是本申请实施例提供的其中一种采用帧内刷新机制后的图像序列的示意图。如图2所示,把原始图像序列(图2中简称为原始序列)中的I2(I帧)、P8(P帧)、P9(P帧)、P10(P帧)四帧替换成四个帧内刷新帧,这四个帧内刷新帧标记为X1、X2、X3、X4,得到基于帧内刷新机制的图像序列(图2中简称为帧内刷新序列)。这四个帧内刷新帧均有一个区域是强制帧内区域,其他区域的编码模式允许采用帧间模式,故可以把这四个帧内刷新帧看作四个“大P帧”,码率近似为原来I2帧码率的1/4。此外,这四个帧内刷新帧还可以简称为IR帧。
在图2所示的图像序列中,在随机接入方式下,假设原始图像序列中的I2帧是一个随机接入点,该I2帧之后的帧可以独立解码,所以P8帧只能参考I2帧,不能参考P7帧。但是在基于帧内刷新机制的图像序列(图2中简称为帧内刷新序列)中,X1帧是一个随机接入点,X1帧内的未刷新区域中的帧间编码区域可以参考P7帧,但是可能无法正确解码(因为随机接入时P7帧可能还未拿到)。类似的,X2帧、X3帧的未刷新区域也可能无法正确解码。直到X1至X4帧全部刷新完,此时由于X4帧中的已刷新区域中的帧间区域可以基于X1-X3的强制帧内区域的码流解码得到,X4帧中的已刷新区域中的强制帧内区域基于强制帧内解码模式便可得到,因此没有未刷新区域的X4帧可以完整的正确解码。所以,图2中的X1、X2、X3、X4帧是一个刷新周期,刷新周期中只有最后一帧可以完整的正确解码,故称该帧为恢复点(Recovery Point)。
需要说明的是,在随机接入情形下,只有恢复点及其后面的图像帧才会显示给用户,随机接入点所在的刷新周期中的其他图像由于可能无法正确解码,因此均不显示。在非随机接入情形下,所有图像帧都能完整的正确解码,因此所有图像帧都会显示给用户。
另外,为了保证基于帧内刷新机制编码后的码流解码功能,目前帧内刷新机制对解码模式中的帧内模式/帧间模式以及环路滤波限制了如下条件:
条件一:对于任一帧内刷新帧,该帧内刷新帧上已刷新区域的块只能参考同一个刷新周期中其他帧内刷新帧的已刷新区域进行解码,不能参考其他帧内刷新帧的未刷新区域进行解码;TMVP(temporal motion vector prediction,时域运动矢量预测)机制中的当前块在参考帧中的同位块也不能落在参考帧的未刷新区域,其中,同位块是指参考帧中和当前块位于相同位置的图像块,也即是,当前图像帧的图像块的MV信息所指向的区域不能落在参考帧的未刷新区域中。需要说明的是,本申请实施例中当前块和当前图像块为同一概念,为了便于说明,可以将当前图像块简称为当前块。
条件二:对于任一帧内刷新帧,该帧内刷新帧上未刷新区域的块解码时没有参考限制。
条件三:对于图像序列中不是帧内刷新帧的图像帧,该图像帧的块允许参考所在随机接入周期中帧内刷新帧帧的已刷新区域进行解码,但是不能参考所在随机接入周期中帧内刷新帧帧的未刷新区域进行解码;TMVP机制中的当前块在参考帧中的同位块也不能落在参考帧的未刷新区域。
条件四:对于任一帧内刷新帧,环路滤波不能跨越该帧内刷新帧的已刷新区域和未刷新区域之间的分界线,也即是不对已刷新区域和未刷新区域之间虚拟边界执行环路滤波操作。
目前VVC(Versatile Video Coding,通用视频编码)标准中的GDR(GradualDecoding Refresh,逐步解码刷新)技术给出了一种帧内刷新机制。该帧内刷新机制的具体内容如下。
首先通过垂直划分方式划分已刷新区域和未刷新区域。在垂直划分方式中,已刷新区域和未刷新区域之间的虚拟边界为平行于图像坐标系中的Y轴一条分界线。划分边界对齐到最小CU(coding unite,编码单元)的宽高(CU的最小为8像素),也即是已刷新区域的宽度为整数倍最小CU的宽度,已刷新区域的高度为帧内刷新帧的图像高度。
其次,不同帧内刷新帧上的强制帧间区域等距划分,且强制帧间区域的宽度=图像帧的总宽度/刷新周期。刷新周期是指正确解码得到完整图像帧所需的帧内刷新帧的数量,比如,图3中的刷新周期即为6。其中,刷新周期可由编码端配置,比如,编码端可基于帧内刷新帧的码流的图像头参数recovery_poc_cnt来设置该刷新周期,对于图3所示的图像序列,可将recovery_poc_cnt=6,指示该帧内刷新帧所在的刷新周期为6。此外,刷新顺序是默认的从左到右,该刷新顺序无需在码流中明确指示,解码端默认按照从左到右的刷新顺序解码每个帧内刷新帧。
另外,对于任一图像帧,编码端还可以基于图像帧的码流的图像头参数gdr_pic_flag标识当前图像帧是否为帧内刷新帧。比如,gdr_pic_flag=1时,指示当前图像帧为帧内刷新帧,gdr_pic_flag=0时,指示当前图像帧不是帧内刷新帧。
此外,VCC标准中的帧内刷新机制同样包括上述条件一至条件4这四个限制条件,在此不再赘述。
上述VCC标准中的帧内刷新机制中的强制帧内区域的划分方式不够灵活,只能是等距的垂直条状区域,无法自适应的根据图像内容划分区域。此外,由于VCC标准中的帧内刷新机制不允许跨越已刷新区域和未刷新区域之间的虚拟边界的环路滤波,所以该虚拟边界上的图像质量较差。
基于上述VCC标准中的帧内刷新机制中出现的问题,本申请实施例提供了一种基于自适应帧内刷新机制的编解码方法,该方法中提供更灵活的强制帧内区域划分方法,划分方式编码端可配,通过本申请实施例提供的方法一方面能够根据图像内容自适应划分已刷新区域和未刷新区域之间的虚拟边界,提高了强制帧内区域的划分灵活性。此外,还可以使得已刷新区域和未刷新区域之间的虚拟边界尽可能与图像中的对象边界重合,从而避免由于无法对虚拟边界进行环路滤波而影响解码后的图像质量。
由于本申请实施例提供的方法能够根据图像内容自适应划分已刷新区域和未刷新区域之间的虚拟边界,因此本申请实施例涉及的帧内刷新帧还可以称为自适应帧内刷新帧,后续为了便于说明,将本申请实施例涉及的自适应帧内刷新帧简称为帧内刷新帧或刷新帧。
下面对本申请实施例提供的基于自适应帧内刷新机制的编解码方法进行详细解释说明。
图4是本申请实施例提供的一种基于自适应帧内刷新机制的编码方法。如图4所示,该方法包括如下几个步骤。
步骤401:编码端编码当前帧的码流,其中,当前帧的码流中携带帧类型标记信息,帧类型标记信息指示当前帧是否为帧内刷新帧,在帧类型标记信息指示当前帧为帧内刷新帧的情况下,该码流中还携带有虚拟边界位置标记信息,该虚拟边界位置标记信息指示虚拟边界的位置,该虚拟边界至少用于区分已刷新区域和未刷新区域。
上述虚拟边界可以是当前帧中已刷新区域的边界线,也可以是当前帧中未刷新区域的边界线,还可以是分割出来的已刷新区域和未刷新区域的分割界线。这三种虚拟边界的示例本质相同。
后续实施例以虚拟边界是分割出来的已刷新区域和未刷新区域的分割界线为例进行说明。也即是,该虚拟边界位置标记信息可以指示当前帧中已刷新区域和未刷新区域之间的虚拟边界的位置,虚拟边界的位置具体可以包括该虚拟边界在当前帧水平方向上的位置以及当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置。
但是需要说明的是,本申请实施例提供的自适应帧内刷新方案中的虚拟边界不限于上述解释,虚拟边界可以是前述三种虚拟边界示例中任意一种。在本申请实施例中,在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置以及当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界即可,从而提高了划分强制帧内区域的灵活性。
比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。
可选地,编码端也可以基于其他需求来划分当前帧的强制帧内区域,在此不再一一举例说明。
上述帧类型标记信息指示当前帧是否为帧内刷新帧。示例地,编码端可以将当前帧的码流中的图像头参数air_pic_flag作为该帧类型标记信息。也即是,通过图像头参数air_pic_flag标识当前帧是否为帧内刷新帧(IR帧)。比如,air_pic_flag=1时,表明当前帧为帧内刷新帧,air_pic_flag=0时,表明当前帧不是帧内刷新帧。
下面示例说明本申请实施例提供的虚拟边界位置标记信息的几种可选实施例。需要说明的是,下述几种虚拟边界位置标记信息实施例仅仅用于举例说明,并不限定本申请实施例提供的虚拟边界位置标记信息的功能,任意能够指示当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置以及当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置的标记信息均在本申请实施例提供的虚拟边界位置标记信息的范围之内。
虚拟边界位置标记信息示例一:
在示例一中,该虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,第一虚拟边界位置标记信息指示已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置,第二虚拟边界位置标记信息指示已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置。
其中,当前帧中的已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在相邻帧垂直方向上的位置不同,相邻帧为当前帧在编码顺序中的前一帧或后一帧。也即是,在同一刷新周期内,相邻两个帧内刷新帧的已刷新区域和未刷新区域之间的虚拟边界在相应帧垂直方向上的位置不同。如此,便可避免划分得到的强制帧内区域是一个垂直条状区域,同时由于已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置、以及已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置均可以由编码端任意配置,因此也无需各个帧内刷新帧的强制帧内区域宽度相同。因此,通过虚拟边界位置标记信息可以使得编码端实现同一刷新周期内不同帧内刷新帧的强制帧内区域的不等距划分。
比如,在当前帧的码流中添加图像头参数bd_x和bd_y。bd_x为上述第一虚拟边界位置标记信息,bd_y为第二虚拟边界位置标记信息。通过bd_x和bd_y便可标识当前帧中的已刷新区域和未刷新区域之间的虚拟边界。
在虚拟边界位置标记信息示例一中,具体地,在一种可能的实现方式中,第一虚拟边界位置标记信息为已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的像素位置,第二虚拟边界位置标记信息为已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的像素位置。
比如,第一虚拟边界位置标记信息为已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的图像横坐标,第二虚拟边界位置标记信息为已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的图像纵坐标。此时,当前帧的已刷新区域是指以图像左上角坐标(0,0)为原点、宽为图像横坐标、高为图像纵坐标的矩形区域,当前帧的未刷新区域是指当前帧中除已刷新区域之外的其他区域。
图5是本申请实施例提供的一种自适应帧内刷新机制中各个帧内刷新帧的区域分布示意图。和图1中一样,在图5中,标记为①的区域是强制帧内区域。标记为②的区域是编码顺序中前一帧的已刷新区域,该区域的编码模式允许采用帧间模式,因此也称为当前帧的帧间区域。标记为③的区域是当前帧的未刷新区域。
如图5所示,图5中任一帧内刷新帧的已刷新区域是指以坐标为(0,0)为左上角、宽为图像横坐标bd_x、高为图像纵坐标bd_y的矩形区域,该帧内刷新帧的未刷新区域③是指该帧内刷新帧中除已刷新区域之外的其他区域。其中,图5中从左到右的第一帧图像中,已刷新区域即为强制帧内区域①。第二帧至第四帧图像中,已刷新区域中包括强制帧内区域①和帧间区域②,其中,任一帧图像中的帧间区域②为前一帧图像的已刷新区域。
在虚拟边界位置标记信息示例一中,具体地,在另一种可能的实现方式中,第一虚拟边界位置标记信息为已刷新区域在当前帧水平方向上的宽度和当前帧图像宽度之间的比例,第二位置标记信息为已刷新区域在当前帧垂直方向上的高度和当前帧图像高度之间的比例。
比如,上述第一虚拟边界位置标记信息bd_x为已刷新区域在当前帧水平方向上的宽度和当前帧图像宽度之间的比例,第二位置标记信息bd_y为已刷新区域在当前帧垂直方向上的高度和当前帧图像高度之间的比例。其中,bd_x或bd_y可以为1/4或3/5等等。
下面以表1至表3为例说明虚拟边界位置标记信息示例一中各种语法元素的具体实现方式。
表1
其中,air_enable_flag为自适应帧内刷新允许标志。该自适应帧内刷新允许标志为二值变量。air_enable_flag的值为‘1’表示图像序列中可使用本申请实施例提供的自适应帧内刷新技术。air_enable_flag的值为‘0’表示不可使用本申请实施例提供的自适应帧内刷新技术。后续实施例中的AirEnableFlag的值等于air_enable_flag的值。如果码流中不存在air_enable_flag,则AirEnableFlag的值为0。
表2
表3
在表2和表3中,picture_air_pic_flag为图像级自适应帧内刷新帧标志。图像级自适应帧内刷新帧标志为二值变量。picture_air_pic_flag的值为‘1’表示当前帧是帧内刷新帧;picture_air_pic_flag的值为‘0’表示当前帧不是帧内刷新帧。后续实施例中涉及的PictureAirPicFlag的值等于picture_air_pic_flag的值。如果码流中不存在picture_air_pic_flag,则PictureAirPicFlag的值为0。
在picture_air_pic_flag的值为‘1’的情况下,当前帧为帧内刷新帧,且当前帧的已刷新区域和未刷新区域之间的虚拟边界的图像横坐标为air_bound_x,当前帧的已刷新区域和未刷新区域之间的虚拟边界的图像纵坐标为air_bound_y,其中,虚拟边界是已刷新区域和未刷新区域之间的分界线。已刷新区域是以(0,0)为左上角、宽为air_bound_x、高为air_bound_y的矩形区域,未刷新区域是当前帧中剩余的图像区域。后续实施例中的AirBoundX和AirBoundY的值分别等于air_bound_x和air_bound_y的值。如果码流中不存在air_bound_x和air_bound_y,则AirBoundX和AirBoundY的值均为0。
需要说明的是,上述表1至表3仅仅是本申请实施例提供的语法元素的可选示例,本申请实施例并不限定这些语法元素的具体表现形式。
另外,为了提高后续解码速度,编码端在划分为已刷新区域和未刷新区域时,还应该考虑已刷新区域和未刷新区域之间的虚拟边界的边界精度。也即是,考虑已刷新区域的宽度精度和高度精度。其中,已刷新区域的宽度精度是指已刷新区域的最小宽度,已刷新区域的实际宽度通常配置为该宽度精度的整数倍。已刷新区域的高度精度是指已刷新区域的最小高度,已刷新区域的实际高度通常配置为该高度精度的整数倍。
下面示例说明本申请实施例提供的边界精度的几种可选实施例。需要说明的是,下述几种边界精度实施例仅仅用于举例说明,并不限定本申请实施例提供的边界精度的范围。
边界精度示例一:
已刷新区域的宽度精度为一个编码单元CU的宽度,已刷新区域的高度精度为CU的高度。
比如,最小的CU宽高均为8个像素,此时在bd_x为已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的图像横坐标,bd_y为已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的图像纵坐标的情况下,bd_x、bd_y可以是8的倍数。
边界精度示例二:
已刷新区域的宽度精度为一个LCU(large coding unite,最大编码单元)的宽度,已刷新区域的高度精度为LCU的高度。
比如,一个LCU宽高为128个像素,此时在bd_x为已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的图像横坐标,bd_y为已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的图像纵坐标的情况下,bd_x、bd_y可以是128的倍数,此时已刷新区域的虚拟边界对齐到LCU的边界。
边界精度示例三:
已刷新区域的宽度精度为一个图像片(patch)的宽度,已刷新区域的高度精度为图像片的高度,图像片包括一个或多个LCU。其中,一个图像片是有一个或多个LCU组成的区域。
另外,为了进一步提高当前帧的压缩率,在帧间编码中,用MV运动矢量(motionvector,运动矢量)信息表示当前编码块与其参考图像帧中的最佳匹配块之间的相对位移。每个划分的块都有相应的MV信息需要传送到解码端,以便解码端基于各个块的MV信息解码当前块。其中,获取当前帧中当前块的MV信息所依据的参考图像帧中的图像块称为该当前块的MV信息所指向的图像块,该指向的图像块也称为当前块的同位图像块或参考图像块或者参考块。也即是,在编码当前帧时,编码后的码流中还携带有当前块的MV信息。
前述参考图像帧和参考帧为同一概念,本申请实施例对此不做限定。
在本申请实施例中,编码端在进行帧间编码时可以通过以下几个实施例中任一实施例来实现。需要说明的是,下述几种帧间编码实施例仅仅用于举例说明,并不限定本申请实施例提供的帧间编码方式的范围。
帧间编码示例一:
当前帧的已刷新区域包括强制帧内区域和帧间区域。此时,当前帧的码流中携带的帧间区域中的图像块的MV信息指向相应图像块的参考帧中的已刷新区域。
也即是,在编码端对图像块的MV信息做限制,要求图像块的MV信息所指向的参考帧中的参考块不能落在该参考帧的未刷新区域。这种场景下,如果当前块位于帧间区域,解码端默认拿到的当前块的MV信息一定是指向当前块的参考帧的已刷新区域,解码端便可直接基于该MV信息对当前块进行解码,无需任何调整。
帧间编码示例二:
当前帧的已刷新区域包括强制帧内区域和帧间区域。此时,当前帧的码流中携带的帧间区域中的图像块的MV信息指向相应图像块的参考帧中的已刷新区域和/或相应图像块的参考帧中的未刷新区域。
也即是,在编码端对图像块的MV信息未做限制。这种场景下,如果当前块位于帧间区域,解码端拿到的当前块的MV不一定指向该当前块的参考帧的已刷新区域,此时解码端需要对该MV信息进行调整,以便基于调整后的MV信息进行解码。关于调整该MV信息的具体实现方式将在后续详细说明。
另外,为了避免解码后的虚拟边界处的图像质量不好,在本申请实施例中,还可以在当前帧的码流中携带环路滤波标记信息,该环路滤波标记信息指示关闭或允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波。通过该环路滤波标记信息可以指示解码端是否需要虚拟边界附近的区域进行环路滤波,解码端具体的操作将在后续实施例中详细说明,在此先不展开阐述。
需要说明的是,上述针对虚拟边界位置标记信息、边界精度以及帧间编码的各种示例可以随意组合,本申请实施例对此不作限定。
此外,本申请实施例中的刷新顺序是默认的从左上到右下,该刷新顺序无需在码流中明确指示,解码端默认按照从左上到右下的刷新顺序解码每个帧内刷新帧。
步骤402:编码端向解码端发送该当前帧的码流。
编码端在通过步骤401完成编码后,便可解码端发送该当前帧的码流,以便于解码端对该码流进行解码,从而获取到当前帧。
综上所述,在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示虚拟边界的位置,且该虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界的位置即可,从而提高了划分强制帧内区域的灵活性,也即是本申请实施例提供了一种自适应划分强制帧内区域的自适应帧内刷新机制。比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。
下面通过图6所示的实施例对本申请实施例提供的基于帧内刷新机制的解码方法进行详细解释说明。如图6所示,该解码方法包括如下几个步骤。
步骤601:解码端接收当前帧的码流,该当前帧的码流中携带帧类型标记信息,该帧类型标记信息指示当前帧是否为帧内刷新帧。
关于帧类型标记信息的相关解释可以参考编码端实施例中的步骤401,在此不再赘述。
步骤602:在该帧类型标记信息指示当前帧为帧内刷新帧的情况下,解码端获取码流中携带的虚拟边界位置标记信息,该虚拟边界位置标记信息指示虚拟边界的位置,该虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域。
关于虚拟边界位置标记信息的相关解释同样可以参考编码端实施例中的步骤401,在此不再赘述。
步骤603:基于该虚拟边界位置标记信息,解码端确定当前帧中的已刷新区域的区域位置和未刷新区域的区域位置。
基于编码端实施例中的步骤401可知,虚拟边界位置标记信息有不同的虚拟边界位置标记信息示例,对应不同的虚拟边界位置标记信息示例,解码端确定当前帧中的已刷新区域的区域位置和未刷新区域的区域位置的实现方式也不同。具体分别说明如下。
针对步骤401中的虚拟边界位置标记信息示例一,此时,该虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,第一虚拟边界位置标记信息指示已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置,第二虚拟边界位置标记信息指示已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置。这种场景下,步骤603的实现方式具体为:先根据第一虚拟边界位置标记信息和第二虚拟边界位置标记信息确定出当前帧中的已刷新区域的区域位置,然后便可得到当前帧中未刷新区域的区域位置。
比如,bd_x为上述第一虚拟边界位置标记信息,bd_y为第二虚拟边界位置标记信息,且bd_x为已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的图像横坐标,bd_y为已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的图像纵坐标。此时,解码端确定的前帧的已刷新区域是区域是图像坐标为[0,bd_x)*[0,bd_y)的矩形区域,当前帧中除了该矩形区域的剩余区域是未刷新区域。
需要说明的是,上述实现方式仅仅是解码端针对步骤401中的虚拟边界位置标记信息的示例的实现方式,并不限定解码端确定当前帧中的已刷新区域的区域位置和未刷新区域的区域位置的具体实现方式,在使用本申请实施例时,可以依据虚拟边界位置标记信息的具体示例,来制定解码端确定当前帧中的已刷新区域的区域位置和未刷新区域的区域位置的具体实现方式,在此不再一一举例说明。
步骤604:基于已刷新区域的区域位置和未刷新区域的区域位置,解码端对当前帧的码流进行解码。
基于前述内容可知,对于刷新周期内除了第一个帧内刷新帧外的其他帧内刷新帧,这些其他帧内刷新帧的已刷新区域包括强制帧内区域和帧间区域的,其中,针对帧间区域需要使用帧间解码方式解码,对于强制帧内区域只能使用帧内解码方式解码。因此,对于这些其他帧内刷新帧,还需进一步确定这些其他帧内刷新帧中的强制帧内区域的区域位置以及帧间区域的区域位置,以便于基于不同的解码方式进行解码。
因此,在一种可能的实现方式中,步骤604的实现方式具体为:基于当前帧中已刷新区域的区域位置和当前帧在解码顺序中的前一帧的已刷新区域,确定当前帧中强制帧内区域的区域位置以及帧间区域的区域位置;基于当前帧中强制帧内区域的区域位置以及帧间区域的区域位置,对当前帧的码流进行解码。
示例地,针对步骤401中的虚拟边界位置标记信息示例一,此时确定的当前帧的已刷新区域中的帧间区域为前一帧的已刷新区域;确定的当前帧的已刷新区域中的强制帧内区域为当前帧的已刷新区域中除了帧间区域之外的区域。
也即是,当前帧中强制帧内区域的区域位置以及帧间区域的区域位置可以通过下述公式得到:
当前帧的帧间区域=解码顺序中前一帧的已刷新区域;
当前帧的强制帧内区域=当前帧的已刷新区域–当前帧的帧间区域。
比如,图5中各个帧内刷新帧的区域分布同样满足上述公式。
另外,基于步骤401可知,对于当前帧的帧间区域中的图像块,码流中还进一步携带这些图像块的MV信息,以提高解码速度。并且步骤401中提供了不同的帧间编码示例,对于不同的帧间编码示例,解码端解码方式也不同,下面分别对应说明。
针对步骤401中的帧间编码示例一,由于编码端编码时对MV信息做了限制,要求MV信息所指向的当前帧的参考帧中的参考块不能落在该参考帧的未刷新区域。因此,这种场景下基于强制帧内区域的区域位置以及帧间区域的区域位置,对当前帧的码流进行解码的实现方式为:如果基于当前帧的帧间区域的区域位置确定当前图像块为该当前帧的帧间区域中的图像块,则直接基于当前图像块的MV信息,解码当前图像块。
针对步骤401中的帧间编码示例二,由于编码端在编码时对MV信息未做限制,此时MV信息所指向的当前帧的参考帧中的参考块不一定落在该参考帧的已刷新区域。因此,为了避免解码失败,这种场景下,基于强制帧内区域的区域位置以及帧间区域的区域位置,对当前帧的码流进行解码的实现方式具体为:如果基于帧间区域的区域位置确定当前图像块为帧间区域中的图像块、且码流中携带当前图像块的运动矢量MV信息,则将MV信息调整为指向的区域为参考帧中的已刷新区域的MV信息;基于调整后的MV信息,解码当前图像块。也即是,这种场景下,由解码端强制将当前块的MV信息调整为(clip)指向参考帧的已刷新区域的MV信息,如此,调整后的MV信息便可指向参考帧的已刷新区域,如此基于该MV信息在参考帧中查找到当前图像块所对应的参考块便可落在参考帧的已刷新区域中。
此外,如步骤401所示,当前帧的码流中还可以携带环路滤波标记信息,该环路滤波标记信息指示关闭或允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波。其中,本申请实施例涉及的环路滤波包含三个环路滤波技术:DBK(deblocking,去方块)滤波、SAO(sample adaptive offset,样点自适应补偿)、ALF(adaptive loop filter,自适应环路滤波)。每个环路滤波技术都可以独立的关闭或开启,但是开启时通常情况下不能使用当前帧中未刷新区域中的像素作为参考像素。
表4是本申请实施例提供的一种不同环路滤波标记信息下解码端的实际滤波操作的示意表。
表4
如表4所示,在环路滤波标记信息指示关闭已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的情况下,解码端则不执行已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的操作。
如表4所示,在环路滤波标记信息指示允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的情况下,解码端可以进行环路滤波也可以不进行环路滤波,具体有以下表4中的三种处理方式。
环路滤波示例一:
在环路滤波标记信息指示允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的情况下,对于基于已刷新区域和未刷新区域之间的虚拟边界确定的待滤波区域,不执行对待滤波区域进行环路滤波的操作。
其中,待滤波区域是指以虚拟边界为中心线、具有指定宽度的区域。该指定宽度可以由环路滤波的滤波参数确定,本申请实施例对此不作限定。比如,待滤波区域是指以虚拟边界为中心线、分别向左向右延伸4个像素点的图像区域。
环路滤波示例二:
在环路滤波标记信息指示允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的情况下,对于基于已刷新区域和未刷新区域之间的虚拟边界确定的待滤波区域,解码端基于已刷新区域中的像素,执行对待滤波区域进行环路滤波的操作。
在环路滤波示例二中,仅仅根据待滤波区域周围的已刷新区域中的像素作为参考像素进行环路滤波,从而避免由于环路滤波而对待滤波区域中原本属于已刷新区域的区域造成污染。
其中,进行环路滤波所需的参考像素可以是待滤波区域周围的全部已刷新区域中的像素,也可以部分已刷新区域中的像素,具体由环路滤波所需的参数来确定,本申请实施例对此不作限定。
环路滤波示例三:
在环路滤波标记信息指示允许已刷新区域和未刷新区域之间的虚拟边界上的环路滤波的情况下,对于基于已刷新区域和未刷新区域之间的虚拟边界确定的待滤波区域,解码端基于已刷新区域中的像素和未刷新区域中的像素,执行对待滤波区域进行环路滤波的操作。这种场景下,由于环路滤波操作对待滤波区域中原本属于已刷新区域的区域造成了污染,因此位于已刷新区域中的待滤波的区域不能作为当前帧在解码顺序中的后一帧中的图像块的MV信息所指向的区域,从而避免了后一帧解码失败。
在环路滤波示例三中,同时根据待滤波区域周围的已刷新区域和未刷新区域中的像素作为参考像素进行环路滤波,这样势必会由于环路滤波操作对待滤波区域中原本属于已刷新区域的区域造成污染。所谓造成污染具体是指基于错误的未刷新区域中的参考像素对原本正确的已刷新区域进行了滤波,从而导致原本正确的已刷新区域中的像素错误。因此,这种场景下,针对步骤401中的帧间编码示例二,对于解码顺序中的下一帧,解码端在调整下一帧中某个图像块的MV信息时,需要将调整后的MV信息指向该当前帧未被污染的已刷新区域,从而避免下一帧解码失败。
由此可知,针对步骤401中的帧间编码示例二,由于编码端在编码时对帧间区域中的图像块的MV信息未做限制,此时帧间区域中的图像块的MV信息所指向的该图像块的参考帧中的参考块不一定落在该参考帧的已刷新区域。因此,解码端在解码帧间区域中的图像块时,有以下两种处理方式。
方式一:解码端拿到的帧间区域中的图像块的MV信息不限制其一定指向该图像块的参考帧的已刷新区域,如果解码端在解码参考帧时未进行环路滤波或基于上述环路滤波示例二进行的环路滤波,此时解码端可直接强制把该MV信息指向到该图像块的参考帧的已刷新区域中的任意区域。参见图7左边的参考帧,此时可以将当前帧的帧间区域中图像块的MV信息指向该参考帧中的已刷新区域中的任意区域。
方式二:解码端拿到的帧间区域中的图像块的MV信息不限制其一定指向当前帧的参考帧的已刷新区域,如果解码端在解码参考帧时基于上述环路滤波示例三进行的环路滤波,此时解码端在解码当前图像块时,要强制把该当前图像块的MV信息指向到该当前图像块的参考帧的未被污染的已刷新区域里。参见图7右边的参考帧,此时可以将当前帧的帧间区域中图像块的MV信息指向该当前图像块的参考帧中的已刷新区域中未被污染的区域。其中,参考帧的已刷新区域中被污染区域的范围不超过滤波器的最大行缓存(line buffer)。
上述是在当前帧的当前块的参考帧是帧内刷新帧,且当前块为当前帧的帧间区域中的块的情况下,则直接强制将当前图像块的MV信息指向该参考帧中的已刷新区域中未被污染的区域。
可选地,在当前帧的当前块的参考帧是帧内刷新帧,且当前块为当前帧的已刷新区域的情况下,不管当前块是否在当前帧的帧间区域中,也可以直接强制将当前图像块的MV信息指向该参考帧中的已刷新区域中未被污染的区域。
可选地,在当前帧的当前块的参考帧是帧内刷新帧,且当前块所在的当前帧不是帧内刷新帧情况下,也可以直接强制将当前图像块的MV信息指向该参考帧中的已刷新区域中未被污染的区域。
也即是,对于当前帧,在当前帧的当前块满足上述三种情况中任一情况时,均可以直接强制将当前图像块的MV信息指向该参考帧中的已刷新区域中未被污染的区域。其中,上述三种情况可以概括为:如果当前帧的当前块的参考帧是帧内刷新帧,并且当前块不满足“当前帧是自适应帧内刷新帧,且当前块落在未刷新区域,且当前帧和参考帧处于同一个自适应帧内刷新周期”,则将当前图像块的MV信息指向该当前图像块的参考帧中的已刷新区域中未被污染的区域。具体地,可以通过下述公式实现:
MvE->x’=Min(MvE->x,(RefAirBoundX–MaxFilterLineBuf–W–xE)<<PixelResolution)
MvE->y’=Min(MvE->y,(RefAirBoundY–MaxFilterLineBuf–H–yE)<<PixelResolution)
其中,MvE是当前图像块的运动矢量,MvE->x’是调整后的当前图像块的运动矢量在X方向上的分量,MvE->y’是调整后的当前图像块的运动矢量在y方向上的分量,MvE->x是码流中携带的当前图像块的运动矢量在X方向上的分量,MvE->y是码流中携带的当前图像块的运动矢量在y方向上的分量,RefAirBoundX和RefAirBoundY分别是参考帧的虚拟边界坐标AirBoundX和AirBoundY,MaxFilterLineBuf是对所述参考帧的虚拟边界进行环路滤波所使用的滤波器(包括环路滤波和ALF(adaptive loop filter,自适应环路滤波))的最大行缓存,PixelResolution是运动矢量MvE的像素精度。W为当前图像块的图像宽度,H为当前图像块的图像高度,(xE,yE)是当前图像块左上角样本在当前帧的亮度样本矩阵中的位置。其中,当前图像块也称为当前编码单元。
需要说明的是,上述如果当前帧的当前块的参考帧是帧内刷新帧,并且当前块不满足“当前帧是自适应帧内刷新帧,且当前块落在未刷新区域,且当前帧和参考帧处于同一个自适应帧内刷新周期”,也可以直接强制将当前图像块的MV信息重新指向该参考帧中的已刷新区域,至于是否指向该参考帧中的已刷新区域取决于前述介绍的对参考帧的虚拟边界进行环路滤波的方式。
结合前述解码端针对步骤401中的帧间编码示例一的具体操作、以及上述两种解码端在解码帧间区域中的图像块时的处理方式,由此可知,在本申请实施例中,解码端在进行帧间解码时,具体可以有以下三种解码方法。
方法一:对于待解码的当前图像块,解码端默认从码流中拿到的该当前图像块的MV信息一定是指向该当前图像块的参考帧的已刷新区域,则解码端无需任何调整,直接基于该当前图像块的MV信息解码当前图像块即可。该方法需要在编码端对当前图像块的MV信息做限制,要求该当前图像块的参考块不能落在当前图像块的参考帧的未刷新区域。
方法二:对于待解码的当前图像块,解码端拿到的当前图像块的MV信息不限制其一定指向该当前图像块的参考帧的已刷新区域,此时解码端在获取当前图像块的参考块时,要强制把该当前图像块的MV信息调整为指向该当前图像块的参考帧的已刷新区域里,参见图7左边的参考帧。
方法三:对于待解码的当前图像块,解码端拿到的当前图像块的MV信息不限制其一定指向该当前图像块的参考帧的已刷新区域,此时解码端在获取该当前图像块的参考块时,要强制把该该当前图像块的MV信息调整为指向该当前图像块的参考帧的未被污染的已刷新区域里,参见图7右边的参考帧。
此外,在随机接入场景中,由于刷新周期内除了最后一个帧内刷新帧外其他帧内刷新帧(也即是非Recovery Point帧)可以不用显示,并且除了最后一个帧内刷新帧外其他帧内刷新帧的未刷新区域的像素不会被后续的图像帧参考,因此,为了进一步提高解码速率,可以考虑跳过这些其他帧内刷新帧中的未刷新区域的某些解码流程。具体地,可以通过下述几个解码端跳过示例分别解释说明。
解码端跳过解码示例一:
在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,表明当前帧不是刷新周期内的最后一帧,此时则基于已刷新区域的区域位置和未刷新区域的区域位置,对当前帧的码流进行解码的实现方式可以为:解析当前LCU(large coding unite,最大编码单元)的码流,得到当前LCU的位置信息;如果基于当前LCU的位置信息确定当前LCU位于当前帧的未刷新区域,则不执行重建当前LCU的操作,执行解析当前LCU的下一个LCU的码流的操作;如果当前LCU位于已刷新区域,则执行重建当前LCU的操作。
在解码端跳过解码示例一中,每个LCU的语法元素是需要解析的,解析每个LCU的语法元素后才能明确当前LCU是否位于当前帧的未刷新区域,如果当前LCU位于当前帧的未刷新区域,则不执行LCU的重建操作。如果当前LCU位于当前帧的已刷新区域,则执行LCU的重建操作。如此,仅仅跳过未刷新区域的重建操作,从而减少解码流程,以提高解码速率。
也即是,在解码端跳过解码示例一中,当待解码的区域的边界对齐到LCU的边界时,此时表明即将对一个LCU进行解码,则跳过当前帧中未刷新区域上LCU的重建,但是不跳过该LCU的解析操作。
解码端跳过解码示例二:
在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,表明当前帧不是刷新周期内的最后一帧,此时则基于已刷新区域的区域位置和未刷新区域的区域位置,对当前帧的码流进行解码的实现方式为:如果当前图像片(patch)的码流开始标记信息指示当前图像片位于当前帧的未刷新区域,则不执行对当前图像片的码流进行解析的操作,基于码流开始标记信息,在当前帧的码流中获取下一个图像片的码流的起始位置,以对下一个图像片进行解码;如果当前图像片的码流开始标记信息指示当前图像片位于已刷新区域,则执行对当前图像片的码流进行解析的操作,以对当前图像片进行解码。
在解码端跳过解码示例二中,由于每个图像片对应的码流开始标记信息能够指示当前图像片是否位于当前帧的未刷新区域,因此每个图像片对应的码流开始标记信息便可确定是否当前图像片是否位于当前帧的未刷新区域,无需对每个图像片中包括的各个LCU的语法元素进行解析。也即是,如果当前图像片(patch)的码流开始标记信息指示当前图像片位于当前帧的未刷新区域,则直接跳过该图像片中包括的所有LCU的解析操作,直接基于码流开始标记信息,在当前帧的码流中获取下一个图像片的码流的起始位置,以对下一个码流进行解码。如果当前图像片的码流开始标记信息指示当前图像片位于已刷新区域,则继续执行该图像片中包括的所有LCU的解析操作,便于基于LCU的位置确定是否需要对LCU进行重建。
也即是,在解码端跳过解码示例二中,当待解码的区域的边界对齐到一个图像片(patch)的边界时,此时表明即将对一个图像片(patch)进行解码,则跳过当前帧中未刷新区域上图像片(patch)的解析和解码操作。这样做是因为每个图像片(patch)都有一个码流开始标记信息patch_start_code,码流开始标记信息patch_start_code标识了该图像片(patch)在当前帧和码流中的位置,所以可以根据码流开始标记信息patch_start_code跳过当前帧中未刷新区域上的图像片(patch)的码流解析操作,直接解析下一个图像片(patch)的码流。
解码端跳过解码示例三:
在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,表明当前帧不是刷新周期内的最后一帧,此时则基于已刷新区域的区域位置和未刷新区域的区域位置,对当前帧的码流进行解码的实现方式为:对当前帧中的码流全部进行解码。
也即是,在解码端跳过解码示例三中,解码端不跳过当前帧中未刷新区域的解析和重建操作。
综上所述,本申请实施例提供的编解码方法至少具有如下技术效果:
(1)在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置以及当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界即可,从而提高了划分强制帧内区域的灵活性。比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。也即是,本申请实施例提供了一种灵活的帧内区域划分方式,该划分方式可以由编码端灵活配置。
(2)解码端可以允许跨越已刷新区域和未刷新区域之间的虚拟边界上的各种方式的环路滤波,从而提升该虚拟边界上的图像的主观质量。
下面以表1-表3所示的语法元素为例说明解码解码端的完整解码过程。具体地,解码端的解码流程包括如下几个步骤。
步骤1:解码端在解码序列头时,做以下判断:如果AirEnableFlag的值为1,则将PreAirBoundX和PreAirBoundY的值均初始化为0。
步骤2:在解码任一当前帧的图像头时,做以下判断:如果PictureAirPicFlag的值等于0,则将PreAirBoundX和PreAirBoundY的值均设置为0;否则根据PreAirBoundX、PreAirBoundY、AirBoundX和AirBoundY基于下述方式推导各个区域的区域位置:
1)已刷新区域是以(0,0)为左上角、宽为AirBoundX、高为AirBoundY的矩形区域;未刷新区域是剩余的图像区域;
2)已刷新区域可划分为帧间区域和强制帧内区域,其中帧间区域是以(0,0)为左上角、宽为PreAirBoundX、高为PreAirBoundY的矩形区域,强制帧内区域是剩余的已刷新区域。
步骤3:在解码当前图像时,做以下判断:
(1)如果当前帧是帧内刷新帧,则对于不同区域做不同的处理,具体如下:
对于强制帧内区域,如果PictureAirPicFlag的值等于1,并且当前最大编码单元落在强制帧内区域,则不用解码其内各编码单元的模式信息,默认各个编码单元的解码模式均为强制帧内解码模式。如果图像样本所在的块“不存在”或者此样本尚未解码或者此样本落在帧内刷新帧的未刷新区域,则此样本“不可用”;否则此样本“可用”。
对于Inter区域,在导出预测样本之前,如果当前块的参考帧是帧内刷新帧,并且当前块的参考块不是落在参考帧的已刷新区域,则要对MV信息进行调整,使调整后的MV信息指向参考帧的已刷新区域。
对于未刷新区域,解码端不做特殊处理。
(2)如果当前帧不是帧内刷新帧,则对当前帧的帧内区域中图像块不做特殊处理,对当前帧的帧间区域中图像块做以下判断:
在导出预测样本之前,如果当前块的参考帧是帧内刷新帧,并且当前块的参考块不是落在参考帧的已刷新区域,则要对当前块的MV信息进行调整,使调整后的MV信息指向参考帧的已刷新区域。
步骤4:对环路滤波过程不做特殊处理。
步骤5:解码完当前图像之后,做以下判断:如果PictureAirPicFlag的值等于1,则将PreAirBoundX和PreAirBoundY的值分别更新为AirBoundX和AirBoundY的值。
步骤6:转到步骤2,继续解码下一帧图像,直至当前序列解码完毕。
需要说明的是,上述步骤1-步骤6仅仅是图6所示的实施例中的可选示例步骤,并不构成对解码端解码当前帧的具体步骤的限定。在应用本申请实施例时,解码端可以按照图6实施例中任意可选示例进行组合,以完整对当前帧的解码。也即是,上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。
图8是本申请实施例提供的一种解码装置的结构示意图。如图8所示,该解码装置800包括如下几个模块。
接收模块801,用于接收当前帧的码流,当前帧的码流中携带帧类型标记信息,帧类型标记信息指示当前帧是否为帧内刷新帧;
处理模块802,用于在帧类型标记信息指示当前帧为帧内刷新帧的情况下,获取码流中携带的虚拟边界位置标记信息,虚拟边界位置标记信息指示虚拟边界的位置,虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域;
处理模块,还用于基于虚拟边界位置标记信息,确定已刷新区域的区域位置和未刷新区域的区域位置;
处理模块,还用于基于已刷新区域的区域位置和未刷新区域的区域位置,对当前帧的码流进行解码。
在一种可能的实现方式中,虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,第一虚拟边界位置标记信息指示虚拟边界在当前帧水平方向上的位置,第二虚拟边界位置标记信息指示虚拟边界在当前帧垂直方向上的位置;
其中,当前帧中的虚拟边界在当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在相邻帧垂直方向上的位置不同,相邻帧为当前帧在解码顺序中的前一帧或后一帧。
在一种可能的实现方式中,第一虚拟边界位置标记信息为虚拟边界在当前帧水平方向上的像素位置,第二虚拟边界位置标记信息为虚拟边界在当前帧垂直方向上的像素位置。
在一种可能的实现方式中,第一虚拟边界位置标记信息为虚拟边界在当前帧水平方向上的图像横坐标,第二虚拟边界位置标记信息为虚拟边界在当前帧垂直方向上的图像纵坐标;
已刷新区域是指以图像左上角坐标(0,0)为原点,宽为图像横坐标、高为图像纵坐标的矩形区域,未刷新区域是指当前帧中除已刷新区域之外的其他区域。
在一种可能的实现方式中,第一虚拟边界位置标记信息为已刷新区域在当前帧水平方向上的宽度和当前帧图像宽度之间的比例,第二位置标记信息为已刷新区域在当前帧垂直方向上的高度和当前帧图像高度之间的比例。
在一种可能的实现方式中,已刷新区域的宽度精度为一个编码单元CU的宽度,已刷新区域的高度精度为CU的高度;或者,
已刷新区域的宽度精度为一个最大编码单元LCU的宽度,已刷新区域的高度精度为LCU的高度;或者,
已刷新区域的宽度精度为一个图像片的宽度,已刷新区域的高度精度为图像片的高度,图像片包括一个或多个LCU。
在一种可能的实现方式中,已刷新区域包括强制帧内区域和帧间区域;
处理模块用于:
基于已刷新区域的区域位置和当前帧在解码顺序中的前一帧的已刷新区域,确定强制帧内区域的区域位置以及帧间区域的区域位置;
基于强制帧内区域的区域位置以及帧间区域的区域位置,对当前帧的码流进行解码。
在一种可能的实现方式中,帧间区域为前一帧的已刷新区域;
强制帧内区域为当前帧的已刷新区域中除了帧间区域之外的区域。
在一种可能的实现方式中,处理模块用于:
如果基于帧间区域的区域位置确定当前图像块为帧间区域中的图像块,且当前图像块的运动矢量MV信息指向当前图像块的参考帧中的已刷新区域,则基于当前图像块的MV信息,解码当前图像块。
在一种可能的实现方式中,处理模块还用于:
如果当前帧中待解码的当前图像块的参考帧是帧内刷新帧,并且当前图像块不满足“当前帧是帧内刷新帧、且当前图像块落在未刷新区域、且当前帧和参考帧处于同一个刷新周期”时,则将当前图像块的MV信息调整为指向的区域为参考帧中的已刷新区域的MV信息;
基于调整后的MV信息,解码当前图像块。
在一种可能的实现方式中,调整后的MV信息满足下述条件:
MvE->x’=Min(MvE->x,(RefAirBoundX–MaxFilterLineBuf–W–xE)<<PixelResolution)
MvE->y’=Min(MvE->y,(RefAirBoundY–MaxFilterLineBuf–H–yE)<<PixelResolution)
其中,MvE是当前图像块的运动矢量,MvE->x’是调整后的当前图像块的运动矢量在X方向上的分量,MvE->y’是调整后的当前图像块的运动矢量在y方向上的分量,MvE->x是码流中携带的当前图像块的运动矢量在X方向上的分量,MvE->y是码流中携带的当前图像块的运动矢量在y方向上的分量,RefAirBoundX和RefAirBoundY分别是参考帧的虚拟边界坐标AirBoundX和AirBoundY,MaxFilterLineBuf是对参考帧的虚拟边界进行环路滤波所使用的滤波器的最大行缓存,PixelResolution是运动矢量的像素精度,W为当前图像块的图像宽度,H为当前图像块的图像高度,(xE,yE)是当前图像块左上角样本在当前帧的亮度样本矩阵中的位置。
在一种可能的实现方式中,码流中携带环路滤波标记信息,环路滤波标记信息指示关闭或允许虚拟边界上的环路滤波。
在一种可能的实现方式中,在环路滤波标记信息指示允许虚拟边界上的环路滤波的情况下,处理模块还用于:
对于基于虚拟边界确定的待滤波区域,不执行对待滤波区域进行环路滤波的操作。
在一种可能的实现方式中,在环路滤波标记信息指示允许虚拟边界上的环路滤波的情况下,处理模块还用于:
对于基于虚拟边界确定的待滤波区域,基于已刷新区域中的像素,执行对待滤波区域进行环路滤波的操作。
在一种可能的实现方式中,在环路滤波标记信息指示允许虚拟边界上的环路滤波的情况下,处理模块还用于:
对于基于虚拟边界确定的待滤波区域,基于已刷新区域中的像素和未刷新区域中的像素,执行对待滤波区域进行环路滤波的操作,位于已刷新区域中的待滤波的区域不能作为当前帧在解码顺序中的后一帧中的图像块的MV信息所指向的区域。
在一种可能的实现方式中,在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则处理模块用于:
解析当前最大编码单元LCU的码流,得到当前LCU的位置信息;
如果基于当前LCU的位置信息确定当前LCU位于未刷新区域,则不执行重建当前LCU的操作,执行解析当前LCU的下一个LCU的码流的操作;
如果当前LCU位于已刷新区域,则执行重建当前LCU的操作。
在一种可能的实现方式中,在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则处理模块用于:
如果当前图像片的码流开始标记信息指示当前图像片位于未刷新区域,则不执行对当前图像片的码流进行解析的操作,基于码流开始标记信息,在当前帧的码流中获取下一个图像片的码流的起始位置,以对下一个图像片进行解码;
如果当前图像片的码流开始标记信息指示当前图像片位于已刷新区域,则执行对当前图像片的码流进行解析的操作,以对当前图像片进行解码。
在一种可能的实现方式中,在随机接入解码的场景中,如果当前帧处于接入点所在的刷新周期并且当前帧含有未刷新区域,则处理模块用于:
对当前帧中的码流全部进行解码。
综上,在本申请实施例中,在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧水平方向上的位置以及当前帧中已刷新区域和未刷新区域之间的虚拟边界在当前帧垂直方向上的位置,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界即可,从而提高了划分强制帧内区域的灵活性。比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。也即是,本申请实施例提供了一种灵活的帧内区域划分方式,该划分方式可以由编码端灵活配置。
其次,解码端可以允许跨越已刷新区域和未刷新区域之间的虚拟边界上的各种方式的环路滤波,从而提升该虚拟边界上的图像的主观质量。
需要说明的是:上述实施例提供的解码端在实现基于自适应帧内刷新机制的解码方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的解码端与基于自适应帧内刷新机制的解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是本申请实施例提供的一种编码装置的结构示意图,如图9所示,该编码装置900包括如下模块。
发送模块901,用于发送当前帧的码流;
其中,当前帧的码流中携带帧类型标记信息,帧类型标记信息指示当前帧是否为帧内刷新帧,在帧类型标记信息指示当前帧为帧内刷新帧的情况下,码流中还携带有虚拟边界位置标记信息,虚拟边界位置标记信息指示虚拟边界的位置,虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域。
在一种可能的实现方式中,虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,第一虚拟边界位置标记信息指示虚拟边界在当前帧水平方向上的位置,第二虚拟边界位置标记信息指示虚拟边界在当前帧垂直方向上的位置;
其中,当前帧中的虚拟边界在当前帧垂直方向上的位置与相邻帧中的已刷新区域和未刷新区域之间的虚拟边界在相邻帧垂直方向上的位置不同,相邻帧为当前帧在编码顺序中的前一帧或后一帧。
在一种可能的实现方式中,第一虚拟边界位置标记信息为虚拟边界在当前帧水平方向上的像素位置,第二虚拟边界位置标记信息为虚拟边界在当前帧垂直方向上的像素位置。
在一种可能的实现方式中,第一虚拟边界位置标记信息为虚拟边界在当前帧水平方向上的图像横坐标,第二虚拟边界位置标记信息为虚拟边界在当前帧垂直方向上的图像纵坐标;
已刷新区域是指以图像左上角坐标(0,0)为原点、宽为图像横坐标、高为图像纵坐标的矩形区域,未刷新区域是指当前帧中除已刷新区域之外的其他区域。
在一种可能的实现方式中,第一虚拟边界位置标记信息为已刷新区域在当前帧水平方向上的宽度和当前帧图像宽度之间的比例,第二位置标记信息为已刷新区域在当前帧垂直方向上的高度和当前帧图像高度之间的比例。
在一种可能的实现方式中,已刷新区域的宽度精度为一个编码单元CU的宽度,已刷新区域的高度精度为CU的高度;或者,
已刷新区域的宽度精度为一个最大编码单元LCU的宽度,已刷新区域的高度精度为LCU的高度;或者,
已刷新区域的宽度精度为一个图像片的宽度,已刷新区域的高度精度为图像片的高度,图像片包括一个或多个LCU。
在一种可能的实现方式中,已刷新区域包括强制帧内区域和帧间区域,码流中携带的帧间区域中的图像块的运动矢量MV信息指向图像块的参考帧中的已刷新区域。
在一种可能的实现方式中,已刷新区域包括强制帧内区域和帧间区域,码流中携带的帧间区域中的图像块的运动矢量MV信息指向图像块的参考帧中的已刷新区域和/或图像块的参考帧中的未刷新区域。
在一种可能的实现方式中,码流中携带环路滤波标记信息,环路滤波标记信息指示关闭或允许虚拟边界上的环路滤波。
综上,在当前帧的码流中新增虚拟边界位置标记信息,由于该虚拟边界位置标记信息能够指示虚拟边界的位置,且该虚拟边界至少用于区分当前帧中的已刷新区域和未刷新区域,因此编码端在划分当前帧的强制帧内区域时,可以基于实际需求任意设置该虚拟边界,然后通过该虚拟边界位置标记信息指示该虚拟边界的位置即可,从而提高了划分强制帧内区域的灵活性,也即是本申请实施例提供了一种自适应划分强制帧内区域的自适应帧内刷新机制。比如,编码端可以基于当前帧中图像内容包括的对象的边界来划分当前帧的强制帧内区域,从而使得已刷新区域和未刷新区域之间的虚拟边界尽量和当前帧图像内容中的对象的边界重合。
需要说明的是:上述实施例提供的编码端在实现基于自适应帧内刷新机制的编码方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的编码端与基于自适应帧内刷新机制的编码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10是本申请实施例提供的一种终端1000的结构框图。前述实施例中涉及的解码端设备、解码端、解码装置以及编码端设备、编码端、编码装置均可以通过该终端来实现。具体地,该终端1000可以是:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的基于自适应帧内刷新机制的解码、编码方法。
在一些实施例中,终端1000还可选包括有:***设备接口1003和至少一个***设备。处理器1001、存储器1002和***设备接口1003之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1003相连。具体地,***设备包括:射频电路1004、显示屏1005、摄像头组件1006、音频电路1007、定位组件1008和电源1009中的至少一种。
***设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和***设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和***设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在另一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在显示屏1005的下层时,由处理器1001根据用户对显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制显示屏1005的显示亮度。具体地,当环境光强度较高时,调高显示屏1005的显示亮度;当环境光强度较低时,调低显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行上实施例提供的基于自适应帧内刷新机制的解码、编码方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在终端上运行时,使得终端执行上述实施例提供的基于自适应帧内刷新机制的解码、编码方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的较佳实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种基于自适应帧内刷新机制的解码方法,其特征在于,所述方法包括:
从当前帧的码流中获取所携带的虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置;
若所述第一虚拟边界位置标记信息的取值和所述第二虚拟边界位置标记信息的取值均大于0,则基于所述已刷新区域的区域位置和所述当前帧在解码顺序中的前一帧的已刷新区域,对所述当前帧的码流进行解码。
2.如权利要求1所述的方法,其特征在于,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点,宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一虚拟边界位置标记信息的取值和/或所述第二虚拟边界位置标记信息的取值等于0,则确定所述当前帧不支持自适应帧内刷新技术。
4.如权利要求1所述的方法,其特征在于,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度。
5.一种基于自适应帧内刷新机制的编码方法,其特征在于,所述方法包括:
发送当前帧的码流;
其中,所述当前帧的码流中携带虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置;
其中,若所述第一虚拟边界位置标记信息的取值和所述第二虚拟边界位置标记信息的取值均大于0,则确定当前帧支持自适应帧内刷新技术。
6.如权利要求5所述的方法,其特征在于,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的图像横坐标,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的图像纵坐标;
所述已刷新区域是指以图像左上角坐标(0,0)为原点、宽为所述图像横坐标、高为所述图像纵坐标的矩形区域,所述未刷新区域是指所述当前帧中除所述已刷新区域之外的其他区域。
7.如权利要求5所述的方法,其特征在于,
所述已刷新区域的宽度精度为一个最大编码单元LCU的宽度,所述已刷新区域的高度精度为所述LCU的高度。
8.一种解码装置,其特征在于,所述解码装置包括:
处理模块,用于从当前帧的码流中获取所携带的虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置;
所述处理模块,还用于若所述第一虚拟边界位置标记信息的取值和所述第二虚拟边界位置标记信息的取值均大于0,则基于所述已刷新区域的区域位置和所述当前帧在解码顺序中的前一帧的已刷新区域,对所述当前帧的码流进行解码。
9.一种编码装置,其特征在于,所述编码装置包括:
发送模块,用于发送当前帧的码流;
其中,所述当前帧的码流中携带虚拟边界位置标记信息,所述虚拟边界位置标记信息指示虚拟边界的位置,所述虚拟边界至少用于区分所述当前帧中的已刷新区域和未刷新区域,所述虚拟边界位置标记信息包括第一虚拟边界位置标记信息和第二虚拟边界位置标记信息,所述第一虚拟边界位置标记信息为所述虚拟边界在所述当前帧水平方向上的像素位置,所述第二虚拟边界位置标记信息为所述虚拟边界在所述当前帧垂直方向上的像素位置;
其中,若所述第一虚拟边界位置标记信息的取值和所述第二虚拟边界位置标记信息的取值均大于0,则确定当前帧支持自适应帧内刷新技术。
10.一种解码端设备,其特征在于,所述解码端设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1至4中的任一项权利要求所述的方法的步骤。
11.一种编码端设备,其特征在于,所述编码端设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求5至7中的任一项权利要求所述的方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述权利要求1至4、或上述权利要求5至7中的任一项权利要求所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123861.5A CN113873236B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123861.5A CN113873236B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
CN202110204286.5A CN114630113B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110204286.5A Division CN114630113B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113873236A CN113873236A (zh) | 2021-12-31 |
CN113873236B true CN113873236B (zh) | 2022-12-02 |
Family
ID=78994072
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110204286.5A Active CN114630113B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
CN202111123861.5A Active CN113873236B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110204286.5A Active CN114630113B (zh) | 2021-02-23 | 2021-02-23 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114630113B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113709479B (zh) * | 2021-03-19 | 2022-12-06 | 杭州海康威视数字技术股份有限公司 | 基于自适应帧内刷新机制的解码、编码方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621685A (zh) * | 2008-07-04 | 2010-01-06 | 株式会社日立制作所 | 编码装置和编码方法 |
CN109348227A (zh) * | 2018-11-22 | 2019-02-15 | 上海大学 | 适用于视频编码的运动自适应帧内刷新方法 |
CN111212283A (zh) * | 2018-11-22 | 2020-05-29 | 安讯士有限公司 | 用于多个图像帧的帧内刷新编码的方法 |
WO2020188149A1 (en) * | 2019-03-21 | 2020-09-24 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video encoding and video decoding |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11159822B2 (en) * | 2019-07-11 | 2021-10-26 | Qualcomm Incorporated | Intra-prediction according to virtual boundaries for video coding |
-
2021
- 2021-02-23 CN CN202110204286.5A patent/CN114630113B/zh active Active
- 2021-02-23 CN CN202111123861.5A patent/CN113873236B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621685A (zh) * | 2008-07-04 | 2010-01-06 | 株式会社日立制作所 | 编码装置和编码方法 |
CN109348227A (zh) * | 2018-11-22 | 2019-02-15 | 上海大学 | 适用于视频编码的运动自适应帧内刷新方法 |
CN111212283A (zh) * | 2018-11-22 | 2020-05-29 | 安讯士有限公司 | 用于多个图像帧的帧内刷新编码的方法 |
WO2020188149A1 (en) * | 2019-03-21 | 2020-09-24 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video encoding and video decoding |
Also Published As
Publication number | Publication date |
---|---|
CN114630113A (zh) | 2022-06-14 |
CN114630113B (zh) | 2023-04-28 |
CN113873236A (zh) | 2021-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110234008B (zh) | 编码方法、解码方法及装置 | |
CN113453013B (zh) | 预测模式的解码、编码方法及装置 | |
CN113873236B (zh) | 基于自适应帧内刷新机制的解码、编码方法及相关设备 | |
CN113709479B (zh) | 基于自适应帧内刷新机制的解码、编码方法及相关设备 | |
RU2815483C1 (ru) | Декодирование и кодирование на основе механизма адаптивного внутреннего обновления |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40064906 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |