Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Vision / Interop / Interop.MediaVision.Face.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using Tizen.Multimedia;
20
21 /// <summary>
22 /// Interop APIs
23 /// </summary>
24 internal static partial class Interop
25 {
26     /// <summary>
27     /// Interop for media vision APIs
28     /// </summary>
29     internal static partial class MediaVision
30     {
31         /// <summary>
32         /// Interop for Face APIs
33         /// </summary>
34         internal static partial class Face
35         {
36             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_detect")]
37             internal static extern MediaVisionError Detect(IntPtr source, IntPtr engineCfg,
38                 DetectedCallback detectedCb, IntPtr userData = default(IntPtr));
39
40             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognize")]
41             internal static extern MediaVisionError Recognize(IntPtr source, IntPtr recognitionModel, IntPtr engineCfg,
42                 IntPtr faceLocation, RecognizedCallback recognizedCb, IntPtr userData = default(IntPtr));
43
44             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognize")]
45             internal static extern MediaVisionError Recognize(IntPtr source, IntPtr recognitionModel, IntPtr engineCfg,
46                 ref Rectangle faceLocation, RecognizedCallback recognizedCb, IntPtr userData = default(IntPtr));
47
48             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_track")]
49             internal static extern MediaVisionError Track(IntPtr source, IntPtr trackingModel, IntPtr engineCfg,
50                 TrackedCallback trackedCb, bool doLearn, IntPtr userData = default(IntPtr));
51
52             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_eye_condition_recognize")]
53             internal static extern MediaVisionError RecognizeEyeCondition(IntPtr source, IntPtr engineCfg,
54                 Rectangle faceLocation, EyeConditionRecognizedCallback eyeConditionRecognizedCb, IntPtr userData = default(IntPtr));
55
56             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_facial_expression_recognize")]
57             internal static extern MediaVisionError RecognizeFacialExpression(IntPtr source, IntPtr engineCfg,
58                 Rectangle faceLocation, MvFaceFacialExpressionRecognizedCallback expressionRecognizedCb,
59                 IntPtr userData = default(IntPtr));
60
61             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
62             internal delegate void DetectedCallback(IntPtr source, IntPtr engineCfg,
63                 [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] Rectangle[] facesLocations,
64                 int numberOfFaces, IntPtr userData);
65
66             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
67             internal delegate void RecognizedCallback(IntPtr source, IntPtr recognitionModel,
68                 IntPtr engineCfg, IntPtr faceLocation, IntPtr faceLabel, double confidence, IntPtr userData);
69
70             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
71             internal delegate void TrackedCallback(IntPtr source, IntPtr trackingModel, IntPtr engineCfg,
72                 IntPtr location, double confidence, IntPtr userData);
73
74             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
75             internal delegate void EyeConditionRecognizedCallback(IntPtr source, IntPtr engineCfg,
76                 Rectangle faceLocation, EyeCondition eyeCondition, IntPtr userData);
77
78             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
79             internal delegate void MvFaceFacialExpressionRecognizedCallback(IntPtr source,
80                 IntPtr engineCfg, Rectangle faceLocation, FacialExpression facialExpression, IntPtr userData);
81         }
82
83         /// <summary>
84         /// Interop for FaceRecognitionModel APIs
85         /// </summary>
86         internal static partial class FaceRecognitionModel
87         {
88             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_create")]
89             internal static extern MediaVisionError Create(out IntPtr handle);
90
91             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_destroy")]
92             internal static extern int Destroy(IntPtr handle);
93
94             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_clone")]
95             internal static extern int Clone(IntPtr src, out IntPtr dst);
96
97             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_save")]
98             internal static extern MediaVisionError Save(string fileName, IntPtr handle);
99
100             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_load")]
101             internal static extern MediaVisionError Load(string fileName, out IntPtr handle);
102
103             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_add")]
104             internal static extern MediaVisionError Add(IntPtr source, IntPtr recognitionModel,
105                 ref Rectangle exampleLocation, int faceLabel);
106
107             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_add")]
108             internal static extern MediaVisionError Add(IntPtr source, IntPtr recognitionModel,
109                 IntPtr exampleLocation, int faceLabel);
110
111             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_reset")]
112             internal static extern MediaVisionError Reset(IntPtr recognitionModel, IntPtr faceLabel = default(IntPtr));
113
114             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_reset")]
115             internal static extern MediaVisionError Remove(IntPtr recognitionModel, ref int faceLabel);
116
117             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_learn")]
118             internal static extern MediaVisionError Learn(IntPtr engineCfg, IntPtr handle);
119
120             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_query_labels")]
121             internal static extern MediaVisionError QueryLabels(IntPtr handle, out IntPtr labels, out uint numberOfLabels);
122         }
123
124         /// <summary>
125         /// Interop for FaceTrackingModel APIs
126         /// </summary>
127         internal static partial class FaceTrackingModel
128         {
129             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_create")]
130             internal static extern MediaVisionError Create(out IntPtr handle);
131
132             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_destroy")]
133             internal static extern int Destroy(IntPtr handle);
134
135             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_prepare")]
136             internal static extern MediaVisionError Prepare(IntPtr trackingModel, IntPtr engineCfg,
137                 IntPtr source, ref Quadrangle location);
138
139             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_prepare")]
140             internal static extern MediaVisionError Prepare(IntPtr trackingModel, IntPtr engineCfg,
141                 IntPtr source, IntPtr location);
142
143             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_clone")]
144             internal static extern int Clone(IntPtr src, out IntPtr dst);
145
146             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_save")]
147             internal static extern MediaVisionError Save(string fileName, IntPtr handle);
148
149             [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_load")]
150             internal static extern MediaVisionError Load(string fileName, out IntPtr handle);
151         }
152     }
153 }