Mercurial > hg > audiodb
comparison query.cpp @ 459:fcc6f7c4856b api-inversion
No more global shingle vector of vectors.
Convert audioDB::index_initialize_shingles and
audioDB::index_norm_shingles to plain old functions. In doing so, the
latter in particular acquires a silly argument list; we need that
complexity for now because it's called both from audioDB::query (which
we're currently inverting) and from audioDB::index (which is out of
scope for now).
The loss of the global vv thing made me check up on memory discipline
[hence the new API function audiodb_query_free_results() as well as the
internal audiodb_index_delete_shingles()]. It's not too bad, but there
are plenty of leaks for those with time to do
AUDIODB="valgrind --leak-check=full ../../audioDB" sh ./run-test.sh
on their favourite test case. For example, the Radius reporters leak
one triple per hit.
(Honestly, C++ memory management is teh suck.)
author | mas01cr |
---|---|
date | Sun, 28 Dec 2008 22:43:50 +0000 |
parents | 913a95f06998 |
children | 17003dff8127 |
comparison
equal
deleted
inserted
replaced
458:913a95f06998 | 459:fcc6f7c4856b |
---|---|
256 | 256 |
257 for(unsigned int k = 0; k < rs->nresults; k++) { | 257 for(unsigned int k = 0; k < rs->nresults; k++) { |
258 adb_result_t r = rs->results[k]; | 258 adb_result_t r = rs->results[k]; |
259 reporter->add_point(audiodb_key_index(adb, r.key), r.qpos, r.ipos, r.dist); | 259 reporter->add_point(audiodb_key_index(adb, r.key), r.qpos, r.ipos, r.dist); |
260 } | 260 } |
261 audiodb_query_free_results(adb, &qspec, rs); | |
261 | 262 |
262 reporter->report(fileTable, adbQueryResponse); | 263 reporter->report(fileTable, adbQueryResponse); |
264 } | |
265 | |
266 int audiodb_query_free_results(adb_t *adb, adb_query_spec_t *spec, adb_query_results_t *rs) { | |
267 free(rs->results); | |
268 free(rs); | |
269 return 0; | |
263 } | 270 } |
264 | 271 |
265 static void audiodb_initialize_arrays(adb_t *adb, adb_query_spec_t *spec, int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) { | 272 static void audiodb_initialize_arrays(adb_t *adb, adb_query_spec_t *spec, int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) { |
266 unsigned int j, k, l, w; | 273 unsigned int j, k, l, w; |
267 double *dp, *qp, *sp; | 274 double *dp, *qp, *sp; |