Mercurial > hg > audiodb
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audioDB_API.h Wed Nov 12 10:21:06 2008 +0000 @@ -0,0 +1,117 @@ +/* for API questions contact + * Christophe Rhodes c.rhodes@gold.ac.uk + * Ian Knopke mas01ik@gold.ac.uk, ian.knopke@gmail.com */ + + +/*******************************************************************/ +/* Data types for API */ + +/* The main struct that stores the name of the database, and in future will hold all + * kinds of other interesting information */ +/* This basically gets passed around to all of the other functions */ +struct adb { + + char * dbname; + unsigned int ntracks; /* number of tracks */ + unsigned int datadim; /* dimensionality of stored data */ + +}; +typedef struct adb adb_t, *adb_ptr; + +//used for both insert and batchinsert +struct adbinsert { + + char * features; + char * power; + char * key; + char * times; + +}; +typedef struct adbinsert adb_insert_t, *adb_insert_ptr; + +/* struct for returning status results */ +struct adbstatus { + + unsigned int numFiles; + unsigned int dim; + unsigned int length; + unsigned int dudCount; + unsigned int nullCount; + unsigned int flags; + +}; +typedef struct adbstatus adb_status_t, *adb_status_ptr; + +/* needed for constructing a query */ +struct adbquery { + + char * querytype; + char * feature; //usually a file of some kind + char * power; //also a file + char * keylist; //also a file + char * qpoint; //position + char * numpoints; + char * radius; + char * resultlength; //how many results to make + char * sequencelength; + char * sequencehop; + double absolute_threshold; + double relative_threshold; + int exhaustive; //hidden option in gengetopt + double expandfactor; //hidden + int rotate; //hidden + +}; +typedef struct adbquery adb_query_t,*adb_query_ptr; + +/* ... and for getting query results back */ +struct adbqueryresult { + + int sizeRlist; /* do I really need to return all 4 sizes here */ + int sizeDist; + int sizeQpos; + int sizeSpos; + char **Rlist; + double *Dist; + unsigned int *Qpos; + unsigned int *Spos; + +}; +typedef struct adbqueryresult adb_queryresult_t, *adb_queryresult_ptr; + + +/*******************************************************************/ +/* Function prototypes for API */ + + +/* open an existing database */ +/* returns a struct or NULL on failure */ +adb_ptr audiodb_open(char * path); + +/* create a new database */ +/* returns a struct or NULL on failure */ +//adb_ptr audiodb_create(char * path,long ntracks, long datadim); +adb_ptr audiodb_create(char * path,long datasize, long ntracks, long datadim); + +/* close a database */ +void audiodb_close(adb_ptr db); + +/* You'll need to turn both of these on to do anything useful */ +int audiodb_l2norm(adb_ptr mydb); +int audiodb_power(adb_ptr mydb); + +/* insert functions */ +int audiodb_insert(adb_ptr mydb, adb_insert_ptr ins); +int audiodb_batchinsert(adb_ptr mydb, adb_insert_ptr ins, unsigned int size); + +/* query function */ +int audiodb_query(adb_ptr mydb, adb_query_ptr adbq, adb_queryresult_ptr adbqres); + +/* database status */ +int audiodb_status(adb_ptr mydb, adb_status_ptr status); + +/* varoius dump formats */ +int audiodb_dump(adb_ptr mydb); +int audiodb_dump_withdir(adb_ptr mydb, char * outputdir); + +