001package net.gdface.sdk.thrift.client;
002
003import com.facebook.swift.codec.*;
004import com.facebook.swift.codec.ThriftField.Requiredness;
005import com.facebook.swift.service.*;
006import com.google.common.util.concurrent.ListenableFuture;
007import java.io.*;
008import java.util.*;
009
010@ThriftService("FaceApi")
011public interface FaceApi
012{
013    @ThriftService("FaceApi")
014    public interface Async
015    {
016        @ThriftMethod(value = "compare2Face",
017                      exception = {
018                          @ThriftException(type=ImageErrorException.class, id=1),
019                          @ThriftException(type=NotFaceDetectedException.class, id=2),
020                          @ThriftException(type=ServiceRuntimeException.class, id=3)
021                      })
022        ListenableFuture<Double> compare2Face(
023            @ThriftField(value=1, name="imgData1", requiredness=Requiredness.OPTIONAL) final byte [] imgData1,
024            @ThriftField(value=2, name="facePos1", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos1,
025            @ThriftField(value=3, name="imgData2", requiredness=Requiredness.OPTIONAL) final byte [] imgData2,
026            @ThriftField(value=4, name="facePos2", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos2
027        );
028
029        @ThriftMethod(value = "compareCode",
030                      exception = {
031                          @ThriftException(type=ServiceRuntimeException.class, id=1)
032                      })
033        ListenableFuture<Double> compareCode(
034            @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
035            @ThriftField(value=2, name="code2", requiredness=Requiredness.OPTIONAL) final byte [] code2
036        );
037
038        @ThriftMethod(value = "compareCodes",
039                      exception = {
040                          @ThriftException(type=ServiceRuntimeException.class, id=1)
041                      })
042        ListenableFuture<List<Double>> compareCodes(
043            @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
044            @ThriftField(value=2, name="codes", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> codes
045        );
046
047        @ThriftMethod(value = "compareFaces",
048                      exception = {
049                          @ThriftException(type=ImageErrorException.class, id=1),
050                          @ThriftException(type=NotFaceDetectedException.class, id=2),
051                          @ThriftException(type=ServiceRuntimeException.class, id=3)
052                      })
053        ListenableFuture<CompareResult> compareFaces(
054            @ThriftField(value=1, name="code", requiredness=Requiredness.OPTIONAL) final byte [] code,
055            @ThriftField(value=2, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
056            @ThriftField(value=3, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
057        );
058
059        @ThriftMethod(value = "compareFeatures",
060                      exception = {
061                          @ThriftException(type=ServiceRuntimeException.class, id=1)
062                      })
063        ListenableFuture<List<Double>> compareFeatures(
064            @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
065            @ThriftField(value=2, name="codes", requiredness=Requiredness.OPTIONAL) final List<byte []> codes
066        );
067
068        @ThriftMethod(value = "detectAndCompare2Face",
069                      exception = {
070                          @ThriftException(type=ImageErrorException.class, id=1),
071                          @ThriftException(type=NotFaceDetectedException.class, id=2),
072                          @ThriftException(type=ServiceRuntimeException.class, id=3)
073                      })
074        ListenableFuture<Double> detectAndCompare2Face(
075            @ThriftField(value=1, name="imgData1", requiredness=Requiredness.OPTIONAL) final byte [] imgData1,
076            @ThriftField(value=2, name="detectRect1", requiredness=Requiredness.OPTIONAL) final FRect detectRect1,
077            @ThriftField(value=3, name="imgData2", requiredness=Requiredness.OPTIONAL) final byte [] imgData2,
078            @ThriftField(value=4, name="detectRect2", requiredness=Requiredness.OPTIONAL) final FRect detectRect2
079        );
080
081        @ThriftMethod(value = "detectAndGetCodeInfo",
082                      exception = {
083                          @ThriftException(type=ImageErrorException.class, id=1),
084                          @ThriftException(type=NotFaceDetectedException.class, id=2),
085                          @ThriftException(type=ServiceRuntimeException.class, id=3)
086                      })
087        ListenableFuture<List<CodeInfo>> detectAndGetCodeInfo(
088            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
089            @ThriftField(value=2, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
090        );
091
092        @ThriftMethod(value = "detectCenterFace",
093                      exception = {
094                          @ThriftException(type=ImageErrorException.class, id=1),
095                          @ThriftException(type=NotFaceDetectedException.class, id=2),
096                          @ThriftException(type=ServiceRuntimeException.class, id=3)
097                      })
098        ListenableFuture<CodeInfo> detectCenterFace(
099            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
100        );
101
102        @ThriftMethod(value = "detectFace",
103                      exception = {
104                          @ThriftException(type=ImageErrorException.class, id=1),
105                          @ThriftException(type=ServiceRuntimeException.class, id=2)
106                      })
107        ListenableFuture<List<CodeInfo>> detectFace(
108            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
109        );
110
111        @ThriftMethod(value = "detectMaxFace",
112                      exception = {
113                          @ThriftException(type=ImageErrorException.class, id=1),
114                          @ThriftException(type=NotFaceDetectedException.class, id=2),
115                          @ThriftException(type=ServiceRuntimeException.class, id=3)
116                      })
117        ListenableFuture<CodeInfo> detectMaxFace(
118            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
119        );
120
121        @ThriftMethod(value = "getCodeInfo",
122                      exception = {
123                          @ThriftException(type=NotFaceDetectedException.class, id=1),
124                          @ThriftException(type=ServiceRuntimeException.class, id=2)
125                      })
126        ListenableFuture<List<CodeInfo>> getCodeInfo(
127            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
128            @ThriftField(value=2, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum,
129            @ThriftField(value=3, name="facePos", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> facePos
130        );
131
132        @ThriftMethod(value = "getCodeInfoSingle",
133                      exception = {
134                          @ThriftException(type=ServiceRuntimeException.class, id=1)
135                      })
136        ListenableFuture<CodeInfo> getCodeInfoSingle(
137            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
138            @ThriftField(value=2, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos
139        );
140
141        @ThriftMethod(value = "getFeature",
142                      exception = {
143                          @ThriftException(type=NotFaceDetectedException.class, id=1),
144                          @ThriftException(type=ServiceRuntimeException.class, id=2)
145                      })
146        ListenableFuture<byte []> getFeature(
147            @ThriftField(value=1, name="faces", requiredness=Requiredness.OPTIONAL) final Map<byte [], CodeInfo> faces
148        );
149
150        @ThriftMethod(value = "hasFace",
151                      exception = {
152                          @ThriftException(type=ImageErrorException.class, id=1),
153                          @ThriftException(type=ServiceRuntimeException.class, id=2)
154                      })
155        ListenableFuture<Boolean> hasFace(
156            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
157        );
158
159        @ThriftMethod(value = "isLocal",
160                      exception = {
161                          @ThriftException(type=ServiceRuntimeException.class, id=1)
162                      })
163        ListenableFuture<Boolean> isLocal();
164
165        @ThriftMethod(value = "matDetectAndGetCodeInfo",
166                      exception = {
167                          @ThriftException(type=NotFaceDetectedException.class, id=1),
168                          @ThriftException(type=ServiceRuntimeException.class, id=2)
169                      })
170        ListenableFuture<List<CodeInfo>> matDetectAndGetCodeInfo(
171            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
172            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
173            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
174            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
175            @ThriftField(value=5, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
176        );
177
178        @ThriftMethod(value = "matDetectFace",
179                      exception = {
180                          @ThriftException(type=ServiceRuntimeException.class, id=1)
181                      })
182        ListenableFuture<List<CodeInfo>> matDetectFace(
183            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
184            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
185            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
186            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
187        );
188
189        @ThriftMethod(value = "matDetectMaxFace",
190                      exception = {
191                          @ThriftException(type=NotFaceDetectedException.class, id=1),
192                          @ThriftException(type=ServiceRuntimeException.class, id=2)
193                      })
194        ListenableFuture<CodeInfo> matDetectMaxFace(
195            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
196            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
197            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
198            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
199        );
200
201        @ThriftMethod(value = "matGetCodeInfo",
202                      exception = {
203                          @ThriftException(type=NotFaceDetectedException.class, id=1),
204                          @ThriftException(type=ServiceRuntimeException.class, id=2)
205                      })
206        ListenableFuture<List<CodeInfo>> matGetCodeInfo(
207            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
208            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
209            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
210            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
211            @ThriftField(value=5, name="facenum", requiredness=Requiredness.REQUIRED) final int facenum,
212            @ThriftField(value=6, name="facePos", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> facePos
213        );
214
215        @ThriftMethod(value = "matGetCodeInfoSingle",
216                      exception = {
217                          @ThriftException(type=ServiceRuntimeException.class, id=1)
218                      })
219        ListenableFuture<CodeInfo> matGetCodeInfoSingle(
220            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
221            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
222            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
223            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
224            @ThriftField(value=5, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos
225        );
226
227        @ThriftMethod(value = "matHasFace",
228                      exception = {
229                          @ThriftException(type=ServiceRuntimeException.class, id=1)
230                      })
231        ListenableFuture<Boolean> matHasFace(
232            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
233            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
234            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
235            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
236        );
237
238        @ThriftMethod(value = "matSearchFaces",
239                      exception = {
240                          @ThriftException(type=ImageErrorException.class, id=1),
241                          @ThriftException(type=NotFaceDetectedException.class, id=2),
242                          @ThriftException(type=ServiceRuntimeException.class, id=3)
243                      })
244        ListenableFuture<List<FseResult>> matSearchFaces(
245            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
246            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
247            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
248            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
249            @ThriftField(value=5, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos,
250            @ThriftField(value=6, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
251            @ThriftField(value=7, name="rows", requiredness=Requiredness.REQUIRED) final int rows
252        );
253
254        @ThriftMethod(value = "matWearMask",
255                      exception = {
256                          @ThriftException(type=ServiceRuntimeException.class, id=1)
257                      })
258        ListenableFuture<Boolean> matWearMask(
259            @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
260            @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
261            @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
262            @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
263            @ThriftField(value=5, name="faceInfo", requiredness=Requiredness.OPTIONAL) final CodeInfo faceInfo
264        );
265
266        @ThriftMethod(value = "sdkCapacity",
267                      exception = {
268                          @ThriftException(type=ServiceRuntimeException.class, id=1)
269                      })
270        ListenableFuture<Map<String, String>> sdkCapacity();
271
272        @ThriftMethod(value = "searchFaces",
273                      exception = {
274                          @ThriftException(type=ImageErrorException.class, id=1),
275                          @ThriftException(type=NotFaceDetectedException.class, id=2),
276                          @ThriftException(type=ServiceRuntimeException.class, id=3)
277                      })
278        ListenableFuture<List<FseResult>> searchFaces(
279            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
280            @ThriftField(value=2, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos,
281            @ThriftField(value=3, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
282            @ThriftField(value=4, name="rows", requiredness=Requiredness.REQUIRED) final int rows
283        );
284
285        @ThriftMethod(value = "searchFeatures",
286                      exception = {
287                          @ThriftException(type=ServiceRuntimeException.class, id=1)
288                      })
289        ListenableFuture<List<FseResult>> searchFeatures(
290            @ThriftField(value=1, name="feature", requiredness=Requiredness.OPTIONAL) final byte [] feature,
291            @ThriftField(value=2, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
292            @ThriftField(value=3, name="rows", requiredness=Requiredness.REQUIRED) final int rows
293        );
294
295        @ThriftMethod(value = "wearMask",
296                      exception = {
297                          @ThriftException(type=ImageErrorException.class, id=1),
298                          @ThriftException(type=ServiceRuntimeException.class, id=2)
299                      })
300        ListenableFuture<Boolean> wearMask(
301            @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
302            @ThriftField(value=2, name="faceInfo", requiredness=Requiredness.OPTIONAL) final CodeInfo faceInfo
303        );
304    }
305    @ThriftMethod(value = "compare2Face",
306                  exception = {
307                      @ThriftException(type=ImageErrorException.class, id=1),
308                      @ThriftException(type=NotFaceDetectedException.class, id=2),
309                      @ThriftException(type=ServiceRuntimeException.class, id=3)
310                  })
311    double compare2Face(
312        @ThriftField(value=1, name="imgData1", requiredness=Requiredness.OPTIONAL) final byte [] imgData1,
313        @ThriftField(value=2, name="facePos1", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos1,
314        @ThriftField(value=3, name="imgData2", requiredness=Requiredness.OPTIONAL) final byte [] imgData2,
315        @ThriftField(value=4, name="facePos2", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos2
316    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
317
318    @ThriftMethod(value = "compareCode",
319                  exception = {
320                      @ThriftException(type=ServiceRuntimeException.class, id=1)
321                  })
322    double compareCode(
323        @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
324        @ThriftField(value=2, name="code2", requiredness=Requiredness.OPTIONAL) final byte [] code2
325    ) throws ServiceRuntimeException;
326
327    @ThriftMethod(value = "compareCodes",
328                  exception = {
329                      @ThriftException(type=ServiceRuntimeException.class, id=1)
330                  })
331    List<Double> compareCodes(
332        @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
333        @ThriftField(value=2, name="codes", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> codes
334    ) throws ServiceRuntimeException;
335
336    @ThriftMethod(value = "compareFaces",
337                  exception = {
338                      @ThriftException(type=ImageErrorException.class, id=1),
339                      @ThriftException(type=NotFaceDetectedException.class, id=2),
340                      @ThriftException(type=ServiceRuntimeException.class, id=3)
341                  })
342    CompareResult compareFaces(
343        @ThriftField(value=1, name="code", requiredness=Requiredness.OPTIONAL) final byte [] code,
344        @ThriftField(value=2, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
345        @ThriftField(value=3, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
346    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
347
348    @ThriftMethod(value = "compareFeatures",
349                  exception = {
350                      @ThriftException(type=ServiceRuntimeException.class, id=1)
351                  })
352    List<Double> compareFeatures(
353        @ThriftField(value=1, name="code1", requiredness=Requiredness.OPTIONAL) final byte [] code1,
354        @ThriftField(value=2, name="codes", requiredness=Requiredness.OPTIONAL) final List<byte []> codes
355    ) throws ServiceRuntimeException;
356
357    @ThriftMethod(value = "detectAndCompare2Face",
358                  exception = {
359                      @ThriftException(type=ImageErrorException.class, id=1),
360                      @ThriftException(type=NotFaceDetectedException.class, id=2),
361                      @ThriftException(type=ServiceRuntimeException.class, id=3)
362                  })
363    double detectAndCompare2Face(
364        @ThriftField(value=1, name="imgData1", requiredness=Requiredness.OPTIONAL) final byte [] imgData1,
365        @ThriftField(value=2, name="detectRect1", requiredness=Requiredness.OPTIONAL) final FRect detectRect1,
366        @ThriftField(value=3, name="imgData2", requiredness=Requiredness.OPTIONAL) final byte [] imgData2,
367        @ThriftField(value=4, name="detectRect2", requiredness=Requiredness.OPTIONAL) final FRect detectRect2
368    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
369
370    @ThriftMethod(value = "detectAndGetCodeInfo",
371                  exception = {
372                      @ThriftException(type=ImageErrorException.class, id=1),
373                      @ThriftException(type=NotFaceDetectedException.class, id=2),
374                      @ThriftException(type=ServiceRuntimeException.class, id=3)
375                  })
376    List<CodeInfo> detectAndGetCodeInfo(
377        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
378        @ThriftField(value=2, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
379    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
380
381    @ThriftMethod(value = "detectCenterFace",
382                  exception = {
383                      @ThriftException(type=ImageErrorException.class, id=1),
384                      @ThriftException(type=NotFaceDetectedException.class, id=2),
385                      @ThriftException(type=ServiceRuntimeException.class, id=3)
386                  })
387    CodeInfo detectCenterFace(
388        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
389    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
390
391    @ThriftMethod(value = "detectFace",
392                  exception = {
393                      @ThriftException(type=ImageErrorException.class, id=1),
394                      @ThriftException(type=ServiceRuntimeException.class, id=2)
395                  })
396    List<CodeInfo> detectFace(
397        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
398    ) throws ImageErrorException, ServiceRuntimeException;
399
400    @ThriftMethod(value = "detectMaxFace",
401                  exception = {
402                      @ThriftException(type=ImageErrorException.class, id=1),
403                      @ThriftException(type=NotFaceDetectedException.class, id=2),
404                      @ThriftException(type=ServiceRuntimeException.class, id=3)
405                  })
406    CodeInfo detectMaxFace(
407        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
408    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
409
410    @ThriftMethod(value = "getCodeInfo",
411                  exception = {
412                      @ThriftException(type=NotFaceDetectedException.class, id=1),
413                      @ThriftException(type=ServiceRuntimeException.class, id=2)
414                  })
415    List<CodeInfo> getCodeInfo(
416        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
417        @ThriftField(value=2, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum,
418        @ThriftField(value=3, name="facePos", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> facePos
419    ) throws NotFaceDetectedException, ServiceRuntimeException;
420
421    @ThriftMethod(value = "getCodeInfoSingle",
422                  exception = {
423                      @ThriftException(type=ServiceRuntimeException.class, id=1)
424                  })
425    CodeInfo getCodeInfoSingle(
426        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
427        @ThriftField(value=2, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos
428    ) throws ServiceRuntimeException;
429
430    @ThriftMethod(value = "getFeature",
431                  exception = {
432                      @ThriftException(type=NotFaceDetectedException.class, id=1),
433                      @ThriftException(type=ServiceRuntimeException.class, id=2)
434                  })
435    byte [] getFeature(
436        @ThriftField(value=1, name="faces", requiredness=Requiredness.OPTIONAL) final Map<byte [], CodeInfo> faces
437    ) throws NotFaceDetectedException, ServiceRuntimeException;
438
439    @ThriftMethod(value = "hasFace",
440                  exception = {
441                      @ThriftException(type=ImageErrorException.class, id=1),
442                      @ThriftException(type=ServiceRuntimeException.class, id=2)
443                  })
444    boolean hasFace(
445        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData
446    ) throws ImageErrorException, ServiceRuntimeException;
447
448    @ThriftMethod(value = "isLocal",
449                  exception = {
450                      @ThriftException(type=ServiceRuntimeException.class, id=1)
451                  })
452    boolean isLocal() throws ServiceRuntimeException;
453
454    @ThriftMethod(value = "matDetectAndGetCodeInfo",
455                  exception = {
456                      @ThriftException(type=NotFaceDetectedException.class, id=1),
457                      @ThriftException(type=ServiceRuntimeException.class, id=2)
458                  })
459    List<CodeInfo> matDetectAndGetCodeInfo(
460        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
461        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
462        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
463        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
464        @ThriftField(value=5, name="faceNum", requiredness=Requiredness.REQUIRED) final int faceNum
465    ) throws NotFaceDetectedException, ServiceRuntimeException;
466
467    @ThriftMethod(value = "matDetectFace",
468                  exception = {
469                      @ThriftException(type=ServiceRuntimeException.class, id=1)
470                  })
471    List<CodeInfo> matDetectFace(
472        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
473        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
474        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
475        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
476    ) throws ServiceRuntimeException;
477
478    @ThriftMethod(value = "matDetectMaxFace",
479                  exception = {
480                      @ThriftException(type=NotFaceDetectedException.class, id=1),
481                      @ThriftException(type=ServiceRuntimeException.class, id=2)
482                  })
483    CodeInfo matDetectMaxFace(
484        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
485        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
486        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
487        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
488    ) throws NotFaceDetectedException, ServiceRuntimeException;
489
490    @ThriftMethod(value = "matGetCodeInfo",
491                  exception = {
492                      @ThriftException(type=NotFaceDetectedException.class, id=1),
493                      @ThriftException(type=ServiceRuntimeException.class, id=2)
494                  })
495    List<CodeInfo> matGetCodeInfo(
496        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
497        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
498        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
499        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
500        @ThriftField(value=5, name="facenum", requiredness=Requiredness.REQUIRED) final int facenum,
501        @ThriftField(value=6, name="facePos", requiredness=Requiredness.OPTIONAL) final List<CodeInfo> facePos
502    ) throws NotFaceDetectedException, ServiceRuntimeException;
503
504    @ThriftMethod(value = "matGetCodeInfoSingle",
505                  exception = {
506                      @ThriftException(type=ServiceRuntimeException.class, id=1)
507                  })
508    CodeInfo matGetCodeInfoSingle(
509        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
510        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
511        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
512        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
513        @ThriftField(value=5, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos
514    ) throws ServiceRuntimeException;
515
516    @ThriftMethod(value = "matHasFace",
517                  exception = {
518                      @ThriftException(type=ServiceRuntimeException.class, id=1)
519                  })
520    boolean matHasFace(
521        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
522        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
523        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
524        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height
525    ) throws ServiceRuntimeException;
526
527    @ThriftMethod(value = "matSearchFaces",
528                  exception = {
529                      @ThriftException(type=ImageErrorException.class, id=1),
530                      @ThriftException(type=NotFaceDetectedException.class, id=2),
531                      @ThriftException(type=ServiceRuntimeException.class, id=3)
532                  })
533    List<FseResult> matSearchFaces(
534        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
535        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
536        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
537        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
538        @ThriftField(value=5, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos,
539        @ThriftField(value=6, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
540        @ThriftField(value=7, name="rows", requiredness=Requiredness.REQUIRED) final int rows
541    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
542
543    @ThriftMethod(value = "matWearMask",
544                  exception = {
545                      @ThriftException(type=ServiceRuntimeException.class, id=1)
546                  })
547    boolean matWearMask(
548        @ThriftField(value=1, name="matType", requiredness=Requiredness.OPTIONAL) final MatType matType,
549        @ThriftField(value=2, name="matData", requiredness=Requiredness.OPTIONAL) final byte [] matData,
550        @ThriftField(value=3, name="width", requiredness=Requiredness.REQUIRED) final int width,
551        @ThriftField(value=4, name="height", requiredness=Requiredness.REQUIRED) final int height,
552        @ThriftField(value=5, name="faceInfo", requiredness=Requiredness.OPTIONAL) final CodeInfo faceInfo
553    ) throws ServiceRuntimeException;
554
555    @ThriftMethod(value = "sdkCapacity",
556                  exception = {
557                      @ThriftException(type=ServiceRuntimeException.class, id=1)
558                  })
559    Map<String, String> sdkCapacity() throws ServiceRuntimeException;
560
561    @ThriftMethod(value = "searchFaces",
562                  exception = {
563                      @ThriftException(type=ImageErrorException.class, id=1),
564                      @ThriftException(type=NotFaceDetectedException.class, id=2),
565                      @ThriftException(type=ServiceRuntimeException.class, id=3)
566                  })
567    List<FseResult> searchFaces(
568        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
569        @ThriftField(value=2, name="facePos", requiredness=Requiredness.OPTIONAL) final CodeInfo facePos,
570        @ThriftField(value=3, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
571        @ThriftField(value=4, name="rows", requiredness=Requiredness.REQUIRED) final int rows
572    ) throws ImageErrorException, NotFaceDetectedException, ServiceRuntimeException;
573
574    @ThriftMethod(value = "searchFeatures",
575                  exception = {
576                      @ThriftException(type=ServiceRuntimeException.class, id=1)
577                  })
578    List<FseResult> searchFeatures(
579        @ThriftField(value=1, name="feature", requiredness=Requiredness.OPTIONAL) final byte [] feature,
580        @ThriftField(value=2, name="similarty", requiredness=Requiredness.REQUIRED) final double similarty,
581        @ThriftField(value=3, name="rows", requiredness=Requiredness.REQUIRED) final int rows
582    ) throws ServiceRuntimeException;
583
584    @ThriftMethod(value = "wearMask",
585                  exception = {
586                      @ThriftException(type=ImageErrorException.class, id=1),
587                      @ThriftException(type=ServiceRuntimeException.class, id=2)
588                  })
589    boolean wearMask(
590        @ThriftField(value=1, name="imgData", requiredness=Requiredness.OPTIONAL) final byte [] imgData,
591        @ThriftField(value=2, name="faceInfo", requiredness=Requiredness.OPTIONAL) final CodeInfo faceInfo
592    ) throws ImageErrorException, ServiceRuntimeException;
593}