CN108737833B - 数据缓冲方法、系统、计算机设备和存储介质 - Google Patents

数据缓冲方法、系统、计算机设备和存储介质 Download PDF

Info

Publication number
CN108737833B
CN108737833B CN201810517768.4A CN201810517768A CN108737833B CN 108737833 B CN108737833 B CN 108737833B CN 201810517768 A CN201810517768 A CN 201810517768A CN 108737833 B CN108737833 B CN 108737833B
Authority
CN
China
Prior art keywords
output
pixel
addr
static random
random access
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
Application number
CN201810517768.4A
Other languages
English (en)
Other versions
CN108737833A (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.)
Zhuhai Jieli Technology Co Ltd
Original Assignee
Zhuhai Jieli Technology 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 Zhuhai Jieli Technology Co Ltd filed Critical Zhuhai Jieli Technology Co Ltd
Priority to CN201810517768.4A priority Critical patent/CN108737833B/zh
Publication of CN108737833A publication Critical patent/CN108737833A/zh
Application granted granted Critical
Publication of CN108737833B publication Critical patent/CN108737833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

本申请涉及一种数据缓冲方法、系统、计算机设备和存储介质。所述方法包括:将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址;根据写地址和待输出像素块生成读地址;根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。本方法中N个静态随机存储器的写地址都是一致的,减少了硬件资源的开销,可以快速输出所需要的待输出像素块,即提供了一个待输出像素块的容量的吞吐量,可以大大提高了数据的吞吐率,提高读取数据的速度。

Description

数据缓冲方法、系统、计算机设备和存储介质
技术领域
本申请涉及压缩编解码技术领域,特别是涉及一种数据缓冲方法、数据缓冲系统、计算机设备和存储介质。
背景技术
高效率视频编码标准(High Efficiency Video Coding,HEVC),在保证相同视频质量的条件下,与上一代编码标准相比,节省了的比特数,但其中编码块大小相对于H.264来说从最大16×16到最大64×64,计算复杂度上成倍的增加。
HEVC相对于H.264编解码框架基本相同,都是由基本的预测、变换、量化和熵编码模块组成,编解码过程中需要源源不断的从数据源取数据,取数据的快慢程度也直接影响着编解码器的性能。在编码单元的尺寸变大后,却会使得编码计算和解码计算的复杂度成倍地增加,进而降低了读取数据的速度。
发明内容
基于此,有必要针对上述读取数据速度低的问题,提供一种数据缓冲方法、系统、计算机设备和存储介质。
一种数据缓冲方法,包括以下步骤:
将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数;
根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址;
根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
一种数据缓冲系统,系统包括:
单行像素块写入模块,用于将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数;
读地址生成模块,用于根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址;
像素块输出模块,用于根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现数据缓冲方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现数据缓冲方法的步骤。
上述数据缓冲方法、系统、计算机设备和存储介质,N个静态随机存储器的写地址都是一致的,减少了硬件资源的开销,可以快速输出所需要的待输出像素块,即提供了一个待输出像素块的容量的吞吐量,可以大大提高了数据的吞吐率,提高读取数据的速度。
附图说明
图1为一个实施例中数据缓冲方法的应用环境图;
图2为一个实施例中数据缓冲方法的流程图;
图3为一个实施例中编码单元中每行像素数据写入静态随机存储器的原理图;
图4为一个实施例中写地址获取的流程图;
图5为一个实施例中读地址获取的流程;
图6为一个实施例中像素数据在静态随机存储器中的分配情况图;
图7为一个实施例中编码单元中单行像素块的分布示意图;
图8为一个实施例中静态随机存储器中写地址的分布示意图;
图9为一个实施例中单行像素块在静态随机存储器的存储单元中的分布示意图;
图10为一个实施例中待输出像素块的读地址的示意图;
图11为一个实施例中编码单元获取的流程图;
图12为一个实施例中静态随机存储器中存储单元写地址分布示意图;
图13为另一个实施例中地址映射模块和数据映射模块的结构示意图;
图14为另一个实施例中数据缓冲方法的流程图;
图15为另一个实施例中待输出像素块的读地址的示意图;
图16为一个实施例中数据缓冲系统的结构示意图;
图17为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据缓冲方法,可以应用于如图1所示的应用环境中,图1为一个实施例中数据缓冲方法的应用环境图。其中,静态随机存储器用于存储编码单元中数据,并实现帧内预测。
在一个实施例中,如图2所示,图2为一个实施例中数据缓冲方法的流程图,本实施例中提供了一种数据缓冲方法,以该方法应用于图1中的应用环境为例进行说明,包括以下步骤:
步骤S210:将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数。
将编码单元中每行的像素数据分成N份,一一对应写入各个对应的静态随机存储器,静态随机存储器在一个存储单元中可以存储一份像素数据。编码单元中每行的各份像素数据与各静态随机存储器中各存储单元之间建立了对应的存储关系。
例如,如图3所示,图3为一个实施例中编码单元中每行像素数据写入静态随机存储器的原理图,编码单元中第一行的像素数据分成N份,将N份的像素数据一一对应写入N个静态随机存储器,其中,ram0是第一个静态随机存储器,ram1是第二个静态随机存储器,ram(N-2)是第N-1个静态随机存储器,ram(N-1)是第N个静态随机存储器,每个静态随机存储器中的0、1、2和n-1分别指的是该静态随机存储器的第1、2、3和n个存储单元。编码单元的第一行的像素数据分成N份,将第一行的各份像素数据一一对应写入各个静态随机存储器的第1个存储单元,并且为各个静态随机存储器的第1个存储单元生成相同的写地址;编码单元的第二行的数据分成N份,将第二行的各份像素数据一一对应写入各个静态随机存储器的第2个存储单元,并且为各个静态随机存储器的第2个存储单元生成相同的写地址;同理地对编码单元的其他各行的像素数据写入N个静态随机存储器并生成对应的写地址。
可以明显地知道,N个静态随机存储器对应相同位置的存储单元的写地址是相同的。在存储写地址时,可以存储一个静态随机存储器的写地址,或存储少于N个静态随机存储器的写地址,这样可以减少硬件资源的开销。
N个静态随机存储器的写地址可以从零开始记录。
步骤S220:根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址。
待输出像素可以是各种尺寸和形状的像素块。
编码单元中每行的各份像素数据与各静态随机存储器中各存储单元之间建立了对应的存储关系,而且该存储关系是固定不变的,因此在该存储关系下。对所需要输出的像素对应的地址是固定的,可以根据所需要的待输出像素块,在写地址中寻址,获得读地址。
步骤S230:根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
根据读地址获取待输出像素,再根据所需要的待输出像素块与待输出像素之间的对应关系,将待输出像素组合成待输出像素块并输出。
上述数据缓冲方法,N个静态随机存储器的写地址都是一致的,减少了硬件资源的开销,可以快速输出所需要的待输出像素块,即提供了一个待输出像素块的容量的吞吐量,可以大大提高了数据的吞吐率,提高读取数据的速度。
在一个实施例中,如图4所示,图4为一个实施例中写地址获取的流程图,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址的步骤,包括以下步骤:
步骤S211:将各单行像素块对应分配至各静态随机存储器,并获得分配顺序,其中,分配顺序为各单行像素块和各静态随机存储器的映射关系。
根据单行像素块在编码单元中的行号,确定该行号的各个单行像素块在静态随机存储器的分配顺序。
步骤S212:根据分配顺序将单行像素块写入对应的静态随机存储器在相同位置的存储单元,并获取N个单行像素块的写地址。
将该行的单行像素块按照分配顺序写入对应的静态随机存储器在相同位置的存储单元,获取N个单行像素块的写地址。此时,该行的N个单行像素块,写入不同的静态随机存储器中相同位置的存储单元,所获取的N个单行像素块的写地址是一致的。
上述数据缓冲方法,按照分配顺序将各个单行像素块写入静态随机存储器,可以快速地将编码单元输入静态随机存储器,加快静态随机存储器输入数据的速度。
在一个实施例中,如图5所示,图5为一个实施例中读地址获取的流程图,根据写地址和待输出像素块,生成读地址的步骤,包括以下步骤:
步骤S221:根据分配顺序、写地址和待输出像素块,获取读地址。
根据编码单元对各个单行像素块的分配顺序,确定编码单元各个单行像素块的写地址,及其在各个静态随机存储器中的分布情况;根据待输出像素块的尺寸和形状,确定待输出像素块中待输出像素对应的写地址和在各个静态随机存储器中的分布情况,即确定读地址。根据读地址可以读取待输出像素块中的待输出像素。
上述数据缓冲方法,根据分配顺序确定待输出像素块的读地址,降低解码计算的复杂度,可以提高读取数据的速度。
在一个实施例中,编码单元包括至少4行相邻的像素,N为4;
将各单行像素块对应分配至各静态随机存储器,并获得分配顺序的步骤,包括以下步骤:
按照以下公式将各单行像素块分配至各静态随机存储器中的随机存储器:
Figure BDA0001674180210000051
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
如图6所示,图6为一个实施例中像素数据在静态随机存储器中的分配情况图。ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器。将编码单元四行的像素数据按照分配关系存储在4个静态随机存储器中,每行的像素数据分成4个单行像素块,并按照分配关系一一对应存储在4个静态随机存储器的存储单元中。如图6所示,每个格子代表静态随机存储器中一个存储单元,每个存储单元存储一个单行像素块,其中,data00_00、data00_01、data00_02和data00_03分别为data00_0的第一个、第二个、第三个和第四个单行像素块;data01_00、data01_01、data01_02和data01_03分别为data01_0、的第一个、第二个、第三个和第四个单行像素块;data02_00、data02_01、data02_02和data02_03分别为data02_0的第一个、第二个、第三个和第四个单行像素块;data03_00、data03_01、data03_02和data03_03分别为data03_0的第一个、第二个、第三个和第四个单行像素块。
上述数据缓冲方法,按照分配顺序将各单行像素块对应分配至各静态随机存储器,提高编码的效率和速度。
在一个实施例中,编码单元的各单行像素块为8×1的像素块,待输出像素块包括4×4个主像素块,每个主像素块是8×1的像素块,每次输出8×4的像素块,其中,8×1的像素块是宽度为8的单行的像素块,8×4的像素块是宽度为8的4行的像素块;
根据写地址和待输出像素块,生成读地址的步骤,包括以下步骤:
根据以下公式获取读地址:
Figure BDA0001674180210000052
其中,raddr0_0、raddr1_0、raddr2_0和raddr3_0分别为待输出像素块的第1次输出、第2次输出、第3次输出和第4次输出的读地址,[addr_0,addr_1,addr_2,addr_3]中的addr_0、addr_1、addr_2和addr_3分别为待输出像素块第1次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_0,addr_1,addr_2,addr_3]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_2,addr_3,addr_0,addr_1]中的addr_2、addr_3、addr_0和addr_1分别为待输出像素块第2次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_2,addr_3,addr_0,addr_1]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_1,addr_2,addr_3,addr_0]中的addr_1、addr_2、addr_3和addr_0分别为待输出像素块第3次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_1,addr_2,addr_3,addr_0]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_3,addr_0,addr_1,addr_2]中的addr_3、addr_0、addr_1和addr_2分别为待输出像素块第4次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_3,addr_0,addr_1,addr_2]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器。
编码单元的各单元像素块如图7所示,图7为一个实施例中编码单元中单行像素块的分布示意图,其中,编码单元包括编号为0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f的单行像素块。
按照分配顺序将编码单元的各单行像素块对应分配至各静态随机存储器后,静态随机存储器中写地址的分布情况如图8所示,图8为一个实施例中静态随机存储器中写地址的分布示意图,其中,addr_0、addr_1、addr_2和addr_3分别是静态随机存储器中存储data00_0、data01_0、data02_0和data03_0的存储单元的写地址。
按照分配顺序将编码单元的各个单行像素块对应分配至各个静态随机存储器后,各个单行像素块在各个静态随机存储器的存储单元中的分布情况如图9所示,图9为一个实施例中单行像素块在静态随机存储器的存储单元中的分布示意图。
而待输出像素块包括4×4个主像素块,每个主像素块是8×1的像素块,每次输出8×4的像素块,根据待输出像素块尺寸和形状,分成4次生成读地址。按照分配顺序中像素块和写地址之间的对应关系,第1次、第2次、第3次和第4次的读地址如图10所示,图10为一个实施例中待输出像素块的读地址的示意图。按照该读地址可以读取4×4个主像素块的待输出像素块的待输出像素,生成待输出像素块并输出。
上述数据缓冲方法,可以快速地进行32个像素的输入和输出,大大提高了数据的吞吐率,提高读取数据的速度;而且通过4次的输出,可以生成4×4个主像素块的像素块,提高解码的效率,以及满足不同尺寸和形状像素块输出的需求。
例如,所述编码单元包括多行的像素数据,按照编码单元各行像素的排列顺序,将每4行像素数据按照:
Figure BDA0001674180210000071
将4行像素数据中各单行像素块分配至各静态随机存储器中的随机存储器,其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为每4行像素数据中第一行、第二行、第三行和第四行的像素数据。在上述分配顺序下,可以按照以下公式,生成第of+1次至第of+4次输出的写地址:
Figure BDA0001674180210000072
其中,每次输出的像素数据的次数用time表示,令
Figure BDA0001674180210000073
Figure BDA0001674180210000074
为向下取整符号,time为正整数,of是地址增加的数值,raddr0_0+of、raddr1_0+of、raddr2_0+of和raddr3_0+of分别为所述待输出像素块的第of+1次输出、第of+2次输出、第of+3次输出和第of+4次输出的读地址。addr_0+of、addr_1+of、addr_2+of和addr_3+of分别为静态随机存储器中第of+1个、第of+2个、第of+3个和第of+4个写地址。输出的次数小于或等于编码单元的行数。
在一个实施例中,编码单元的各单行像素块为8×1的像素块,待输出像素块包括32×1的像素块,其中,8×1的像素块是宽度为8的单行的像素块,待输出像素块包括宽度为32个像素的单行像素块;
根据写地址和待输出像素块,生成读地址的步骤,包括以下步骤:
根据以下公式获取读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
编码单元各行像素数据存储在静态随机存储器后都有对应的写地址,要输出32×1的像素块,可以将写地址作为读地址,根据读取的次数,查找编码单元中与读取的次数相同序号的行的地址,即根据:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
获取读地址。相应地,可以根据读地址,在4个静态随机存储器中依照分配顺序在对应的静态随机存储器中,即可获得32×1的像素块中待输出像素的数据,并将待输出像素的数据按照待输出像素块的形状进行排序,即获得待输出像素块。
上述数据缓冲方法,可以快速和准确地获取32×1的像素块的待输出像素块的读地址,提高数据缓冲方法的处理效率,提高数据读取的效率。
在一个实施例中,如图11所示,图11为一个实施例中编码单元获取的流程图,在将编码单元中每行的像素数据分成N个单行像素块的步骤之前,还包括以下步骤:
步骤S241:将主编码单元分成M个编码单元,其中,M个编码单元的行数等于主编码单元的行数,M为自然数。
例如,可以将主编码单元分成两个编码单元,假设主编码单元的列数包括2X列,可以将主编码单元前X列的像素数据作为第一个编码单元,将主编码单元后X列的像素数据作为第二个编码单元,保证了两个编码单元的行数都等于主编码单元的行数,2X和X为正整数。
将编码单元中每行的像素数据分成N个单行像素块的步骤,包括以下步骤:
步骤S242:将每个编码单元中每行的像素数据分成N个单行像素块。
例如,可以将每个编码单元的每行的像素数据都分成N0个单行像素块;或者,也可以对第1个编码单元的每行的像素数据都分成N1个单行像素块,对第t个编码单元的每行的像素数据都分成Nt个单行像素块,对第M个编码单元的每行的像素数据都分成NM个单行像素块,t、N0、N1、Nt和NM为正整数。
上述数据缓冲方法,对主编码单元分成M个编码单元,将每个编码单元对应写入静态随机存储器,可以适应更大尺寸的主编码单元,可以适应最大编码单元的尺寸随不同编码标准的变化,适应性高。
例如,一个64×64的主编码单元,可以分成两个32×64的编码单元,64×64的主编码单元是宽度为64且行数为64行的像素块,32×64的编码单元是宽度为32且行数为64的像素块。
在一个实施例中,主编码单元存储在同一行的各个编码单元的写地址的数值之间相差预设数值。
上述数据缓冲方法,可以有序地生成写地址,提高静态随机存储器中写地址分配和利用的效率,同时也便于后续读地址可快速地生成。
其中,预设数值可以与前一个编码单元每行的数据的宽度有关。例如,一个64×64的主编码单元,可以分成两个32×64的编码单元,该主编码单元写入4个静态随机存储器,两个编码单元也对应写入4个静态随机存储器中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,根据主编码单元、编码单元的尺寸和形状,静态随机存储器中写地址分布情况如图12所示,图12为一个实施例中静态随机存储器中存储单元写地址分布示意图。
地址为addr_0、addr_1、addr_2、……、addr_31、addr_32、addr_33、addr_34、……、addr_63的存储单元内存储第一编码单元的像素数据,地址为addr_0+32、addr_1+32、addr_2+32、……、addr_31+32、addr_32+32、addr_33+32、addr_34+32、……、addr_63+32的存储单元内存储第二编码单元的像素数据。addr_0和addr_0+32之间相差32个数值,即主编码单元在第一行的两个编码单元的写地址之间相差32个数值,addr_1和addr_1+32之间相差32数值,即主编码单元在第二行的两个编码单元的写地址之间相差32个数值,同理,即主编码单元在同一行的两个编码单元的写地址之间相差32个数值。
另外,addr_32可以与addr_0之间相差64个数值,即addr_32=addr_0+0x40,使得主编码单元的32×32的像素块可以按照Z字形的顺序写入静态随机存储器。
在一个实施例中,N个单行像素块为同等宽度的单行像素块,N个静态随机存储器为同等深度和同等宽度的静态随机存储器,同等宽度小于或等于静态随机存储器的宽度。
上述数据缓冲方法,可以有效地将编码单元分成多个单行像素块,可以适应静态随机存储器的不同规格,提高数据编码效率。
例如,对宽度为32个像素的编码单元,可以将每行的像素数据分为4个同等宽度的单行像素块,即分为4个宽度为8个像素的单行像素块。例如,N个静态随机存储器的宽度都可以满足一个存储单元存储8个像素的数据。例如,N个静态随机存储器的深度可以同时为32,或者深度可以同时为128。例如,每行的像素数据分成的单行像素块的宽度为4个像素,N个静态随机存储器的宽度可以满足一个存储单元存储8个像素的数据,即该N个静态随机存储器的一个存储单元也可以存储该单行像素块的4个像素。
在另一个实施例中,本实施例中提供一种数据缓冲方法,该方法可以是一种高吞吐率的适用于HEVC预测过程的数据缓冲方法。本实施例需要4个深度为192位,宽度为64bit的静态随机存储器,完成一个主编码单元64×64像素块的输入,静态随机存储器的一位64bit的存储单元可以存储8个像素的像素数据。本实施例还包括有地址映射模块和数据映射模块,如图13所示,图13为另一个实施例中地址映射模块和数据映射模块的结构示意图。数据映射模块可以把64×64像素块的主编码单元的数据映射到对应的静态随机存储器中,还可以按照要求输出待输出像素块。数据映射模块可以负责生成对应的读地址和写地址。
4个静态随机存储器采用32像素输入,即4个静态随机存储器一次可以输入32个像素。数据映射模块可以把输入的主编码单元中的像素数据按一定的方式映射到各个静态随机存储器,和按相同的方式组合像素数据并按要求输出待输出像素块。地址映射模块根据输入的主编码单元中的像素数据生成相应的写地址,以及根据需要输出的待输出像素块中的待输出像素生成对应的读地址。
如图14所示,图14为另一个实施例中数据缓冲方法的流程图,本实施例中数据缓冲方法包括以下步骤:
将64×64像素块的主编码单元每一行的像素数据分两次输入,每次输入32个像素,32个像素分为4块单行像素块,并分别一一对应写入4个静态随机存储器中,即可以将64×64像素块的主编码单元分成两个32×64的编码单元,并分别对应写入4个静态随机存储器中。每次输入的32个像素在4个静态随机存储器中的写地址设置为相同的,对于同一行的像素数据,可以设置第一次输入的前32个像素的地址为addr,那么设置第二次输入的后32个像素的地址为addr+32。
每个静态随机存储器的地址从0开始计数,每一行的64个像素分两次写到4个静态随机存储器,将入第一行至第四行的像素数据用data00_0、data00_1、data01_0、data01_1、data02_0、data02_1、data03_0和data03_1来表示(例如,data00_0是第一行第一次输入的32个像素的像素数据,data02_1是第三行第二次输入的32个像素的像素数据),那么每块32个像素的像素数据的写地址可以按照如下公式表示:
addr(data00_0)=addr_0;addr(data00_1)=addr_0+32;
addr(data01_0)=addr_1;addr(data01_1)=addr_1+32;
addr(data02_0)=addr_2;addr(data02_1)=addr_2+32;
addr(data03_0)=addr_3;addr(data03_1)=addr_3+32;
其中,
addr_1=addr_0+1
addr_2=addr_1+1
addr_3=addr_2+1
addr_0是data00_0的写地址,addr_0+32是data00_1的写地址,addr_0和addr_0+32之间相差了32个数值,addr_0和addr_1之间相差了1个数值,如上述公式所示,对于第二行至第四行的像素数据的写地址之间的关系可以同理获得,此处不再一一赘述。为了更加直观地展示,静态随机存储器中写地址分布情况如图12所示,写地址之间的关系还满足以下公式:
addr_0=0;
addr_1=addr_0+1;
addr_2=addr_1+1;
addr_3=addr_2+1;
addr_4=addr_3+1;
.......
addr_31=addr_30+1;
addr_32=addr_0+64;
addr_33=addr_32+1;
.......
addr_62=addr_61+1;
addr_63=addr_62+1;
其中,addr_32与addr_0之间相差了64,即addr_32与addr_31之间相差了32,使得主编码单元分割成的4个32×32的像素块可以按照Z字形的顺序写入静态随机存储器。
单次输入的32个像素的像素数据在4个静态随机存储器中的写地址都是一致的,将单次输入的32个像素的像素数据再分为4个8×1的像素块写入4个静态随机存储器,即分为4个宽度为8个像素的单行像素块一一对应写入4个静态随机存储器。例如,前四行的像素数据可以按照如下分配顺序分配至4个静态随机存储器:
[ram0,ram2,ram1,ram3]=data00_0;[ram0,ram2,ram1,ram3]=data00_1;
[ram1,ram3,ram2,ram0]=data01_0;[ram1,ram3,ram2,ram0]=data01_1;
[ram2,ram0,ram3,ram1]=data02_0;[ram2,ram0,ram3,ram1]=data02_1;
[ram3,ram1,ram0,ram2]=data03_0;[ram3,ram1,ram0,ram2]=data03_1;
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器。[ram0,ram2,ram1,ram3]为data00_1的第一个、第二个、第三个和第四个单行像素块的分配顺序,data00_1的第一个单行像素块分配至ram0,data00_1的第二个单行像素块分配至ram2,data00_1的第三个单行像素块分配至ram1,data00_1的第一个单行像素块分配至ram3,如上述公式所示,data00_1、data01_0、data01_1、data02_0、data02_1、data03_0和data03_1的单行像素块的分配顺序可以同理获得,此处不再一一赘述。
根据待输出像素块寻址并获取读地址,根据读地址读取像素数据。每读取一次像素数据分别从4个静态随机存储器中读取,经数据映射模块一次可以输出所需要的像素行或像素块,即输出所需要的待输出像素块。待输出像素块可以是32像素,或2行16像素,或4行8像素,或两个相邻4×4像素块。
若一次输出32×1的像素块,即输出一行32个像素块的单行像素块,则可以将写地址作为读地址,根据读取的次数,查找编码单元中与读取的次数相同序号的行的地址,即根据:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
获取读地址,其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
若一次输出8×4的像素块,或一次输出一个4×4像素块,按照分配顺序,每次的读地址所对应的写地址分配情况如图15所示,图15为另一个实施例中待输出像素块的读地址的示意图。其中,编码单元第一行的第一个单行像素块位于第一个静态随机存储器的第一个存储单元,静态随机存储器的第一个存储单元的读地址从0开始记录,因此有addr_0=0。每次输出的像素数据的次数用time表示,令
Figure BDA0001674180210000121
其中,
Figure BDA0001674180210000122
为向下取整符号。
下面以每次输出一个8×4像素块的举例说明。如图7所示的待输出像素块,包括16个主像素块,16个主像素块按照4×4的方式分布,每个主像素块包括一个8×1的单行像素块;如图9所示,是这16个主像素块写入4个静态随机存储器中addr_0至addr_3的分布情况。若按每次输出8×4的像素块,这16个主像素块可以分4次输出。这4次的输出可以按照如图15所示的第一次至第四次的输出获取读地址,即可以根据以下公式获取读地址:
Figure BDA0001674180210000123
其中,raddr0_0、raddr1_0、raddr2_0和raddr3_0分别为待输出像素块的第1次输出、第2次输出、第3次输出和第4次输出的读地址,[addr_0,addr_1,addr_2,addr_3]中的addr_0、addr_1、addr_2和addr_3分别为待输出像素块第1次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_0,addr_1,addr_2,addr_3]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_2,addr_3,addr_0,addr_1]中的addr_2、addr_3、addr_0和addr_1分别为待输出像素块第2次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_2,addr_3,addr_0,addr_1]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_1,addr_2,addr_3,addr_0]中的addr_1、addr_2、addr_3和addr_0分别为待输出像素块第3次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_1,addr_2,addr_3,addr_0]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_3,addr_0,addr_1,addr_2]中的addr_3、addr_0、addr_1和addr_2分别为待输出像素块第4次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_3,addr_0,addr_1,addr_2]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器。
上述数据缓冲方法,可以完成一个主编码单元64×64像素块的32像素输入,一个时钟周期输出32像素或2行16像素、或4行8像素、或两个相邻4×4像素块,能够保证每个时钟周期32个像素的输入和输出,大大提高了数据的吞吐率,提高了读取数据的速度。
同时,上述数据缓冲方法中4个静态随机存储器的写地址都是一致的,可以减少硬件资源的开销。而且每个静态随机存储器的写地址都是从0开始,每个写地址可以写入8个像素,最大限度地利用静态随机存储器,并且方便计算,降低计算的复杂度,进而还可以提高读取数据的速度。一个时钟周期输出32像素或2行16像素、或4行8像素、或两个相邻4×4像素块,可以满足HEVC标准下其他模块的需求,提高不同尺寸和形状的像素块的输出,提高读取像素块的像素数据的速度。
应该理解的是,虽然图2、4、5、11和14的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4、5、11和14中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图16所示,图16为一个实施例中数据缓冲系统的结构示意图,提供了一种数据缓冲系统,包括:单行像素块写入模块310、读地址生成模块320和像素块输出模块330,其中:
单行像素块写入模块310,用于将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数。
单行像素块写入模块310将编码单元中每行的像素数据分成N份,一一对应写入各个对应的静态随机存储器,静态随机存储器在一个存储单元中可以存储一份像素数据。编码单元中每行的各份像素数据与各静态随机存储器中各存储单元之间建立了对应的存储关系。
N个静态随机存储器对应相同位置的存储单元的写地址是相同的。在存储写地址时,可以存储一个静态随机存储器的写地址,或存储少于N个静态随机存储器的写地址,这样可以减少硬件资源的开销。
N个静态随机存储器的写地址可以从零开始记录。
读地址生成模块320,用于根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址。
待输出像素可以是各种尺寸和形状的像素块。
编码单元中每行的各份像素数据与各静态随机存储器中各存储单元之间建立了对应的存储关系,而且该存储关系是固定不变的,因此在该存储关系下。对所需要输出的像素对应的地址是固定的,读地址生成模块320可以根据所需要的待输出像素块,在写地址中寻址,获得读地址。
像素块输出模块330,用于根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
像素块输出模块330根据读地址获取待输出像素,再根据所需要的待输出像素块与待输出像素之间的对应关系,将待输出像素组合成待输出像素块并输出。
上述数据缓冲系统,N个静态随机存储器的写地址都是一致的,减少了硬件资源的开销,可以快速输出所需要的待输出像素块,即提供了一个待输出像素块的容量的吞吐量,可以大大提高了数据的吞吐率,提高读取数据的速度。
在一个实施例中,单行像素块写入模块310还用于将各单行像素块对应分配至各静态随机存储器,并获得分配顺序,其中,分配顺序为各单行像素块和各静态随机存储器的映射关系;根据分配顺序将单行像素块写入对应的静态随机存储器在相同位置的存储单元,并获取N个单行像素块的写地址。
单行像素块写入模块310根据单行像素块在编码单元中的行号,确定该行号的各个单行像素块在静态随机存储器的分配顺序。将该行的单行像素块按照分配顺序写入对应的静态随机存储器在相同位置的存储单元,获取N个单行像素块的写地址。此时,该行的N个单行像素块,写入不同的静态随机存储器中相同位置的存储单元,所获取的N个单行像素块的写地址是一致的。
上述数据缓冲系统按照分配顺序将各个单行像素块写入静态随机存储器,可以快速地将编码单元输入静态随机存储器,加快静态随机存储器输入数据的速度。
在一个实施例中,读地址生成模块320还用于根据分配顺序、写地址和待输出像素块,获取读地址。
读地址生成模块320根据编码单元对各个单行像素块的分配顺序,确定编码单元各个单行像素块的写地址,及其在各个静态随机存储器中的分布情况;根据待输出像素块的尺寸和形状,确定待输出像素块中待输出像素对应的写地址和在各个静态随机存储器中的分布情况,即确定读地址。根据读地址可以读取待输出像素块中的待输出像素。
上述数据缓冲系统,根据分配顺序确定待输出像素块的读地址,降低解码计算的复杂度,可以提高读取数据的速度。
在一个实施例中,编码单元包括至少4行相邻的像素,N为4;单行像素块写入模块310还用于按照以下公式将各单行像素块分配至各静态随机存储器中的随机存储器:
Figure BDA0001674180210000151
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
上述数据缓冲系统,按照分配顺序将各单行像素块对应分配至各静态随机存储器,提高编码的效率和速度。
在一个实施例中,编码单元的各单行像素块为8×1的像素块,待输出像素块包括4×4个主像素块,每个主像素块是8×1的像素块,每次输出8×4的像素块,其中,8×1的像素块是宽度为8的单行的像素块,8×4的像素块是宽度为8的4行的像素块;读地址生成模块320还用于根据以下公式获取读地址:
Figure BDA0001674180210000152
其中,raddr0_0、raddr1_0、raddr2_0和raddr3_0分别为待输出像素块的第1次输出、第2次输出、第3次输出和第4次输出的读地址,[addr_0,addr_1,addr_2,addr_3]中的addr_0、addr_1、addr_2和addr_3分别为待输出像素块第1次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_0,addr_1,addr_2,addr_3]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_2,addr_3,addr_0,addr_1]中的addr_2、addr_3、addr_0和addr_1分别为待输出像素块第2次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_2,addr_3,addr_0,addr_1]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_1,addr_2,addr_3,addr_0]中的addr_1、addr_2、addr_3和addr_0分别为待输出像素块第3次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_1,addr_2,addr_3,addr_0]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_3,addr_0,addr_1,addr_2]中的addr_3、addr_0、addr_1和addr_2分别为待输出像素块第4次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_3,addr_0,addr_1,addr_2]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器。
上述数据缓冲系统,可以快速地进行32个像素的输入和输出,大大提高了数据的吞吐率,提高读取数据的速度;而且通过4次的输出,可以生成4×4个主像素块的像素块,提高解码的效率,以及满足不同尺寸和形状像素块输出的需求。
在一个实施例中,编码单元的各单行像素块为8×1的像素块,待输出像素块包括32×1的像素块,其中,8×1的像素块是宽度为8的单行的像素块,待输出像素块包括宽度为32个像素的单行像素块;读地址生成模块320还用于根据以下公式获取读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
上述数据缓冲系统,可以快速和准确地获取32×1的像素块的待输出像素块的读地址,提高数据缓冲方法的处理效率,提高数据读取的效率。
在一个实施例中,单行像素块写入模块310还用于将主编码单元分成M个编码单元,其中,M个编码单元的行数等于主编码单元的行数,M为自然数;将每个编码单元中每行的像素数据分成N个单行像素块。
上述数据缓冲系统,对主编码单元分成M个编码单元,将每个编码单元对应写入静态随机存储器,可以适应更大尺寸的主编码单元,可以适应最大编码单元的尺寸随不同编码标准的变化,适应性高。
单行像素块写入模块310、读地址生成模块320和像素块输出模块330
关于数据缓冲系统的具体限定可以参见上文中对于数据缓冲方法的限定,在此不再赘述。上述数据缓冲系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图17所示,图17为一个实施例中计算机设备的内部结构图。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据缓冲方法。
本领域技术人员可以理解,图17中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数;
根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址;
根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将各单行像素块对应分配至各静态随机存储器,并获得分配顺序,其中,分配顺序为各单行像素块和各静态随机存储器的映射关系;根据分配顺序将单行像素块写入对应的静态随机存储器在相同位置的存储单元,并获取N个单行像素块的写地址。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据分配顺序、写地址和待输出像素块,获取读地址。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
按照以下公式将各单行像素块分配至各静态随机存储器中的随机存储器:
Figure BDA0001674180210000171
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据以下公式获取读地址:
Figure BDA0001674180210000181
其中,raddr0_0、raddr1_0、raddr2_0和raddr3_0分别为待输出像素块的第1次输出、第2次输出、第3次输出和第4次输出的读地址,[addr_0,addr_1,addr_2,addr_3]中的addr_0、addr_1、addr_2和addr_3分别为待输出像素块第1次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_0,addr_1,addr_2,addr_3]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_2,addr_3,addr_0,addr_1]中的addr_2、addr_3、addr_0和addr_1分别为待输出像素块第2次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_2,addr_3,addr_0,addr_1]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_1,addr_2,addr_3,addr_0]中的addr_1、addr_2、addr_3和addr_0分别为待输出像素块第3次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_1,addr_2,addr_3,addr_0]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_3,addr_0,addr_1,addr_2]中的addr_3、addr_0、addr_1和addr_2分别为待输出像素块第4次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_3,addr_0,addr_1,addr_2]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据以下公式获取读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将主编码单元分成M个编码单元,其中,M个编码单元的行数等于主编码单元的行数,M为自然数;将每个编码单元中每行的像素数据分成N个单行像素块。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
将编码单元中每行的像素数据分成N个单行像素块,将N个单行像素块分别对应写入N个静态随机存储器,并获取N个单行像素块的写地址,其中,写地址为静态随机存储器中各个随机存储单元写入像素后产生的地址,N个单行像素块的写地址为相同的地址,N为自然数;
根据写地址和待输出像素块生成读地址,其中,读地址为待输出像素块中各个像素在各静态随机存储器的地址;
根据读地址,在N个静态随机存储器中读取待输出像素,生成待输出像素块并输出。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将各单行像素块对应分配至各静态随机存储器,并获得分配顺序,其中,分配顺序为各单行像素块和各静态随机存储器的映射关系;根据分配顺序将单行像素块写入对应的静态随机存储器在相同位置的存储单元,并获取N个单行像素块的写地址。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据分配顺序、写地址和待输出像素块,获取读地址。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
按照以下公式将各单行像素块分配至各静态随机存储器中的随机存储器:
Figure BDA0001674180210000191
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据以下公式获取读地址:
Figure BDA0001674180210000192
其中,raddr0_0、raddr1_0、raddr2_0和raddr3_0分别为待输出像素块的第1次输出、第2次输出、第3次输出和第4次输出的读地址,[addr_0,addr_1,addr_2,addr_3]中的addr_0、addr_1、addr_2和addr_3分别为待输出像素块第1次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_0,addr_1,addr_2,addr_3]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_2,addr_3,addr_0,addr_1]中的addr_2、addr_3、addr_0和addr_1分别为待输出像素块第2次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_2,addr_3,addr_0,addr_1]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_1,addr_2,addr_3,addr_0]中的addr_1、addr_2、addr_3和addr_0分别为待输出像素块第3次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_1,addr_2,addr_3,addr_0]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器,[addr_3,addr_0,addr_1,addr_2]中的addr_3、addr_0、addr_1和addr_2分别为待输出像素块第4次输出的第一个、第二个、第三个和第四个单行像素块的读地址,[addr_3,addr_0,addr_1,addr_2]中读取静态随机存储器的顺序依次为第一个、第二个、第三个和第四个静态随机存储器。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据以下公式获取读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将主编码单元分成M个编码单元,其中,M个编码单元的行数等于主编码单元的行数,M为自然数;将每个编码单元中每行的像素数据分成N个单行像素块。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据缓冲方法,其特征在于,适用于HEVC预测过程,包括以下步骤:
将主编码单元分成M个编码单元,其中,所述编码单元的行数等于所述主编码单元的行数,M为自然数;当主编码单元为64×64时,将主编码单元分成两个32×64的编码单元;
将每个所述编码单元中每行的像素数据分成N个单行像素块,通过数据映射模块将N个所述单行像素块分别对应写入N个静态随机存储器,根据单行像素块在编码单元中的行号确定N个所述单行像素块在静态随机存储器的分配顺序,根据分配顺序将N个所述单行像素块写入对应的静态随机存储器在相同位置的存储单元,并由地址映射模块获取N个所述单行像素块的写地址,其中,所述写地址为所述静态随机存储器中各个随机存储单元写入像素后产生的地址,所述N个所述单行像素块的写地址为相同的地址,N为自然数;所述主编码单元存储在同一行的各个所述编码单元的写地址的数值之间相差预设数值;所述预设数值根据前一个编码单元每行的数据的宽度确定;所述N为4,静态随机存储器的深度为192位且宽度为64bit;
根据分配顺序、写地址和待输出像素块,获取读地址,其中,所述读地址为所述待输出像素块中各个像素在各所述静态随机存储器的地址;其中,分配顺序为各单行像素块和各静态随机存储器中各存储单元的映射关系;
根据所述读地址,在N个所述静态随机存储器中读取待输出像素,将待输出像素组合成所述待输出像素块并输出;
根据分配顺序、写地址和待输出像素块,获取读地址,包括以下步骤:
当待输出像素块包括4×4个主像素块,每个主像素块是8×1的像素块,其中,所述8×1的像素块是宽度为8的单行的像素块,每次输出8×4的像素块,在分配顺序下,由地址映射模块根据待输出像素块的尺寸和形状,确定待输出像素块中待输出像素对应的写地址和在各个静态随机存储器中的分布情况,根据写地址和分布情况生成第of+1次至第of+4次输出的读地址:
Figure FDA0003074611200000021
其中,每次输出的像素数据的次数用time表示,令
Figure FDA0003074611200000022
Figure FDA0003074611200000023
为向下取整符号,time为正整数,of是地址增加的数值,raddr0_0+of、raddr1_0+of、raddr2_0+of和raddr3_0+of分别为所述待输出像素块的第of+1次输出、第of+2次输出、第of+3次输出和第of+4次输出的读地址;addr_0+of、addr_1+of、addr_2+of和addr_3+of分别为静态随机存储器中第of+1个、第of+2个、第of+3个和第of+4个写地址;
当待输出像素块为32×1的像素块时,将写地址作为读地址。
2.根据权利要求1所述的数据缓冲方法,其特征在于,所述编码单元包括至少4行相邻的像素;
所述方法还包括以下步骤:
按照以下公式将各所述单行像素块分配至各所述静态随机存储器中的随机存储器:
Figure FDA0003074611200000024
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
3.根据权利要求2所述的数据缓冲方法,其特征在于,所述编码单元的各所述单行像素块为8×1的像素块,所述待输出像素块包括32×1的像素块,其中,所述8×1的像素块是宽度为8的单行的像素块,所述待输出像素块包括宽度为32个像素的单行像素块;
根据所述写地址和待输出像素块,生成读地址的步骤,包括以下步骤:
根据以下公式获取所述读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为所述待输出像素块的第L次输出的读地址,L为所述编码单元的行的序数,L为正整数。
4.根据权利要求1至3任意一项所述的数据缓冲方法,其特征在于,N个所述单行像素块为同等宽度的单行像素块,N个所述静态随机存储器为同等深度和同等宽度的静态随机存储器,所述同等宽度小于或等于所述静态随机存储器的宽度。
5.一种数据缓冲系统,其特征在于,适用于HEVC预测过程,所述系统包括:
单行像素块写入模块,用于将主编码单元分成M个编码单元,其中,所述编码单元的行数等于所述主编码单元的行数,M为自然数;当主编码单元为64×64时,将主编码单元分成两个32×64的编码单元;将每个所述编码单元中每行的像素数据分成N个单行像素块,通过数据映射模块将N个所述单行像素块分别对应写入N个静态随机存储器,根据单行像素块在编码单元中的行号确定N个所述单行像素块在静态随机存储器的分配顺序,根据分配顺序将N个所述单行像素块写入对应的静态随机存储器在相同位置的存储单元,并由地址映射模块获取N个所述单行像素块的写地址,其中,所述写地址为所述静态随机存储器中各个随机存储单元写入像素后产生的地址,所述N个所述单行像素块的写地址为相同的地址,N为自然数;所述主编码单元存储在同一行的各个所述编码单元的写地址的数值之间相差预设数值;所述预设数值根据前一个编码单元每行的数据的宽度确定;所述N为4,静态随机存储器的深度为192位且宽度为64bit;
读地址生成模块,用于根据分配顺序、写地址和待输出像素块,获取读地址,其中,所述读地址为所述待输出像素块中各个像素在各所述静态随机存储器的地址;其中,分配顺序为各单行像素块和各静态随机存储器中各存储单元的映射关系;
像素块输出模块,用于根据所述读地址,在N个所述静态随机存储器中读取待输出像素,将待输出像素组合成所述待输出像素块并输出;
读地址生成模块,还用于当待输出像素块包括4×4个主像素块,每个主像素块是8×1的像素块,其中,所述8×1的像素块是宽度为8的单行的像素块,每次输出8×4的像素块,在分配顺序下,由地址映射模块根据待输出像素块的尺寸和形状,确定待输出像素块中待输出像素对应的写地址和在各个静态随机存储器中的分布情况,根据写地址和分布情况生成第of+1次至第of+4次输出的读地址:
Figure FDA0003074611200000051
其中,每次输出的像素数据的次数用time表示,令
Figure FDA0003074611200000052
Figure FDA0003074611200000053
为向下取整符号,time为正整数,of是地址增加的数值,raddr0_0+of、raddr1_0+of、raddr2_0+of和raddr3_0+of分别为所述待输出像素块的第of+1次输出、第of+2次输出、第of+3次输出和第of+4次输出的读地址;addr_0+of、addr_1+of、addr_2+of和addr_3+of分别为静态随机存储器中第of+1个、第of+2个、第of+3个和第of+4个写地址;
当待输出像素块为32×1的像素块时,将写地址作为读地址。
6.根据权利要求5所述的数据缓冲系统,其特征在于,所述编码单元包括至少4行相邻的像素;
单行像素块写入模块还用于按照以下公式将各单行像素块分配至各静态随机存储器中的随机存储器:
Figure FDA0003074611200000054
其中,ram0、ram2、ram1和ram3分别为第一个、第二个、第三个和第四个静态随机存储器,data00_0、data01_0、data02_0和data03_0分别为第一行、第二行、第三行和第四行的像素数据,[ram0,ram2,ram1,ram3]为第一行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram1,ram3,ram2,ram0]为第二行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram2,ram0,ram3,ram1]为第三行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序,[ram3,ram1,ram0,ram2]为第四行的像素数据的第一个、第二个、第三个和第四个单行像素块的分配顺序。
7.根据权利要求6所述的数据缓冲系统,其特征在于,编码单元的各单行像素块为8×1的像素块,待输出像素块包括32×1的像素块,其中,8×1的像素块是宽度为8的单行的像素块,待输出像素块包括宽度为32个像素的单行像素块;读地址生成模块还用于根据以下公式获取读地址:
[addr_(L-1),addr_(L-1),addr_(L-1),addr_(L-1)]=raddr(L-1)_0
其中,addr_(L-1)为待输出像素块的第L次输出的读地址,L为编码单元的行的序数,L为正整数。
8.根据权利要求5至7任一项所述的数据缓冲系统,其特征在于,N个单行像素块为同等宽度的单行像素块,N个静态随机存储器为同等深度和同等宽度的静态随机存储器,同等宽度小于或等于静态随机存储器的宽度。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的数据缓冲方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的数据缓冲方法的步骤。
CN201810517768.4A 2018-05-25 2018-05-25 数据缓冲方法、系统、计算机设备和存储介质 Active CN108737833B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810517768.4A CN108737833B (zh) 2018-05-25 2018-05-25 数据缓冲方法、系统、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810517768.4A CN108737833B (zh) 2018-05-25 2018-05-25 数据缓冲方法、系统、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN108737833A CN108737833A (zh) 2018-11-02
CN108737833B true CN108737833B (zh) 2021-07-16

Family

ID=63936318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810517768.4A Active CN108737833B (zh) 2018-05-25 2018-05-25 数据缓冲方法、系统、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN108737833B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181312A (zh) * 2020-10-23 2021-01-05 北京安石科技有限公司 硬盘数据的快速读取方法及系统
CN113553857B (zh) * 2021-06-30 2023-06-23 北京百度网讯科技有限公司 文本处理方法和文本处理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100340118C (zh) * 2004-07-29 2007-09-26 Thomson宽带研发(北京)有限公司 运动估计的超大规模集成电路体系结构及数据缓存的方法
CN101212674B (zh) * 2006-12-30 2011-05-04 上海奇码数字信息有限公司 图像在存储器中的地址映射方法
JP2008278442A (ja) * 2007-04-02 2008-11-13 Seiko Epson Corp 画像処理装置
CN101257626B (zh) * 2008-01-31 2010-11-03 炬力集成电路设计有限公司 动态随机存储器的存取方法、装置和媒体播放器
CN101662684A (zh) * 2009-09-02 2010-03-03 中兴通讯股份有限公司 用于视频图像编解码的数据存储的方法及装置

Also Published As

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

Similar Documents

Publication Publication Date Title
CN108737833B (zh) 数据缓冲方法、系统、计算机设备和存储介质
EP2997539B1 (en) Method and device for processing input image data
US20050083338A1 (en) DSP (digital signal processing) architecture with a wide memory bandwidth and a memory mapping method thereof
KR20080020066A (ko) 동일한 픽셀 데이터 그룹에 포함되는 픽셀 데이터들을메모리의 동일한 뱅크 어드레스로 매핑하는 매핑 방법 및비디오 시스템
US10585803B2 (en) Systems and methods for addressing a cache with split-indexes
JP5706754B2 (ja) データ処理装置及びデータ処理方法
CN115035128A (zh) 基于fpga的图像重叠滑窗分割方法及系统
US7401177B2 (en) Data storage device, data storage control apparatus, data storage control method, and data storage control program
KR20110040103A (ko) 다중 뱅크 메모리 액세스 장치
KR102023855B1 (ko) 딥러닝 하드웨어 가속장치
CN107797757B (zh) 影像处理系统中的快取存储器管理方法及装置
US20220188380A1 (en) Data processing method and apparatus applied to graphics processing unit, and electronic device
CN114330687A (zh) 数据处理方法及装置、神经网络处理装置
US9268685B2 (en) Memory system and constructing method of virtual block
CN111882482A (zh) 图形分块数据读写方法、装置、设备及存储介质
CN112837205B (zh) 一种图形处理器上基于延迟修正的批量矩阵求逆方法
CN115049685B (zh) 区域生长图像分割方法、装置、计算机设备及存储介质
US8699080B2 (en) Method and apparatus for generating multi-site FM screen dots simultaneously
US20230307036A1 (en) Storage and Accessing Methods for Parameters in Streaming AI Accelerator Chip
CN117094879B (zh) 数据拷贝方法及装置、计算机可读存储介质、电子设备
US20240005445A1 (en) System and method for high-throughput image processing
TWI765446B (zh) 管線式資料傳輸方法及資料管線裝置
JP6329521B2 (ja) 参照画像バッファ
CN116467097A (zh) 多线程间的数据通讯方法、系统、计算机设备和存储介质
CN114298888A (zh) 一种视频数据处理方法、装置、设备及可读存储介质

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
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.

Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder