CN110555890B - 一种内存管理方法及系统 - Google Patents

一种内存管理方法及系统 Download PDF

Info

Publication number
CN110555890B
CN110555890B CN201810536826.8A CN201810536826A CN110555890B CN 110555890 B CN110555890 B CN 110555890B CN 201810536826 A CN201810536826 A CN 201810536826A CN 110555890 B CN110555890 B CN 110555890B
Authority
CN
China
Prior art keywords
frame
memory
data
subspace
frame data
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
CN201810536826.8A
Other languages
English (en)
Other versions
CN110555890A (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.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner 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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN201810536826.8A priority Critical patent/CN110555890B/zh
Publication of CN110555890A publication Critical patent/CN110555890A/zh
Application granted granted Critical
Publication of CN110555890B publication Critical patent/CN110555890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image 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 (6)

1.一种内存管理方法,其特征在于:包括以下步骤:根据各编码通道的相关参数设置一相应大小的内存单元,所述内存单元与系统用内存相分离;将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池;分别对I帧内存池及非I帧内存池进行内存分配和释放管理;还包括以下步骤:根据编码通道的数量变化对I帧内存池及非I帧内存池的内存空间进行扩展或裁剪;所述根据各编码通道的相关参数设置一相应大小的内存单元的步骤包含:确定各编码通道的编码码率;根据各编码通道的编码码率设置内存单元的大小;所述将内存单元划分为用于存储I帧数据的I帧内存池及用于存储非I帧数据的非I帧内存池的步骤包含:根据各编码通道的相关参数一一计算出各编码通道输出的I帧数据所需内存空间的大小;计算出各编码通道输出的I帧数据所需内存空间的大小的总和;根据各编码通道输出的I帧数据所需内存空间的大小的总和,在内存单元内划分出相应大小的I帧内存池;内存单元的剩余内存空间作为非I帧内存池;所述内存单元被预先设定为可存储T秒的数据量;所述编码通道输出的I帧数据所需内存空间的大小的计算公式为:S=F×Pi×T×R×Y/INmin;公式中,F为原始数据采集的帧率,Pi为GOP中I帧数据所占的比例,R为原始数据采集的分辨率,Y为数据源格式的数据源大小,INmin为I帧数据最小压缩比。
2.根据权利要求1所述的内存管理方法,其特征在于:对I帧内存池进行内存分配和释放管理的步骤包含:根据编码通道的数量对I帧内存池划分,为各编码通道一一划分出一相应的I帧子空间;各I帧子空间的内存空间大小与其相应的编码通道输出的I帧数据所需内存空间的大小相适配;采用环形内存策略对各I帧子空间进行内存分配和释放管理;所述采用环形内存策略对各I帧子空间进行内存分配和释放管理的步骤包含:初始阶段,初始化I帧子空间的内存空间:将写指针和读指针指向I帧子空间的首地址,并设置数据结束指针指向I帧子空间的结束位置。
3.根据权利要求2所述的内存管理方法,其特征在于:所述采用环形内存策略对各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帧子空间的剩余内存空间的大小。
4.根据权利要求2所述的内存管理方法,其特征在于:所述采用环形内存策略对各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帧子空间的剩余内存空间的大小。
5.根据权利要求1所述的内存管理方法,其特征在于:采用伙伴算法对非I帧内存池进行内存分配和释放管理,具体步骤包含:根据各编码通道的P帧最大压缩比一一计算出各编码通道输出P帧数据的最小值;将伙伴算法中最小内存块的大小设置为小于各编码通道输出P帧数据的最小值;根据编码通道当前输出P帧数据的大小为当前该P帧数据分配大小相适配的内存块。
6.一种内存管理系统,其特征在于:包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述计算机程序被所述处理器执行时实现如权利要求1至5中任意一项所述的方法的步骤。
CN201810536826.8A 2018-05-30 2018-05-30 一种内存管理方法及系统 Active CN110555890B (zh)

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 CN110555890A (zh) 2019-12-10
CN110555890B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688062B (zh) * 2020-05-18 2022-08-26 北京市商汤科技开发有限公司 用于存储数据的方法和相关产品
CN111741246B (zh) * 2020-06-12 2022-07-05 浪潮(北京)电子信息产业有限公司 一种视频存储方法、装置、soc系统、介质
CN112532905B (zh) * 2020-12-09 2022-09-23 杭州鸿泉物联网技术股份有限公司 车载音视频帧数据处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
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 杭州联吉技术有限公司 一种内存池的管理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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 杭州联吉技术有限公司 一种内存池的管理方法和装置

Also Published As

Publication number Publication date
CN110555890A (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
CN110555890B (zh) 一种内存管理方法及系统
US7660837B2 (en) Method for automatically managing disk fragmentation
US20140086309A1 (en) Method and device for encoding and decoding an image
US20170289559A1 (en) Virtual frame buffer system and method
US20070098080A1 (en) Accelerating video decoding using multiple processors
CN110830838A (zh) 一种安防高清录像倒播方法及装置
CN101387985B (zh) 信息处理装置、记录方法和计算机程序
CN111741246A (zh) 一种视频存储方法、装置、soc系统、介质
CN104185982A (zh) 视频处理方法和实施所述方法的视频设备
CN109683983B (zh) 一种镜像文件的生成及加载方法、设备
US8300701B2 (en) Offspeed playback in a video editing system of video data compressed using long groups of pictures
US9786317B2 (en) Recording apparatus and method of controlling recording apparatus
US8711240B2 (en) Data recording apparatus with recording control based on defect block and control method thereof
CN110806840A (zh) 一种基于多数据流的闪存卡数据存储方法、闪存卡及设备
JP7017542B2 (ja) 映像復号装置および映像復号方法
US20100205396A1 (en) Formatting device
US20060139786A1 (en) Method and apparatus for exchanging data with a hard disk
US8037508B2 (en) Video server and file management method
CN109246377B (zh) 视频数据存储、读取方法及视频数据存储设备
US9667983B2 (en) Image processing apparatus and control method for the same including estimation and scheduling
CN116132719A (zh) 视频处理方法、装置、电子设备及可读存储介质
US8452158B2 (en) Recording apparatus, imaging and recording apparatus, recording method, and program
US6567131B1 (en) Decoding apparatus and decoding method
US8509597B2 (en) Recording apparatus, imaging and recording apparatus, recording method, and program
CN110959292B (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