From e1993f46105ebd48baa65aa679817097b9370233 Mon Sep 17 00:00:00 2001 From: Haesu Gwon Date: Wed, 2 Jun 2021 15:45:58 +0900 Subject: [PATCH] [Camera] Add ctor for network camera (#3140) * [Camera] Add ctor for network camera --- .../Camera/Camera.Properties.cs | 6 +-- src/Tizen.Multimedia.Camera/Camera/Camera.cs | 50 +++++++++++++++++++--- .../Interop/Interop.Camera.cs | 3 ++ 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/Tizen.Multimedia.Camera/Camera/Camera.Properties.cs b/src/Tizen.Multimedia.Camera/Camera/Camera.Properties.cs index 1943a48..a3dc44b 100644 --- a/src/Tizen.Multimedia.Camera/Camera/Camera.Properties.cs +++ b/src/Tizen.Multimedia.Camera/Camera/Camera.Properties.cs @@ -35,19 +35,19 @@ namespace Tizen.Multimedia /// Gets or sets the various camera settings. /// /// 4 - public CameraSettings Settings { get; } + public CameraSettings Settings { get; internal set; } /// /// Gets the various camera capabilities. /// /// 4 - public CameraCapabilities Capabilities { get; } + public CameraCapabilities Capabilities { get; internal set; } /// /// Get/set various camera display properties. /// /// 3 - public CameraDisplaySettings DisplaySettings { get; } + public CameraDisplaySettings DisplaySettings { get; internal set; } private Display _display; diff --git a/src/Tizen.Multimedia.Camera/Camera/Camera.cs b/src/Tizen.Multimedia.Camera/Camera/Camera.cs index 2ce5e82..f051baf 100644 --- a/src/Tizen.Multimedia.Camera/Camera/Camera.cs +++ b/src/Tizen.Multimedia.Camera/Camera/Camera.cs @@ -16,6 +16,7 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; @@ -43,6 +44,7 @@ namespace Tizen.Multimedia { private IntPtr _handle = IntPtr.Zero; private bool _disposed = false; + private bool _initialized = false; private CameraState _state = CameraState.None; /// @@ -50,6 +52,7 @@ namespace Tizen.Multimedia /// /// The camera device to access. /// Invalid CameraDevice type. + /// In case of any invalid operations. /// The camera feature is not supported. /// 3 /// http://tizen.org/feature/camera @@ -57,6 +60,45 @@ namespace Tizen.Multimedia { Native.Create(device, out _handle).ThrowIfFailed("Failed to create camera instance"); + Initialize(); + } + + /// + /// Initializes a new instance of the class with . + /// + /// The camera device to access. + /// Indicates whether this is network camera or not. + /// Invalid CameraDevice or CameraDeviceType. + /// In case of any invalid operations. + /// The camera feature is not supported. + /// 9 + /// http://tizen.org/feature/camera + [EditorBrowsable(EditorBrowsableState.Never)] + public Camera(CameraDevice device, CameraDeviceType type) + { + ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device)); + ValidationUtil.ValidateEnum(typeof(CameraDeviceType), type, nameof(type)); + + if (type == CameraDeviceType.BuiltIn) + { + Native.Create(device, out _handle).ThrowIfFailed("Failed to create camera instance"); + } + else if (type == CameraDeviceType.Network) + { + Native.CreateNetworkCamera(device, out _handle).ThrowIfFailed("Failed to create network camera instance"); + } + // USB camera doesn't support here. + + Initialize(); + } + + private void Initialize() + { + if (_initialized) + { + throw new InvalidOperationException("It has already been initialized."); + } + Capabilities = new CameraCapabilities(this); Settings = new CameraSettings(this); DisplaySettings = new CameraDisplaySettings(this); @@ -64,6 +106,8 @@ namespace Tizen.Multimedia RegisterCallbacks(); SetState(CameraState.Created); + + _initialized = true; } /// @@ -134,7 +178,6 @@ namespace Tizen.Multimedia } #endregion Dispose support - #region Check camera state internal void ValidateState(params CameraState[] required) { ValidateNotDisposed(); @@ -153,11 +196,7 @@ namespace Tizen.Multimedia { _state = state; } - #endregion Check camera state - - - #region Methods /// /// Changes the camera device. /// @@ -450,6 +489,5 @@ namespace Tizen.Multimedia _faceDetectedCallback = null; } - #endregion Methods } } diff --git a/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs b/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs index 91f76be..50b884e 100644 --- a/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs +++ b/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs @@ -65,6 +65,9 @@ internal static partial class Interop [DllImport(Libraries.Camera, EntryPoint = "camera_create")] internal static extern CameraError Create(CameraDevice device, out IntPtr handle); + [DllImport(Libraries.Camera, EntryPoint ="camera_create_network")] + internal static extern CameraError CreateNetworkCamera(CameraDevice device, out IntPtr handle); + [DllImport(Libraries.Camera, EntryPoint = "camera_change_device")] internal static extern CameraError ChangeDevice(IntPtr handle, CameraDevice device); -- 2.7.4