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.Internals;
20 using Tizen.Multimedia;
22 internal static partial class Interop
24 internal static partial class Camera
26 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
27 internal delegate void FaceDetectedCallback(IntPtr faces, int count, IntPtr userData);
29 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
30 internal delegate void StateChangedCallback(CameraState previous, CameraState current, bool byPolicy, IntPtr userData);
32 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
33 internal delegate void InterruptedCallback(CameraPolicy policy, CameraState previous, CameraState current, IntPtr userData);
35 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
36 internal delegate void InterruptStartedCallback(CameraPolicy policy, CameraState state, IntPtr userData);
38 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
39 internal delegate void FocusStateChangedCallback(CameraFocusState state, IntPtr userData);
41 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
42 internal delegate void ErrorCallback(CameraErrorCode error, CameraState current, IntPtr userData);
44 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
45 internal delegate void CapturingCallback(IntPtr image, IntPtr postview, IntPtr thumbnail, IntPtr userData);
47 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
48 internal delegate void CaptureCompletedCallback(IntPtr userData);
50 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
51 internal delegate void PreviewCallback(IntPtr frame, IntPtr userData);
53 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
54 internal delegate void ExtraPreviewCallback(IntPtr frame, int streamId, IntPtr userData);
56 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
57 internal delegate void MediaPacketPreviewCallback(IntPtr mediaPacketHandle, IntPtr userData);
59 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
60 internal delegate void HdrCaptureProgressCallback(int percent, IntPtr userData);
62 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
63 internal delegate void DeviceStateChangedCallback(CameraDevice device, CameraDeviceState state, IntPtr userData);
65 [DllImport(Libraries.Camera, EntryPoint = "camera_create")]
66 internal static extern CameraError Create(CameraDevice device, out IntPtr handle);
68 [DllImport(Libraries.Camera, EntryPoint ="camera_create_network")]
69 internal static extern CameraError CreateNetworkCamera(CameraDevice device, out IntPtr handle);
71 [DllImport(Libraries.Camera, EntryPoint = "camera_change_device")]
72 internal static extern CameraError ChangeDevice(IntPtr handle, CameraDevice device);
74 [DllImport(Libraries.Camera, EntryPoint = "camera_destroy")]
75 internal static extern CameraError Destroy(IntPtr handle);
77 [DllImport(Libraries.Camera, EntryPoint = "camera_get_device_count")]
78 internal static extern CameraError GetDeviceCount(IntPtr handle, out int count);
80 [DllImport(Libraries.Camera, EntryPoint = "camera_start_preview")]
81 internal static extern CameraError StartPreview(IntPtr handle);
83 [DllImport(Libraries.Camera, EntryPoint = "camera_stop_preview")]
84 internal static extern CameraError StopPreview(IntPtr handle);
86 [DllImport(Libraries.Camera, EntryPoint = "camera_get_device_state")]
87 internal static extern CameraError GetDeviceState(CameraDevice device, out CameraDeviceState state);
89 [DllImport(Libraries.Camera, EntryPoint = "camera_start_capture")]
90 internal static extern CameraError StartCapture(IntPtr handle, CapturingCallback captureCallback,
91 CaptureCompletedCallback completedCallback, IntPtr userData = default);
93 [DllImport(Libraries.Camera, EntryPoint = "camera_start_continuous_capture")]
94 internal static extern CameraError StartContinuousCapture(IntPtr handle, int count, int interval,
95 CapturingCallback captureCallback, CaptureCompletedCallback completedCallback, IntPtr userData = default);
97 [DllImport(Libraries.Camera, EntryPoint = "camera_stop_continuous_capture")]
98 internal static extern CameraError StopContinuousCapture(IntPtr handle);
100 [DllImport(Libraries.Camera, EntryPoint = "camera_get_state")]
101 internal static extern CameraError GetState(IntPtr handle, out CameraState state);
103 [DllImport(Libraries.Camera, EntryPoint = "camera_start_focusing")]
104 internal static extern CameraError StartFocusing(IntPtr handle, bool continuous);
106 [DllImport(Libraries.Camera, EntryPoint = "camera_cancel_focusing")]
107 internal static extern CameraError CancelFocusing(IntPtr handle);
109 [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_resolution")]
110 internal static extern CameraError SetPreviewResolution(IntPtr handle, int width, int height);
112 [DllImport(Libraries.Camera, EntryPoint = "camera_get_preview_resolution")]
113 internal static extern CameraError GetPreviewResolution(IntPtr handle, out int width, out int height);
115 [DllImport(Libraries.Camera, EntryPoint = "camera_get_recommended_preview_resolution")]
116 internal static extern CameraError GetRecommendedPreviewResolution(IntPtr handle, out int width, out int height);
118 [DllImport(Libraries.Camera, EntryPoint = "camera_start_face_detection")]
119 internal static extern CameraError StartFaceDetection(IntPtr handle, FaceDetectedCallback callback, IntPtr userData = default);
121 [DllImport(Libraries.Camera, EntryPoint = "camera_stop_face_detection")]
122 internal static extern CameraError StopFaceDetection(IntPtr handle);
124 [DllImport(Libraries.Camera, EntryPoint = "camera_set_display_reuse_hint")]
125 internal static extern CameraError SetDisplayReuseHint(IntPtr handle, bool hint);
127 [DllImport(Libraries.Camera, EntryPoint = "camera_get_display_reuse_hint")]
128 internal static extern CameraError GetDisplayReuseHint(IntPtr handle, out bool hint);
130 [DllImport(Libraries.Camera, EntryPoint = "camera_set_capture_resolution")]
131 internal static extern CameraError SetCaptureResolution(IntPtr handle, int width, int height);
133 [DllImport(Libraries.Camera, EntryPoint = "camera_get_capture_resolution")]
134 internal static extern CameraError GetCaptureResolution(IntPtr handle, out int width, out int height);
136 [DllImport(Libraries.Camera, EntryPoint = "camera_set_capture_format")]
137 internal static extern CameraError SetCaptureFormat(IntPtr handle, CameraPixelFormat format);
139 [DllImport(Libraries.Camera, EntryPoint = "camera_get_capture_format")]
140 internal static extern CameraError GetCaptureFormat(IntPtr handle, out CameraPixelFormat format);
142 [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_format")]
143 internal static extern CameraError SetPreviewPixelFormat(IntPtr handle, CameraPixelFormat format);
145 [DllImport(Libraries.Camera, EntryPoint = "camera_get_preview_format")]
146 internal static extern CameraError GetPreviewPixelFormat(IntPtr handle, out CameraPixelFormat format);
148 [DllImport(Libraries.Camera, EntryPoint = "camera_get_facing_direction")]
149 internal static extern CameraError GetFacingDirection(IntPtr handle, out CameraFacingDirection direction);
151 [DllImport(Libraries.Camera, EntryPoint = "camera_get_flash_state")]
152 internal static extern CameraError GetFlashState(CameraDevice device, out CameraFlashState state);
154 [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_cb")]
155 internal static extern CameraError SetPreviewCallback(IntPtr handle, PreviewCallback callback, IntPtr userData = default);
157 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_preview_cb")]
158 internal static extern CameraError UnsetPreviewCallback(IntPtr handle);
160 [DllImport(Libraries.Camera, EntryPoint = "camera_set_media_packet_preview_cb")]
161 internal static extern CameraError SetMediaPacketPreviewCallback(IntPtr handle, MediaPacketPreviewCallback callback, IntPtr userData = default);
163 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_media_packet_preview_cb")]
164 internal static extern CameraError UnsetMediaPacketPreviewCallback(IntPtr handle);
166 [DllImport(Libraries.Camera, EntryPoint = "camera_set_extra_preview_cb")]
167 internal static extern CameraError SetExtraPreviewCallback(IntPtr handle, ExtraPreviewCallback callback, IntPtr userData = default);
169 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_extra_preview_cb")]
170 internal static extern CameraError UnsetExtraPreviewCallback(IntPtr handle);
172 [DllImport(Libraries.Camera, EntryPoint = "camera_set_state_changed_cb")]
173 internal static extern CameraError SetStateChangedCallback(IntPtr handle, StateChangedCallback callback, IntPtr userData = default);
175 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_state_changed_cb")]
176 internal static extern CameraError UnsetStateChangedCallback(IntPtr handle);
178 [DllImport(Libraries.Camera, EntryPoint = "camera_add_device_state_changed_cb")]
179 internal static extern CameraError SetDeviceStateChangedCallback(DeviceStateChangedCallback callback, IntPtr userData, out int callbackId);
181 [DllImport(Libraries.Camera, EntryPoint = "camera_remove_device_state_changed_cb")]
182 internal static extern CameraError UnsetDeviceStateChangedCallback(int cbId);
184 [DllImport(Libraries.Camera, EntryPoint = "camera_set_interrupt_started_cb")]
185 internal static extern CameraError SetInterruptStartedCallback(IntPtr handle, InterruptStartedCallback callback, IntPtr userData = default);
187 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_interrupt_started_cb")]
188 internal static extern CameraError UnsetInterruptStartedCallback(IntPtr handle);
190 [DllImport(Libraries.Camera, EntryPoint = "camera_set_interrupted_cb")]
191 internal static extern CameraError SetInterruptedCallback(IntPtr handle, InterruptedCallback callback, IntPtr userData = default);
193 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_interrupted_cb")]
194 internal static extern CameraError UnsetInterruptedCallback(IntPtr handle);
196 [DllImport(Libraries.Camera, EntryPoint = "camera_set_focus_changed_cb")]
197 internal static extern CameraError SetFocusStateChangedCallback(IntPtr handle, FocusStateChangedCallback callback, IntPtr userData = default);
199 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_focus_changed_cb")]
200 internal static extern CameraError UnsetFocusChangedCallback(IntPtr handle);
202 [DllImport(Libraries.Camera, EntryPoint = "camera_set_error_cb")]
203 internal static extern CameraError SetErrorCallback(IntPtr handle, ErrorCallback callback, IntPtr userData = default);
205 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_error_cb")]
206 internal static extern CameraError UnsetErrorCallback(IntPtr handle);
208 [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_hdr_capture_progress_cb")]
209 internal static extern CameraError SetHdrCaptureProgressCallback(IntPtr handle, HdrCaptureProgressCallback callback, IntPtr userData = default);
211 [DllImport(Libraries.Camera, EntryPoint = "camera_attr_unset_hdr_capture_progress_cb")]
212 internal static extern CameraError UnsetHdrCaptureProgressCallback(IntPtr handle);
214 [NativeStruct("camera_image_data_s", Include="camera.h", PkgConfig="capi-media-camera")]
215 [StructLayout(LayoutKind.Sequential)]
216 internal struct StillImageDataStruct
218 internal IntPtr Data;
219 internal uint DataLength;
222 internal CameraPixelFormat Format;
223 internal IntPtr Exif;
224 internal uint ExifLength;
227 [NativeStruct("camera_detected_face_s", Include="camera.h", PkgConfig="capi-media-camera")]
228 [StructLayout(LayoutKind.Sequential)]
229 internal struct DetectedFaceStruct
239 [StructLayout(LayoutKind.Sequential)]
240 internal struct SinglePlaneStruct
242 internal IntPtr Data;
243 internal uint DataLength;
246 [StructLayout(LayoutKind.Sequential)]
247 internal struct DoublePlaneStruct
251 internal uint YLength;
252 internal uint UVLength;
255 [StructLayout(LayoutKind.Sequential)]
256 internal struct TriplePlaneStruct
261 internal uint YLength;
262 internal uint ULength;
263 internal uint VLength;
266 [StructLayout(LayoutKind.Sequential)]
267 internal struct EncodedPlaneStruct
269 internal IntPtr Data;
270 internal uint DataLength;
271 internal bool IsDeltaFrame;
274 [StructLayout(LayoutKind.Sequential)]
275 internal struct DepthPlaneStruct
277 internal IntPtr Data;
278 internal uint DataLength;
281 [StructLayout(LayoutKind.Sequential)]
282 internal struct RgbPlaneStruct
284 internal IntPtr Data;
285 internal uint DataLength;
288 [StructLayout(LayoutKind.Explicit)]
289 internal struct PreviewPlaneStruct
291 [FieldOffsetAttribute(0)]
292 internal SinglePlaneStruct SinglePlane;
293 [FieldOffsetAttribute(0)]
294 internal DoublePlaneStruct DoublePlane;
295 [FieldOffsetAttribute(0)]
296 internal TriplePlaneStruct TriplePlane;
297 [FieldOffsetAttribute(0)]
298 internal EncodedPlaneStruct EncodedPlane;
299 [FieldOffsetAttribute(0)]
300 internal DepthPlaneStruct DepthPlane;
301 [FieldOffsetAttribute(0)]
302 internal RgbPlaneStruct RgbPlane;
305 [NativeStruct("camera_preview_data_s", Include="camera.h", PkgConfig="capi-media-camera")]
306 [StructLayout(LayoutKind.Sequential)]
307 internal struct CameraPreviewDataStruct
309 internal CameraPixelFormat Format;
312 internal int NumOfPlanes;
313 internal uint TimeStamp;
314 internal PreviewPlaneStruct Plane;
318 internal static partial class CameraDeviceManager
320 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
321 internal delegate void DeviceListChangedCallback(ref CameraDeviceListStruct deviceList, IntPtr userData);
324 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_initialize")]
325 internal static extern CameraError Initialize(out IntPtr handle);
327 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_deinitialize")]
328 internal static extern CameraError Deinitialize(IntPtr handle);
330 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_get_device_list")]
331 internal static extern CameraError GetDeviceList(IntPtr handle, ref CameraDeviceListStruct deviceList);
333 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_add_device_list_changed_cb")]
334 internal static extern CameraError SetDeviceListChangedCallback(IntPtr handle, DeviceListChangedCallback callback, IntPtr userData, out int id);
336 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_remove_device_list_changed_cb")]
337 internal static extern CameraError UnsetDeviceListChangedCallback(IntPtr handle, int id);
340 [NativeStruct("camera_device_s", Include="camera_internal.h", PkgConfig="capi-media-camera")]
341 [StructLayout(LayoutKind.Sequential)]
342 internal struct CameraDeviceStruct
344 internal CameraDeviceType Type;
346 internal CameraDevice device;
348 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
349 internal char[] name;
351 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
355 [NativeStruct("camera_device_list_s", Include="camera_internal.h", PkgConfig="capi-media-camera")]
356 [StructLayout(LayoutKind.Sequential)]
357 internal struct CameraDeviceListStruct
361 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
362 internal CameraDeviceStruct[] device;