CN103761194A - 一种内存管理方法及装置 - Google Patents
一种内存管理方法及装置 Download PDFInfo
- Publication number
- CN103761194A CN103761194A CN201310743178.0A CN201310743178A CN103761194A CN 103761194 A CN103761194 A CN 103761194A CN 201310743178 A CN201310743178 A CN 201310743178A CN 103761194 A CN103761194 A CN 103761194A
- Authority
- CN
- China
- Prior art keywords
- address
- frame
- read pointer
- key frame
- characteristic information
- 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
Images
Abstract
本发明公开了一种内存管理方法及装置,该方法包括:查找写指针在循环缓冲器中当前所指的第一地址;根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息;将第一数据帧写入第一地址;当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址;当读指针在循环缓冲器中当前所指的地址为第一地址时,获取特征信息;根据特征信息从第一地址读取第一数据帧。实施本发明实施例,可以提高网络硬盘录像机的整体性能。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种内存管理方法及装置。
背景技术
网络硬盘录像机(network video recorder,NVR)用于通过网络接收网络摄像机传输的数字视频数据帧,并进行存储和管理。随着安防监控技术的不断发展,NVR的功能在不断丰富,如本地多屏预览、多终端点播等同时对图像质量的要求也在不断提高。目前,为了满足NVR的上述要求,需要给NVR的每个功能分配一个缓冲器,这不仅耗费掉NVR的大量内存,而且给内存的管理带来非常大的困难。此外,向缓冲器中写入数据帧时,并没有存储数据帧的特征信息,导致读取数据帧不能根据特征信息读取,从而增加了数据帧的读取难度。可见,NVR的整体性能较低。
发明内容
本发明公开了一种内存管理方法及装置,用于提高NVR的整体性能较低。
本发明第一方面公开一种内存管理方法,包括:
查找写指针在循环缓冲器中当前所指的第一地址;
根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息;
将所述第一数据帧写入所述第一地址;
当需要读取所述第一数据帧时,查找读指针在所述循环缓冲器中当前所指的地址;
当所述读指针在所述循环缓冲器中当前所指的地址为所述第一地址时,获取所述特征信息;
根据所述特征信息从所述第一地址读取所述第一数据帧。
在本发明第一方面的第一种可能的实现方式中,所述根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息之后,与所述将所述第一数据帧写入所述第一地址之前,所述方法还包括:
判断所述第一地址是否存储有第二数据帧;
若所述第一地址存储有第二数据帧,则判断所述第二数据帧是否为关键帧;
若所述第二数据帧为关键帧,则将存储在关键帧管理器中的所述第二数据帧的属性信息移出所述关键帧管理器,所述属性信息包括地址;
判断所述第一数据帧是否为关键帧,若所述第一数据帧为关键帧,则在所述关键帧管理器中存储所述第一数据帧的属性信息。
结合本发明第一方面的第一种可能的实现方式,在本发明第一方面的第二种可能的实现方式中,当需要读取所述第一数据帧时,所述查找读指针在所述循环缓冲器中当前所指的地址包括:
从所述关键帧管理器中获取最新的关键帧的地址;
获取所述最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数;
根据所述最新的关键帧的地址与所述读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
在本发明第一方面的第三种可能的实现方式中,所述根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息包括:
根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息;
将所述第一数据帧的特征信息存储在所述第一地址所在数据块中。
在本发明第一方面的第四种可能的实现方式中,当需要读取所述第一数据帧时,所述查找读指针在所述循环缓冲器中当前所指的地址包括:
获取所述写指针在所述循环缓冲器中当前所指的第二地址;
获取所述第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数;
根据所述第二地址所在数据块与所述读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
本发明第二方面公开一种内存管理装置,包括:
第一查找单元,用于查找写指针在循环缓冲器中当前所指的第一地址;
第一存储单元,用于根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息;
写入单元,用于将所述第一数据帧写入所述第一查找单元查找的所述第一地址;
第二查找单元,用于当需要读取所述写入单元写入的所述第一数据帧时,查找读指针在所述循环缓冲器中当前所指的地址;
获取单元,用于当所述第二查找单元查找的地址为所述第一地址时,获取所述第一存储单元存储的所述特征信息;
读取单元,用于根据所述获取单元获取的所述特征信息从所述第一地址读取所述第一数据帧。
在本发明第二方面的第一种可能的实现方式中,所述装置还包括:
第一判断单元,用于判断所述第一查找单元查找的所述第一地址是否存储有第二数据帧;
第二判断单元,用于当所述第一判断单元的判断结果为是时,判断所述第二数据帧是否为关键帧;
移出单元,用于当所述第二判断单元的判断结果为是时,将存储在关键帧管理器中的所述第二数据帧的属性信息移出所述关键帧管理器,所述属性信息包括地址;
第三判断单元,用于判断所述第一数据帧是否为关键帧;
第二存储单元,用于当所述第三判断单元的判断结果为是时,在所述关键帧管理器中存储所述第一数据帧的属性信息。
结合本发明第二方面的第一种可能的实现方式,在本发明第二方面的第二种可能的实现方式中,所述第二查找单元包括:
第一获取子单元,用于从所述关键帧管理器中获取所述第二存储单元存储的最新的关键帧的地址;
第二获取子单元,用于获取所述第一获取子单元获取的所述最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数;
第一计算子单元,用于根据所述第二获取子单元获取的所述最新的关键帧的地址与所述读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
在本发明第二方面的第三种可能的实现方式中,所述第一存储单元包括:
第三获取子单元,用于根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息;
存储子单元,用于将所述第三获取子单元获取的所述第一数据帧的特征信息存储在所述第一地址所在数据块中。
在本发明第二方面的第四种可能的实现方式中,所述第二查找单元包括:
第四获取子单元,用于获取所述写指针在所述循环缓冲器中当前所指的第二地址;
第五获取子单元,用于获取所述第四获取子单元获取的所述第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数;
第二计算子单元,用于根据所述第五获取子单元获取的所述第二地址所在数据块与所述读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
本发明实施例中,首先需要查找写指针在循环缓冲器中当前所指的第一地址,之后根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息并存储,然后将第一数据帧写入第一地址,当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址,当读指针在循环缓冲器中当前所指的地址为第一地址时,获取特征信息,之后根据特征信息从第一地址读取第一数据帧。与现有技术相比,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,本发明在存储数据帧的同时也存储了数据帧的特征信息,便于可以根据数据帧的特征信息读取数据帧,因此,可以提高NVR的整体性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种内存管理方法的流程图;
图2是本发明实施例公开的另一种内存管理方法的流程图;
图3是本发明实施例公开的一种内存管理装置的结构图;
图4是本发明实施例公开的另一种内存管理装置的结构图;
图5是本发明实施例公开的又一种内存管理装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种内存管理方法及装置,用于提高NVR的整体性能较低。以下分别进行详细说明。
请参阅图1,图1是本发明实施例公开的一种内存管理方法的流程图。如图1所示,该内存管理方法可以包括以下步骤。
S101、查找写指针在循环缓冲器中当前所指的第一地址。
可选地,当需要向循环缓冲器中写入数据帧时,会给写指针分配一个逻辑地址和指针圈数。为了让写指针指向所分配的逻辑地址,需要查找写指针在循环缓冲器中当前所指的逻辑地址。其中,本发明中缓冲区只有一个循环缓冲器,当循环缓冲器被写满后,将又从循环缓冲器的开始地址写起,写满一次为一圈,指针圈数即指第几圈。
S102、根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息。
可选地,当要将网络摄像机传输过来的第一数据帧写入循环缓冲器之前,需要获取第一数据帧的特征信息并存储,便于后续在读取时,可以根据特征信息读取第一数据帧。其中,特征信息包括帧类型、视频制式、分辨率、帧率、编码关键帧间隔、音频编码格式等,而且特征信息与数据帧是一一对应的。
S103、将第一数据帧写入第一地址。
S104、当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址。
可选地,当需要读取存储在循环缓冲器中的第一数据帧时,首先需要根据给读指针分配的逻辑地址和指针圈数找到读指针在循环缓冲器中的位置。其中,读指针可以为一个、也可以为多个,而且读指针可以指向写指针前、也可以指向写指针后,还可以指向写指针所指的位置,具体指向那儿,根据读取的需要而定,本实施例不作限定。
S105、当读指针在循环缓冲器中当前所指的地址为第一地址时,获取特征信息。
可选地,由于第一数据帧存储在循环缓冲器中的第一地址的位置,因此,需要判断读指针在循环缓冲器中当前所指的地址是否是第一地址,若读指针在循环缓冲器中当前所指的地址是第一地址,则需要判断第一地址是否存储有第一数据帧,若第一地址存储有第一数据帧,则获取存储的第一数据帧的特征信息;若第一地址没有存储第一数据帧,则不获取特征信息。其中,当读指针圈数等于写指针圈数时,若读指针所指地址小于写指针所指地址,则表明第一地址存储有第一数据帧,若读指针所指地址大于或等于写指针所指地址,则表明第一地址没有存储第一数据帧。
S106、根据特征信息从第一地址读取第一数据帧。
可选地,根据特征信息从第一地址读取存储的第一数据帧。其中,特征信息保证了读取的第一数据帧与存储前的第一数据帧完全一样,不会发生分辨率、帧率等的变化。
在图1所描述的内存管理方法中,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,而且在存储数据帧的同时也存储了数据帧的特征信息,便于可以根据数据帧的特征信息读取数据帧,因此,可以提高NVR的整体性能。
请参阅图2,图2是本发明实施例公开的另一种内存管理方法的流程图。如图2所示,该内存管理方法可以包括以下步骤。
S201、查找写指针在循环缓冲器中当前所指的第一地址。
可选地,当需要向循环缓冲器中写入数据帧时,会给写指针分配一个逻辑地址和指针圈数。为了让写指针指向所分配的逻辑地址,需要查找写指针在循环缓冲器中当前所指的逻辑地址。其中,本发明中缓冲区只有一个循环缓冲器,当循环缓冲器被写满后,将又从循环缓冲器的开始地址写起,写满一次为一圈,指针圈数即指第几圈。
S202、根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息。
可选地,当要将网络摄像机传输过来的第一数据帧写入循环缓冲器之前,需要获取第一数据帧的特征信息并存储,便于后续在读取时,可以根据特征信息读取第一数据帧。其中,特征信息包括帧类型、视频制式、分辨率、帧率、编码关键帧间隔、音频编码格式等,而且特征信息与数据帧是一一对应的。
作为一种可能的实施方式,根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息可以包括以下步骤。
步骤A、根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息。
步骤B、将第一数据帧的特征信息存储在第一地址所在数据块中。
可选地,存储第一数据帧的特征信息时,可以以帧为最小单位存储数据帧的特征信息,即为写入的数据帧准备一个私有的帧头特征信息,可以根据需要,每写入一个数据帧就填充帧头特征信息的扩展部分;也可以以数据块为最小单位存储数据帧的特征信息,即每向一个数据块中写入数据帧就更新需要存储的数据帧的特征信息,需要选用哪种方式可以根据需要设置,本实施例不作限定。
S203、判断第一地址是否存储有第二数据帧。
可选地,在将第一数据帧写入第一地址之前,先要判断第一地址是否已经存储有第二数据帧。
S204、若第一地址存储有第二数据帧,则判断第二数据帧是否为关键帧。
可选地,若第一地址已经存储有第二数据帧,则表明将第一数据帧写入第一地址时,第一数据帧将会覆盖第二数据帧,因此,需要继续判断第二数据帧是否为关键帧。
相应地,若第一地址没有存储第二数据帧,则表明此时第一地址的位置没有存储数据帧,将第一数据帧写入第一地址时,不会有覆盖产生。
S205、若第二数据帧为关键帧,则将存储在关键帧管理器中的第二数据帧的属性信息移出关键帧管理器,属性信息包括地址。
可选地,若第二数据帧为关键帧,则表明关键帧管理器中存储有第二数据帧的属性信息,而关键帧管理器遵从先进先出的原则,第二数据帧将被覆盖掉,因此,对应的要将关键帧管理器中第二数据帧的属性信息移出关键帧管理器。
S206、判断第一数据帧是否为关键帧,若第一数据帧为关键帧,则在关键帧管理器中存储第一数据帧的属性信息。
可选地,将第二数据帧的属性信息移出关键帧管理器后,需要判断第一数据帧是否为关键帧,若第一数据帧为关键帧,则在关键帧管理器中存储第一数据帧的属性信息;若第一数据帧不是关键帧,则不需要在关键帧管理器中存储第一数据帧的属性信息。其中,属性信息还可以包括关键帧的特征信息。
可选地,若第一地址没有存储第二数据帧,则直接判断第一数据帧是否为关键帧。
S207、将第一数据帧写入第一地址。
S208、当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址。
可选地,当需要读取存储在循环缓冲器中的第一数据帧时,首先需要根据给读指针分配的逻辑地址和指针圈数找到读指针在循环缓冲器中的位置。其中,读指针可以为一个、也可以为多个,而且读指针可以指向写指针前、也可以指向写指针后,还可以指向写指针所指的位置,具体指向那儿,根据读取的需要而定,本实施例不作限定。
作为一种可能的实施方式,当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址可以包括以下步骤。
步骤A1、从关键帧管理器中获取最新的关键帧的地址。
可选地,关键帧管理器遵从先进先出原则,查找最后存储在关键帧管理器中的关键帧的属性信息即可找到最新的关键帧的属性信息,而属性信息包括关键帧在循环缓冲器中的地址,因此,可以获取到最新的关键帧的地址。
步骤A2、获取最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数。
可选地,根据最新的关键帧的地址和读指针当前所指的地址,可以得到最新的关键帧的地址与读指针当前所指的地址之间相差关键帧的数量,同时可以得到读指针的圈数。
步骤A3、根据最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
可选地,根据最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数,可以快速的找到距离读指针最近的关键帧的地址,从而可快速的得到读指针在循环缓冲器中当前所指的地址。
可选地,步骤A1-A3是以最新的关键帧的地址为起始地址,以关键帧为单位获取读指针在循环缓冲器中当前所指的地址。
作为一种可能的实施方式,当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址可以包括以下步骤。
步骤B1、获取写指针在循环缓冲器中当前所指的第二地址。
步骤B2、获取第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数。
可选地,可以根据写指针在循环缓冲器中当前所指的第二地址和读指针所指的地址,得到第二地址所在数据块与读指针当前所指地址所在数据块之间相隔数据块的数量,以及读指针的圈数。
步骤B3、根据第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
可选地,上述步骤B1-B3是以写指针当前所指的地址为起始地址,以数据块为单位获取读指针在循环缓冲器中当前所指的地址。
可选地,当读指针所指的位置是当前正在读的数据帧的位置时,则为点播或暂停;当读指针所指的位置是以与读指针当前所指位置相差N个关键帧的数据块为起始位置,则为快退或快进;当读指针所指的位置是当前写指针所在位置时,则为预览;当读指针所指的位置以在写指针向前第N个数据帧所在数据块为起始位置,则为预录像。
S209、当读指针在循环缓冲器中当前所指的地址为第一地址时,获取特征信息。
可选地,由于第一数据帧存储在循环缓冲器中的第一地址的位置,因此,需要判断读指针在循环缓冲器中当前所指的地址是否是第一地址,若读指针在循环缓冲器中当前所指的地址是第一地址,则需要判断第一地址是否存储有第一数据帧,若第一地址存储有第一数据帧,则获取存储的第一数据帧的特征信息;若第一地址没有存储第一数据帧,则不获取特征信息。其中,当读指针圈数等于写指针圈数时,若读指针所指地址小于写指针所指地址,则表明第一地址存储有第一数据帧,若读指针所指地址大于或等于写指针所指地址,则表明第一地址没有存储第一数据帧。
可选地,若第一地址存储的第一数据帧为关键帧时,可以从第一地址所在数据块中获取第一数据帧的特征信息,也可以从关键帧管理器中获取第一数据帧的特征信息,具体从哪儿获取可以根据需要选择,本实施例不作限定;若第一地址存储的第一数据帧不是关键帧时,只能从第一地址所在数据块中获取第一数据帧的特征信息。
S210、根据特征信息从第一地址读取第一数据帧。
可选地,根据特征信息从第一地址读取存储的第一数据帧。其中,特征信息保证了读取的第一数据帧与存储前的第一数据帧完全一样,不会发生分辨率、帧率等的变化。
在图2所描述的内存管理方法中,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,在存储数据帧的同时也存储了数据帧的特征信息,便于根据数据帧的特征信息可以有多个读指针同时读取数据帧,而且在读取数据帧时,可以根据关键帧管理器中存储的关键帧的属性信息,以及数据块能够快速的找到读指针所指的地址,因此,可以提高NVR的整体性能。
请参阅图3,图3是本发明实施例公开的一种内存管理装置的结构图。如图3所示,该内存管理装置300可以包括:
第一查找单元301,用于查找写指针在循环缓冲器中当前所指的第一地址;
第一存储单元302,用于根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息;
写入单元303,用于将第一数据帧写入第一查找单元301查找的第一地址;
第二查找单元304,用于当需要读取写入单元303写入的第一数据帧时,查找读指针在循环缓冲器中当前所指的地址;
获取单元305,用于当第二查找单元304查找的地址为第一地址时,获取第一存储单元302存储的特征信息;
读取单元306,用于根据获取单元305获取的特征信息从第一地址读取第一数据帧。
作为一种可能的实施方式,该内存管理装置300还可以包括:
第一判断单元307,用于判断第一查找单元301查找的第一地址是否存储有第二数据帧;
第二判断单元308,用于当第一判断单元307的判断结果为是时,判断第二数据帧是否为关键帧;
相应地,当第一判断单元307的判断结果为否时,第三判断单元310判断第一数据帧是否为关键帧。
移出单元309,用于当第二判断单元308的判断结果为是时,将存储在关键帧管理器中的第二数据帧的属性信息移出关键帧管理器,属性信息包括地址;
相应地,当第二判断单元308的判断结果为否时,不改变关键帧管理器存储的关键帧的属性信息。
第三判断单元310,用于判断第一数据帧是否为关键帧;
第二存储单元311,用于当第三判断单元310的判断结果为是时,在关键帧管理器中存储第一数据帧的属性信息。
相应地,当第三判断单元310的判断结果为否时,不改变关键帧管理器存储的关键帧的属性信息。
作为一种可能的实施方式,第二查找单元304可以包括:
第一获取子单元3041,用于从关键帧管理器中第二存储单元311存储的最新的关键帧的地址;
第二获取子单元3042,用于获取第一获取子单元3041获取的最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数;
第一计算子单元3043,用于根据第二获取子单元3042获取的最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
作为一种可能的实施方式,第一存储单元302可以包括:
第三获取子单元3021,用于根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息;
存储子单元3022,用于将第三获取子单元3021获取的第一数据帧的特征信息存储在第一地址所在数据块中。
第一获取子单元3041具体用于当需要读取写入单元303写入的第一数据帧时,从关键帧管理器中获取第二存储单元311存储的最新的关键帧的地址。
获取单元305具体用于当第一计算子单元3043计算的地址为第一地址时,获取存储子单元3022存储的特征信息。
在图3所描述的内存管理装置中,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,在存储数据帧的同时也存储了数据帧的特征信息,便于根据数据帧的特征信息可以有多个读指针同时读取数据帧,而且在读取数据帧时,可以根据关键帧管理器中存储的关键帧的属性信息能够快速的找到读指针所指的地址,因此,可以提高NVR的整体性能。
请参阅图4,图4是本发明实施例公开的另一种内存管理装置的结构图。如图4所示,该内存管理装置400可以包括:
第一查找单元401,用于查找写指针在循环缓冲器中当前所指的第一地址;
第一存储单元402,用于根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息;
写入单元403,用于将第一数据帧写入第一查找单元401查找的第一地址;
第二查找单元404,用于当需要读取写入单元403写入的第一数据帧时,查找读指针在循环缓冲器中当前所指的地址;
获取单元405,用于当第二查找单元404查找的地址为第一地址时,获取第一存储单元402存储的特征信息;
读取单元406,用于根据获取单元405获取的特征信息从第一地址读取第一数据帧。
作为一种可能的实施方式,该内存管理装置400还可以包括:
第一判断单元407,用于判断第一查找单元401查找的第一地址是否存储有第二数据帧;
第二判断单元408,用于当第一判断单元407的判断结果为是时,判断第二数据帧是否为关键帧;
相应地,当第一判断单元407的判断结果为否时,第三判断单元410判断第一数据帧是否为关键帧。
移出单元409,用于当第二判断单元408的判断结果为是时,将存储在关键帧管理器中的第二数据帧的属性信息移出关键帧管理器,属性信息包括地址;
相应地,当第二判断单元408的判断结果为否时,不改变关键帧管理器存储的关键帧的属性信息。
第三判断单元410,用于判断第一数据帧是否为关键帧;
第二存储单元411,用于当第三判断单元410的判断结果为是时,在关键帧管理器中存储第一数据帧的属性信息。
相应地,当第三判断单元410的判断结果为否时,不改变关键帧管理器存储的关键帧的属性信息。
作为一种可能的实施方式,第二查找单元404可以包括:
第四获取子单元4041,用于获取写指针在循环缓冲器中当前所指的第二地址;
第五获取子单元4042,用于获取第四获取子单元4041获取的第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数;
第二计算子单元4043,用于根据第五获取子单元4042获取的第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
作为一种可能的实施方式,第一存储单元402可以包括:
第三获取子单元4021,用于根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息;
存储子单元4022,用于将第三获取子单元4021获取的第一数据帧的特征信息存储在第一地址所在数据块中。
第一获取子单元4041具体用于当需要读取写入单元403写入的第一数据帧时,获取写指针在循环缓冲器中当前所指的第二地址。
获取单元405具体用于当第一计算子单元4043计算的地址为第一地址时,获取存储子单元4022存储的特征信息。
在图4所描述的内存管理装置中,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,在存储数据帧的同时也存储了数据帧的特征信息,便于根据数据帧的特征信息可以有多个读指针同时读取数据帧,而且在读取数据帧时,可以根据数据块能够快速的找到读指针所指的地址,因此,可以提高NVR的整体性能。
请参阅图5,图5是本发明实施例公开的又一种内存管理装置的结构图。如图5所示,该内存管理装置500可以包括存储器501和处理器502,其中存储器501中存储一组程序代码,且处理器502用于调用存储器501中存储的程序代码,用于执行以下操作:
查找写指针在循环缓冲器中当前所指的第一地址;
根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息;
将第一数据帧写入第一地址;
当需要读取第一数据帧时,查找读指针在循环缓冲器中当前所指的地址;
当读指针在循环缓冲器中当前所指的地址为第一地址时,获取特征信息;
根据特征信息从第一地址读取第一数据帧。
作为一种可能的实施方式,在图5所示的内存管理装置500中,处理器502还用于执行以下操作:
判断第一地址是否存储有第二数据帧;
若第一地址存储有第二数据帧,则判断第二数据帧是否为关键帧;
若第二数据帧为关键帧,则将存储在关键帧管理器中的第二数据帧的属性信息移出关键帧管理器,属性信息包括地址;
判断第一数据帧是否为关键,若第一数据帧为关键帧,在关键帧管理器中存储第一数据帧的属性信息。
作为一种可能的实施方式,在图5所示的内存管理装置500中,当需要读取第一数据帧时,处理器502查找读指针在循环缓冲器中当前所指的地址的方式具体为:
从关键帧管理器中获取最新的关键帧的地址;
获取最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数;
根据最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
作为一种可能的实施方式,在图5所示的内存管理装置500中,处理器502根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息,并存储特征信息的方式具体为:
根据网络摄像机传输过来的第一数据帧,获取第一数据帧的特征信息;
将第一数据帧的特征信息存储在第一地址所在数据块中。
作为一种可能的实施方式,在图5所示的内存管理装置500中,当需要读取第一数据帧时,处理器502查找读指针在循环缓冲器中当前所指的地址的方式具体为:
获取写指针在循环缓冲器中当前所指的第二地址;
获取第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数;
根据第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及读指针的圈数,计算读指针在循环缓冲器中的地址,得到读指针在循环缓冲器中当前所指的地址。
在图5所描述的内存管理装置中,NVR的缓冲区只用了一个循环缓冲器来存储数据帧,在存储数据帧的同时也存储了数据帧的特征信息,便于根据数据帧的特征信息可以有多个读指针同时读取数据帧,而且在读取数据帧时,可以根据关键帧管理器中存储的关键帧的属性信息,以及数据块能够快速的找到读指针所指的地址,因此,可以提高NVR的整体性能。
一个实施例中,本发明实施例进一步公开一种计算机存储介质,该计算机存储介质存储有计算机程序,当计算机存储介质中的计算机程序被读取到计算机时,能够使得计算机完成本发明实施例公开的内存管理方法的全部步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
以上对本发明实施例所提供的内存管理方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种内存管理方法,其特征在于,包括:
查找写指针在循环缓冲器中当前所指的第一地址;
根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息;
将所述第一数据帧写入所述第一地址;
当需要读取所述第一数据帧时,查找读指针在所述循环缓冲器中当前所指的地址;
当所述读指针在所述循环缓冲器中当前所指的地址为所述第一地址时,获取所述特征信息;
根据所述特征信息从所述第一地址读取所述第一数据帧。
2.如权利要求1所述的方法,其特征在于,所述根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息之后,与所述将所述第一数据帧写入所述第一地址之前,所述方法还包括:
判断所述第一地址是否存储有第二数据帧;
若所述第一地址存储有第二数据帧,则判断所述第二数据帧是否为关键帧;
若所述第二数据帧为关键帧,则将存储在关键帧管理器中的所述第二数据帧的属性信息移出所述关键帧管理器,所述属性信息包括地址;
判断所述第一数据帧是否为关键帧,若所述第一数据帧为关键帧,则在所述关键帧管理器中存储所述第一数据帧的属性信息。
3.如权利要求2所述的方法,当需要读取所述第一数据帧时,所述查找读指针在所述循环缓冲器中当前所指的地址包括:
从所述关键帧管理器中获取最新的关键帧的地址;
获取所述最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数;
根据所述最新的关键帧的地址与所述读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
4.如权利要求1所述的方法,其特征在于,所述根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息包括:
根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息;
将所述第一数据帧的特征信息存储在所述第一地址所在数据块中。
5.如权利要求1所述的方法,当需要读取所述第一数据帧时,所述查找读指针在所述循环缓冲器中当前所指的地址包括:
获取所述写指针在所述循环缓冲器中当前所指的第二地址;
获取所述第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数;
根据所述第二地址所在数据块与所述读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
6.一种内存管理装置,其特征在于,包括:
第一查找单元,用于查找写指针在循环缓冲器中当前所指的第一地址;
第一存储单元,用于根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息,并存储所述特征信息;
写入单元,用于将所述第一数据帧写入所述第一查找单元查找的所述第一地址;
第二查找单元,用于当需要读取所述写入单元写入的所述第一数据帧时,查找读指针在所述循环缓冲器中当前所指的地址;
获取单元,用于当所述第二查找单元查找的地址为所述第一地址时,获取所述第一存储单元存储的所述特征信息;
读取单元,用于根据所述获取单元获取的所述特征信息从所述第一地址读取所述第一数据帧。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
第一判断单元,用于判断所述第一查找单元查找的所述第一地址是否存储有第二数据帧;
第二判断单元,用于当所述第一判断单元的判断结果为是时,判断所述第二数据帧是否为关键帧;
移出单元,用于当所述第二判断单元的判断结果为是时,将存储在关键帧管理器中的所述第二数据帧的属性信息移出所述关键帧管理器,所述属性信息包括地址;
第三判断单元,用于判断所述第一数据帧是否为关键帧;
第二存储单元,用于当所述第三判断单元的判断结果为是时,在所述关键帧管理器中存储所述第一数据帧的属性信息。
8.如权利要求7所述的装置,所述第二查找单元包括:
第一获取子单元,用于从所述关键帧管理器中获取所述第二存储单元存储的最新的关键帧的地址;
第二获取子单元,用于获取所述第一获取子单元获取的所述最新的关键帧的地址与读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数;
第一计算子单元,用于根据所述第二获取子单元获取的所述最新的关键帧的地址与所述读指针当前所指地址之间存储的关键帧的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
9.如权利要求6所述的装置,其特征在于,所述第一存储单元包括:
第三获取子单元,用于根据网络摄像机传输过来的第一数据帧,获取所述第一数据帧的特征信息;
存储子单元,用于将所述第三获取子单元获取的所述第一数据帧的特征信息存储在所述第一地址所在数据块中。
10.如权利要求6所述的装置,所述第二查找单元包括:
第四获取子单元,用于获取所述写指针在所述循环缓冲器中当前所指的第二地址;
第五获取子单元,用于获取所述第四获取子单元获取的所述第二地址所在数据块与读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数;
第二计算子单元,用于根据所述第五获取子单元获取的所述第二地址所在数据块与所述读指针当前所指地址所在数据块之间数据块的数量,以及所述读指针的圈数,计算所述读指针在所述循环缓冲器中的地址,得到所述读指针在所述循环缓冲器中当前所指的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310743178.0A CN103761194B (zh) | 2013-12-28 | 2013-12-28 | 一种内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310743178.0A CN103761194B (zh) | 2013-12-28 | 2013-12-28 | 一种内存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103761194A true CN103761194A (zh) | 2014-04-30 |
CN103761194B CN103761194B (zh) | 2017-06-06 |
Family
ID=50528436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310743178.0A Active CN103761194B (zh) | 2013-12-28 | 2013-12-28 | 一种内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103761194B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107113731A (zh) * | 2015-01-20 | 2017-08-29 | 英特尔Ip公司 | 用于密集无线网络中的无线装置的节能信道接入 |
CN107957861A (zh) * | 2017-12-11 | 2018-04-24 | 中标软件有限公司 | 即时播放声卡信号输入通道中音频数据的方法及装置 |
CN108874560A (zh) * | 2018-06-05 | 2018-11-23 | 腾讯音乐娱乐科技(深圳)有限公司 | 进行通信的方法和通信设备 |
CN110447014A (zh) * | 2017-09-21 | 2019-11-12 | 谷歌有限责任公司 | 经由循环缓冲器访问高帧率雷达数据 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5455684A (en) * | 1992-09-22 | 1995-10-03 | Sony Corporation | Apparatus and method for processing a variable-rate coded signal for recording to provide a high-speed search capability, apparatus and method for reproducing such processed signal, and recording including such processed signal |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
CN1700348A (zh) * | 2004-05-17 | 2005-11-23 | 万国电脑股份有限公司 | 硅储存媒体及其控制器、控制方法以及应用资料框架格式 |
CN102063266A (zh) * | 2009-11-18 | 2011-05-18 | 联发科技股份有限公司 | 非易失存储器控制器与用于将当前数据写入非易失存储器的方法 |
JP5070240B2 (ja) * | 2009-04-17 | 2012-11-07 | アンリツ株式会社 | フレームデータ解析装置 |
-
2013
- 2013-12-28 CN CN201310743178.0A patent/CN103761194B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5455684A (en) * | 1992-09-22 | 1995-10-03 | Sony Corporation | Apparatus and method for processing a variable-rate coded signal for recording to provide a high-speed search capability, apparatus and method for reproducing such processed signal, and recording including such processed signal |
CN1411211A (zh) * | 2002-04-17 | 2003-04-16 | 华为技术有限公司 | 以太网交换芯片输出队列管理调度方法和装置 |
CN1700348A (zh) * | 2004-05-17 | 2005-11-23 | 万国电脑股份有限公司 | 硅储存媒体及其控制器、控制方法以及应用资料框架格式 |
JP5070240B2 (ja) * | 2009-04-17 | 2012-11-07 | アンリツ株式会社 | フレームデータ解析装置 |
CN102063266A (zh) * | 2009-11-18 | 2011-05-18 | 联发科技股份有限公司 | 非易失存储器控制器与用于将当前数据写入非易失存储器的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107113731A (zh) * | 2015-01-20 | 2017-08-29 | 英特尔Ip公司 | 用于密集无线网络中的无线装置的节能信道接入 |
CN107113731B (zh) * | 2015-01-20 | 2021-08-20 | 英特尔公司 | 用于密集无线网络中的无线装置的节能信道接入 |
CN110447014A (zh) * | 2017-09-21 | 2019-11-12 | 谷歌有限责任公司 | 经由循环缓冲器访问高帧率雷达数据 |
CN110447014B (zh) * | 2017-09-21 | 2023-12-12 | 谷歌有限责任公司 | 经由循环缓冲器访问高帧率雷达数据 |
CN107957861A (zh) * | 2017-12-11 | 2018-04-24 | 中标软件有限公司 | 即时播放声卡信号输入通道中音频数据的方法及装置 |
CN107957861B (zh) * | 2017-12-11 | 2021-02-09 | 中标软件有限公司 | 即时播放声卡信号输入通道中音频数据的方法及装置 |
CN108874560A (zh) * | 2018-06-05 | 2018-11-23 | 腾讯音乐娱乐科技(深圳)有限公司 | 进行通信的方法和通信设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103761194B (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102325244B (zh) | 按时间快速定位录像的方法、录像存储控制装置及定位装置 | |
CN103294615B (zh) | 一种存储机顶盒用户信息的方法 | |
CN106326292B (zh) | 数据结构和文件聚合、读取方法及装置 | |
KR20150095781A (ko) | 메모리 리클레임 방법 및 장치 | |
CN107704203B (zh) | 聚合大文件的删除方法、装置、设备及计算机存储介质 | |
CN110764706A (zh) | 存储系统、数据管理方法及存储介质 | |
CN105677742A (zh) | 一种存储文件的方法及装置 | |
CN109669622B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 | |
CN103761194A (zh) | 一种内存管理方法及装置 | |
CN103198027A (zh) | 一种存储文件和提供文件的方法和装置 | |
CN103617209A (zh) | 一种移动终端的文件管理方法及装置 | |
CN103716573A (zh) | 一种视频回放的方法和设备 | |
CN101895736B (zh) | 媒体流数据处理方法及其装置 | |
CN104200831A (zh) | 车载多媒体终端sd卡的存储方法 | |
CN113282239A (zh) | 数据迁移方法、存储器及控制器 | |
JP2017536599A (ja) | 記憶デバイスに記憶されたデータに関連付けられたメディア情報を特定する方法及び装置 | |
CN1812530B (zh) | 显示控制设备和方法 | |
CN104021178A (zh) | 多媒体信息过滤方法和装置 | |
CN109669623B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 | |
CN104484149A (zh) | Led显示屏同步控制系统脱机播放方法及装置 | |
CN105426125A (zh) | 一种数据存储方法及装置 | |
CN109040848A (zh) | 弹幕倒放方法、装置、电子设备及存储介质 | |
CN104731824A (zh) | 一种显示图片的方法及装置 | |
CN115080563A (zh) | 数据捕获方法、装置、系统、电子设备及存储介质 | |
CN103905694A (zh) | 一种关键帧处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |