comparison create.cpp @ 277:abfb26e08d9c audiodb-debian

Merge trunk changes -r326:386 into audiodb-debian branch. Plus new debian/changelog version. (Should have used an epoch really, but couldn't be bothered; TODO: work out a sane version numbering policy).
author mas01cr
date Tue, 01 Jul 2008 09:12:40 +0000
parents 15b8ff55ea5b
children 896679d8cc39
comparison
equal deleted inserted replaced
246:cbf51690c78c 277:abfb26e08d9c
22 VERB_LOG(0, "header size: %ju\n", (intmax_t) O2_HEADERSIZE); 22 VERB_LOG(0, "header size: %ju\n", (intmax_t) O2_HEADERSIZE);
23 23
24 dbH = new dbTableHeaderT(); 24 dbH = new dbTableHeaderT();
25 assert(dbH); 25 assert(dbH);
26 26
27 unsigned int maxfiles = (unsigned int) rint((double) O2_MAXFILES * (double) size / (double) O2_DEFAULTDBSIZE); 27 //unsigned int maxfiles = (unsigned int) rint((double) O2_MAXFILES * (double) size / (double) O2_DEFAULTDBSIZE);
28 28
29 // Initialize header 29 // Initialize header
30 dbH->magic = O2_MAGIC; 30 dbH->magic = O2_MAGIC;
31 dbH->version = O2_FORMAT_VERSION; 31 dbH->version = O2_FORMAT_VERSION;
32 dbH->numFiles = 0; 32 dbH->numFiles = 0;
33 dbH->dim = 0; 33 dbH->dim = 0;
34 dbH->flags = 0; 34 dbH->flags = 0;
35 dbH->headerSize = O2_HEADERSIZE; 35 dbH->headerSize = O2_HEADERSIZE;
36 dbH->length = 0; 36 dbH->length = 0;
37 dbH->fileTableOffset = ALIGN_PAGE_UP(O2_HEADERSIZE); 37 dbH->fileTableOffset = ALIGN_PAGE_UP(O2_HEADERSIZE);
38 dbH->trackTableOffset = ALIGN_PAGE_UP(dbH->fileTableOffset + O2_FILETABLESIZE*maxfiles); 38 dbH->trackTableOffset = ALIGN_PAGE_UP(dbH->fileTableOffset + O2_FILETABLE_ENTRY_SIZE*ntracks);
39 dbH->dataOffset = ALIGN_PAGE_UP(dbH->trackTableOffset + O2_TRACKTABLESIZE*maxfiles); 39 dbH->dataOffset = ALIGN_PAGE_UP(dbH->trackTableOffset + O2_TRACKTABLE_ENTRY_SIZE*ntracks);
40 dbH->l2normTableOffset = ALIGN_PAGE_DOWN(size - maxfiles*O2_MEANNUMVECTORS*sizeof(double)); 40
41 dbH->powerTableOffset = ALIGN_PAGE_DOWN(dbH->l2normTableOffset - maxfiles*O2_MEANNUMVECTORS*sizeof(double)); 41 off_t databytes = ((off_t) datasize) * 1024 * 1024;
42 dbH->timesTableOffset = ALIGN_PAGE_DOWN(dbH->powerTableOffset - 2*maxfiles*O2_MEANNUMVECTORS*sizeof(double)); 42 off_t auxbytes = databytes / datadim;
43 dbH->dbSize = size; 43
44 dbH->timesTableOffset = ALIGN_PAGE_UP(dbH->dataOffset + databytes);
45 dbH->powerTableOffset = ALIGN_PAGE_UP(dbH->timesTableOffset + 2*auxbytes);
46 dbH->l2normTableOffset = ALIGN_PAGE_UP(dbH->powerTableOffset + auxbytes);
47 dbH->dbSize = ALIGN_PAGE_UP(dbH->l2normTableOffset + auxbytes);
44 48
45 write(dbfid, dbH, O2_HEADERSIZE); 49 write(dbfid, dbH, O2_HEADERSIZE);
46 50
47 // go to the location corresponding to the last byte 51 // go to the location corresponding to the last byte
48 if (lseek (dbfid, size - 1, SEEK_SET) == -1) 52 if (lseek (dbfid, dbH->dbSize - 1, SEEK_SET) == -1)
49 error("lseek error in db file", "", "lseek"); 53 error("lseek error in db file", "", "lseek");
50 54
51 // write a dummy byte at the last location 55 // write a dummy byte at the last location
52 if (write (dbfid, "", 1) != 1) 56 if (write (dbfid, "", 1) != 1)
53 error("write error", "", "write"); 57 error("write error", "", "write");