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);