Mercurial > hg > piper-cpp
changeset 64:85ec33975434
Support split OutputDescriptor, and plugins rather than pluginData in listResponse from SDK
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 23 Sep 2016 14:20:29 +0100 |
parents | 72c43bc69616 |
children | 2d866edd79d5 |
files | capnproto/VampnProto.h capnproto/vamp.capnp json/VampJson.h utilities/json-cli.cpp |
diffstat | 4 files changed, 72 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/capnproto/VampnProto.h Fri Sep 23 14:20:06 2016 +0100 +++ b/capnproto/VampnProto.h Fri Sep 23 14:20:29 2016 +0100 @@ -127,11 +127,8 @@ } static void - buildOutputDescriptor(OutputDescriptor::Builder &b, - const Vamp::Plugin::OutputDescriptor &od) { - - auto basic = b.initBasic(); - buildBasicDescriptor(basic, od); + buildConfiguredOutputDescriptor(ConfiguredOutputDescriptor::Builder &b, + const Vamp::Plugin::OutputDescriptor &od) { b.setUnit(od.unit); @@ -162,10 +159,19 @@ } static void - readOutputDescriptor(Vamp::Plugin::OutputDescriptor &od, - const OutputDescriptor::Reader &r) { + buildOutputDescriptor(OutputDescriptor::Builder &b, + const Vamp::Plugin::OutputDescriptor &od) { - readBasicDescriptor(od, r.getBasic()); + auto basic = b.initBasic(); + buildBasicDescriptor(basic, od); + + auto configured = b.initConfigured(); + buildConfiguredOutputDescriptor(configured, od); + } + + static void + readConfiguredOutputDescriptor(Vamp::Plugin::OutputDescriptor &od, + const ConfiguredOutputDescriptor::Reader &r) { od.unit = r.getUnit(); @@ -195,6 +201,14 @@ } static void + readOutputDescriptor(Vamp::Plugin::OutputDescriptor &od, + const OutputDescriptor::Reader &r) { + + readBasicDescriptor(od, r.getBasic()); + readConfiguredOutputDescriptor(od, r.getConfigured()); + } + + static void buildParameterDescriptor(ParameterDescriptor::Builder &b, const Vamp::Plugin::ParameterDescriptor &pd) { @@ -685,10 +699,10 @@ const Vamp::HostExt::ListResponse &resp) { b.setSuccess(true); auto r = b.getResponse().initList(); - auto p = r.initPlugins(resp.pluginData.size()); - for (size_t i = 0; i < resp.pluginData.size(); ++i) { + auto p = r.initPlugins(resp.plugins.size()); + for (size_t i = 0; i < resp.plugins.size(); ++i) { auto pd = p[i]; - buildPluginStaticData(pd, resp.pluginData[i]); + buildPluginStaticData(pd, resp.plugins[i]); } } @@ -844,13 +858,13 @@ if (getRequestResponseType(r) != RRType::List) { throw std::logic_error("not a list response"); } - resp.pluginData.clear(); + resp.plugins.clear(); if (r.getSuccess()) { auto pp = r.getResponse().getList().getPlugins(); for (const auto &p: pp) { Vamp::HostExt::PluginStaticData psd; readPluginStaticData(psd, p); - resp.pluginData.push_back(psd); + resp.plugins.push_back(psd); } } }
--- a/capnproto/vamp.capnp Fri Sep 23 14:20:06 2016 +0100 +++ b/capnproto/vamp.capnp Fri Sep 23 14:20:29 2016 +0100 @@ -49,20 +49,24 @@ valueNames @7 :List(Text) = []; } +struct ConfiguredOutputDescriptor { + unit @0 :Text; + hasFixedBinCount @1 :Bool = false; + binCount @2 :Int32 = 0; + binNames @3 :List(Text) = []; + hasKnownExtents @4 :Bool = false; + minValue @5 :Float32 = 0.0; + maxValue @6 :Float32 = 0.0; + isQuantized @7 :Bool = false; + quantizeStep @8 :Float32 = 0.0; + sampleType @9 :SampleType; + sampleRate @10 :Float32 = 0.0; + hasDuration @11 :Bool = false; +} + struct OutputDescriptor { basic @0 :Basic; - unit @1 :Text; - hasFixedBinCount @2 :Bool = false; - binCount @3 :Int32 = 0; - binNames @4 :List(Text) = []; - hasKnownExtents @5 :Bool = false; - minValue @6 :Float32 = 0.0; - maxValue @7 :Float32 = 0.0; - isQuantized @8 :Bool = false; - quantizeStep @9 :Float32 = 0.0; - sampleType @10 :SampleType; - sampleRate @11 :Float32 = 0.0; - hasDuration @12 :Bool = false; + configured @1 :ConfiguredOutputDescriptor; } struct PluginStaticData {
--- a/json/VampJson.h Fri Sep 23 14:20:06 2016 +0100 +++ b/json/VampJson.h Fri Sep 23 14:20:29 2016 +0100 @@ -190,9 +190,8 @@ } static json11::Json - fromOutputDescriptor(const Vamp::Plugin::OutputDescriptor &desc) { + fromConfiguredOutputDescriptor(const Vamp::Plugin::OutputDescriptor &desc) { json11::Json::object jo { - { "basic", fromBasicDescriptor(desc) }, { "unit", desc.unit }, { "sampleType", fromSampleType(desc.sampleType) }, { "sampleRate", desc.sampleRate }, @@ -212,16 +211,23 @@ return json11::Json(jo); } + static json11::Json + fromOutputDescriptor(const Vamp::Plugin::OutputDescriptor &desc) { + json11::Json::object jo { + { "basic", fromBasicDescriptor(desc) }, + { "configured", fromConfiguredOutputDescriptor(desc) } + }; + return json11::Json(jo); + } + static Vamp::Plugin::OutputDescriptor - toOutputDescriptor(json11::Json j) { + toConfiguredOutputDescriptor(json11::Json j) { Vamp::Plugin::OutputDescriptor od; if (!j.is_object()) { throw Failure("object expected for output descriptor"); } - toBasicDescriptor(j["basic"], od); - od.unit = j["unit"].string_value(); od.sampleType = toSampleType(j["sampleType"].string_value()); @@ -257,6 +263,21 @@ return od; } + + static Vamp::Plugin::OutputDescriptor + toOutputDescriptor(json11::Json j) { + + Vamp::Plugin::OutputDescriptor od; + if (!j.is_object()) { + throw Failure("object expected for output descriptor"); + } + + od = toConfiguredOutputDescriptor(j); + + toBasicDescriptor(j["basic"], od); + + return od; + } static json11::Json fromParameterDescriptor(const Vamp::PluginBase::ParameterDescriptor &desc) { @@ -933,7 +954,7 @@ jo["success"] = true; json11::Json::array arr; - for (const auto &a: resp.pluginData) { + for (const auto &a: resp.plugins) { arr.push_back(fromPluginStaticData(a)); } json11::Json::object po; @@ -1123,7 +1144,7 @@ Vamp::HostExt::ListResponse resp; if (successful(j)) { for (const auto &a: j["content"]["plugins"].array_items()) { - resp.pluginData.push_back(toPluginStaticData(a)); + resp.plugins.push_back(toPluginStaticData(a)); } } return resp;
--- a/utilities/json-cli.cpp Fri Sep 23 14:20:06 2016 +0100 +++ b/utilities/json-cli.cpp Fri Sep 23 14:20:29 2016 +0100 @@ -61,7 +61,7 @@ auto resp = loader->listPluginData(); Json::array j; - for (const auto &pd: resp.pluginData) { + for (const auto &pd: resp.plugins) { j.push_back(VampJson::fromPluginStaticData(pd)); } return Json(j);