Mercurial > hg > audiodb
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)