CN110555890A - 一种内存管理方法及系统 - Google Patents
一种内存管理方法及系统 Download PDFInfo
- Publication number
- CN110555890A CN110555890A CN201810536826.8A CN201810536826A CN110555890A CN 110555890 A CN110555890 A CN 110555890A CN 201810536826 A CN201810536826 A CN 201810536826A CN 110555890 A CN110555890 A CN 110555890A
- Authority
- CN
- China
- Prior art keywords
- frame
- memory
- data
- frame data
- subspace
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种内存管理方法及系统,该方法包括根据各编码通道的相关参数设置一相应大小的内存单元,内存单元与系统用内存相分离;将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池;分别对I帧内存池及非I帧内存池进行内存分配和释放管理。该方法将内存单元与系统用内存相分离,可避免系统用内存因频繁的分配和释放,产生大量的内存碎片;内存单元划分为I帧内存池及非I帧内存池,将分配释放频繁但数据量小的P帧数据与分配相对不频繁但数据量大的I帧数据隔离,可以避免P帧数据的频繁分配和释放产生大量内存碎片从而影响I帧数据的分配。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及一种内存管理方法及系统。
背景技术
多路数据帧处理时,由于采集的分辨率、帧率的不同导致各路编码产生的数据量和速率不规律,直接申请和释放内存会随着录像时间的增加变得碎片化越来越严重,在小内存型行车记录仪等产品中将体现尤为明显。
现有的多路编码输出内存管理方法是将编码输出所需内存和系统用内存隔离开来,该方法虽然避免了系统内存受到“污染”,但依然没有对“污染源”做处理,多路编码使用同一块内存仍然有严重碎片化的问题,内存利用率较低。
发明内容
针对现有技术的不足,本发明提出了一种内存管理方法及系统,该方法将内存单元与系统用内存相分离,可避免系统用内存因频繁的分配和释放,产生大量的内存碎片;内存单元划分为I帧内存池及非I帧内存池,I帧数据存储于I帧内存池,P帧数据存储于非I帧内存池,将分配释放频繁但数据量小的P帧数据与分配相对不频繁但数据量大的I帧数据隔离,可以避免P帧数据的频繁分配和释放产生大量内存碎片从而影响I帧数据的分配;可以采用不同的管理策略分别对I帧数据及非I帧数据进行分层管理,提高了内存的管理效率,减少内存分配和释放所产生的碎片。
为了实现上述目的,本发明技术方案如下:
一种内存管理方法,包括以下步骤:(S1)根据各编码通道的相关参数设置一相应大小的内存单元,所述内存单元与系统用内存相分离;(S2)将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池;(S3)分别对I帧内存池及非I帧内存池进行内存分配和释放管理。
进一步地,还包括以下步骤:(S4)根据编码通道的数量变化对I帧内存池及非I帧内存池的内存空间进行扩展或裁剪。
进一步地,步骤(S1)包含以下步骤:(S11)确定各编码通道的编码码率;(S12)根据各编码通道的编码码率设置内存单元的大小。
进一步地,步骤(S2)包含以下步骤:(S21)根据各编码通道的相关参数一一计算出各编码通道输出的I帧数据所需内存空间的大小;(S22)计算出各编码通道输出的I帧数据所需内存空间的大小的总和;(S23)根据各编码通道输出的I帧数据所需内存空间的大小的总和,在内存单元内划分出相应大小的I帧内存池;内存单元的剩余内存空间作为非I帧内存池。
进一步地,内存单元被预先设定为可存储T秒的数据量。所述编码通道输出的I帧数据所需内存空间的大小的计算公式为:S=F×Pi×T×R×Y /INmin;公式中,F为原始数据采集的帧率,Pi为GOP中I帧所占的比例,R为原始数据采集的分辨率,Y为数据源格式的数据源的大小,INmin为I帧数据最小压缩比。
进一步地,步骤(S3)中对I帧内存池进行内存分配和释放管理的步骤如下:(S311)根据编码通道的数量对I帧内存池划分,为各编码通道一一划分出一相应的I帧子空间;各I帧子空间的内存空间大小与其相应的编码通道输出的I帧数据所需内存空间的大小相适配;(S312)采用环形内存策略对各I帧子空间进行内存分配和释放管理。
(S312)包含以下步骤:初始阶段,初始化I帧子空间的内存空间,将写指针和读指针指向I帧子空间的首地址;并设置数据结束指针指向I帧子空间的结束位置。
进一步地,(S312)还包含以下步骤:(S31211)获取I帧子空间的剩余内存空间大小,执行步骤(S31212);(S31212)判断I帧子空间的剩余内存空间大小是否大于或等于所对应的编码通道当前输出的I帧数据的长度;若为否,则等待I帧子空间内的I帧数据被读取,I帧子空间内的I帧数据被读取后,返回执行步骤(S31211);若为是,则执行步骤(S31213) ;(S31213)判断I帧数据的写入指针至数据结束指针之间的内存空间是否大于或等于编码通道当前输出的I帧数据的长度;若为是,则写入编码通道当前输出的I帧数据,并执行步骤(S31216);若为否,则执行步骤(S31214);(S31214)设置数据结束指针指向I帧子空间的剩余内存空间的首地址,执行步骤(S31215);(S31215)将写入指针指向 I帧子空间的的首地址,执行步骤(S31216);(S31216)更新I帧子空间的剩余内存空间的大小,返回执行步骤(S3121),从而继续进行下一步的写入程序。
进一步地,(S312)还包含以下步骤:(S31221)获取所需读取的I帧数据的长度,执行步骤(S31222);(S31222)获取I帧子空间内I帧数据的长度,执行步骤(S31223);(S31223)判断I帧子空间内I帧数据的长度是否大于或等于所需读取的I帧数据的长度;若为是,则执行步骤(S31224);若为否,则等待编码通道输出的I帧数据写入I帧子空间,并返回执行步骤(S31221);(S31224)判断所需读取的I帧数据的长度是否大于或等于读指针至数据结束指针之间的内存空间;若为否,则读取所需读取的I帧数据至指定位置,再执行步骤(S31228);若为是,则执行步骤(S31225);(S31225)读取读指针至数据结束指针之间的I帧数据,执行步骤(S31226);(S31226)从I帧子空间的首地址开始读取所需读取的I帧数据的剩余部分的I帧数据,执行步骤(S31227);(S31227)将数据结束指针指向I帧子空间的末地址加1的位置上,执行步骤(S31228);(S31228)更新I帧子空间的剩余内存空间的大小。
进一步地,步骤(S3)中采用伙伴(Buddy)算法对非I帧内存池进行内存分配和释放管理,步骤如下:(S321)根据各编码通道的P帧最大压缩比一一计算出各编码通道输出P帧数据的最小值;(S322)将伙伴算法中最小内存块的大小设置为小于各编码通道输出P帧数据的最小值;(S323)根据编码通道当前输出P帧数据的大小,为当前该P帧数据分配大小相适配的内存块。
一种内存管理系统,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述计算机程序被所述处理器执行时实现上述任意一项所述的方法的步骤。
本发明的有益效果:
(1)该方法将内存单元与系统用内存相分离,可避免系统用内存因频繁的分配和释放,产生大量的内存碎片;内存单元划分为I帧内存池及非I帧内存池,I帧数据存储于I帧内存池,P帧数据存储于非I帧内存池,将分配释放频繁但数据量小的P帧数据与分配相对不频繁但数据量大的I帧数据隔离,可以避免P帧数据的频繁分配和释放产生大量内存碎片从而影响I帧数据的分配;可以采用不同的管理策略分别对I帧数据及非I帧数据进行分层管理,提高了内存的管理效率,减少内存分配和释放所产生的碎片。
(2)I帧内存池及非I帧内存池的大小可以根据编码通道数量及参数进行动态合理分配,提高内存的使用效率。
(3)该方法分别为各路编码通道分配大小适应的一I帧子空间,各I帧子空间之间不互相影响,因此,可实现对每块I帧子空间采用环形内存方法进行管理,采用环形内存管理可以不产生内存碎片,同时显著提高内存空间的使用效率。
(4)该方法采用伙伴算法对非I帧内存池进行分配和释放管理,改善因频繁的内存分配和释放所产生的内存碎片污染系统内存的情况,且内存分配和释放过程迅速,适合非I帧所需内存小且申请频繁这一特点。
附图说明
图1为本发明的内存管理方法的流程示意图。
图2为本发明的多编码通道的内存单元的分配示意图。
图3为双路录像的行车记录仪的编码通道的电路框图。
图4为I帧子空间写入I帧数据时的原理图。
具体实施方式
下面结合附图和实施例,进一步阐述本发明。
实施例1:
如图1所示,一种内存管理方法,包括以下步骤:
内存单元设置(S1):根据各编码通道的相关参数设置一相应大小的内存单元,所述内存单元与系统用内存相分离。
内存单元分层(S2):将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池。
内存单元管理(S3):分别对I帧内存池及非I帧内存池进行内存分配和释放管理。
内存单元扩展或裁剪(S4):根据编码通道的数量变化对I帧内存池及非I帧内存池的内存空间进行扩展或裁剪。
I帧通常是每个GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图像。非I帧数据包括P帧数据、B帧数据,本方法中的非I帧内存池主要用于存储P帧数据。
如图2所示,为内存单元的分配示意图。该方法将内存单元与系统用内存相分离,可避免系统用内存因频繁的分配和释放,产生大量的内存碎片;内存单元划分为I帧内存池及非I帧内存池,I帧数据存储于I帧内存池,P帧数据存储于非I帧内存池,将分配释放频繁但数据量小的P帧数据与分配相对不频繁但数据量大的I帧数据隔离,可以避免P帧数据的频繁分配和释放产生大量内存碎片从而影响I帧数据的分配;可以采用不同的管理策略分别对I帧数据及非I帧数据进行分层管理,提高了内存的管理效率,减少内存分配和释放所产生的碎片。
本方法主要适用于小内存操作系统,例如小内存型行车记录仪等。小内存型行车记录仪一般采用基于linux内核的嵌入式操作系统;与Android系统相比,所需内存空间小但功能相对简单。由于需要多路以较高分辨率录像但内存资源有限,所以对内存进行分配和管理在同类型产品中显得极为重要。
现以双路录像的行车记录仪方案为例进行说明。如图3所示,为双路录像的行车记录仪的编码通道的电路框图,假设行车记录仪录像参数为:一路数据源格式为YUV,原始数据采集的分辨率为1920×1080,编码格式H.264,原始数据采集的帧率为30fps,编码码率16Mbps,GOP中I帧和B/P帧比例为14;另一路数据源格式为YUV,原始数据采集的分辨率为1280×720,编码格式H.264,原始数据采集的帧率为25fps,编码码率8Mbps,GOP中I帧和B/P帧比例为14;I帧数据最小压缩比为INmin,B/P帧数据最大压缩比为PNmax。行车记录仪通过两个摄像头(Camera)采集图像,图像原始数据送入硬件编码器(Encoder)进行编码,硬件编码器完成编码后,合成器(Muxer)将编码数据封装并写入sd卡(Sdcard)。
具体地,步骤(S1)包含以下步骤:
(S11)确定各编码通道的编码码率。
(S12)根据各编码通道的编码码率设置内存单元的大小。
根据各编码通道的编码码率参数来确定内存池的大小,一般可以设置为大约1~2秒的数据量(这里要考虑内存池里数据封装成文件并写入sd卡里的速度以及整个系统剩余可用内存的大小,保证内存单元的大小满足输入输出的动态平衡)。以2秒数据量为例,图3所示的双路录像的行车记录仪中sd卡分配的用于存放编码数据的内存单元大小设置为:(16Mbps+8Mbps)×2s=48Mb=6MB。
具体地,步骤(S2)包含以下步骤:
(S21)根据各编码通道的相关参数一一计算出各编码通道输出的I帧数据所需内存空间的大小。
(S22)计算出各编码通道输出的I帧数据所需内存空间的大小的总和。
(S23)根据各编码通道输出的I帧数据所需内存空间的大小的总和,在内存单元内划分出相应大小的I帧内存池;内存单元的剩余内存空间作为非I帧内存池。
因为I帧数据保留了图像的完整信息,而P帧只记录了I帧的变化信息,I帧数据相对P帧数据分配周期较长但数据量相对较大,所以优先考虑I帧内存池的内存空间大小。根据各编码通道的原始数据大小、I帧和P帧的压缩比范围以及GOP中I帧与P帧的比例对内存单元的内存空间进行合理的分层。
更具体地,将内存单元设定为可存储T秒的数据量,则编码通道输出的I帧数据所需内存空间的大小的计算公式为:S=F×Pi×T×R×Y /INmin;公式中,F为原始数据采集的帧率,Pi为GOP中I帧数据所占的比例,R为原始数据采集的分辨率,Y为数据源格式的数据源大小,INmin为I帧数据最小压缩比。
图3所示的双路录像的行车记录仪中,由于内存单元设置为2秒数据量,且GOP中I帧和P帧总数为15,则根据原始数据采集的帧率信息计算出I帧内存池需要存放4帧编码后的I帧数据,YUV格式的数据源大小为1.5,故计算出1080P这路编码通道的I帧数据所需内存大小为4×1920×1080×1.5/INmin,实际取值可以适当大一些;同理,可以算出720P这路编码通道的I帧数据所需内存大小为4×1280×720×1.5/INmin;根据两路编码通道I帧数据所需内存大小之和设置I帧内存池,剩余内存单元空间即为所有编码通道的非I帧内存池。
具体地,步骤(S3)中对I帧内存池进行内存分配和释放管理的步骤如下:
(S311)根据编码通道的数量对I帧内存池划分,为各编码通道一一划分出一相应的I帧子空间;各I帧子空间的内存空间大小与其相应的编码通道输出的I帧数据所需内存空间的大小相适配。
(S312)采用环形内存策略对各I帧子空间进行内存分配和释放管理。
图3所示的双路录像的行车记录仪,如前面所说,计算出1080P这路编码通道的I帧子空间的内存空间大小为4×1920×1080×1.5/INmin,720P这路编码通道的I帧数据所需I帧子空间的内存空间大小为4×1280×720×1.5/INmin。分别为各路编码通道分配大小适应的一I帧子空间,各I帧子空间之间不互相影响,因此,可实现对每块I帧子空间采用环形内存方法进行管理,采用环形内存管理可以不产生内存碎片,同时显著提高内存空间的使用效率。
初始阶段,初始化I帧子空间的内存空间,将写指针和读指针指向I帧子空间的首地址。然后设置数据结束指针(pEnd)指向I帧子空间的结束位置,也就是将数据结束指针指向I帧子空间的末地址加1的位置上。
更具体地,步骤(S312)包含以下步骤:
(S31211)获取I帧子空间的剩余内存空间大小,执行步骤(S31212)。
(S31212)判断I帧子空间的剩余内存空间大小是否大于或等于所对应的编码通道当前输出的I帧数据的长度;若为否,则等待I帧子空间内的I帧数据被读取,I帧子空间内的I帧数据被读取后,返回执行步骤(S31211);若为是,则执行步骤(S31213) 。
(S31213)判断I帧数据的写入指针至数据结束指针之间的内存空间是否大于或等于编码通道当前输出的I帧数据的长度;若为是,则根据I帧子空间的剩余内存空间的首地址写入编码通道当前输出的I帧数据,并执行步骤(S31216);若为否,则执行步骤(S31214)。
(S31214)设置数据结束指针指向I帧子空间的剩余内存空间的首地址,执行步骤(S31215)。
(S31215)将写入指针指向 I帧子空间的的首地址,执行步骤(S31216)。
(S31216)更新I帧子空间的剩余内存空间的大小,返回执行步骤(S3121),从而继续进行下一步的写入程序。
其中,(S31213)中所述的根据I帧子空间的剩余内存空间的首地址写入编码通道当前输出的I帧数据,该步骤具体包含:将当前剩余空间的首地址发送至编码通道,编码通道进行编码,并将解码后的I帧数据从写入指针开始写入到I帧子空间的剩余空间中。
如图4所示,为I帧子空间写入I帧数据时的原理图。当之前的I帧数据从位于P0的位置写入到 I帧子空间中,并且写入完成后 当前写入指针位于P1的位置,此时需要写入当前的I帧数据D1时,由于此时数据结束指针位于P2,同时由于I帧子空间中P1与 P2之间的剩余空间容量小于I帧数据D1的长度,所以将设置数据结束指针指向剩余空间的首地址即P1处的位置,同时将写入指针更新到I帧子空间的首地址P3处。更新剩余内存空间长度,其方法是:剩余空间长度等于原来剩余空间长度减去P1到P2之间的长度。
更具体地,步骤(S312)还包含以下步骤:
(S31221)获取所需读取的I帧数据的长度,执行步骤(S31222)。
(S31222)获取I帧子空间内I帧数据的长度,执行步骤(S31223)。
(S31223)判断I帧子空间内I帧数据的长度是否大于或等于所需读取的I帧数据的长度;若为是,则执行步骤(S31224);若为否,则等待编码通道输出的I帧数据写入I帧子空间,并返回执行步骤(S31221)。
(S31224)判断所需读取的I帧数据的长度是否大于或等于读指针至数据结束指针之间的内存空间;若为否,则读取所需读取的I帧数据至指定位置,再执行步骤(S31228);若为是,则执行步骤(S31225)。
(S31225)读取读指针至数据结束指针之间的I帧数据,执行步骤(S31226)。
(S31226)从I帧子空间的首地址开始读取所需读取的I帧数据的剩余部分的I帧数据,执行步骤(S31227)。
(S31227)将数据结束指针指向I帧子空间的末地址加1的位置上,执行步骤(S31228)。
(S31228)更新I帧子空间的剩余内存空间的大小。
I帧子空间的环形内存管理适用于I帧数据顺序分配和顺序释放以及相应的编码通道能够 接受两个指针(I帧子空间的首地址的指针和I帧子空间剩余内存空间的首地址的指针)的情况。该方法使得I帧内存池在剩余不够大的情况下可以继续分配,同时每次分配都是顺序按需求大小分配,所以就没有内存碎片的产生。
具体地,步骤(S3)中采用伙伴(Buddy)算法对非I帧内存池进行内存分配和释放管理,步骤如下:
(S321)根据各编码通道的P帧最大压缩比一一计算出各编码通道输出P帧数据的最小值。
(S322)将伙伴算法中最小内存块的大小设置为小于各编码通道输出P帧数据的最小值。
(S323)根据编码通道当前输出P帧数据的大小为当前该P帧数据分配大小相适配的内存块,将编码通道当前输出P帧数据写入这些内存块的内存空间。如果当前剩余内存块的空间不足,则等待内存块释放P帧数据后,再为当前该P帧数据分配大小相适配的内存块。伙伴算法按2的幂次方大小对非I帧内存池进行分配内存块,避免了把大的内存块拆的太碎,且使内存块的分配和释放过程迅速。
此外,I帧内存池及非I帧内存池的大小可以根据编码通道数量及参数进行动态合理分配,提高内存的使用效率。比如编码通道数增加,则根据新编码通道的参数计算所需的非I帧内存池大小,将原本的非I帧内存池扩大相应大小,同时添加新的I帧子空间进入I帧内存池;同理,也可以减少非I帧内存池和删除I帧内存池对应的I帧子空间来实现内存单元的裁剪。
实施例2:
本实施例提供了一种内存管理系统,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现实施例1的任意一方法的步骤。
以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其它改进和变化均应认为包含在本发明的保护范围之内。
Claims (10)
1.一种内存管理方法,其特征在于:
包括以下步骤:
根据各编码通道的相关参数设置一相应大小的内存单元,所述内存单元与系统用内存相分离;
将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池;
分别对I帧内存池及非I帧内存池进行内存分配和释放管理。
2.根据权利要求1所述的内存管理方法,其特征在于:
还包括以下步骤:
根据编码通道的数量变化对I帧内存池及非I帧内存池的内存空间进行扩展或裁剪。
3.根据权利要求1所述的内存管理方法,其特征在于:
所述根据各编码通道的相关参数设置一相应大小的内存单元的步骤包含:
确定各编码通道的编码码率;
根据各编码通道的编码码率设置内存单元的大小。
4.根据权利要求1所述的内存管理方法,其特征在于:
所述将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池的步骤包含:
根据各编码通道的相关参数一一计算出各编码通道输出的I帧数据所需内存空间的大小;
计算出各编码通道输出的I帧数据所需内存空间的大小的总和;
根据各编码通道输出的I帧数据所需内存空间的大小的总和,在内存单元内划分出相应大小的I帧内存池;内存单元的剩余内存空间作为非I帧内存池。
5.根据权利要求4所述的内存管理方法,其特征在于:
所述内存单元被预先设定为可存储T秒的数据量;所述编码通道输出的I帧数据所需内存空间的大小的计算公式为:S=F×Pi×T×R×Y /INmin;公式中,F为原始数据采集的帧率,Pi为GOP中I帧数据所占的比例,R为原始数据采集的分辨率,Y为数据源格式的数据源大小,INmin为I帧数据最小压缩比。
6.根据权利要求1所述的内存管理方法,其特征在于:
对I帧内存池进行内存分配和释放管理的步骤包含:
根据编码通道的数量对I帧内存池划分,为各编码通道一一划分出一相应的I帧子空间;各I帧子空间的内存空间大小与其相应的编码通道输出的I帧数据所需内存空间的大小相适配;
采用环形内存策略对各I帧子空间进行内存分配和释放管理;
所述采用环形内存策略对各I帧子空间进行内存分配和释放管理的步骤包含:
初始阶段,初始化I帧子空间的内存空间:将写指针和读指针指向I帧子空间的首地址,并设置数据结束指针指向I帧子空间的结束位置。
7.根据权利要求6所述的内存管理方法,其特征在于:
所述采用环形内存策略对各I帧子空间进行内存分配和释放管理的步骤还包含:
(S31211)获取I帧子空间的剩余内存空间大小,执行步骤(S31212);
(S31212)判断I帧子空间的剩余内存空间大小是否大于或等于所对应的编码通道当前输出的I帧数据的长度;若为否,则等待I帧子空间内的I帧数据被读取,返回执行步骤(S31211);若为是,则执行步骤(S31213) ;
(S31213)判断I帧数据的写入指针至数据结束指针之间的内存空间是否大于或等于编码通道当前输出的I帧数据的长度;若为是,则将编码通道当前输出的I帧数据写入I帧子空间,并执行步骤(S31216);若为否,则执行步骤(S31214);
(S31214)设置数据结束指针指向I帧子空间的剩余内存空间的首地址,执行步骤(S31215);
(S31215)将写入指针指向 I帧子空间的的首地址,执行步骤(S31216);
(S31216)更新I帧子空间的剩余内存空间的大小。
8.根据权利要求6所述的内存管理方法,其特征在于:
所述采用环形内存策略对各I帧子空间进行内存分配和释放管理的步骤还包含:
(S31221)获取所需读取的I帧数据的长度,执行步骤(S31222);
(S31222)获取I帧子空间内I帧数据的长度,执行步骤(S31223);
(S31223)判断I帧子空间内I帧数据的长度是否大于或等于所需读取的I帧数据的长度;若为是,则执行步骤(S31224);若为否,则等待编码通道输出的I帧数据写入I帧子空间,并返回执行步骤(S31221);
(S31224)判断所需读取的I帧数据的长度是否大于或等于读指针至数据结束指针之间的内存空间;若为否,则读取所需读取的I帧数据,执行步骤(S31228);若为是,则执行步骤(S31225);
(S31225)读取读指针至数据结束指针之间的I帧数据,执行步骤(S31226);
(S31226)从I帧子空间的首地址开始读取所需读取的I帧数据的剩余部分的I帧数据,执行步骤(S31227);
(S31227)将数据结束指针指向I帧子空间的末地址加1的位置上,执行步骤(S31228);
(S31228)更新I帧子空间的剩余内存空间的大小。
9.根据权利要求1所述的内存管理方法,其特征在于:
采用伙伴算法对非I帧内存池进行内存分配和释放管理,具体步骤包含:
根据各编码通道的P帧最大压缩比一一计算出各编码通道输出P帧数据的最小值;
将伙伴算法中最小内存块的大小设置为小于各编码通道输出P帧数据的最小值;
根据编码通道当前输出P帧数据的大小为当前该P帧数据分配大小相适配的内存块。
10.一种内存管理系统,其特征在于:
包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述计算机程序被所述处理器执行时实现如权利要求1至9中任意一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810536826.8A CN110555890B (zh) | 2018-05-30 | 2018-05-30 | 一种内存管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810536826.8A CN110555890B (zh) | 2018-05-30 | 2018-05-30 | 一种内存管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110555890A true CN110555890A (zh) | 2019-12-10 |
CN110555890B CN110555890B (zh) | 2023-10-20 |
Family
ID=68735159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810536826.8A Active CN110555890B (zh) | 2018-05-30 | 2018-05-30 | 一种内存管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110555890B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111741246A (zh) * | 2020-06-12 | 2020-10-02 | 浪潮(北京)电子信息产业有限公司 | 一种视频存储方法、装置、soc系统、介质 |
CN112532905A (zh) * | 2020-12-09 | 2021-03-19 | 杭州鸿泉物联网技术股份有限公司 | 车载音视频帧数据处理方法及装置 |
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760080A (zh) * | 2011-04-26 | 2012-10-31 | 腾讯科技(深圳)有限公司 | 一种内存管理的方法和装置 |
CN105245912A (zh) * | 2015-10-21 | 2016-01-13 | 东方网力科技股份有限公司 | 一种缓存视频数据及读取视频数据的方法及装置 |
CN105577568A (zh) * | 2015-12-09 | 2016-05-11 | 美的集团股份有限公司 | Uart的数据处理控制方法及控制装置 |
CN105657311A (zh) * | 2016-03-11 | 2016-06-08 | 深圳市极酷威视科技有限公司 | 一种视频录制方法及装置 |
CN107168890A (zh) * | 2017-04-01 | 2017-09-15 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
-
2018
- 2018-05-30 CN CN201810536826.8A patent/CN110555890B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760080A (zh) * | 2011-04-26 | 2012-10-31 | 腾讯科技(深圳)有限公司 | 一种内存管理的方法和装置 |
CN105245912A (zh) * | 2015-10-21 | 2016-01-13 | 东方网力科技股份有限公司 | 一种缓存视频数据及读取视频数据的方法及装置 |
CN105577568A (zh) * | 2015-12-09 | 2016-05-11 | 美的集团股份有限公司 | Uart的数据处理控制方法及控制装置 |
CN105657311A (zh) * | 2016-03-11 | 2016-06-08 | 深圳市极酷威视科技有限公司 | 一种视频录制方法及装置 |
CN107168890A (zh) * | 2017-04-01 | 2017-09-15 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
WO2021232769A1 (zh) * | 2020-05-18 | 2021-11-25 | 北京市商汤科技开发有限公司 | 一种存储数据的方法及数据处理装置 |
JP2022537007A (ja) * | 2020-05-18 | 2022-08-23 | 北京市商▲湯▼科技▲開▼▲發▼有限公司 | データ記憶 |
TWI779438B (zh) * | 2020-05-18 | 2022-10-01 | 大陸商北京市商湯科技開發有限公司 | 數據儲存方法、電子設備及儲存媒體 |
JP7164733B2 (ja) | 2020-05-18 | 2022-11-01 | 北京市商▲湯▼科技▲開▼▲發▼有限公司 | データ記憶 |
CN111741246A (zh) * | 2020-06-12 | 2020-10-02 | 浪潮(北京)电子信息产业有限公司 | 一种视频存储方法、装置、soc系统、介质 |
WO2021248936A1 (zh) * | 2020-06-12 | 2021-12-16 | 浪潮(北京)电子信息产业有限公司 | 一种视频存储方法、装置、soc系统、介质 |
US20230199143A1 (en) * | 2020-06-12 | 2023-06-22 | Inspur (Beijing) Electronic Information Industry Co., Ltd | Video storage method and apparatus, and soc system and medium |
CN112532905A (zh) * | 2020-12-09 | 2021-03-19 | 杭州鸿泉物联网技术股份有限公司 | 车载音视频帧数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110555890B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7660837B2 (en) | Method for automatically managing disk fragmentation | |
CN110555890B (zh) | 一种内存管理方法及系统 | |
US20140086309A1 (en) | Method and device for encoding and decoding an image | |
CN110830838A (zh) | 一种安防高清录像倒播方法及装置 | |
CN105027566A (zh) | 视频处理方法及视频处理装置 | |
EP1619583A1 (en) | Data recording apparatus | |
CN105389376B (zh) | 基于连续块的无碎片化多媒体数据存储方法及系统 | |
CN102243615B (zh) | 一种支持音视频帧存储的内存缓冲管理方法 | |
CN104065906A (zh) | 数字录像设备的录像方法及装置 | |
US20090067819A1 (en) | Information processing apparatus, recording method, and computer program | |
CN104811646B (zh) | 基于连续存储模型的多视频流数据并发调制及缓冲的存储方法 | |
US20120147023A1 (en) | Caching apparatus and method for video motion estimation and compensation | |
CN104239231A (zh) | 一种加速二级缓存预热的方法及装置 | |
US9786317B2 (en) | Recording apparatus and method of controlling recording apparatus | |
CN105791819A (zh) | 一种图像的帧压缩方法、图像的解压缩方法及装置 | |
CN102129702B (zh) | 一种图像缩略图的制作方法及其系统 | |
JP7017542B2 (ja) | 映像復号装置および映像復号方法 | |
CN116132719A (zh) | 视频处理方法、装置、电子设备及可读存储介质 | |
CN109246377B (zh) | 视频数据存储、读取方法及视频数据存储设备 | |
CN110727402B (zh) | 一种高速fc数据实时接收不丢帧存储方法 | |
WO2009122677A1 (ja) | 画像記録装置 | |
CN114974314B (zh) | 一种音视频帧的处理方法、装置及介质 | |
US8509597B2 (en) | Recording apparatus, imaging and recording apparatus, recording method, and program | |
US7715402B2 (en) | Method and device for processing digital data | |
US20110119465A1 (en) | Data processing system |
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 |