[Camera] Fixed possible memory leak and Add some descriptions
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia / Interop / Interop.Camera.cs
1 using System;
2 using System.Runtime.InteropServices;
3
4 namespace Tizen.Multimedia
5 {
6     internal static partial class Interop
7     {
8         internal static partial class Camera
9         {
10             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
11             internal delegate void FaceDetectedCallback(IntPtr faces, int count, IntPtr userData);
12
13             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
14             internal delegate void StateChangedCallback(CameraState previous, CameraState current, bool byPolicy, IntPtr userData);
15
16             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
17             internal delegate void InterruptedCallback(CameraPolicy policy, CameraState previous, CameraState current, IntPtr userData);
18
19             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
20             internal delegate void FocusStateChangedCallback(CameraFocusState state, IntPtr userData);
21
22             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
23             internal delegate void ErrorCallback(CameraErrorCode error, CameraState current, IntPtr userData);
24
25             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
26             internal delegate void CapturingCallback(IntPtr image, IntPtr postview, IntPtr thumbnail, IntPtr userData);
27
28             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
29             internal delegate void CaptureCompletedCallback(IntPtr userData);
30
31             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
32             internal delegate void PreviewCallback(IntPtr frame, IntPtr userData);
33
34             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
35             internal delegate void MediaPacketPreviewCallback(IntPtr mediaPacketHandle, IntPtr userData);
36
37             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
38             internal delegate void HdrCaptureProgressCallback(int percent, IntPtr userData);
39
40             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
41             internal delegate void DeviceStateChangedCallback(CameraDevice device, CameraDeviceState state, IntPtr userData);
42
43             [DllImport(Libraries.Camera, EntryPoint = "camera_create")]
44             internal static extern CameraError Create(int device, out IntPtr handle);
45
46             [DllImport(Libraries.Camera, EntryPoint = "camera_change_device")]
47             internal static extern CameraError ChangeDevice(IntPtr handle, int device);
48
49             [DllImport(Libraries.Camera, EntryPoint = "camera_destroy")]
50             internal static extern CameraError Destroy(IntPtr handle);
51
52             [DllImport(Libraries.Camera, EntryPoint = "camera_get_device_count")]
53             internal static extern CameraError GetDeviceCount(IntPtr handle, out int count);
54
55             [DllImport(Libraries.Camera, EntryPoint = "camera_start_preview")]
56             internal static extern CameraError StartPreview(IntPtr handle);
57
58             [DllImport(Libraries.Camera, EntryPoint = "camera_stop_preview")]
59             internal static extern CameraError StopPreview(IntPtr handle);
60
61             [DllImport(Libraries.Camera, EntryPoint = "camera_get_device_state")]
62             internal static extern CameraError GetDeviceState(CameraDevice device, out int state);
63
64             [DllImport(Libraries.Camera, EntryPoint = "camera_start_capture")]
65             internal static extern CameraError StartCapture(IntPtr handle, CapturingCallback captureCallback,
66                                                     CaptureCompletedCallback completedCallback, IntPtr userData);
67
68             [DllImport(Libraries.Camera, EntryPoint = "camera_start_continuous_capture")]
69             internal static extern CameraError StartContinuousCapture(IntPtr handle, int count, int interval,
70                                                               CapturingCallback captureCallback, CaptureCompletedCallback completedCallback, IntPtr userData);
71
72             [DllImport(Libraries.Camera, EntryPoint = "camera_stop_continuous_capture")]
73             internal static extern CameraError StopContinuousCapture(IntPtr handle);
74
75             [DllImport(Libraries.Camera, EntryPoint = "camera_get_state")]
76             internal static extern CameraError GetState(IntPtr handle, out CameraState state);
77
78             [DllImport(Libraries.Camera, EntryPoint = "camera_start_focusing")]
79             internal static extern CameraError StartFocusing(IntPtr handle, bool continuous);
80
81             [DllImport(Libraries.Camera, EntryPoint = "camera_cancel_focusing")]
82             internal static extern CameraError CancelFocusing(IntPtr handle);
83
84             [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_resolution")]
85             internal static extern CameraError SetPreviewResolution(IntPtr handle, int width, int height);
86
87             [DllImport(Libraries.Camera, EntryPoint = "camera_get_preview_resolution")]
88             internal static extern CameraError GetPreviewResolution(IntPtr handle, out int width, out int height);
89
90             [DllImport(Libraries.Camera, EntryPoint = "camera_get_recommended_preview_resolution")]
91             internal static extern CameraError GetRecommendedPreviewResolution(IntPtr handle, out int width, out int height);
92
93             [DllImport(Libraries.Camera, EntryPoint = "camera_start_face_detection")]
94             internal static extern CameraError StartFaceDetection(IntPtr handle, FaceDetectedCallback callback, IntPtr userData);
95
96             [DllImport(Libraries.Camera, EntryPoint = "camera_stop_face_detection")]
97             internal static extern CameraError StopFaceDetection(IntPtr handle);
98
99             [DllImport(Libraries.Camera, EntryPoint = "camera_set_display_reuse_hint")]
100             internal static extern CameraError SetDisplayReuseHint(IntPtr handle, bool hint);
101
102             [DllImport(Libraries.Camera, EntryPoint = "camera_get_display_reuse_hint")]
103             internal static extern CameraError GetDisplayReuseHint(IntPtr handle, out bool hint);
104
105             [DllImport(Libraries.Camera, EntryPoint = "camera_set_capture_resolution")]
106             internal static extern CameraError SetCaptureResolution(IntPtr handle, int width, int height);
107
108             [DllImport(Libraries.Camera, EntryPoint = "camera_get_capture_resolution")]
109             internal static extern CameraError GetCaptureResolution(IntPtr handle, out int width, out int height);
110
111             [DllImport(Libraries.Camera, EntryPoint = "camera_set_capture_format")]
112             internal static extern CameraError SetCaptureFormat(IntPtr handle, CameraPixelFormat format);
113
114             [DllImport(Libraries.Camera, EntryPoint = "camera_get_capture_format")]
115             internal static extern CameraError GetCaptureFormat(IntPtr handle, out CameraPixelFormat format);
116
117             [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_format")]
118             internal static extern CameraError SetPreviewPixelFormat(IntPtr handle, CameraPixelFormat format);
119
120             [DllImport(Libraries.Camera, EntryPoint = "camera_get_preview_format")]
121             internal static extern CameraError GetPreviewPixelFormat(IntPtr handle, out CameraPixelFormat format);
122
123             [DllImport(Libraries.Camera, EntryPoint = "camera_get_facing_direction")]
124             internal static extern CameraError GetFacingDirection(IntPtr handle, out CameraFacingDirection direction);
125
126             [DllImport(Libraries.Camera, EntryPoint = "camera_get_flash_state")]
127             internal static extern CameraError GetFlashState(CameraDevice device, out CameraFlashState state);
128
129             [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_cb")]
130             internal static extern CameraError SetPreviewCallback(IntPtr handle, PreviewCallback callback, IntPtr userData);
131
132             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_preview_cb")]
133             internal static extern CameraError UnsetPreviewCallback(IntPtr handle);
134
135             [DllImport(Libraries.Camera, EntryPoint = "camera_set_media_packet_preview_cb")]
136             internal static extern CameraError SetMediaPacketPreviewCallback(IntPtr handle, MediaPacketPreviewCallback callback, IntPtr userData);
137
138             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_media_packet_preview_cb")]
139             internal static extern CameraError UnsetMediaPacketPreviewCallback(IntPtr handle);
140
141             [DllImport(Libraries.Camera, EntryPoint = "camera_set_state_changed_cb")]
142             internal static extern CameraError SetStateChangedCallback(IntPtr handle, StateChangedCallback callback, IntPtr userData);
143
144             [DllImport(Libraries.Camera, EntryPoint = "camera_add_device_state_changed_cb")]
145             internal static extern CameraError SetDeviceStateChangedCallback(DeviceStateChangedCallback callback, IntPtr userData, out int callbackId);
146
147             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_state_changed_cb")]
148             internal static extern CameraError UnsetStateChangedCallback(IntPtr handle);
149
150             [DllImport(Libraries.Camera, EntryPoint = "camera_remove_device_state_changed_cb")]
151             internal static extern CameraError UnsetDeviceStateChangedCallback(int cbId);
152
153             [DllImport(Libraries.Camera, EntryPoint = "camera_set_interrupted_cb")]
154             internal static extern CameraError SetInterruptedCallback(IntPtr handle, InterruptedCallback callback, IntPtr userData);
155
156             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_interrupted_cb")]
157             internal static extern CameraError UnsetInterruptedCallback(IntPtr handle);
158
159             [DllImport(Libraries.Camera, EntryPoint = "camera_set_focus_changed_cb")]
160             internal static extern CameraError SetFocusStateChangedCallback(IntPtr handle, FocusStateChangedCallback callback, IntPtr userData);
161
162             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_focus_changed_cb")]
163             internal static extern CameraError UnsetFocusChangedCallback(IntPtr handle);
164
165             [DllImport(Libraries.Camera, EntryPoint = "camera_set_error_cb")]
166             internal static extern CameraError SetErrorCallback(IntPtr handle, ErrorCallback callback, IntPtr userData);
167
168             [DllImport(Libraries.Camera, EntryPoint = "camera_unset_error_cb")]
169             internal static extern CameraError UnsetErrorCallback(IntPtr handle);
170
171             [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_hdr_capture_progress_cb")]
172             internal static extern CameraError SetHdrCaptureProgressCallback(IntPtr handle, HdrCaptureProgressCallback callback, IntPtr userData);
173
174             [DllImport(Libraries.Camera, EntryPoint = "camera_attr_unset_hdr_capture_progress_cb")]
175             internal static extern CameraError UnsetHdrCaptureProgressCallback(IntPtr handle);
176
177             [StructLayout(LayoutKind.Sequential)]
178             internal struct ImageDataStruct
179             {
180                 internal IntPtr Data;
181                 internal uint DataLength;
182                 internal int Width;
183                 internal int Height;
184                 internal CameraPixelFormat Format;
185                 internal IntPtr Exif;
186                 internal uint ExifLength;
187             }
188
189             [StructLayout(LayoutKind.Sequential)]
190             internal struct DetectedFaceStruct
191             {
192                 internal int Id;
193                 internal int Score;
194                 internal int X;
195                 internal int Y;
196                 internal int Width;
197                 internal int Height;
198             }
199
200             [StructLayout(LayoutKind.Sequential)]
201             internal struct SinglePlaneStruct
202             {
203                 internal IntPtr Data;
204                 internal uint DataLength;
205             }
206
207             [StructLayout(LayoutKind.Sequential)]
208             internal struct DoublePlaneStruct
209             {
210                 internal IntPtr Y;
211                 internal IntPtr UV;
212                 internal uint YLength;
213                 internal uint UVLength;
214             }
215
216             [StructLayout(LayoutKind.Sequential)]
217             internal struct TriplePlaneStruct
218             {
219                 internal IntPtr Y;
220                 internal IntPtr U;
221                 internal IntPtr V;
222                 internal uint YLength;
223                 internal uint ULength;
224                 internal uint VLength;
225             }
226
227             [StructLayout(LayoutKind.Sequential)]
228             internal struct EncodedPlaneStruct
229             {
230                 internal IntPtr Data;
231                 internal uint DataLength;
232             }
233
234             [StructLayout(LayoutKind.Explicit)]
235             internal struct PreviewPlaneStruct
236             {
237                 [FieldOffsetAttribute(0)]
238                 internal SinglePlaneStruct SinglePlane;
239                 [FieldOffsetAttribute(0)]
240                 internal DoublePlaneStruct DoublePlane;
241                 [FieldOffsetAttribute(0)]
242                 internal TriplePlaneStruct TriplePlane;
243                 [FieldOffsetAttribute(0)]
244                 internal EncodedPlaneStruct EncodedPlane;
245             }
246
247             [StructLayout(LayoutKind.Sequential)]
248             internal struct CameraPreviewDataStruct
249             {
250                 internal CameraPixelFormat Format;
251                 internal int Width;
252                 internal int Height;
253                 internal int NumOfPlanes;
254                 internal uint TimeStamp;
255                 internal PreviewPlaneStruct Plane;
256             }
257         }
258     }
259 }