annotate capnp/piper.capnp @ 85:e8d6e39faaec listargs

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