Mercurial > hg > audiodb
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"); |