annotate capnproto/piper.capnp @ 21:b1ca7b265d24

vamp -> piper for IDL specs
author Chris Cannam
date Fri, 07 Oct 2016 14:27:11 +0100
parents capnproto/vamp.capnp@225ad84ea39b
children b587dbe33bad
rev   line source
Chris@0 1
Chris@0 2 @0xc4b1c6c44c999206;
Chris@0 3
Chris@0 4 using Cxx = import "/capnp/c++.capnp";
Chris@21 5 $Cxx.namespace("piper");
Chris@0 6
Chris@0 7 enum InputDomain {
Chris@0 8 timeDomain @0;
Chris@0 9 frequencyDomain @1;
Chris@0 10 }
Chris@0 11
Chris@0 12 enum SampleType {
Chris@0 13 oneSamplePerStep @0;
Chris@0 14 fixedSampleRate @1;
Chris@0 15 variableSampleRate @2;
Chris@0 16 }
Chris@0 17
Chris@0 18 enum AdapterFlag {
Chris@0 19 adaptInputDomain @0;
Chris@0 20 adaptChannelCount @1;
Chris@0 21 adaptBufferSize @2;
Chris@0 22 }
Chris@0 23
Chris@0 24 const adaptAllSafe :List(AdapterFlag) =
Chris@0 25 [ adaptInputDomain, adaptChannelCount ];
Chris@0 26
Chris@0 27 const adaptAll :List(AdapterFlag) =
Chris@0 28 [ adaptInputDomain, adaptChannelCount, adaptBufferSize ];
Chris@0 29
Chris@0 30 struct RealTime {
Chris@0 31 sec @0 :Int32 = 0;
Chris@0 32 nsec @1 :Int32 = 0;
Chris@0 33 }
Chris@0 34
Chris@0 35 struct Basic {
Chris@0 36 identifier @0 :Text;
Chris@0 37 name @1 :Text;
Chris@0 38 description @2 :Text;
Chris@0 39 }
Chris@0 40
Chris@0 41 struct ParameterDescriptor {
Chris@0 42 basic @0 :Basic;
Chris@0 43 unit @1 :Text;
Chris@0 44 minValue @2 :Float32 = 0.0;
Chris@0 45 maxValue @3 :Float32 = 0.0;
Chris@0 46 defaultValue @4 :Float32 = 0.0;
Chris@0 47 isQuantized @5 :Bool = false;
Chris@0 48 quantizeStep @6 :Float32 = 0.0;
Chris@0 49 valueNames @7 :List(Text) = [];
Chris@0 50 }
Chris@0 51
Chris@15 52 struct ConfiguredOutputDescriptor {
Chris@15 53 unit @0 :Text;
Chris@15 54 hasFixedBinCount @1 :Bool = false;
Chris@15 55 binCount @2 :Int32 = 0;
Chris@15 56 binNames @3 :List(Text) = [];
Chris@15 57 hasKnownExtents @4 :Bool = false;
Chris@15 58 minValue @5 :Float32 = 0.0;
Chris@15 59 maxValue @6 :Float32 = 0.0;
Chris@15 60 isQuantized @7 :Bool = false;
Chris@15 61 quantizeStep @8 :Float32 = 0.0;
Chris@15 62 sampleType @9 :SampleType;
Chris@15 63 sampleRate @10 :Float32 = 0.0;
Chris@15 64 hasDuration @11 :Bool = false;
Chris@15 65 }
Chris@15 66
Chris@0 67 struct OutputDescriptor {
Chris@0 68 basic @0 :Basic;
Chris@15 69 configured @1 :ConfiguredOutputDescriptor;
Chris@0 70 }
Chris@0 71
Chris@18 72 struct ExtractorStaticData {
Chris@18 73 key @0 :Text;
Chris@0 74 basic @1 :Basic;
Chris@0 75 maker @2 :Text;
Chris@0 76 copyright @3 :Text;
Chris@18 77 version @4 :Int32;
Chris@0 78 category @5 :List(Text);
Chris@0 79 minChannelCount @6 :Int32;
Chris@0 80 maxChannelCount @7 :Int32;
Chris@0 81 parameters @8 :List(ParameterDescriptor);
Chris@0 82 programs @9 :List(Text);
Chris@0 83 inputDomain @10 :InputDomain;
Chris@0 84 basicOutputInfo @11 :List(Basic);
Chris@0 85 }
Chris@0 86
Chris@0 87 struct ProcessInput {
Chris@0 88 inputBuffers @0 :List(List(Float32));
Chris@0 89 timestamp @1 :RealTime;
Chris@0 90 }
Chris@0 91
Chris@0 92 struct Feature {
Chris@0 93 hasTimestamp @0 :Bool = false;
Chris@0 94 timestamp @1 :RealTime;
Chris@0 95 hasDuration @2 :Bool = false;
Chris@0 96 duration @3 :RealTime;
Chris@0 97 label @4 :Text;
Chris@17 98 featureValues @5 :List(Float32) = [];
Chris@0 99 }
Chris@0 100
Chris@0 101 struct FeatureSet {
Chris@0 102 struct FSPair {
Chris@9 103 output @0 :Text;
Chris@0 104 features @1 :List(Feature) = [];
Chris@0 105 }
Chris@0 106 featurePairs @0 :List(FSPair);
Chris@0 107 }
Chris@0 108
Chris@18 109 struct Configuration {
Chris@0 110 struct PVPair {
Chris@0 111 parameter @0 :Text;
Chris@0 112 value @1 :Float32;
Chris@0 113 }
Chris@0 114 parameterValues @0 :List(PVPair);
Chris@0 115 currentProgram @1 :Text;
Chris@0 116 channelCount @2 :Int32;
Chris@0 117 stepSize @3 :Int32;
Chris@0 118 blockSize @4 :Int32;
Chris@0 119 }
Chris@0 120
Chris@18 121 struct ListRequest {
Chris@18 122 }
Chris@18 123
Chris@8 124 struct ListResponse {
Chris@18 125 available @0 :List(ExtractorStaticData);
Chris@8 126 }
Chris@8 127
Chris@0 128 struct LoadRequest {
Chris@18 129 key @0 :Text;
Chris@0 130 inputSampleRate @1 :Float32;
Chris@0 131 adapterFlags @2 :List(AdapterFlag);
Chris@0 132 }
Chris@0 133
Chris@0 134 struct LoadResponse {
Chris@18 135 handle @0 :Int32;
Chris@18 136 staticData @1 :ExtractorStaticData;
Chris@18 137 defaultConfiguration @2 :Configuration;
Chris@0 138 }
Chris@0 139
Chris@0 140 struct ConfigurationRequest {
Chris@18 141 handle @0 :Int32;
Chris@18 142 configuration @1 :Configuration;
Chris@0 143 }
Chris@0 144
Chris@0 145 struct ConfigurationResponse {
Chris@18 146 handle @0 :Int32;
Chris@11 147 outputs @1 :List(OutputDescriptor);
Chris@0 148 }
Chris@0 149
Chris@2 150 struct ProcessRequest {
Chris@18 151 handle @0 :Int32;
Chris@13 152 processInput @1 :ProcessInput;
Chris@2 153 }
Chris@2 154
Chris@9 155 struct ProcessResponse {
Chris@18 156 handle @0 :Int32;
Chris@9 157 features @1 :FeatureSet;
Chris@9 158 }
Chris@9 159
Chris@7 160 struct FinishRequest {
Chris@18 161 handle @0 :Int32;
Chris@7 162 }
Chris@7 163
Chris@20 164 struct FinishResponse {
Chris@20 165 handle @0 :Int32;
Chris@20 166 features @1 :FeatureSet;
Chris@20 167 }
Chris@20 168
Chris@18 169 struct Error {
Chris@18 170 code @0 :Int32;
Chris@18 171 message @1 :Text;
Chris@18 172 }
Chris@18 173
Chris@18 174 struct RpcRequest {
Chris@20 175 # Request bundle for use when using Cap'n Proto serialisation without
Chris@20 176 # Cap'n Proto RPC layer.
Chris@0 177 request :union {
Chris@18 178 list @0 :ListRequest;
Chris@0 179 load @1 :LoadRequest;
Chris@0 180 configure @2 :ConfigurationRequest;
Chris@2 181 process @3 :ProcessRequest;
Chris@7 182 finish @4 :FinishRequest; # getRemainingFeatures and unload
Chris@0 183 }
Chris@0 184 }
Chris@0 185
Chris@18 186 struct RpcResponse {
Chris@20 187 # Response bundle for use when using Cap'n Proto serialisation without
Chris@20 188 # Cap'n Proto RPC layer.
Chris@0 189 response :union {
Chris@18 190 error @0 :Error;
Chris@18 191 list @1 :ListResponse;
Chris@18 192 load @2 :LoadResponse;
Chris@18 193 configure @3 :ConfigurationResponse;
Chris@18 194 process @4 :ProcessResponse;
Chris@20 195 finish @5 :FinishResponse;
Chris@0 196 }
Chris@0 197 }
Chris@0 198