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
272 internal uint YLength;
273 internal uint ULength;
274 internal uint VLength;
277 [StructLayout(LayoutKind.Sequential)]
278 internal struct EncodedPlaneStruct
280 internal IntPtr Data;
281 internal uint DataLength;
282 internal byte IsDeltaFrame;
285 [StructLayout(LayoutKind.Sequential)]
286 internal struct DepthPlaneStruct
288 internal IntPtr Data;
289 internal uint DataLength;
292 [StructLayout(LayoutKind.Sequential)]
293 internal struct RgbPlaneStruct
295 internal IntPtr Data;
296 internal uint DataLength;
299 [StructLayout(LayoutKind.Explicit)]
300 internal struct PreviewPlaneStruct
302 [FieldOffsetAttribute(0)]
303 internal SinglePlaneStruct SinglePlane;
304 [FieldOffsetAttribute(0)]
305 internal DoublePlaneStruct DoublePlane;
306 [FieldOffsetAttribute(0)]
307 internal TriplePlaneStruct TriplePlane;
308 [FieldOffsetAttribute(0)]
309 internal EncodedPlaneStruct EncodedPlane;
310 [FieldOffsetAttribute(0)]
311 internal DepthPlaneStruct DepthPlane;
312 [FieldOffsetAttribute(0)]
313 internal RgbPlaneStruct RgbPlane;
316 [NativeStruct("camera_preview_data_s", Include="camera.h", PkgConfig="capi-media-camera")]
317 [StructLayout(LayoutKind.Sequential)]
318 internal struct CameraPreviewDataStruct
320 internal CameraPixelFormat Format;
323 internal int NumOfPlanes;
324 internal uint TimeStamp;
325 internal PreviewPlaneStruct Plane;
329 internal static partial class CameraDeviceManager
331 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
332 internal delegate void DeviceConnectionChangedCallback(ref CameraDeviceStruct connectedDevice, bool idConnedted, IntPtr userData);
334 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
335 internal delegate bool SupportedDeviceCallback(ref CameraDeviceStruct supportedDevice, IntPtr userData);
338 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_initialize")]
339 internal static extern CameraError Initialize(out IntPtr handle);
341 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_deinitialize")]
342 internal static extern CameraError Deinitialize(IntPtr handle);
344 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_foreach_supported_device")]
345 internal static extern CameraError SupportedDevices(IntPtr handle, SupportedDeviceCallback callback, IntPtr userData);
347 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_add_device_connection_changed_cb")]
348 internal static extern CameraError SetDeviceConnectionChangedCallback(IntPtr handle, DeviceConnectionChangedCallback callback, IntPtr userData, out int id);
350 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_remove_device_connection_changed_cb")]
351 internal static extern CameraError UnsetDeviceConnectionChangedCallback(IntPtr handle, int id);
353 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_get_product_id")]
354 internal static extern CameraError GetProductId(IntPtr handle, CameraDevice device, out ushort id);
356 [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_get_vendor_id")]
357 internal static extern CameraError GetVendorId(IntPtr handle, CameraDevice device, out ushort id);
359 [NativeStruct("camera_device_s", Include="camera.h", PkgConfig="capi-media-camera")]
360 [StructLayout(LayoutKind.Sequential)]
361 internal struct CameraDeviceStruct
363 internal CameraDeviceType type;
365 internal CameraDevice device;
367 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
368 internal string name;
370 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
373 internal int extraStreamNum;