# HG changeset patch # User mas01cr # Date 1271970239 0 # Node ID 01e25f938b63dfbcb9fced7c87d8f1ea26317c40 # Parent 55aa1919d7353e32e82958455926fcb003d92519 simplify sample code slightly Now there are two bits that are exactly the same as audiodb_query_spec(). They should be merged with the query code. diff -r 55aa1919d735 -r 01e25f938b63 audioDB.cpp --- a/audioDB.cpp Thu Apr 22 21:03:53 2010 +0000 +++ b/audioDB.cpp Thu Apr 22 21:03:59 2010 +0000 @@ -1119,6 +1119,7 @@ } total += prop; } + audiodb_liszt_free_results(adb, liszt); /* FIXME: the mean isn't really what we should be using here; it's more a question of "how many independent sequences of length diff -r 55aa1919d735 -r 01e25f938b63 sample.cpp --- a/sample.cpp Thu Apr 22 21:03:53 2010 +0000 +++ b/sample.cpp Thu Apr 22 21:03:59 2010 +0000 @@ -35,56 +35,41 @@ } } - if(!(qspec->qid.datum)) { - switch(qspec->params.distance) { - case ADB_DISTANCE_DOT_PRODUCT: + /* FIXME: this paragraph is the same as in audiodb_query_spec(). */ + switch(qspec->params.distance) { + case ADB_DISTANCE_DOT_PRODUCT: + switch(qspec->params.accumulation) { + case ADB_ACCUMULATION_DB: qstate.accumulator = new DBAccumulator(qspec->params.npoints); break; - case ADB_DISTANCE_EUCLIDEAN_NORMED: - case ADB_DISTANCE_EUCLIDEAN: - qstate.accumulator = new DBAccumulator(qspec->params.npoints); + case ADB_ACCUMULATION_PER_TRACK: + qstate.accumulator = new PerTrackAccumulator(qspec->params.npoints, qspec->params.ntracks); + break; + case ADB_ACCUMULATION_ONE_TO_ONE: + qstate.accumulator = new NearestAccumulator(); break; default: goto error; } - } else { - /* FIXME: this paragraph is the same as in audiodb_query_spec(), - apart from only being taken in one branch */ - switch(qspec->params.distance) { - case ADB_DISTANCE_DOT_PRODUCT: - switch(qspec->params.accumulation) { - case ADB_ACCUMULATION_DB: - qstate.accumulator = new DBAccumulator(qspec->params.npoints); - break; - case ADB_ACCUMULATION_PER_TRACK: - qstate.accumulator = new PerTrackAccumulator(qspec->params.npoints, qspec->params.ntracks); - break; - case ADB_ACCUMULATION_ONE_TO_ONE: - qstate.accumulator = new NearestAccumulator(); - break; - default: - goto error; - } + break; + case ADB_DISTANCE_EUCLIDEAN_NORMED: + case ADB_DISTANCE_EUCLIDEAN: + switch(qspec->params.accumulation) { + case ADB_ACCUMULATION_DB: + qstate.accumulator = new DBAccumulator(qspec->params.npoints); break; - case ADB_DISTANCE_EUCLIDEAN_NORMED: - case ADB_DISTANCE_EUCLIDEAN: - switch(qspec->params.accumulation) { - case ADB_ACCUMULATION_DB: - qstate.accumulator = new DBAccumulator(qspec->params.npoints); - break; - case ADB_ACCUMULATION_PER_TRACK: - qstate.accumulator = new PerTrackAccumulator(qspec->params.npoints, qspec->params.ntracks); - break; - case ADB_ACCUMULATION_ONE_TO_ONE: - qstate.accumulator = new NearestAccumulator(); - break; - default: - goto error; - } - break; + case ADB_ACCUMULATION_PER_TRACK: + qstate.accumulator = new PerTrackAccumulator(qspec->params.npoints, qspec->params.ntracks); + break; + case ADB_ACCUMULATION_ONE_TO_ONE: + qstate.accumulator = new NearestAccumulator(); + break; default: goto error; } + break; + default: + goto error; } if(audiodb_sample_loop(adb, qspec, &qstate)) {