changeset 209:c9722e12acae refactoring

Make reading the data in be its own function
author mas01cr
date Thu, 29 Nov 2007 10:18:04 +0000
parents cb126d467344
children 50da444004fe
files audioDB.h query.cpp
diffstat 2 files changed, 26 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.h	Wed Nov 28 17:46:02 2007 +0000
+++ b/audioDB.h	Thu Nov 29 10:18:04 2007 +0000
@@ -196,6 +196,7 @@
   void sequence_average(double *buffer, int length, int seqlen);
 
   void initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD);
+  void read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p);
   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	Wed Nov 28 17:46:02 2007 +0000
+++ b/query.cpp	Thu Nov 29 10:18:04 2007 +0000
@@ -110,7 +110,7 @@
   // HOP SIZE == 1
   double* spd;
   if(HOP_SIZE == 1) { // HOP_SIZE = shingleHop
-    for(w = 0; w < wL; w++)
+    for(w = 0; w < wL; w++) {
       for(j = 0; j < numVectors - w; j++) { 
         sp = DD[j];
         spd = D[j+w] + w;
@@ -118,8 +118,9 @@
         while(k--)
           *sp++ += *spd++;
       }
+    }
   } else { // HOP_SIZE != 1
-    for(w = 0; w < wL; w++)
+    for(w = 0; w < wL; w++) {
       for(j = 0; j < numVectors - w; j += HOP_SIZE) {
         sp = DD[j];
         spd = D[j+w]+w;
@@ -129,9 +130,28 @@
           spd += HOP_SIZE;
         }
       }
+    }
   }
 }
 
+void audioDB::read_data(int track, double **data_buffer_p, size_t *data_buffer_size_p) {
+  if (trackTable[track] * sizeof(double) * dbH->dim > *data_buffer_size_p) {
+    if(*data_buffer_p) {
+      free(*data_buffer_p);
+    }
+    { 
+      *data_buffer_size_p = trackTable[track] * sizeof(double) * dbH->dim;
+      void *tmp = malloc(*data_buffer_size_p);
+      if (tmp == NULL) {
+        error("error allocating data buffer");
+      }
+      *data_buffer_p = (double *) tmp;
+    }
+  }
+
+  read(dbfid, *data_buffer_p, trackTable[track] * sizeof(double) * dbH->dim);
+}
+
 void audioDB::trackSequenceQueryNN(const char* dbName, const char* inFile, adb__queryResponse *adbQueryResponse){
   
   initTables(dbName, inFile);
@@ -369,23 +389,8 @@
       if(verbosity>7) {
 	std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush();
       }
-		
-      if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) {
-	if(data_buffer) {
-	  free(data_buffer);
-	}
-	{ 
-	  data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim;
-	  void *tmp = malloc(data_buffer_size);
-	  if (tmp == NULL) {
-	    error("error allocating data buffer");
-	  }
-	  data_buffer = (double *) tmp;
-	}
-      }
-
-      read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim);
-
+      
+      read_data(track, &data_buffer, &data_buffer_size);
       initialize_arrays(track, numVectors, query, data_buffer, D, DD);
 
       if(verbosity>3 && usingTimes) {
@@ -806,22 +811,7 @@
 	std::cerr << track << "." << trackIndexOffset << "." << trackTable[track] << " | ";std::cerr.flush();
       }
 
-      if (trackTable[track] * sizeof(double) * dbH->dim > data_buffer_size) {
-	if(data_buffer) {
-	  free(data_buffer);
-	}
-	{ 
-	  data_buffer_size = trackTable[track] * sizeof(double) * dbH->dim;
-	  void *tmp = malloc(data_buffer_size);
-	  if (tmp == NULL) {
-	    error("error allocating data buffer");
-	  }
-	  data_buffer = (double *) tmp;
-	}
-      }
-
-      read(dbfid, data_buffer, trackTable[track] * sizeof(double) * dbH->dim);
-
+      read_data(track, &data_buffer, &data_buffer_size);
       initialize_arrays(track, numVectors, query, data_buffer, D, DD);
 
       if(verbosity>3 && usingTimes) {