panlei
2019-08-22 dc8ca60fc53199251100883b4370de52a6534463
soinfo id change to string
2个文件已修改
3139 ■■■■■ 已修改文件
sdk.pb.go 3137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sdk.proto 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
sdk.pb.go
@@ -1,13 +1,11 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: sdk.proto
package protomsg
import (
    encoding_binary "encoding/binary"
    fmt "fmt"
    proto "github.com/gogo/protobuf/proto"
    io "io"
    proto "github.com/golang/protobuf/proto"
    math "math"
)
@@ -20,16 +18,19 @@
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Image ipc struct
type Image struct {
    Width     int32  `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
    Height    int32  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
    Data      []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
    Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
    Id        int64  `protobuf:"varint,5,opt,name=id,proto3" json:"id,omitempty"`
    Cid       string `protobuf:"bytes,6,opt,name=cid,proto3" json:"cid,omitempty"`
    Width                int32    `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
    Height               int32    `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
    Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
    Timestamp            string   `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
    Id                   int64    `protobuf:"varint,5,opt,name=id,proto3" json:"id,omitempty"`
    Cid                  string   `protobuf:"bytes,6,opt,name=cid,proto3" json:"cid,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *Image) Reset()         { *m = Image{} }
@@ -38,26 +39,18 @@
func (*Image) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{0}
}
func (m *Image) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_Image.Unmarshal(m, b)
}
func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_Image.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_Image.Marshal(b, m, deterministic)
}
func (m *Image) XXX_Merge(src proto.Message) {
    xxx_messageInfo_Image.Merge(m, src)
}
func (m *Image) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_Image.Size(m)
}
func (m *Image) XXX_DiscardUnknown() {
    xxx_messageInfo_Image.DiscardUnknown(m)
@@ -108,10 +101,13 @@
}
type FaceAngle struct {
    Yaw        int32   `protobuf:"varint,1,opt,name=yaw,proto3" json:"yaw,omitempty"`
    Pitch      int32   `protobuf:"varint,2,opt,name=pitch,proto3" json:"pitch,omitempty"`
    Roll       int32   `protobuf:"varint,3,opt,name=roll,proto3" json:"roll,omitempty"`
    Confidence float32 `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"`
    Yaw                  int32    `protobuf:"varint,1,opt,name=yaw,proto3" json:"yaw,omitempty"`
    Pitch                int32    `protobuf:"varint,2,opt,name=pitch,proto3" json:"pitch,omitempty"`
    Roll                 int32    `protobuf:"varint,3,opt,name=roll,proto3" json:"roll,omitempty"`
    Confidence           float32  `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *FaceAngle) Reset()         { *m = FaceAngle{} }
@@ -120,26 +116,18 @@
func (*FaceAngle) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{1}
}
func (m *FaceAngle) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_FaceAngle.Unmarshal(m, b)
}
func (m *FaceAngle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_FaceAngle.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_FaceAngle.Marshal(b, m, deterministic)
}
func (m *FaceAngle) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FaceAngle.Merge(m, src)
}
func (m *FaceAngle) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_FaceAngle.Size(m)
}
func (m *FaceAngle) XXX_DiscardUnknown() {
    xxx_messageInfo_FaceAngle.DiscardUnknown(m)
@@ -176,11 +164,14 @@
}
type ThftResult struct {
    Gender int32 `protobuf:"varint,1,opt,name=gender,proto3" json:"gender,omitempty"`
    Age    int32 `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
    Race   int32 `protobuf:"varint,3,opt,name=race,proto3" json:"race,omitempty"`
    Beauty int32 `protobuf:"varint,4,opt,name=beauty,proto3" json:"beauty,omitempty"`
    Smile  int32 `protobuf:"varint,5,opt,name=smile,proto3" json:"smile,omitempty"`
    Gender               int32    `protobuf:"varint,1,opt,name=gender,proto3" json:"gender,omitempty"`
    Age                  int32    `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
    Race                 int32    `protobuf:"varint,3,opt,name=race,proto3" json:"race,omitempty"`
    Beauty               int32    `protobuf:"varint,4,opt,name=beauty,proto3" json:"beauty,omitempty"`
    Smile                int32    `protobuf:"varint,5,opt,name=smile,proto3" json:"smile,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ThftResult) Reset()         { *m = ThftResult{} }
@@ -189,26 +180,18 @@
func (*ThftResult) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{2}
}
func (m *ThftResult) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ThftResult.Unmarshal(m, b)
}
func (m *ThftResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ThftResult.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ThftResult.Marshal(b, m, deterministic)
}
func (m *ThftResult) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ThftResult.Merge(m, src)
}
func (m *ThftResult) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ThftResult.Size(m)
}
func (m *ThftResult) XXX_DiscardUnknown() {
    xxx_messageInfo_ThftResult.DiscardUnknown(m)
@@ -252,15 +235,18 @@
}
type FacePos struct {
    RcFace     *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye  *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth    *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose     *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle     *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality    int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    FaceID     uint64     `protobuf:"varint,9,opt,name=faceID,proto3" json:"faceID,omitempty"`
    RcFace               *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye            *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye           *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth              *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose               *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle               *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality              int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData           []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    FaceID               uint64     `protobuf:"varint,9,opt,name=faceID,proto3" json:"faceID,omitempty"`
    XXX_NoUnkeyedLiteral struct{}   `json:"-"`
    XXX_unrecognized     []byte     `json:"-"`
    XXX_sizecache        int32      `json:"-"`
}
func (m *FacePos) Reset()         { *m = FacePos{} }
@@ -269,26 +255,18 @@
func (*FacePos) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{3}
}
func (m *FacePos) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_FacePos.Unmarshal(m, b)
}
func (m *FacePos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_FacePos.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_FacePos.Marshal(b, m, deterministic)
}
func (m *FacePos) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FacePos.Merge(m, src)
}
func (m *FacePos) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_FacePos.Size(m)
}
func (m *FacePos) XXX_DiscardUnknown() {
    xxx_messageInfo_FacePos.DiscardUnknown(m)
@@ -360,15 +338,18 @@
}
type FaceInfo struct {
    RcFace     *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye  *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth    *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose     *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle     *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality    int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    FaceID     int64      `protobuf:"varint,9,opt,name=faceID,proto3" json:"faceID,omitempty"`
    RcFace               *Rect      `protobuf:"bytes,1,opt,name=rcFace,proto3" json:"rcFace,omitempty"`
    PtLeftEye            *Point     `protobuf:"bytes,2,opt,name=ptLeftEye,proto3" json:"ptLeftEye,omitempty"`
    PtRightEye           *Point     `protobuf:"bytes,3,opt,name=ptRightEye,proto3" json:"ptRightEye,omitempty"`
    PtMouth              *Point     `protobuf:"bytes,4,opt,name=ptMouth,proto3" json:"ptMouth,omitempty"`
    PtNose               *Point     `protobuf:"bytes,5,opt,name=ptNose,proto3" json:"ptNose,omitempty"`
    FAngle               *FaceAngle `protobuf:"bytes,6,opt,name=fAngle,proto3" json:"fAngle,omitempty"`
    Quality              int32      `protobuf:"varint,7,opt,name=quality,proto3" json:"quality,omitempty"`
    FacialData           []byte     `protobuf:"bytes,8,opt,name=facialData,proto3" json:"facialData,omitempty"`
    FaceID               int64      `protobuf:"varint,9,opt,name=faceID,proto3" json:"faceID,omitempty"`
    XXX_NoUnkeyedLiteral struct{}   `json:"-"`
    XXX_unrecognized     []byte     `json:"-"`
    XXX_sizecache        int32      `json:"-"`
}
func (m *FaceInfo) Reset()         { *m = FaceInfo{} }
@@ -377,26 +358,18 @@
func (*FaceInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{4}
}
func (m *FaceInfo) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_FaceInfo.Unmarshal(m, b)
}
func (m *FaceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_FaceInfo.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_FaceInfo.Marshal(b, m, deterministic)
}
func (m *FaceInfo) XXX_Merge(src proto.Message) {
    xxx_messageInfo_FaceInfo.Merge(m, src)
}
func (m *FaceInfo) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_FaceInfo.Size(m)
}
func (m *FaceInfo) XXX_DiscardUnknown() {
    xxx_messageInfo_FaceInfo.DiscardUnknown(m)
@@ -468,10 +441,13 @@
}
type ObjInfo struct {
    RcObj *Rect   `protobuf:"bytes,1,opt,name=rcObj,proto3" json:"rcObj,omitempty"`
    Typ   int32   `protobuf:"varint,2,opt,name=typ,proto3" json:"typ,omitempty"`
    Prob  float32 `protobuf:"fixed32,3,opt,name=prob,proto3" json:"prob,omitempty"`
    ObjID uint64  `protobuf:"varint,4,opt,name=objID,proto3" json:"objID,omitempty"`
    RcObj                *Rect    `protobuf:"bytes,1,opt,name=rcObj,proto3" json:"rcObj,omitempty"`
    Typ                  int32    `protobuf:"varint,2,opt,name=typ,proto3" json:"typ,omitempty"`
    Prob                 float32  `protobuf:"fixed32,3,opt,name=prob,proto3" json:"prob,omitempty"`
    ObjID                uint64   `protobuf:"varint,4,opt,name=objID,proto3" json:"objID,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}
func (m *ObjInfo) Reset()         { *m = ObjInfo{} }
@@ -480,26 +456,18 @@
func (*ObjInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{5}
}
func (m *ObjInfo) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ObjInfo.Unmarshal(m, b)
}
func (m *ObjInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ObjInfo.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ObjInfo.Marshal(b, m, deterministic)
}
func (m *ObjInfo) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ObjInfo.Merge(m, src)
}
func (m *ObjInfo) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ObjInfo.Size(m)
}
func (m *ObjInfo) XXX_DiscardUnknown() {
    xxx_messageInfo_ObjInfo.DiscardUnknown(m)
@@ -537,9 +505,12 @@
// sdk face property
type ResultFaceDetect struct {
    Pos    *FacePos    `protobuf:"bytes,1,opt,name=pos,proto3" json:"pos,omitempty"`
    Result *ThftResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
    Feats  []byte      `protobuf:"bytes,3,opt,name=feats,proto3" json:"feats,omitempty"`
    Pos                  *FacePos    `protobuf:"bytes,1,opt,name=pos,proto3" json:"pos,omitempty"`
    Result               *ThftResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
    Feats                []byte      `protobuf:"bytes,3,opt,name=feats,proto3" json:"feats,omitempty"`
    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
    XXX_unrecognized     []byte      `json:"-"`
    XXX_sizecache        int32       `json:"-"`
}
func (m *ResultFaceDetect) Reset()         { *m = ResultFaceDetect{} }
@@ -548,26 +519,18 @@
func (*ResultFaceDetect) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{6}
}
func (m *ResultFaceDetect) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ResultFaceDetect.Unmarshal(m, b)
}
func (m *ResultFaceDetect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ResultFaceDetect.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ResultFaceDetect.Marshal(b, m, deterministic)
}
func (m *ResultFaceDetect) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ResultFaceDetect.Merge(m, src)
}
func (m *ResultFaceDetect) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ResultFaceDetect.Size(m)
}
func (m *ResultFaceDetect) XXX_DiscardUnknown() {
    xxx_messageInfo_ResultFaceDetect.DiscardUnknown(m)
@@ -597,7 +560,10 @@
}
type ParamFacePos struct {
    Faces []*ResultFaceDetect `protobuf:"bytes,1,rep,name=faces,proto3" json:"faces,omitempty"`
    Faces                []*ResultFaceDetect `protobuf:"bytes,1,rep,name=faces,proto3" json:"faces,omitempty"`
    XXX_NoUnkeyedLiteral struct{}            `json:"-"`
    XXX_unrecognized     []byte              `json:"-"`
    XXX_sizecache        int32               `json:"-"`
}
func (m *ParamFacePos) Reset()         { *m = ParamFacePos{} }
@@ -606,26 +572,18 @@
func (*ParamFacePos) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{7}
}
func (m *ParamFacePos) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ParamFacePos.Unmarshal(m, b)
}
func (m *ParamFacePos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ParamFacePos.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ParamFacePos.Marshal(b, m, deterministic)
}
func (m *ParamFacePos) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ParamFacePos.Merge(m, src)
}
func (m *ParamFacePos) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ParamFacePos.Size(m)
}
func (m *ParamFacePos) XXX_DiscardUnknown() {
    xxx_messageInfo_ParamFacePos.DiscardUnknown(m)
@@ -641,9 +599,12 @@
}
type ResultFaceExtCom struct {
    Feats []byte            `protobuf:"bytes,1,opt,name=feats,proto3" json:"feats,omitempty"`
    Comp  []byte            `protobuf:"bytes,2,opt,name=comp,proto3" json:"comp,omitempty"`
    Pos   *ResultFaceDetect `protobuf:"bytes,3,opt,name=pos,proto3" json:"pos,omitempty"`
    Feats                []byte            `protobuf:"bytes,1,opt,name=feats,proto3" json:"feats,omitempty"`
    Comp                 []byte            `protobuf:"bytes,2,opt,name=comp,proto3" json:"comp,omitempty"`
    Pos                  *ResultFaceDetect `protobuf:"bytes,3,opt,name=pos,proto3" json:"pos,omitempty"`
    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
    XXX_unrecognized     []byte            `json:"-"`
    XXX_sizecache        int32             `json:"-"`
}
func (m *ResultFaceExtCom) Reset()         { *m = ResultFaceExtCom{} }
@@ -652,26 +613,18 @@
func (*ResultFaceExtCom) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{8}
}
func (m *ResultFaceExtCom) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ResultFaceExtCom.Unmarshal(m, b)
}
func (m *ResultFaceExtCom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ResultFaceExtCom.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ResultFaceExtCom.Marshal(b, m, deterministic)
}
func (m *ResultFaceExtCom) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ResultFaceExtCom.Merge(m, src)
}
func (m *ResultFaceExtCom) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ResultFaceExtCom.Size(m)
}
func (m *ResultFaceExtCom) XXX_DiscardUnknown() {
    xxx_messageInfo_ResultFaceExtCom.DiscardUnknown(m)
@@ -701,7 +654,10 @@
}
type ParamFaceFeature struct {
    ExtComp []*ResultFaceExtCom `protobuf:"bytes,2,rep,name=extComp,proto3" json:"extComp,omitempty"`
    ExtComp              []*ResultFaceExtCom `protobuf:"bytes,2,rep,name=extComp,proto3" json:"extComp,omitempty"`
    XXX_NoUnkeyedLiteral struct{}            `json:"-"`
    XXX_unrecognized     []byte              `json:"-"`
    XXX_sizecache        int32               `json:"-"`
}
func (m *ParamFaceFeature) Reset()         { *m = ParamFaceFeature{} }
@@ -710,26 +666,18 @@
func (*ParamFaceFeature) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{9}
}
func (m *ParamFaceFeature) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ParamFaceFeature.Unmarshal(m, b)
}
func (m *ParamFaceFeature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ParamFaceFeature.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ParamFaceFeature.Marshal(b, m, deterministic)
}
func (m *ParamFaceFeature) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ParamFaceFeature.Merge(m, src)
}
func (m *ParamFaceFeature) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ParamFaceFeature.Size(m)
}
func (m *ParamFaceFeature) XXX_DiscardUnknown() {
    xxx_messageInfo_ParamFaceFeature.DiscardUnknown(m)
@@ -746,7 +694,10 @@
// sdk yolo detect
type ParamYoloObj struct {
    Infos []*ObjInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"`
    Infos                []*ObjInfo `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"`
    XXX_NoUnkeyedLiteral struct{}   `json:"-"`
    XXX_unrecognized     []byte     `json:"-"`
    XXX_sizecache        int32      `json:"-"`
}
func (m *ParamYoloObj) Reset()         { *m = ParamYoloObj{} }
@@ -755,26 +706,18 @@
func (*ParamYoloObj) Descriptor() ([]byte, []int) {
    return fileDescriptor_70decb0fb6f436df, []int{10}
}
func (m *ParamYoloObj) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
    return xxx_messageInfo_ParamYoloObj.Unmarshal(m, b)
}
func (m *ParamYoloObj) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_ParamYoloObj.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
    return xxx_messageInfo_ParamYoloObj.Marshal(b, m, deterministic)
}
func (m *ParamYoloObj) XXX_Merge(src proto.Message) {
    xxx_messageInfo_ParamYoloObj.Merge(m, src)
}
func (m *ParamYoloObj) XXX_Size() int {
    return m.Size()
    return xxx_messageInfo_ParamYoloObj.Size(m)
}
func (m *ParamYoloObj) XXX_DiscardUnknown() {
    xxx_messageInfo_ParamYoloObj.DiscardUnknown(m)
@@ -790,7 +733,7 @@
}
type SoInfo struct {
    Id                   int32    `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
    Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
    SdkId                string   `protobuf:"bytes,2,opt,name=sdkId,proto3" json:"sdkId,omitempty"`
    SoName               string   `protobuf:"bytes,3,opt,name=soName,proto3" json:"soName,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -823,11 +766,11 @@
var xxx_messageInfo_SoInfo proto.InternalMessageInfo
func (m *SoInfo) GetId() int32 {
func (m *SoInfo) GetId() string {
    if m != nil {
        return m.Id
    }
    return 0
    return ""
}
func (m *SoInfo) GetSdkId() string {
@@ -904,2823 +847,7 @@
    0xcf, 0x04, 0x53, 0xeb, 0x52, 0x90, 0xd7, 0xd0, 0x17, 0x9a, 0x15, 0xff, 0xf8, 0x4e, 0xcd, 0x46,
    0x18, 0xad, 0xa1, 0xe1, 0x1b, 0xdb, 0xf7, 0x57, 0x99, 0x4a, 0x1c, 0xe0, 0x11, 0xb8, 0x49, 0x1e,
    0xcb, 0xba, 0xef, 0x96, 0xe5, 0xf6, 0x22, 0x50, 0x53, 0x0f, 0xcf, 0xc0, 0xfb, 0x2c, 0xf5, 0xcd,
    0x30, 0x0f, 0xbf, 0x79, 0x5b, 0xf1, 0xe1, 0xc7, 0x97, 0x31, 0xba, 0x9c, 0x46, 0xba, 0x3f, 0x9f,
    0x9a, 0x04, 0xaf, 0x58, 0x25, 0xcf, 0x59, 0x66, 0x56, 0xc9, 0xa7, 0x36, 0x9b, 0x7b, 0x9a, 0xe0,
    0xd5, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x99, 0x69, 0x35, 0xca, 0x06, 0x00, 0x00,
    0x30, 0x0f, 0xbf, 0xa3, 0xdf, 0x79, 0x7c, 0xf8, 0xf1, 0x65, 0x8c, 0x2e, 0xa7, 0x91, 0xee, 0xcf,
    0xa7, 0x26, 0xc1, 0x2b, 0x56, 0xc9, 0x73, 0x96, 0x99, 0x55, 0xf2, 0xa9, 0xcd, 0xe6, 0x9e, 0x26,
    0x78, 0xf5, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xab, 0xaa, 0xb7, 0xca, 0x06, 0x00, 0x00,
}
func (m *Image) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *Image) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.Width != 0 {
        dAtA[i] = 0x8
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Width))
    }
    if m.Height != 0 {
        dAtA[i] = 0x10
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Height))
    }
    if len(m.Data) > 0 {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Data)))
        i += copy(dAtA[i:], m.Data)
    }
    if len(m.Timestamp) > 0 {
        dAtA[i] = 0x22
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Timestamp)))
        i += copy(dAtA[i:], m.Timestamp)
    }
    if m.Id != 0 {
        dAtA[i] = 0x28
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Id))
    }
    if len(m.Cid) > 0 {
        dAtA[i] = 0x32
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Cid)))
        i += copy(dAtA[i:], m.Cid)
    }
    return i, nil
}
func (m *FaceAngle) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *FaceAngle) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.Yaw != 0 {
        dAtA[i] = 0x8
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Yaw))
    }
    if m.Pitch != 0 {
        dAtA[i] = 0x10
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Pitch))
    }
    if m.Roll != 0 {
        dAtA[i] = 0x18
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Roll))
    }
    if m.Confidence != 0 {
        dAtA[i] = 0x25
        i++
        encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.Confidence))))
        i += 4
    }
    return i, nil
}
func (m *ThftResult) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ThftResult) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.Gender != 0 {
        dAtA[i] = 0x8
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Gender))
    }
    if m.Age != 0 {
        dAtA[i] = 0x10
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Age))
    }
    if m.Race != 0 {
        dAtA[i] = 0x18
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Race))
    }
    if m.Beauty != 0 {
        dAtA[i] = 0x20
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Beauty))
    }
    if m.Smile != 0 {
        dAtA[i] = 0x28
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Smile))
    }
    return i, nil
}
func (m *FacePos) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *FacePos) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.RcFace != nil {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.RcFace.Size()))
        n1, err1 := m.RcFace.MarshalTo(dAtA[i:])
        if err1 != nil {
            return 0, err1
        }
        i += n1
    }
    if m.PtLeftEye != nil {
        dAtA[i] = 0x12
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtLeftEye.Size()))
        n2, err2 := m.PtLeftEye.MarshalTo(dAtA[i:])
        if err2 != nil {
            return 0, err2
        }
        i += n2
    }
    if m.PtRightEye != nil {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtRightEye.Size()))
        n3, err3 := m.PtRightEye.MarshalTo(dAtA[i:])
        if err3 != nil {
            return 0, err3
        }
        i += n3
    }
    if m.PtMouth != nil {
        dAtA[i] = 0x22
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtMouth.Size()))
        n4, err4 := m.PtMouth.MarshalTo(dAtA[i:])
        if err4 != nil {
            return 0, err4
        }
        i += n4
    }
    if m.PtNose != nil {
        dAtA[i] = 0x2a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtNose.Size()))
        n5, err5 := m.PtNose.MarshalTo(dAtA[i:])
        if err5 != nil {
            return 0, err5
        }
        i += n5
    }
    if m.FAngle != nil {
        dAtA[i] = 0x32
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FAngle.Size()))
        n6, err6 := m.FAngle.MarshalTo(dAtA[i:])
        if err6 != nil {
            return 0, err6
        }
        i += n6
    }
    if m.Quality != 0 {
        dAtA[i] = 0x38
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Quality))
    }
    if len(m.FacialData) > 0 {
        dAtA[i] = 0x42
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.FacialData)))
        i += copy(dAtA[i:], m.FacialData)
    }
    if m.FaceID != 0 {
        dAtA[i] = 0x48
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FaceID))
    }
    return i, nil
}
func (m *FaceInfo) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *FaceInfo) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.RcFace != nil {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.RcFace.Size()))
        n7, err7 := m.RcFace.MarshalTo(dAtA[i:])
        if err7 != nil {
            return 0, err7
        }
        i += n7
    }
    if m.PtLeftEye != nil {
        dAtA[i] = 0x12
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtLeftEye.Size()))
        n8, err8 := m.PtLeftEye.MarshalTo(dAtA[i:])
        if err8 != nil {
            return 0, err8
        }
        i += n8
    }
    if m.PtRightEye != nil {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtRightEye.Size()))
        n9, err9 := m.PtRightEye.MarshalTo(dAtA[i:])
        if err9 != nil {
            return 0, err9
        }
        i += n9
    }
    if m.PtMouth != nil {
        dAtA[i] = 0x22
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtMouth.Size()))
        n10, err10 := m.PtMouth.MarshalTo(dAtA[i:])
        if err10 != nil {
            return 0, err10
        }
        i += n10
    }
    if m.PtNose != nil {
        dAtA[i] = 0x2a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.PtNose.Size()))
        n11, err11 := m.PtNose.MarshalTo(dAtA[i:])
        if err11 != nil {
            return 0, err11
        }
        i += n11
    }
    if m.FAngle != nil {
        dAtA[i] = 0x32
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FAngle.Size()))
        n12, err12 := m.FAngle.MarshalTo(dAtA[i:])
        if err12 != nil {
            return 0, err12
        }
        i += n12
    }
    if m.Quality != 0 {
        dAtA[i] = 0x38
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Quality))
    }
    if len(m.FacialData) > 0 {
        dAtA[i] = 0x42
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.FacialData)))
        i += copy(dAtA[i:], m.FacialData)
    }
    if m.FaceID != 0 {
        dAtA[i] = 0x48
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.FaceID))
    }
    return i, nil
}
func (m *ObjInfo) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ObjInfo) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.RcObj != nil {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.RcObj.Size()))
        n13, err13 := m.RcObj.MarshalTo(dAtA[i:])
        if err13 != nil {
            return 0, err13
        }
        i += n13
    }
    if m.Typ != 0 {
        dAtA[i] = 0x10
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Typ))
    }
    if m.Prob != 0 {
        dAtA[i] = 0x1d
        i++
        encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.Prob))))
        i += 4
    }
    if m.ObjID != 0 {
        dAtA[i] = 0x20
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.ObjID))
    }
    return i, nil
}
func (m *ResultFaceDetect) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ResultFaceDetect) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if m.Pos != nil {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Pos.Size()))
        n14, err14 := m.Pos.MarshalTo(dAtA[i:])
        if err14 != nil {
            return 0, err14
        }
        i += n14
    }
    if m.Result != nil {
        dAtA[i] = 0x12
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Result.Size()))
        n15, err15 := m.Result.MarshalTo(dAtA[i:])
        if err15 != nil {
            return 0, err15
        }
        i += n15
    }
    if len(m.Feats) > 0 {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Feats)))
        i += copy(dAtA[i:], m.Feats)
    }
    return i, nil
}
func (m *ParamFacePos) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ParamFacePos) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.Faces) > 0 {
        for _, msg := range m.Faces {
            dAtA[i] = 0xa
            i++
            i = encodeVarintSdk(dAtA, i, uint64(msg.Size()))
            n, err := msg.MarshalTo(dAtA[i:])
            if err != nil {
                return 0, err
            }
            i += n
        }
    }
    return i, nil
}
func (m *ResultFaceExtCom) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ResultFaceExtCom) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.Feats) > 0 {
        dAtA[i] = 0xa
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Feats)))
        i += copy(dAtA[i:], m.Feats)
    }
    if len(m.Comp) > 0 {
        dAtA[i] = 0x12
        i++
        i = encodeVarintSdk(dAtA, i, uint64(len(m.Comp)))
        i += copy(dAtA[i:], m.Comp)
    }
    if m.Pos != nil {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintSdk(dAtA, i, uint64(m.Pos.Size()))
        n16, err16 := m.Pos.MarshalTo(dAtA[i:])
        if err16 != nil {
            return 0, err16
        }
        i += n16
    }
    return i, nil
}
func (m *ParamFaceFeature) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ParamFaceFeature) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.ExtComp) > 0 {
        for _, msg := range m.ExtComp {
            dAtA[i] = 0x12
            i++
            i = encodeVarintSdk(dAtA, i, uint64(msg.Size()))
            n, err := msg.MarshalTo(dAtA[i:])
            if err != nil {
                return 0, err
            }
            i += n
        }
    }
    return i, nil
}
func (m *ParamYoloObj) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *ParamYoloObj) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.Infos) > 0 {
        for _, msg := range m.Infos {
            dAtA[i] = 0xa
            i++
            i = encodeVarintSdk(dAtA, i, uint64(msg.Size()))
            n, err := msg.MarshalTo(dAtA[i:])
            if err != nil {
                return 0, err
            }
            i += n
        }
    }
    return i, nil
}
func encodeVarintSdk(dAtA []byte, offset int, v uint64) int {
    for v >= 1<<7 {
        dAtA[offset] = uint8(v&0x7f | 0x80)
        v >>= 7
        offset++
    }
    dAtA[offset] = uint8(v)
    return offset + 1
}
func (m *Image) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.Width != 0 {
        n += 1 + sovSdk(uint64(m.Width))
    }
    if m.Height != 0 {
        n += 1 + sovSdk(uint64(m.Height))
    }
    l = len(m.Data)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    l = len(m.Timestamp)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Id != 0 {
        n += 1 + sovSdk(uint64(m.Id))
    }
    l = len(m.Cid)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    return n
}
func (m *FaceAngle) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.Yaw != 0 {
        n += 1 + sovSdk(uint64(m.Yaw))
    }
    if m.Pitch != 0 {
        n += 1 + sovSdk(uint64(m.Pitch))
    }
    if m.Roll != 0 {
        n += 1 + sovSdk(uint64(m.Roll))
    }
    if m.Confidence != 0 {
        n += 5
    }
    return n
}
func (m *ThftResult) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.Gender != 0 {
        n += 1 + sovSdk(uint64(m.Gender))
    }
    if m.Age != 0 {
        n += 1 + sovSdk(uint64(m.Age))
    }
    if m.Race != 0 {
        n += 1 + sovSdk(uint64(m.Race))
    }
    if m.Beauty != 0 {
        n += 1 + sovSdk(uint64(m.Beauty))
    }
    if m.Smile != 0 {
        n += 1 + sovSdk(uint64(m.Smile))
    }
    return n
}
func (m *FacePos) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.RcFace != nil {
        l = m.RcFace.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtLeftEye != nil {
        l = m.PtLeftEye.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtRightEye != nil {
        l = m.PtRightEye.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtMouth != nil {
        l = m.PtMouth.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtNose != nil {
        l = m.PtNose.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.FAngle != nil {
        l = m.FAngle.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Quality != 0 {
        n += 1 + sovSdk(uint64(m.Quality))
    }
    l = len(m.FacialData)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.FaceID != 0 {
        n += 1 + sovSdk(uint64(m.FaceID))
    }
    return n
}
func (m *FaceInfo) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.RcFace != nil {
        l = m.RcFace.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtLeftEye != nil {
        l = m.PtLeftEye.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtRightEye != nil {
        l = m.PtRightEye.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtMouth != nil {
        l = m.PtMouth.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.PtNose != nil {
        l = m.PtNose.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.FAngle != nil {
        l = m.FAngle.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Quality != 0 {
        n += 1 + sovSdk(uint64(m.Quality))
    }
    l = len(m.FacialData)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.FaceID != 0 {
        n += 1 + sovSdk(uint64(m.FaceID))
    }
    return n
}
func (m *ObjInfo) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.RcObj != nil {
        l = m.RcObj.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Typ != 0 {
        n += 1 + sovSdk(uint64(m.Typ))
    }
    if m.Prob != 0 {
        n += 5
    }
    if m.ObjID != 0 {
        n += 1 + sovSdk(uint64(m.ObjID))
    }
    return n
}
func (m *ResultFaceDetect) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if m.Pos != nil {
        l = m.Pos.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Result != nil {
        l = m.Result.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    l = len(m.Feats)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    return n
}
func (m *ParamFacePos) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if len(m.Faces) > 0 {
        for _, e := range m.Faces {
            l = e.Size()
            n += 1 + l + sovSdk(uint64(l))
        }
    }
    return n
}
func (m *ResultFaceExtCom) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    l = len(m.Feats)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    l = len(m.Comp)
    if l > 0 {
        n += 1 + l + sovSdk(uint64(l))
    }
    if m.Pos != nil {
        l = m.Pos.Size()
        n += 1 + l + sovSdk(uint64(l))
    }
    return n
}
func (m *ParamFaceFeature) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if len(m.ExtComp) > 0 {
        for _, e := range m.ExtComp {
            l = e.Size()
            n += 1 + l + sovSdk(uint64(l))
        }
    }
    return n
}
func (m *ParamYoloObj) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    if len(m.Infos) > 0 {
        for _, e := range m.Infos {
            l = e.Size()
            n += 1 + l + sovSdk(uint64(l))
        }
    }
    return n
}
func sovSdk(x uint64) (n int) {
    for {
        n++
        x >>= 7
        if x == 0 {
            break
        }
    }
    return n
}
func sozSdk(x uint64) (n int) {
    return sovSdk(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *Image) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: Image: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: Image: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Width", wireType)
            }
            m.Width = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Width |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 2:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType)
            }
            m.Height = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Height |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
            if m.Data == nil {
                m.Data = []byte{}
            }
            iNdEx = postIndex
        case 4:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Timestamp = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 5:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
            }
            m.Id = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Id |= int64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 6:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Cid = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *FaceAngle) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: FaceAngle: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: FaceAngle: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Yaw", wireType)
            }
            m.Yaw = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Yaw |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 2:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Pitch", wireType)
            }
            m.Pitch = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Pitch |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 3:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Roll", wireType)
            }
            m.Roll = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Roll |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 4:
            if wireType != 5 {
                return fmt.Errorf("proto: wrong wireType = %d for field Confidence", wireType)
            }
            var v uint32
            if (iNdEx + 4) > l {
                return io.ErrUnexpectedEOF
            }
            v = uint32(encoding_binary.LittleEndian.Uint32(dAtA[iNdEx:]))
            iNdEx += 4
            m.Confidence = float32(math.Float32frombits(v))
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ThftResult) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ThftResult: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ThftResult: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Gender", wireType)
            }
            m.Gender = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Gender |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 2:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Age", wireType)
            }
            m.Age = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Age |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 3:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Race", wireType)
            }
            m.Race = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Race |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 4:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Beauty", wireType)
            }
            m.Beauty = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Beauty |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 5:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Smile", wireType)
            }
            m.Smile = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Smile |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *FacePos) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: FacePos: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: FacePos: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field RcFace", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.RcFace == nil {
                m.RcFace = &Rect{}
            }
            if err := m.RcFace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtLeftEye", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtLeftEye == nil {
                m.PtLeftEye = &Point{}
            }
            if err := m.PtLeftEye.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtRightEye", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtRightEye == nil {
                m.PtRightEye = &Point{}
            }
            if err := m.PtRightEye.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 4:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtMouth", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtMouth == nil {
                m.PtMouth = &Point{}
            }
            if err := m.PtMouth.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 5:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtNose", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtNose == nil {
                m.PtNose = &Point{}
            }
            if err := m.PtNose.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 6:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field FAngle", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.FAngle == nil {
                m.FAngle = &FaceAngle{}
            }
            if err := m.FAngle.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 7:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Quality", wireType)
            }
            m.Quality = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Quality |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 8:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field FacialData", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.FacialData = append(m.FacialData[:0], dAtA[iNdEx:postIndex]...)
            if m.FacialData == nil {
                m.FacialData = []byte{}
            }
            iNdEx = postIndex
        case 9:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field FaceID", wireType)
            }
            m.FaceID = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.FaceID |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *FaceInfo) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: FaceInfo: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: FaceInfo: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field RcFace", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.RcFace == nil {
                m.RcFace = &Rect{}
            }
            if err := m.RcFace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtLeftEye", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtLeftEye == nil {
                m.PtLeftEye = &Point{}
            }
            if err := m.PtLeftEye.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtRightEye", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtRightEye == nil {
                m.PtRightEye = &Point{}
            }
            if err := m.PtRightEye.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 4:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtMouth", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtMouth == nil {
                m.PtMouth = &Point{}
            }
            if err := m.PtMouth.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 5:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field PtNose", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.PtNose == nil {
                m.PtNose = &Point{}
            }
            if err := m.PtNose.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 6:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field FAngle", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.FAngle == nil {
                m.FAngle = &FaceAngle{}
            }
            if err := m.FAngle.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 7:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Quality", wireType)
            }
            m.Quality = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Quality |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 8:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field FacialData", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.FacialData = append(m.FacialData[:0], dAtA[iNdEx:postIndex]...)
            if m.FacialData == nil {
                m.FacialData = []byte{}
            }
            iNdEx = postIndex
        case 9:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field FaceID", wireType)
            }
            m.FaceID = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.FaceID |= int64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ObjInfo) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ObjInfo: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ObjInfo: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field RcObj", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.RcObj == nil {
                m.RcObj = &Rect{}
            }
            if err := m.RcObj.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 2:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Typ", wireType)
            }
            m.Typ = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Typ |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 3:
            if wireType != 5 {
                return fmt.Errorf("proto: wrong wireType = %d for field Prob", wireType)
            }
            var v uint32
            if (iNdEx + 4) > l {
                return io.ErrUnexpectedEOF
            }
            v = uint32(encoding_binary.LittleEndian.Uint32(dAtA[iNdEx:]))
            iNdEx += 4
            m.Prob = float32(math.Float32frombits(v))
        case 4:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field ObjID", wireType)
            }
            m.ObjID = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.ObjID |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ResultFaceDetect) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ResultFaceDetect: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ResultFaceDetect: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Pos", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.Pos == nil {
                m.Pos = &FacePos{}
            }
            if err := m.Pos.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.Result == nil {
                m.Result = &ThftResult{}
            }
            if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Feats", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Feats = append(m.Feats[:0], dAtA[iNdEx:postIndex]...)
            if m.Feats == nil {
                m.Feats = []byte{}
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ParamFacePos) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ParamFacePos: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ParamFacePos: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Faces", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Faces = append(m.Faces, &ResultFaceDetect{})
            if err := m.Faces[len(m.Faces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ResultFaceExtCom) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ResultFaceExtCom: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ResultFaceExtCom: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Feats", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Feats = append(m.Feats[:0], dAtA[iNdEx:postIndex]...)
            if m.Feats == nil {
                m.Feats = []byte{}
            }
            iNdEx = postIndex
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Comp", wireType)
            }
            var byteLen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                byteLen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if byteLen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + byteLen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Comp = append(m.Comp[:0], dAtA[iNdEx:postIndex]...)
            if m.Comp == nil {
                m.Comp = []byte{}
            }
            iNdEx = postIndex
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Pos", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            if m.Pos == nil {
                m.Pos = &ResultFaceDetect{}
            }
            if err := m.Pos.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ParamFaceFeature) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ParamFaceFeature: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ParamFaceFeature: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 2:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field ExtComp", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.ExtComp = append(m.ExtComp, &ResultFaceExtCom{})
            if err := m.ExtComp[len(m.ExtComp)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *ParamYoloObj) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: ParamYoloObj: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: ParamYoloObj: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Infos", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthSdk
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthSdk
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Infos = append(m.Infos, &ObjInfo{})
            if err := m.Infos[len(m.Infos)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipSdk(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthSdk
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func skipSdk(dAtA []byte) (n int, err error) {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return 0, ErrIntOverflowSdk
            }
            if iNdEx >= l {
                return 0, io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= (uint64(b) & 0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        wireType := int(wire & 0x7)
        switch wireType {
        case 0:
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return 0, ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return 0, io.ErrUnexpectedEOF
                }
                iNdEx++
                if dAtA[iNdEx-1] < 0x80 {
                    break
                }
            }
            return iNdEx, nil
        case 1:
            iNdEx += 8
            return iNdEx, nil
        case 2:
            var length int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return 0, ErrIntOverflowSdk
                }
                if iNdEx >= l {
                    return 0, io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                length |= (int(b) & 0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if length < 0 {
                return 0, ErrInvalidLengthSdk
            }
            iNdEx += length
            if iNdEx < 0 {
                return 0, ErrInvalidLengthSdk
            }
            return iNdEx, nil
        case 3:
            for {
                var innerWire uint64
                var start int = iNdEx
                for shift := uint(0); ; shift += 7 {
                    if shift >= 64 {
                        return 0, ErrIntOverflowSdk
                    }
                    if iNdEx >= l {
                        return 0, io.ErrUnexpectedEOF
                    }
                    b := dAtA[iNdEx]
                    iNdEx++
                    innerWire |= (uint64(b) & 0x7F) << shift
                    if b < 0x80 {
                        break
                    }
                }
                innerWireType := int(innerWire & 0x7)
                if innerWireType == 4 {
                    break
                }
                next, err := skipSdk(dAtA[start:])
                if err != nil {
                    return 0, err
                }
                iNdEx = start + next
                if iNdEx < 0 {
                    return 0, ErrInvalidLengthSdk
                }
            }
            return iNdEx, nil
        case 4:
            return iNdEx, nil
        case 5:
            iNdEx += 4
            return iNdEx, nil
        default:
            return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
        }
    }
    panic("unreachable")
}
var (
    ErrInvalidLengthSdk = fmt.Errorf("proto: negative length found during unmarshaling")
    ErrIntOverflowSdk   = fmt.Errorf("proto: integer overflow")
)
sdk.proto
@@ -82,7 +82,7 @@
}
message SoInfo {
    int32 id = 1;
    string id = 1;
    string sdkId = 2;
    string soName = 3;
}