annotate libtests/0011/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;
mas01ik@355 10
mas01cr@498 11 adb_datum_t datum = {2, 2, "testfeature", (double[4]) {0, 0.5, 0.5, 0}};
mas01cr@498 12 if(audiodb_insert_datum(adb, &datum))
mas01cr@498 13 return 1;
mas01cr@498 14 if(audiodb_l2norm(adb))
mas01cr@498 15 return 1;
mas01ik@355 16
mas01cr@498 17 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01cr@498 18 adb_query_id_t qid = {0};
mas01cr@498 19 qid.datum = &query;
mas01cr@498 20 qid.sequence_length = 1;
mas01cr@498 21 qid.sequence_start = 0;
mas01cr@498 22 adb_query_parameters_t parms =
mas01cr@498 23 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10};
mas01cr@498 24 adb_query_refine_t refine = {0};
mas01cr@498 25 refine.hopsize = 1;
mas01ik@355 26
mas01cr@498 27 adb_query_spec_t spec;
mas01cr@498 28 spec.qid = qid;
mas01cr@498 29 spec.params = parms;
mas01cr@498 30 spec.refine = refine;
mas01ik@355 31
mas01cr@498 32 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 33 if(!results || results->nresults != 2) return 1;
mas01cr@498 34 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 35 result_present_or_fail(results, "testfeature", 2, 0, 1);
mas01cr@498 36 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 37
mas01cr@498 38 spec.params.npoints = 1;
mas01cr@498 39 results = audiodb_query_spec(adb, &spec);
mas01cr@498 40 if(!results || results->nresults != 1) return 1;
mas01cr@498 41 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 42 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 43
mas01cr@498 44 spec.qid.datum->data = (double[2]) {0.5, 0};
mas01cr@498 45 spec.params.npoints = 10;
mas01cr@498 46 results = audiodb_query_spec(adb, &spec);
mas01cr@498 47 if(!results || results->nresults != 2) return 1;
mas01cr@498 48 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 49 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 50 audiodb_query_free_results(adb, &spec, results);
mas01cr@498 51
mas01cr@498 52 spec.params.npoints = 1;
mas01cr@498 53 results = audiodb_query_spec(adb, &spec);
mas01cr@498 54 if(!results || results->nresults != 1) return 1;
mas01cr@498 55 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 56 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 57
mas01cr@498 58 audiodb_close(adb);
mas01ik@355 59
mas01cr@498 60 return 104;
mas01ik@355 61 }