[发明专利]快速文件预分配与文件箱动态管理方法无效
申请号: | 200610148339.1 | 申请日: | 2006-12-29 |
公开(公告)号: | CN101211338A | 公开(公告)日: | 2008-07-02 |
发明(设计)人: | 马轶群 | 申请(专利权)人: | 上海欣泰通信技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;H04N7/18 |
代理公司: | 上海申汇专利代理有限公司 | 代理人: | 翁若莹 |
地址: | 200437*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及提供一种方法来高性能的存取视频录像记录。其特征在于,在流媒体服务器上以软件方式实现。软件是以C++语言编写,安装在Windows操作系统上。软件通过和NTFS文件系统及Windows API的配合,对上提供一层抽象的文件系统服务层,文件系统服务层提供了录像记录操作的基本接口,使用这些接口能够始终高效且安全的存取录像数据,并且不会在文件系统中产生文件碎片。本发明的优点是架构简单而清晰,只需投入少量的技术改造就能使得流媒体服务器能够长期稳定、高效的运行。 | ||
搜索关键词: | 快速 文件 分配 动态 管理 方法 | ||
【主权项】:
1.一种快速文件预分配与文件箱动态管理方法,其特征在于,在流媒体服务器上以软件方式实现,软件是以C++语言编写,安装在Windows操作系统上,软件通过和NTFS文件系统及Windows API的配合,对上提供一层抽象的文件系统服务层,文件系统服务层提供了录像记录操作的基本接口,使用这些接口能够始终高效且安全的存取录像数据,并且不会在文件系统中产生文件碎片,其方法为:步骤1.生成一个Windows的DLL,在DLL中输出如下函数Init、AddNew、Update、Delete、Find,其中,Init为初始化方法,即初始化文件箱;AddNew代表新增一条记录;Update代表更新一条记录;Delete代表删除一条记录;Find代表查找一条记录;步骤2.首先,实现初始化方法Init,调用初始化方法时完成如下工作:a)预先生成一个4 GB的文件,具体方法为先调用fopen函数生成一个空白文件;b)在预先生成的文件中产生至少一个文件箱每一个文件由索引区和数据区两大部分构成,大小为2M,地址为0~200000H,索引区由索引头和索引表组成,索引头大小为100个BYTE,地址为0~64H,索引头前9个BYTE为头标识,值是ASC码“INDEXHEAD”,4个BYTE为当前录像记录总数,其余的空间都做为保留位,索引表大小为2097052BYTE,地址为65H~200000H,索引表以连续地址的方式存放了每条索引,并且按照记录序列号的字符串以升序方式排序,整个索引表共能存放41941条索引;索引表之后是数据区,数据区地址为200001H~100000000H,将数据区划分为多个定长的数据块,每个数据块能且只能保存一条录像记录。每个数据块的长度为5M,格式如下:使用标志+记录序列号+数据长度+数据,“使用标志”为此块数据是否被使用的标志,占1 BYTE,如未使用为0,已使用为1;“记录序列号”就是录像的序列号,“数据长度”是录像数据的总长度,占4个BYTE,数据就是录像的实际数据,整个数据区由首地址开始连续存放着多个数据块,可以存放800条以上录像记录;步骤3.进行“查询”、“新增”、“更新”、“删除”、(1)查询Find方法实现如下:首先利用二分查找法在索引表中查找对应的录像序列号,如果找到录像序列号,则得到记录的实际地址,再从记录的地址读出数据头,根据使用情况和数据长度就最终找到了实际录像数据,如果在索引表中没有找到录像序列号,则查找失败,返回空:二分查找的基本思想是:设R[low..high]是当前的查找区间a)首先确定该区间的中点位置;b)然后将待查的K值与R[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找,具体方法如下:①若R[mid].key>K,则由表的有序性可知R[mid..n].keys均大于K,因此若表中存在关键字等于K的结点,则该结点必定是在位置mid左边的子表R[1..mid-1]中,故新的查找区间是左子表R[1..mid-1];②类似地,若R[mid].key<K,则要查找的K必在mid的右子表R[mid+1..n]中,即新的查找区间是右子表R[mid+1..n],下一次查找是针对新的查找区间进行的;(2)新增AddNew方法实现如下:首先利用二分查找法在索引表中查找对应的录像序列号。如果找到录像序列号,则返回新增失败,如果没有找到序列号,就计算此序列号在索引表中的可以存放的地址,设为X,接着遍历数据段,查询数据段的使用情况,直到找到一块未使用的数据段,找到未使用数据段后将录像数据保存在数据段的数据部分,再改写数据头部分,改写使用状态为已使用,改写记录序列号和数据长度字段,接着,改写索引表,首先将前面得到的地址X后的所有索引数据向后移动50 Byte,再在X地址处插入新的记录的索引,填写索引的记录序列号和记录地址,最后修改索引头,将记录总数加1;(3)更新Update方法实现如下:首先利用二分查找法在索引表中查找对应的录像序列号,如果没有找到录像序列号,则返回更新失败,如果找到序列号,再获取索引中的记录地址,更改地址的数据段和数据头就完成了更新操作;(4)删除Delete方法实现如下:先利用二分查找法在索引表中查找对应的录像序列号,如果没有找到录像序列号,则返回删除失败,如果找到序列号,再获取索引中的记录地址和索引的地址,更改地址对应的数据段的数据头,将使用标志改为未使用,再将索引地址+50 Byte后的所有索引表数据全部向前挪动50 Byte,最后修改索引头,将记录总数减1。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海欣泰通信技术有限公司,未经上海欣泰通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200610148339.1/,转载请声明来源钻瓜专利网。
- 上一篇:一种制备太阳电池背铝硅合金结的工艺
- 下一篇:空气源热泵系统及其除霜方法