annotate audioDB_API.h @ 355:94c18f128ce8

First version of the API, committed to the main trunk. Thanks Christophe, for all the help!
author mas01ik
date Wed, 12 Nov 2008 10:21:06 +0000
parents
children 8749d5bf6361
rev   line source
mas01ik@355 1 /* for API questions contact
mas01ik@355 2 * Christophe Rhodes c.rhodes@gold.ac.uk
mas01ik@355 3 * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */
mas01ik@355 4
mas01ik@355 5
mas01ik@355 6 /*******************************************************************/
mas01ik@355 7 /* Data types for API */
mas01ik@355 8
mas01ik@355 9 /* The main struct that stores the name of the database, and in future will hold all
mas01ik@355 10 * kinds of other interesting information */
mas01ik@355 11 /* This basically gets passed around to all of the other functions */
mas01ik@355 12 struct adb {
mas01ik@355 13
mas01ik@355 14 char * dbname;
mas01ik@355 15 unsigned int ntracks; /* number of tracks */
mas01ik@355 16 unsigned int datadim; /* dimensionality of stored data */
mas01ik@355 17
mas01ik@355 18 };
mas01ik@355 19 typedef struct adb adb_t, *adb_ptr;
mas01ik@355 20
mas01ik@355 21 //used for both insert and batchinsert
mas01ik@355 22 struct adbinsert {
mas01ik@355 23
mas01ik@355 24 char * features;
mas01ik@355 25 char * power;
mas01ik@355 26 char * key;
mas01ik@355 27 char * times;
mas01ik@355 28
mas01ik@355 29 };
mas01ik@355 30 typedef struct adbinsert adb_insert_t, *adb_insert_ptr;
mas01ik@355 31
mas01ik@355 32 /* struct for returning status results */
mas01ik@355 33 struct adbstatus {
mas01ik@355 34
mas01ik@355 35 unsigned int numFiles;
mas01ik@355 36 unsigned int dim;
mas01ik@355 37 unsigned int length;
mas01ik@355 38 unsigned int dudCount;
mas01ik@355 39 unsigned int nullCount;
mas01ik@355 40 unsigned int flags;
mas01ik@355 41
mas01ik@355 42 };
mas01ik@355 43 typedef struct adbstatus adb_status_t, *adb_status_ptr;
mas01ik@355 44
mas01ik@355 45 /* needed for constructing a query */
mas01ik@355 46 struct adbquery {
mas01ik@355 47
mas01ik@355 48 char * querytype;
mas01ik@355 49 char * feature; //usually a file of some kind
mas01ik@355 50 char * power; //also a file
mas01ik@355 51 char * keylist; //also a file
mas01ik@355 52 char * qpoint; //position
mas01ik@355 53 char * numpoints;
mas01ik@355 54 char * radius;
mas01ik@355 55 char * resultlength; //how many results to make
mas01ik@355 56 char * sequencelength;
mas01ik@355 57 char * sequencehop;
mas01ik@355 58 double absolute_threshold;
mas01ik@355 59 double relative_threshold;
mas01ik@355 60 int exhaustive; //hidden option in gengetopt
mas01ik@355 61 double expandfactor; //hidden
mas01ik@355 62 int rotate; //hidden
mas01ik@355 63
mas01ik@355 64 };
mas01ik@355 65 typedef struct adbquery adb_query_t,*adb_query_ptr;
mas01ik@355 66
mas01ik@355 67 /* ... and for getting query results back */
mas01ik@355 68 struct adbqueryresult {
mas01ik@355 69
mas01ik@355 70 int sizeRlist; /* do I really need to return all 4 sizes here */
mas01ik@355 71 int sizeDist;
mas01ik@355 72 int sizeQpos;
mas01ik@355 73 int sizeSpos;
mas01ik@355 74 char **Rlist;
mas01ik@355 75 double *Dist;
mas01ik@355 76 unsigned int *Qpos;
mas01ik@355 77 unsigned int *Spos;
mas01ik@355 78
mas01ik@355 79 };
mas01ik@355 80 typedef struct adbqueryresult adb_queryresult_t, *adb_queryresult_ptr;
mas01ik@355 81
mas01ik@355 82
mas01ik@355 83 /*******************************************************************/
mas01ik@355 84 /* Function prototypes for API */
mas01ik@355 85
mas01ik@355 86
mas01ik@355 87 /* open an existing database */
mas01ik@355 88 /* returns a struct or NULL on failure */
mas01ik@355 89 adb_ptr audiodb_open(char * path);
mas01ik@355 90
mas01ik@355 91 /* create a new database */
mas01ik@355 92 /* returns a struct or NULL on failure */
mas01ik@355 93 //adb_ptr audiodb_create(char * path,long ntracks, long datadim);
mas01ik@355 94 adb_ptr audiodb_create(char * path,long datasize, long ntracks, long datadim);
mas01ik@355 95
mas01ik@355 96 /* close a database */
mas01ik@355 97 void audiodb_close(adb_ptr db);
mas01ik@355 98
mas01ik@355 99 /* You'll need to turn both of these on to do anything useful */
mas01ik@355 100 int audiodb_l2norm(adb_ptr mydb);
mas01ik@355 101 int audiodb_power(adb_ptr mydb);
mas01ik@355 102
mas01ik@355 103 /* insert functions */
mas01ik@355 104 int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins);
mas01ik@355 105 int audiodb_batchinsert(adb_ptr mydb, adb_insert_ptr ins, unsigned int size);
mas01ik@355 106
mas01ik@355 107 /* query function */
mas01ik@355 108 int audiodb_query(adb_ptr mydb, adb_query_ptr adbq, adb_queryresult_ptr adbqres);
mas01ik@355 109
mas01ik@355 110 /* database status */
mas01ik@355 111 int audiodb_status(adb_ptr mydb, adb_status_ptr status);
mas01ik@355 112
mas01ik@355 113 /* varoius dump formats */
mas01ik@355 114 int audiodb_dump(adb_ptr mydb);
mas01ik@355 115 int audiodb_dump_withdir(adb_ptr mydb, char * outputdir);
mas01ik@355 116
mas01ik@355 117