changeset 215:241bc55a1a4e refactoring

Move some more code into set_up_query()
author mas01cr
date Tue, 04 Dec 2007 10:17:30 +0000
parents 3254b15472f3
children cd3dced4f534
files audioDB.h query.cpp
diffstat 2 files changed, 34 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.h	Tue Dec 04 09:40:55 2007 +0000
+++ b/audioDB.h	Tue Dec 04 10:17:30 2007 +0000
@@ -196,7 +196,7 @@
   void initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD);
   void delete_arrays(int track, unsigned int numVectors, double **D, double **DD);
   void read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p);
-  void set_up_query(double **qp, double **qnp, unsigned int *nvp);
+  void set_up_query(double **qp, double **qnp, double **qpp, unsigned int *nvp);
   void trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse=0);
   void trackSequenceQueryRad(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse=0);
 
--- a/query.cpp	Tue Dec 04 09:40:55 2007 +0000
+++ b/query.cpp	Tue Dec 04 10:17:30 2007 +0000
@@ -165,7 +165,7 @@
   read(dbfid, *data_buffer_p, trackTable[track] * sizeof(double) * dbH->dim);
 }
 
-void audioDB::set_up_query(double **qp, double **qnp, unsigned *nvp) {
+void audioDB::set_up_query(double **qp, double **qnp, double **qpp, unsigned *nvp) {
   *nvp = (statbuf.st_size - sizeof(int)) / (dbH->dim * sizeof(double));
   
   if(!(dbH->flags & O2_FLAG_L2NORM)) {
@@ -184,6 +184,26 @@
   memcpy(*qp, indata+sizeof(int), *nvp * dbH->dim * sizeof(double));
   *qnp = new double[*nvp];
   unitNorm(*qp, dbH->dim, *nvp, *qnp);
+
+  sequence_sum(*qnp, *nvp, sequenceLength);
+  sequence_sqrt(*qnp, *nvp, sequenceLength);
+
+  if (usingPower) {
+    *qpp = new double[*nvp];
+    if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) {
+      error("error seeking to data", powerFileName, "lseek");
+    }
+    int count = read(powerfd, *qpp, *nvp * sizeof(double));
+    if (count == -1) {
+      error("error reading data", powerFileName, "read");
+    }
+    if ((unsigned) count != *nvp * sizeof(double)) {
+      error("short read", powerFileName);
+    }
+
+    sequence_sum(*qpp, *nvp, sequenceLength);
+    sequence_average(*qpp, *nvp, sequenceLength);
+  }
 }
 
 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){
@@ -192,25 +212,25 @@
   
   unsigned int numVectors;
   double *query, *query_data;
-  double *qNorm, *sNorm;
+  double *qNorm, *qnPtr, *qPower = 0, *qpPtr = 0;
 
-  set_up_query(&query, &qNorm, &numVectors);
+  set_up_query(&query, &qNorm, &qPower, &numVectors);
   query_data = query;
+  qpPtr = qPower;
+  qnPtr = qNorm;
 
   unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim);
 
-  sNorm = new double[dbVectors];
+  double *sNorm = new double[dbVectors];
 
   // Make norm measurements relative to sequenceLength
   unsigned i,j;
 
   // Copy the L2 norm values to core to avoid disk random access later on
   memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
-  double* qnPtr = qNorm;
   double* snPtr = sNorm;
 
-  double *sPower = 0, *qPower = 0;
-  double *spPtr = 0, *qpPtr = 0;
+  double *sPower = 0, *spPtr = 0;
 
   if (usingPower) {
     if (!(dbH->flags & O2_FLAG_POWER)) {
@@ -237,27 +257,6 @@
     }
   }
   
-  sequence_sum(qnPtr, numVectors, sequenceLength);
-  sequence_sqrt(qnPtr, numVectors, sequenceLength);
-
-  if (usingPower) {
-    qPower = new double[numVectors];
-    qpPtr = qPower;
-    if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) {
-      error("error seeking to data", powerFileName, "lseek");
-    }
-    int count = read(powerfd, qPower, numVectors * sizeof(double));
-    if (count == -1) {
-      error("error reading data", powerFileName, "read");
-    }
-    if ((unsigned) count != numVectors * sizeof(double)) {
-      error("short read", powerFileName);
-    }
-
-    sequence_sum(qpPtr, numVectors, sequenceLength);
-    sequence_average(qpPtr, numVectors, sequenceLength);
-  }
-
   if(verbosity>1) {
     std::cerr << "done." << std::endl;
   }
@@ -590,14 +589,16 @@
   
   unsigned int numVectors;
   double *query, *query_data;
-  double *qNorm, *sNorm;
+  double *qNorm, *qnPtr, *qPower = 0, *qpPtr = 0;
 
-  set_up_query(&query, &qNorm, &numVectors);
+  set_up_query(&query, &qNorm, &qPower, &numVectors);
   query_data = query;
+  qpPtr = qPower;
+  qnPtr = qNorm;
 
   unsigned dbVectors = dbH->length/(sizeof(double)*dbH->dim);
 
-  sNorm = new double[dbVectors];
+  double *sNorm = new double[dbVectors];
 
   // Make norm measurements relative to sequenceLength
   unsigned i,j;
@@ -605,10 +606,8 @@
   // Copy the L2 norm values to core to avoid disk random access later on
   memcpy(sNorm, l2normTable, dbVectors*sizeof(double));
   double* snPtr = sNorm;
-  double* qnPtr = qNorm;
 
-  double *sPower = 0, *qPower = 0;
-  double *spPtr = 0, *qpPtr = 0;
+  double *sPower = 0, *spPtr = 0;
 
   if (usingPower) {
     if(!(dbH->flags & O2_FLAG_POWER)) {
@@ -634,27 +633,6 @@
     }
   }
   
-  sequence_sum(qnPtr, numVectors, sequenceLength);
-  sequence_sqrt(qnPtr, numVectors, sequenceLength);
-
-  if (usingPower) {
-    qPower = new double[numVectors];
-    qpPtr = qPower;
-    if (lseek(powerfd, sizeof(int), SEEK_SET) == (off_t) -1) {
-      error("error seeking to data", powerFileName, "lseek");
-    }
-    int count = read(powerfd, qPower, numVectors * sizeof(double));
-    if (count == -1) {
-      error("error reading data", powerFileName, "read");
-    }
-    if ((unsigned) count != numVectors * sizeof(double)) {
-      error("short read", powerFileName);
-    }
-
-    sequence_sum(qpPtr, numVectors, sequenceLength);
-    sequence_average(qpPtr, numVectors, sequenceLength);
-  }
-
   if(verbosity>1) {
     std::cerr << "done." << std::endl;    
   }