diff audioDB-internals.h @ 693:b1723ae7675e

begin work on sampling API This is motivated by the need to be able to sample with arbitrary feature data (e.g. from a feature file) against a database, for the JNMR "collections" paper revisions or possible ISMIR paper revisions. That bit doesn't work yet, but the C-ified version of the current functionality (sample db x db and sample key x db) works to the level of anecdotal tests. The general approach is to mirror the _query_spec() API, where a whole heap of knobs and twiddles are available to the user. Unlike in the _query_spec() API, not quite all of the knobs make sense (and even fewer are actually implemented), but the basic idea is the same. I pity the poor chump who will have to document all this.
author mas01cr
date Thu, 22 Apr 2010 21:03:47 +0000
parents e1f7cab30701
children ddf08008d45b
line wrap: on
line diff
--- a/audioDB-internals.h	Thu Apr 22 15:43:26 2010 +0000
+++ b/audioDB-internals.h	Thu Apr 22 21:03:47 2010 +0000
@@ -6,6 +6,7 @@
 #endif
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <sys/time.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -21,6 +22,8 @@
 #include <windows.h>
 #endif
 
+#include <gsl/gsl_rng.h>
+
 #include <algorithm>
 #include <iostream>
 #include <map>
@@ -119,6 +122,7 @@
   std::vector<uint32_t> *track_lengths;
   std::vector<off_t> *track_offsets;
   LSH *cached_lsh;
+  gsl_rng *rng;
 };
 
 typedef struct {
@@ -374,6 +378,7 @@
 void audiodb_index_delete_shingles(vector<vector<float> > *);
 void audiodb_index_make_shingle(vector<vector<float> > *, uint32_t, double *, uint32_t, uint32_t);
 int audiodb_index_norm_shingles(vector<vector<float> > *, double *, double *, uint32_t, uint32_t, double, bool, bool, float);
+int audiodb_sample_loop(adb_t *, const adb_query_spec_t *, adb_qstate_internal_t *);
 
 #define ADB_MAXSTR (512U)
 #define ADB_FILETABLE_ENTRY_SIZE (256U)