2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Runtime.InteropServices;
19 using Tizen.Multimedia;
24 internal static partial class Interop
27 /// Interop for media vision APIs
29 internal static partial class MediaVision
32 /// Interop for Face APIs
34 internal static partial class Face
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));
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));
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));
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));
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));
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));
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);
66 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
67 internal delegate void RecognizedCallback(IntPtr source, IntPtr recognitionModel,
68 IntPtr engineCfg, IntPtr faceLocation, IntPtr faceLabel, double confidence, IntPtr userData);
70 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
71 internal delegate void TrackedCallback(IntPtr source, IntPtr trackingModel, IntPtr engineCfg,
72 IntPtr location, double confidence, IntPtr userData);
74 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
75 internal delegate void EyeConditionRecognizedCallback(IntPtr source, IntPtr engineCfg,
76 Rectangle faceLocation, EyeCondition eyeCondition, IntPtr userData);
78 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
79 internal delegate void MvFaceFacialExpressionRecognizedCallback(IntPtr source,
80 IntPtr engineCfg, Rectangle faceLocation, FacialExpression facialExpression, IntPtr userData);
84 /// Interop for FaceRecognitionModel APIs
86 internal static partial class FaceRecognitionModel
88 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_create")]
89 internal static extern MediaVisionError Create(out IntPtr handle);
91 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_destroy")]
92 internal static extern int Destroy(IntPtr handle);
94 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_clone")]
95 internal static extern int Clone(IntPtr src, out IntPtr dst);
97 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_save")]
98 internal static extern MediaVisionError Save(string fileName, IntPtr handle);
100 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_load")]
101 internal static extern MediaVisionError Load(string fileName, out IntPtr handle);
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);
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);
111 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_reset")]
112 internal static extern MediaVisionError Reset(IntPtr recognitionModel, IntPtr faceLabel = default(IntPtr));
114 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_reset")]
115 internal static extern MediaVisionError Remove(IntPtr recognitionModel, ref int faceLabel);
117 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_recognition_model_learn")]
118 internal static extern MediaVisionError Learn(IntPtr engineCfg, IntPtr handle);
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);
125 /// Interop for FaceTrackingModel APIs
127 internal static partial class FaceTrackingModel
129 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_create")]
130 internal static extern MediaVisionError Create(out IntPtr handle);
132 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_destroy")]
133 internal static extern int Destroy(IntPtr handle);
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);
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);
143 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_clone")]
144 internal static extern int Clone(IntPtr src, out IntPtr dst);
146 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_save")]
147 internal static extern MediaVisionError Save(string fileName, IntPtr handle);
149 [DllImport(Libraries.MediaVision, EntryPoint = "mv_face_tracking_model_load")]
150 internal static extern MediaVisionError Load(string fileName, out IntPtr handle);