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_extra_preview_stream_format")]
155 internal static extern CameraError SetExtraPreviewStreamFormat(IntPtr handle, int streamId, CameraPixelFormat format,
156 int width, int height, int fps);
158 [DllImport(Libraries.Camera, EntryPoint = "camera_get_extra_preview_stream_format")]
159 internal static extern CameraError GetExtraPreviewStreamFormat(IntPtr handle, int streamId, out CameraPixelFormat format,
160 out int width, out int height, out int fps);
163 [DllImport(Libraries.Camera, EntryPoint = "camera_set_preview_cb")]
164 internal static extern CameraError SetPreviewCallback(IntPtr handle, PreviewCallback callback, IntPtr userData = default);
166 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_preview_cb")]
167 internal static extern CameraError UnsetPreviewCallback(IntPtr handle);
169 [DllImport(Libraries.Camera, EntryPoint = "camera_set_media_packet_preview_cb")]
170 internal static extern CameraError SetMediaPacketPreviewCallback(IntPtr handle, MediaPacketPreviewCallback callback, IntPtr userData = default);
172 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_media_packet_preview_cb")]
173 internal static extern CameraError UnsetMediaPacketPreviewCallback(IntPtr handle);
175 [DllImport(Libraries.Camera, EntryPoint = "camera_set_extra_preview_cb")]
176 internal static extern CameraError SetExtraPreviewCallback(IntPtr handle, ExtraPreviewCallback callback, IntPtr userData = default);
178 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_extra_preview_cb")]
179 internal static extern CameraError UnsetExtraPreviewCallback(IntPtr handle);
181 [DllImport(Libraries.Camera, EntryPoint = "camera_set_state_changed_cb")]
182 internal static extern CameraError SetStateChangedCallback(IntPtr handle, StateChangedCallback callback, IntPtr userData = default);
184 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_state_changed_cb")]
185 internal static extern CameraError UnsetStateChangedCallback(IntPtr handle);
187 [DllImport(Libraries.Camera, EntryPoint = "camera_add_device_state_changed_cb")]
188 internal static extern CameraError SetDeviceStateChangedCallback(DeviceStateChangedCallback callback, IntPtr userData, out int callbackId);
190 [DllImport(Libraries.Camera, EntryPoint = "camera_remove_device_state_changed_cb")]
191 internal static extern CameraError UnsetDeviceStateChangedCallback(int cbId);
193 [DllImport(Libraries.Camera, EntryPoint = "camera_set_interrupt_started_cb")]
194 internal static extern CameraError SetInterruptStartedCallback(IntPtr handle, InterruptStartedCallback callback, IntPtr userData = default);
196 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_interrupt_started_cb")]
197 internal static extern CameraError UnsetInterruptStartedCallback(IntPtr handle);
199 [DllImport(Libraries.Camera, EntryPoint = "camera_set_interrupted_cb")]
200 internal static extern CameraError SetInterruptedCallback(IntPtr handle, InterruptedCallback callback, IntPtr userData = default);
202 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_interrupted_cb")]
203 internal static extern CameraError UnsetInterruptedCallback(IntPtr handle);
205 [DllImport(Libraries.Camera, EntryPoint = "camera_set_focus_changed_cb")]
206 internal static extern CameraError SetFocusStateChangedCallback(IntPtr handle, FocusStateChangedCallback callback, IntPtr userData = default);
208 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_focus_changed_cb")]
209 internal static extern CameraError UnsetFocusChangedCallback(IntPtr handle);
211 [DllImport(Libraries.Camera, EntryPoint = "camera_set_error_cb")]
212 internal static extern CameraError SetErrorCallback(IntPtr handle, ErrorCallback callback, IntPtr userData = default);
214 [DllImport(Libraries.Camera, EntryPoint = "camera_unset_error_cb")]
215 internal static extern CameraError UnsetErrorCallback(IntPtr handle);
217 [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_hdr_capture_progress_cb")]
218 internal static extern CameraError SetHdrCaptureProgressCallback(IntPtr handle, HdrCaptureProgressCallback callback, IntPtr userData = default);
220 [DllImport(Libraries.Camera, EntryPoint = "camera_attr_unset_hdr_capture_progress_cb")]
221 internal static extern CameraError UnsetHdrCaptureProgressCallback(IntPtr handle);
224 [NativeStruct("camera_image_data_s", Include="camera.h", PkgConfig="capi-media-camera")]
225 [StructLayout(LayoutKind.Sequential)]
226 internal struct StillImageDataStruct
228 internal IntPtr Data;
229 internal uint DataLength;
232 internal CameraPixelFormat Format;
233 internal IntPtr Exif;
234 internal uint ExifLength;
237 [NativeStruct("camera_detected_face_s", Include="camera.h", PkgConfig="capi-media-camera")]
238 [StructLayout(LayoutKind.Sequential)]
239 internal struct DetectedFaceStruct
249 [StructLayout(LayoutKind.Sequential)]
250 internal struct SinglePlaneStruct
252 internal IntPtr Data;
253 internal uint DataLength;
256 [StructLayout(LayoutKind.Sequential)]
257 internal struct DoublePlaneStruct
261 internal uint YLength;
262 internal uint UVLength;
265 [StructLayout(LayoutKind.Sequential)]
266 internal struct TriplePlaneStruct
271 internal uint YLength;
272 internal uint ULength;
273 internal uint VLength;
276 [StructLayout(LayoutKind.Sequential)]
277 internal struct EncodedPlaneStruct
279 internal IntPtr Data;
280 internal uint DataLength;
281 internal bool IsDeltaFrame;
284 [StructLayout(LayoutKind.Sequential)]
285 internal struct DepthPlaneStruct
287 internal IntPtr Data;
288 internal uint DataLength;
291 [StructLayout(LayoutKind.Sequential)]
292 internal struct RgbPlaneStruct
294 internal IntPtr Data;
295 internal uint DataLength;
298 [StructLayout(LayoutKind.Explicit)]
299 internal struct PreviewPlaneStruct
301 [FieldOffsetAttribute(0)]
302 internal SinglePlaneStruct SinglePlane;
303 [FieldOffsetAttribute(0)]
304 internal DoublePlaneStruct DoublePlane;
305 [FieldOffsetAttribute(0)]
306 internal TriplePlaneStruct TriplePlane;
307 [FieldOffsetAttribute(0)]
308 internal EncodedPlaneStruct EncodedPlane;
309 [FieldOffsetAttribute(0)]
310 internal DepthPlaneStruct DepthPlane;
311 [FieldOffsetAttribute(0)]
312 internal RgbPlaneStruct RgbPlane;
315 [NativeStruct("camera_preview_data_s", Include="camera.h", PkgConfig="capi-media-camera")]
316 [StructLayout(LayoutKind.Sequential)]
317 internal struct CameraPreviewDataStruct
319 internal CameraPixelFormat Format;
322 internal int NumOfPlanes;
323 internal uint TimeStamp;
324 internal PreviewPlaneStruct Plane;
328 internal static partial class CameraDeviceManager
330 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
331 internal delegate void DeviceConnectionChangedCallback(ref CameraDeviceStruct device, bool status, IntPtr userData);
334 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_initialize")]
335 internal static extern CameraError Initialize(out IntPtr handle);
337 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_deinitialize")]
338 internal static extern CameraError Deinitialize(IntPtr handle);
340 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_get_device_list")]
341 internal static extern CameraError GetDeviceList(IntPtr handle, ref CameraDeviceListStruct deviceList);
343 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_add_device_connection_changed_cb")]
344 internal static extern CameraError SetDeviceConnectionChangedCallback(IntPtr handle, DeviceConnectionChangedCallback callback, IntPtr userData, out int id);
346 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_remove_device_connection_changed_cb")]
347 internal static extern CameraError UnsetDeviceConnectionChangedCallback(IntPtr handle, int id);
350 [NativeStruct("camera_device_s", Include="camera_internal.h", PkgConfig="capi-media-camera")]
351 [StructLayout(LayoutKind.Sequential)]
352 internal struct CameraDeviceStruct
354 internal CameraDeviceType Type;
356 internal CameraDevice device;
358 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
359 internal string name;
361 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
364 internal int extraStreamNum;
367 [NativeStruct("camera_device_list_s", Include="camera_internal.h", PkgConfig="capi-media-camera")]
368 [StructLayout(LayoutKind.Sequential)]
369 internal struct CameraDeviceListStruct
373 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
374 internal CameraDeviceStruct[] device;