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@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@22
|
176 # Cap'n Proto RPC layer. For Cap'n Proto RPC, see piper.rpc.capnp.
|
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@22
|
188 # Cap'n Proto RPC layer. For Cap'n Proto RPC, see piper.rpc.capnp.
|
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
|