基于嵌入式视频存储的专用文件系统设计
每个文件信息包含以下信息:文件开始时间和结束时间,文件开始索引块地址和结束索引块地址,文件开始数据块地址和结束数据块地址等。下面为典型的文件信息结构:
typedef struct {
UInt32 FileID;/*文件序号*/
time_t FileStartTime;/*录像开始时间*/
1/2 12下一页尾页
time_t FileEndTime;/*录像结束时间*/
UInt32 FileStartDBN;/*文件开始DBN*/
UInt32 FileEndDBN;/*文件结束DBN*/
IndexInfoAddr IndexInfoStart;/*索引信息开始地址*/
IndexInfoAddr IndexInfoEnd;/*索引信息结束地址*/
} FileInfo;
2.4 索引信息区
索引信息区用于保存录像文件所使用数据块的索引信息。索引信息也分为两部分,分别为分区一和分区二,用于描述覆盖前和覆盖后的索引信息。每个分区根据最大文件数按录像路数顺序分配存储空间。
每个录像文件至少需要使用一个索引块,每个索引电感器厂家块包含N个索引信息,一个数据块对应一个索引信息。每个索引信息描述下一个数据块的物理偏离和时间偏移,每个索引块描述本索引块所描述第一个数据块的物理地址和时间偏移。典型的数据结构如下:
typedef struct {
UInt8 TimeOffset;/*与上一个数据块的时间偏移*/
UInt8 DBNOffset;/*与上一个数据块的物理偏移*/
} IndexInfo; /*索引信息*/
typedef struct {
UInt16 BeginDBN;/*本索引块的起始数据块地址*/
UInt16 TimeOffset;/*本索引块与上一个索引块的时间偏移*/
IndexInfo IndexInfo[N];
} IndexBlockInfo; /*索引块信息,包含N个索引信息*/
2.5 数据区
数据区是指整个磁盘空间除了用于以上文件系统开销外的所有空间,重新划分为若干个数据块,数据块的大小可以自由设置。数据块是指录像数据保存的最小单元,一般以32~512 KB之间为宜,每个数据块的头部保留几个字节用于保存本数据块的时间戳和相关数据块的地址偏移。