Mercurial > hg > audiodb
diff audioDB.cpp @ 144:6ae986868114 powertable
Hack in power table filling for single track insert.
author | mas01cr |
---|---|
date | Tue, 30 Oct 2007 15:13:01 +0000 |
parents | c74048e9b569 |
children | 7162a8e9ab12 |
line wrap: on
line diff
--- a/audioDB.cpp Tue Oct 30 14:39:12 2007 +0000 +++ b/audioDB.cpp Tue Oct 30 15:13:01 2007 +0000 @@ -234,6 +234,15 @@ usingTimes=1; } } + if (args_info.power_given) { + powerFileName = args_info.power_arg; + if (strlen(powerFileName) > 0) { + if (!(powerfd = open(powerFileName, O_RDONLY))) { + error("Could not open power file for reading", powerFileName, "open"); + } + usingPower = 1; + } + } return 0; } @@ -556,6 +565,9 @@ assert(timesdata+numVectors<l2normTable); insertTimeStamps(numVectors, timesFile, timesdata); + double *powerdata = powerTable + timesoffset; + insertPowerData(numVectors, powerfd, powerdata); + // Increment file count dbH->numFiles++; @@ -641,6 +653,28 @@ } } +void audioDB::insertPowerData(unsigned numVectors, int powerfd, double *powerdata) { + if (usingPower) { + int one; + unsigned int count; + + count = read(powerfd, &one, sizeof(unsigned int)); + if (count != sizeof(unsigned int)) { + error("powerfd read failed", "int", "read"); + } + if (one != 1) { + error("dimensionality of power file not 1", powerFileName); + } + + // FIXME: should check that the powerfile is the right size for + // this. -- CSR, 2007-10-30 + count = read(powerfd, powerdata, numVectors * sizeof(double)); + if (count != numVectors * sizeof(double)) { + error("powerfd read failed", "double", "read"); + } + } +} + void audioDB::batchinsert(const char* dbName, const char* inFile) { initDBHeader(dbName, true);