diff vamp-hostsdk/PluginSummarisingAdapter.h @ 248:c88a3cdb0215

* Tidy up --list-full output a bit * Some documentation, including docs for PluginSummarisingAdapter
author cannam
date Tue, 11 Nov 2008 12:07:09 +0000
parents 3cf5bd155e5b
children 4454843ff384
line wrap: on
line diff
--- a/vamp-hostsdk/PluginSummarisingAdapter.h	Tue Nov 11 09:49:12 2008 +0000
+++ b/vamp-hostsdk/PluginSummarisingAdapter.h	Tue Nov 11 12:07:09 2008 +0000
@@ -49,13 +49,47 @@
 /**
  * \class PluginSummarisingAdapter PluginSummarisingAdapter.h <vamp-hostsdk/PluginSummarisingAdapter.h>
  *
+ * PluginSummarisingAdapter is a Vamp plugin adapter that provides
+ * summarisation methods such as mean and median averages of output
+ * features, for use in any context where an available plugin produces
+ * individual values but the result that is actually needed is some
+ * sort of aggregate.
+ *
+ * To make use of PluginSummarisingAdapter, the host should configure,
+ * initialise and run the plugin through the adapter interface just as
+ * normal.  Then, after the process and getRemainingFeatures methods
+ * have been properly called and processing is complete, the host may
+ * call getSummaryForOutput or getSummaryForAllOutputs to obtain
+ * summarised features: averages, maximum values, etc, depending on
+ * the SummaryType passed to the function.
+ *
+ * By default PluginSummarisingAdapter calculates a single summary of
+ * each output's feature across the whole duration of processed audio.
+ * A host needing summaries of sub-segments of the whole audio may
+ * call setSummarySegmentBoundaries before retrieving the summaries,
+ * providing a list of times such that one summary will be provided
+ * for each segment between two consecutive times.
+ *
+ * PluginSummarisingAdapter is straightforward rather than fast.  It
+ * calculates all of the summary types for all outputs always, and
+ * then returns only the ones that are requested.  It is designed on
+ * the basis that, for most features, summarising and storing
+ * summarised results is far cheaper than calculating the results in
+ * the first place.  If this is not true for your particular feature,
+ * PluginSummarisingAdapter may not be the best approach for you.
+ *
  * \note This class was introduced in version 2.0 of the Vamp plugin SDK.
  */
 
 class PluginSummarisingAdapter : public PluginWrapper
 {
 public:
-    PluginSummarisingAdapter(Plugin *plugin); // I take ownership of plugin
+    /**
+     * Construct a PluginSummarisingAdapter wrapping the given plugin.
+     * The adapter takes ownership of the plugin, which will be
+     * deleted when the adapter is deleted.
+     */
+    PluginSummarisingAdapter(Plugin *plugin); 
     virtual ~PluginSummarisingAdapter();
 
     bool initialise(size_t channels, size_t stepSize, size_t blockSize);
@@ -64,6 +98,20 @@
     FeatureSet getRemainingFeatures();
 
     typedef std::set<RealTime> SegmentBoundaries;
+
+    /**
+     * Specify a series of segment boundaries, such that one summary
+     * will be returned for each of the contiguous intra-boundary
+     * segments.  This function must be called before
+     * getSummaryForOutput or getSummaryForAllOutputs.
+     * 
+     * Note that you cannot retrieve results with multiple different
+     * segmentations by repeatedly calling this function followed by
+     * one of the getSummary functions.  The summaries are all
+     * calculated at the first call to any getSummary function, and
+     * once the summaries have been calculated, they remain
+     * calculated.
+     */
     void setSummarySegmentBoundaries(const SegmentBoundaries &);
 
     enum SummaryType {
@@ -107,10 +155,27 @@
         ContinuousTimeAverage = 1,
     };
 
+    /**
+     * Return summaries of the features that were returned on the
+     * given output, using the given SummaryType and AveragingMethod.
+     *
+     * The plugin must have been fully run (process() and
+     * getRemainingFeatures() calls all made as appropriate) before
+     * this function is called.
+     */
     FeatureList getSummaryForOutput(int output,
                                     SummaryType type,
                                     AveragingMethod method = SampleAverage);
 
+    /**
+     * Return summaries of the features that were returned on all of
+     * the plugin's outputs, using the given SummaryType and
+     * AveragingMethod.
+     *
+     * The plugin must have been fully run (process() and
+     * getRemainingFeatures() calls all made as appropriate) before
+     * this function is called.
+     */
     FeatureSet getSummaryForAllOutputs(SummaryType type,
                                        AveragingMethod method = SampleAverage);