Mercurial > hg > vampy-host
diff vamp/process.py @ 89:1a08dd72f4d2
Tidy, refactor
author | Chris Cannam |
---|---|
date | Wed, 21 Jan 2015 18:27:07 +0000 |
parents | dd56716714e0 |
children | 3e5791890b65 |
line wrap: on
line diff
--- a/vamp/process.py Wed Jan 21 15:13:00 2015 +0000 +++ b/vamp/process.py Wed Jan 21 18:27:07 2015 +0000 @@ -4,70 +4,57 @@ import frames import load -def load_and_query(data, sample_rate, key, parameters): - plug, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) - plug_outs = plug.get_outputs() - out_indices = dict([(o["identifier"], o["output_index"]) for o in plug_outs]) - return plug, step_size, block_size, out_indices + +def process_frames_with_plugin(ff, sample_rate, step_size, plugin, outputs): + + out_indices = dict([(id, plugin.get_output(id)["output_index"]) for id in outputs]) + plugin.reset() + fi = 0 + + for f in ff: + timestamp = vampyhost.frame_to_realtime(fi, sample_rate) + results = plugin.process_block(f, timestamp) + # results is a dict mapping output number -> list of feature dicts + for o in outputs: + ix = out_indices[o] + if ix in results: + for r in results[ix]: + yield { o: r } + fi = fi + step_size + + results = plugin.get_remaining_features() + for o in outputs: + ix = out_indices[o] + if ix in results: + for r in results[ix]: + yield { o: r } + + +def process(data, sample_rate, key, output = "", parameters = {}): +#!!! docstring + + plugin, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) + + if output == "": + output = plugin.get_output(0)["identifier"] + + ff = frames.frames_from_array(data, step_size, block_size) + + for r in process_frames_with_plugin(ff, sample_rate, step_size, plugin, [output]): + yield r[output] + plugin.unload() + def process_multiple_outputs(data, sample_rate, key, outputs, parameters = {}): #!!! docstring - plug, step_size, block_size, out_indices = load_and_query(data, sample_rate, key, parameters) - - for o in outputs: - assert o in out_indices + plugin, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) ff = frames.frames_from_array(data, step_size, block_size) - fi = 0 - for f in ff: - results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate)) - # results is a dict mapping output number -> list of feature dicts - for o in outputs: - outix = out_indices[o] - if outix in results: - for r in results[outix]: - yield { o: r } - fi = fi + step_size + for r in process_frames_with_plugin(ff, sample_rate, step_size, plugin, outputs): + yield r - results = plug.get_remaining_features() - for o in outputs: - outix = out_indices[o] - if outix in results: - for r in results[outix]: - yield { o: r } + plugin.unload() - plug.unload() - -def process(data, sample_rate, key, output = "", parameters = {}): -#!!! docstring - - plug, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) - - if output == "": - out = plug.get_output(0) - else: - out = plug.get_output(output) - - outix = out["output_index"] - - ff = frames.frames_from_array(data, step_size, block_size) - fi = 0 - - for f in ff: - results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate)) - # results is a dict mapping output number -> list of feature dicts - if outix in results: - for r in results[outix]: - yield r - fi = fi + step_size - - results = plug.get_remaining_features() - if outix in results: - for r in results[outix]: - yield r - - plug.unload() -