一种数据编码方法与流程

文档序号:17483229发布日期:2019-04-20 06:35阅读:187来源:国知局
一种数据编码方法与流程

本申请涉及电子电路及半导体技术领域,尤其涉及一种数据编码方法。



背景技术:

随着4k电视节目的出现,对视频处理的要求也越来越高。视频编码为计算机视频处理的前提,即对视频进行压缩。在编码过程中,为了在不影响图像质量的情况下,让编码的码流更小,需要一个参考数据块对当前所需要编码的块进行编码。目前在实现视频编码器运动搜索的过程中,选取的参考数据块可以放在片外存储器,或者放在片内存储器。

如果采用放在片外存储器的方式,则芯片的面积会大大减小,但是数据处理速度也会大大降低。如果采用放在片内存储器的方式,则数据处理速度得到提高,但是导致芯片面积过大。为了保证数据的处理速度,通常采用将参考数据块放在片内存储器,即在片内开设几个mb(macroblock,宏块)行大小的内部memory(存储器),来存储视频编码器运动搜索过程中需要的数据。在开设的memory中,按真实的图片实际尺寸来设置的buffer(缓冲器),buffer用来存放即将编码的视频数据。

目前,随着视频尺寸越来越大,对视频处理时涉及的数据量不断增多,导致芯片内部的memory比较大,从而导致芯片面积增大,成本也高。因此,亟需设计一种能够减小芯片面积的memory控制方式。



技术实现要素:

本申请提供了一种数据编码方法,以解决现有技术中随着视频处理时数据量的增多,导致芯片内部存储器增大,进而导致芯片面积增大且成本高的技术问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

本申请实施例公开了一种数据编码方法,memory内开设有buffer,所述buffer分为第一缓冲区和第二缓冲区,所述方法包括:

将待处理数据存储至所述第一缓冲区;

对所述第一缓冲区内的数据进行编码,同步存储待处理数据至第二缓冲区;

所述第一缓冲区内的数据编码完成后,更新待处理数据至所述第一缓冲区,同步对所述第二缓冲区内的数据进行编码;

所述第二缓冲区内的数据编码完成后,更新待处理数据至所述第二缓冲区,并对所述第一缓冲区内的数据进行编码;

重复存储数据至所述第一缓冲区和所述第二缓冲区,并对所述第一缓冲区和所述第二缓冲区内的数据进行编码,直至所述待处理数据编码完成。

可选地,在上述数据编码方法中,在所述将待处理数据存储至所述第一缓冲区之前,所述方法还包括:根据待处理场景,设置所述buffer的缓存空间大小,所述buffer为当前块及所述当前块周围的若干mb块,所述当前块为当前需要编码的mb块。

可选地,在上述数据编码方法中,所述方法还包括:选取所述当前块数据的参考数据,并判断所述参考数据的位置是否超出所述待处理数据的边界。

可选地,在上述数据编码方法中,判断所述参考数据的位置是否超出所述待处理数据的边界,所述待处理数据为图片中数据,所述方法包括:

设立所述图片尺寸坐标,及所述buffer的坐标;

根据所述图片尺寸坐标和所述buffer的坐标,实时记录所述buffer内存放的所述待处理数据对应所述图片中的实际位置;

判断所述实际位置是否为所述图片的边界;

若所述实际位置为图片的边界,则根据当前块的运动矢量mv判断参考数据的位置是否超出所述图片的边界。

可选地,在上述数据编码方法中,所述方法还包括:

若所述参考数据的实际位置超出所述待处理数据的边界,则复制所述待处理数据的边界数据,填充超出部分。

可选地,在上述数据编码方法中,所述方法还包括:选取所述当前块数据的参考数据,判断所述参考数据的位置是否超出所述buffer的边界。

可选地,在上述数据编码方法中,判断所述参考数据的位置是否超出buffer的边界,包括:

根据所述buffer大小,预设运动矢量mv的最大值;

根据运动矢量mv的最大值与编码过程中运动矢量mv的实际值,计算所述参考数据的坐标;

根据所述参考数据的坐标,判断所述参考数据的实际位置是否超出buffer的边界。

可选地,在上述数据编码方法中,所述方法还包括:若所述参考数据的实际位置超出buffer的边界,则选取buffer边界的数据作为参考数据。

可选地,在上述数据编码方法中,所述第二缓冲区的大小大于或等于所述第一缓冲区的大小。

与现有技术相比,本申请的有益效果为:

本申请提供了一种数据编码方法,memory内开设有buffer,所述buffer分为第一缓冲区和第二缓冲区,所述第一缓冲区和所述第二缓冲区循环交替使用。具体地,该方法包括:先将待处理数据存储至所述第一缓冲区,然后对所述第一缓冲区内的数据进行编码,并同步存储待处理数据至第二缓冲区。当所述第一缓冲区内的数据编码完成后,再更新待处理数据至所述第一缓冲区,并同步对所述第二缓冲区内的数据进行编码。同理,当所述第二缓冲区内的数据编码完成后,更新待处理数据至所述第二缓冲区,并对所述第一缓冲区内的数据进行编码。最后,重复上述步骤,即重复存储数据至所述第一缓冲区和所述第二缓冲区,并对所述第一缓冲区和所述第二缓冲区内的数据进行编码,直至所述待处理数据编码完成。本申请提供的memory控制方法,不需要增加芯片中memory的数量,减少了芯片面积,降低成本。同时,本申请基于乒乓编码,通过超前更新数据的操作,避免了因等数据而降低编码速度,保持芯片的较高性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种数据编码方法的流程示意图;

图2为本发明实施例提供的预设buffer的基本结构示意图;

图3为本发明实施例提供的参考数据超出图片上边界的示意图;

图4为本发明实施例提供的参考数据超出图片左边界的示意图;

图5为本发明实施例提供的参考数据超出图片右边界的示意图;

图6为本发明实施例提供的参考数据超出图片下边界的示意图;

图7为本发明实施例提供的参考mv超出图片上边界的示意图;

图8为本发明实施例提供的参考mv超出图片左边界的示意图;

图9为本发明实施例提供的参考mv超出图片右边界的示意图;

图10为本发明实施例提供的参考mv超出图片下边界的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

本发明实施例提供的一种数据编码方法中,在芯片memory内开设有buffer,所述buffer分为第一缓冲区和第二缓冲区。参见图2,为本发明实施例提供的预设buffer的基本结构示意图,图中实线部分为第一缓冲区,虚线部分为第二缓冲区。图2中,实际开设的buffer大小为3mb*16,第一缓冲区和第二缓冲区均分,分别为3mb*8的数据块,图中一个小方格代表一个mb块。本申请中,所述第二缓冲区的大小可以大于或等于所述第一缓冲区的大小。根据待处理场景,相应的设置所述buffer的缓存空间大小,如果场景是静止的,可以少一点参考数据,如果场景是运动的,就多一点参考数据。本申请中所述buffer为当前块及所述当前块周围的若干mb块,所述当前块为当前需要编码的mb块。

参见图1,为本发明实施例提供的一种数据编码方法的流程示意图。结合图1所示,本申请中的控制方法包括以下步骤:

步骤s01:将待处理数据存储至所述第一缓冲区;

步骤s02:对所述第一缓冲区内的数据进行编码,同步存储待处理数据至第二缓冲区;

步骤s03:所述第一缓冲区内的数据编码完成后,更新待处理数据至所述第一缓冲区,同步对所述第二缓冲区内的数据进行编码;

步骤s04:所述第二缓冲区内的数据编码完成后,更新待处理数据至所述第二缓冲区,并对所述第一缓冲区内的数据进行编码;

步骤s05:重复存储数据至所述第一缓冲区和所述第二缓冲区,并对所述第一缓冲区和所述第二缓冲区内的数据进行编码,直至所述待处理数据编码完成。

本申请提供的memory控制方法,不需要增加芯片中memory的数量,根据待处理场景,相应设置buffer大小,减少了芯片面积,降低成本。同时,本申请基于乒乓编码,通过超前更新数据的操作,提高了编码效率,避免了因等数据而降低编码速度,保持芯片的较高性能。

本发明实施例提供的数据编码方法中,由于开设的buffer远小于待处理数据真实的大小,因此,在选取buffer中当前需要编码的mb块的参考数据时,可能出现以下两种情况,分别为:其一,判断所述参考数据的位置是否超出所述待处理数据的边界;其二,判断所述参考数据的位置是否超出所述buffer的边界。

对于判断所述参考数据的位置是否超出所述待处理数据的边界,所述待处理数据为图片中数据,本申请提供的数据编码方法还包括:

先设立所述图片尺寸坐标(scol,srow),及所述buffer的坐标(rcol,rrow),再根据所述图片尺寸坐标和所述buffer的坐标,实时记录所述buffer内存放的所述待处理数据对应所述图片中的实际位置,然后判断所述实际位置是否为所述图片的边界,最后若所述实际位置为图片的边界,则根据当前块的运动矢量mv判断参考数据的位置是否超出所述图片的边界,若超出所述图片的边界,即为超出所述待处理数据的边界。参见图3-6,分别为本发明实施例提供的参考数据超出图片上边界、左边界、右边界及下边界的示意图,且图中左右两幅分别表示只有一部分参考数据超出边界,及所有的参考数据都超出边界。图中均采用乒乓结构(pingpongbuf),以小实心黑框表示参考数据,中心加粗小框表示需要编码的当前块。当所述参考数据的实际位置超出实际图片的边界,则复制图片边界数据,填充超出部分。

如图2中所示,编码第一行的mb坐标超过16之后,buffer就开始循环。比如,实际坐标为第一行的第17个mb,在buffer中存放的位置为第一个mb的位置,存放于sbase的地址中,所以需要实时记录当前存在于buffer中的数据,所对应图片中的实际位置。mv(motionvector,运动矢量)表示当前编码块与其参考图像中的最佳匹配块之间的相对位移,根据当前块的运动矢量mv判断参考数据的位置是否超出所述图片的边界,举例来说,以176*144的图片为例,当前1个mb的大小是16*16个像素点的数据,编码第一行的第一个mb块的时候,如果mv是向左参考的,那么参考数据就超过了图片的左边界。因为当前需要编码的mb块已经是最左边的块了,再向左参考,必然超出了左边界。如果mv是向左,起点是4,计算出来的实际值是负4,代表所述参考数据的位置超过图片的左边界,且只有部分数据超出边界,此时的参考块,左边4列数据是第5列数据的向左复制填充。剩下的12列数据,是图片本身内部的真实数据。如果根据mv计算出来的起点超过负16,那么整个参考块的数据,都是第一列数据向左复制填充16次。

对于判断所述参考数据的位置是否超出所述buffer的边界,本申请提供的数据编码方法还包括:

先根据所述buffer大小,预设运动矢量mv的最大值,再根据运动矢量mv的最大值与编码过程中运动矢量mv的实际值,计算所述参考数据的坐标,最后根据所述参考数据的坐标,判断所述参考数据的实际位置是否超出buffer的边界。参见图7-10,分别为本发明实施例提供的参考mv超出图片上边界、左边界、右边界及下边界的示意图,图中均采用乒乓结构(pingpongbuf),左侧均代表参考mv(rmv)超出图片边界的情况,右侧代表超出之后,限制到buffer有效边界的情况,其中限制的参考mv表示为clip_rmv。若所述参考数据的实际位置超出buffer的边界,则将参考数据限制到buffer的边界,进而只能取buffer有效边界的数据去复制,而生产的新参考数据块。

本申请中由于只设有一个小的buffer,并没有包含整个图片宽度的参考数据,所以在设置这个buffer大小的时候,同时应该配置好上下左右最大的mv,以防止mv过大,造成的溢出。如图2中buffer为3mb*16,则上下最大的mv不能超过3,左右最大的mv不能超过16。编码过程中,mv实际的参考方向及实际值是在不超过最大值的前提下,择优而选。所以,根据实际的mv,和根据设置的最大值的mv得到参考数据实际的坐标后,判断参考数据是否超出了设置的buffer的范围。如果有溢出,则限制到buffer的边界上。以1920*1080的图片为例,设置的buffer为100mb,且mv的方向是向右最大值为80,若某一mb的参考块是以当前mb为起点向右的第200个mb,则参考块的mv超过了180,即超出了buffer的边界。

由于以上实施方式均是在其他方式之上引用结合进行说明,不同实施例之间均具有相同的部分,本说明书中各个实施例之间相同、相似的部分互相参见即可。在此不再详细阐述。

需要说明的是,在本说明书中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或暗示这些实体或操作之间存在任何这种实际的关系或顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的电路结构、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种电路结构、物品或者设备所固有的要素。在没有更多限制的情况下,有语句“包括一个……”限定的要素,并不排除在包括所述要素的电路结构、物品或者设备中还存在另外的相同要素。

本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本申请的其他实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求的内容指出。

以上所述的本申请实施方式并不构成对本申请保护范围的限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1