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