annotate libtests/0009/prog1.c @ 539:06ed85832c3b multiprobeLSH

Optimized the query_loop_points inner loop for memcpy and I/O efficiency. Uses sparse seeks and reads to perform scattered reads across data set. Current version does not cache fid between open calls to the same trackID.
author mas01mc
date Sat, 07 Feb 2009 01:20:05 +0000
parents 342822c2d49a
children bcc7a6ddb2c8
rev   line source
mas01cr@498 1 #include "audioDB_API.h"
mas01cr@498 2 #include "test_utils_lib.h"
mas01ik@355 3
mas01cr@498 4 int main(int argc, char **argv) {
mas01cr@498 5 adb_t *adb;
mas01ik@355 6
mas01cr@498 7 clean_remove_db(TESTDB);
mas01cr@498 8 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@498 9 return 1;
mas01cr@498 10 if(audiodb_l2norm(adb))
mas01cr@498 11 return 1;
mas01ik@355 12
mas01cr@498 13 adb_datum_t datum1 = {1, 2, "testfeature01", (double[2]) {0, 1}};
mas01cr@498 14 adb_datum_t datum2 = {1, 2, "testfeature10", (double[2]) {1, 0}};
mas01cr@498 15 if(audiodb_insert_datum(adb, &datum1))
mas01cr@498 16 return 1;
mas01cr@498 17 if(audiodb_insert_datum(adb, &datum2))
mas01cr@498 18 return 1;
mas01ik@355 19
mas01cr@498 20 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01ik@355 21
mas01cr@498 22 adb_query_id_t qid = {0};
mas01cr@498 23 qid.datum = &query;
mas01cr@498 24 qid.sequence_length = 1;
mas01cr@498 25 qid.sequence_start = 0;
mas01cr@498 26 adb_query_parameters_t parms =
mas01cr@498 27 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_DOT_PRODUCT, 10, 10};
mas01cr@498 28 adb_query_refine_t refine = {0};
mas01cr@498 29 refine.hopsize = 1;
mas01ik@355 30
mas01cr@498 31 adb_query_spec_t spec;
mas01cr@498 32 spec.qid = qid;
mas01cr@498 33 spec.params = parms;
mas01cr@498 34 spec.refine = refine;
mas01ik@355 35
mas01cr@498 36 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 37 if(!results || results->nresults != 2) return 1;
mas01cr@498 38 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 39 result_present_or_fail(results, "testfeature10", 0, 0, 0);
mas01cr@498 40 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 41
mas01cr@498 42 spec.params.ntracks = 1;
mas01cr@498 43 results = audiodb_query_spec(adb, &spec);
mas01cr@498 44 if(!results || results->nresults != 1) return 1;
mas01cr@498 45 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 46 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 47
mas01cr@498 48 spec.qid.datum->data = (double [2]) {0.5, 0};
mas01cr@498 49 spec.params.ntracks = 10;
mas01cr@498 50 results = audiodb_query_spec(adb, &spec);
mas01cr@498 51 if(!results || results->nresults != 2) return 1;
mas01cr@498 52 result_present_or_fail(results, "testfeature10", 0.5, 0, 0);
mas01cr@498 53 result_present_or_fail(results, "testfeature01", 0, 0, 0);
mas01cr@498 54 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 55
mas01cr@498 56 spec.params.ntracks = 1;
mas01cr@498 57 results = audiodb_query_spec(adb, &spec);
mas01cr@498 58 if(!results || results->nresults != 1) return 1;
mas01cr@498 59 result_present_or_fail(results, "testfeature10", 0.5, 0, 0);
mas01cr@498 60 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 61
mas01cr@498 62 audiodb_close(adb);
mas01ik@355 63
mas01cr@498 64 return 104;
mas01ik@355 65 }