Mercurial > hg > audiodb
comparison query.cpp @ 422:a7d61291fbda api-inversion
Baby steps...
Decorate accumulator.h with a preprocessor #define and test; then create
appropriate accumulators in audioDB::query() and delete them if
necessary in audioDB::cleanup().
author | mas01cr |
---|---|
date | Wed, 24 Dec 2008 10:55:03 +0000 |
parents | ef4792df8f93 |
children | b09d2eb1a2b2 |
comparison
equal
deleted
inserted
replaced
421:166312a124bc | 422:a7d61291fbda |
---|---|
1 #include "audioDB.h" | 1 #include "audioDB.h" |
2 #include "reporter.h" | 2 #include "reporter.h" |
3 | |
4 #include "audioDB-internals.h" | |
5 #include "accumulators.h" | |
3 | 6 |
4 bool audioDB::powers_acceptable(double p1, double p2) { | 7 bool audioDB::powers_acceptable(double p1, double p2) { |
5 if (use_absolute_threshold) { | 8 if (use_absolute_threshold) { |
6 if ((p1 < absolute_threshold) || (p2 < absolute_threshold)) { | 9 if ((p1 < absolute_threshold) || (p2 < absolute_threshold)) { |
7 return false; | 10 return false; |
29 switch (queryType) { | 32 switch (queryType) { |
30 case O2_POINT_QUERY: | 33 case O2_POINT_QUERY: |
31 sequenceLength = 1; | 34 sequenceLength = 1; |
32 normalizedDistance = false; | 35 normalizedDistance = false; |
33 reporter = new pointQueryReporter< std::greater < NNresult > >(pointNN); | 36 reporter = new pointQueryReporter< std::greater < NNresult > >(pointNN); |
37 accumulator = new DBAccumulator<adb_result_dist_gt>(pointNN); | |
34 break; | 38 break; |
35 case O2_TRACK_QUERY: | 39 case O2_TRACK_QUERY: |
36 sequenceLength = 1; | 40 sequenceLength = 1; |
37 normalizedDistance = false; | 41 normalizedDistance = false; |
38 reporter = new trackAveragingReporter< std::greater< NNresult > >(pointNN, trackNN, dbH->numFiles); | 42 reporter = new trackAveragingReporter< std::greater< NNresult > >(pointNN, trackNN, dbH->numFiles); |
43 accumulator = new PerTrackAccumulator<adb_result_dist_gt>(pointNN, trackNN); | |
39 break; | 44 break; |
40 case O2_SEQUENCE_QUERY: | 45 case O2_SEQUENCE_QUERY: |
41 if(no_unit_norming) | 46 if(no_unit_norming) |
42 normalizedDistance = false; | 47 normalizedDistance = false; |
48 accumulator = new PerTrackAccumulator<adb_result_dist_lt>(pointNN, trackNN); | |
43 if(radius == 0) { | 49 if(radius == 0) { |
44 reporter = new trackAveragingReporter< std::less< NNresult > >(pointNN, trackNN, dbH->numFiles); | 50 reporter = new trackAveragingReporter< std::less< NNresult > >(pointNN, trackNN, dbH->numFiles); |
45 } else { | 51 } else { |
46 if(index_exists(dbName, radius, sequenceLength)){ | 52 if(index_exists(dbName, radius, sequenceLength)){ |
47 char* indexName = index_get_name(dbName, radius, sequenceLength); | 53 char* indexName = index_get_name(dbName, radius, sequenceLength); |
54 } | 60 } |
55 break; | 61 break; |
56 case O2_N_SEQUENCE_QUERY: | 62 case O2_N_SEQUENCE_QUERY: |
57 if(no_unit_norming) | 63 if(no_unit_norming) |
58 normalizedDistance = false; | 64 normalizedDistance = false; |
65 accumulator = new PerTrackAccumulator<adb_result_dist_lt>(pointNN, trackNN); | |
59 if(radius == 0) { | 66 if(radius == 0) { |
60 reporter = new trackSequenceQueryNNReporter< std::less < NNresult > >(pointNN, trackNN, dbH->numFiles); | 67 reporter = new trackSequenceQueryNNReporter< std::less < NNresult > >(pointNN, trackNN, dbH->numFiles); |
61 } else { | 68 } else { |
62 if(index_exists(dbName, radius, sequenceLength)){ | 69 if(index_exists(dbName, radius, sequenceLength)){ |
63 char* indexName = index_get_name(dbName, radius, sequenceLength); | 70 char* indexName = index_get_name(dbName, radius, sequenceLength); |
68 else | 75 else |
69 reporter = new trackSequenceQueryRadNNReporter(pointNN,trackNN, dbH->numFiles); | 76 reporter = new trackSequenceQueryRadNNReporter(pointNN,trackNN, dbH->numFiles); |
70 } | 77 } |
71 break; | 78 break; |
72 case O2_ONE_TO_ONE_N_SEQUENCE_QUERY : | 79 case O2_ONE_TO_ONE_N_SEQUENCE_QUERY : |
80 accumulator = new NearestAccumulator<adb_result_dist_lt>(); | |
73 if(radius == 0) { | 81 if(radius == 0) { |
74 error("query-type not yet supported"); | 82 error("query-type not yet supported"); |
75 } else { | 83 } else { |
76 reporter = new trackSequenceQueryRadNNReporterOneToOne(pointNN,trackNN, dbH->numFiles); | 84 reporter = new trackSequenceQueryRadNNReporterOneToOne(pointNN,trackNN, dbH->numFiles); |
77 } | 85 } |