# HG changeset patch # User Chris Cannam # Date 1421236520 0 # Node ID f0e2a8421797ccabc8506534a8620219abc53c7e # Parent c5106210370e3be4d41c5011eeb0862269204383 Handle getRemainingFeatures as well, and return dict only if >1 output (i.e. treat default case and explicit request of 1 output similarly) diff -r c5106210370e -r f0e2a8421797 test/test_process.py --- a/test/test_process.py Wed Jan 14 11:36:02 2015 +0000 +++ b/test/test_process.py Wed Jan 14 11:55:20 2015 +0000 @@ -3,11 +3,18 @@ import numpy as np testPluginKey = "vamp-test-plugin:vamp-test-plugin" +testPluginKeyFreq = "vamp-test-plugin:vamp-test-plugin-freq" rate = 44100 def test_process(): buf = np.zeros(10240) - results = vamp.process(buf, rate, testPluginKey) + results = vamp.process(buf, rate, testPluginKey, {}, [ "input-timestamp" ]) print("results = " + str(list(results))) return True + +def test_process_freq(): + buf = np.zeros(10240) + results = vamp.process(buf, rate, testPluginKeyFreq, {}, [ "input-timestamp" ]) + print("results = " + str(list(results))) + return True diff -r c5106210370e -r f0e2a8421797 vamp/__init__.py --- a/vamp/__init__.py Wed Jan 14 11:36:02 2015 +0000 +++ b/vamp/__init__.py Wed Jan 14 11:55:20 2015 +0000 @@ -38,6 +38,11 @@ for o in outputs: assert o in outIndices + if outputs == []: + outputs = [plugOuts[o]["identifier"]] + + singleOutput = (len(outputs) == 1) + stepSize = plug.getPreferredStepSize() blockSize = plug.getPreferredBlockSize() if blockSize == 0: @@ -55,15 +60,24 @@ for f in ff: results = plug.processBlock(f, vampyhost.frame2RealTime(fi, samplerate)) # results is a dict mapping output number -> list of feature dicts - if outputs == []: - if 0 in results: - for r in results[0]: - yield r - else: - for o in outputs: - if outIndices[o] in results: - for r in results[outIndices[o]]: + for o in outputs: + if outIndices[o] in results: + for r in results[outIndices[o]]: + if singleOutput: + yield r + else: yield { o: r } fi = fi + stepSize - ##!!! now getRemainingFeatures + results = plug.getRemainingFeatures() + for o in outputs: + if outIndices[o] in results: + for r in results[outIndices[o]]: + if singleOutput: + yield r + else: + yield { o: r } + + plug.unload() + +