From: Haesu Gwon Date: Tue, 25 Apr 2023 23:50:53 +0000 (+0900) Subject: [Camera] Add new camera setting APIs (#5172) X-Git-Tag: submit/tizen/20230426.010344~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48b9407dc8518357ba4e79b8f633629a30f459d4;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [Camera] Add new camera setting APIs (#5172) * [Camera] Add new camera setting APIs --- diff --git a/src/Tizen.Multimedia.Camera/Camera/CameraCapabilities.cs b/src/Tizen.Multimedia.Camera/Camera/CameraCapabilities.cs index 444878f77..feda7f9dc 100644 --- a/src/Tizen.Multimedia.Camera/Camera/CameraCapabilities.cs +++ b/src/Tizen.Multimedia.Camera/Camera/CameraCapabilities.cs @@ -68,6 +68,10 @@ namespace Tizen.Multimedia IsPanSupported = CheckRangeValid(NativeSettings.GetPanRange); IsTiltSupported = CheckRangeValid(NativeSettings.GetTiltRange); IsHueSupported = CheckRangeValid(NativeSettings.GetHueRange); + IsSaturationSupported = CheckRangeValid(NativeSettings.GetSaturationRange); + IsSharpnessSupported = CheckRangeValid(NativeSettings.GetSharpnessRange); + IsGainSupported = CheckRangeValid(NativeSettings.GetGainRange); + IsWhiteBalanceTemperatureSupported = CheckRangeValid(NativeSettings.GetWhiteBalanceTemperatureRange); } private bool IsFeatureSupported(IsSupportedDelegate func) @@ -188,6 +192,34 @@ namespace Tizen.Multimedia /// 5 public bool IsHueSupported { get; } + /// + /// Gets the saturation feature support state. + /// + /// true if supported, otherwise false. + /// 11 + public bool IsSaturationSupported { get; } + + /// + /// Gets the sharpness feature support state. + /// + /// true if supported, otherwise false. + /// 11 + public bool IsSharpnessSupported { get; } + + /// + /// Gets the gain feature support state. + /// + /// true if supported, otherwise false. + /// 11 + public bool IsGainSupported { get; } + + /// + /// Gets the white balance temperature feature support state. + /// + /// true if supported, otherwise false. + /// 11 + public bool IsWhiteBalanceTemperatureSupported { get; } + /// /// Retrieves all the preview resolutions supported by the camera. /// diff --git a/src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs b/src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs index 1eee6a71c..fecfb36fd 100644 --- a/src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs +++ b/src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs @@ -488,7 +488,17 @@ namespace Tizen.Multimedia /// /// Custom mode. /// - Custom + Custom, + /// + /// Shutter priority mode. + /// + /// 11 + ShutterPriority, + /// + /// Aperture priority mode. + /// + /// 11 + AperturePriority } /// diff --git a/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs b/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs index d4cdb30a3..efabdead4 100644 --- a/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs +++ b/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs @@ -38,6 +38,10 @@ namespace Tizen.Multimedia private readonly Range? _panRange; private readonly Range? _tiltRange; private readonly Range? _zoomRange; + private readonly Range? _saturationRange; + private readonly Range? _sharpnessRange; + private readonly Range? _gainRange; + private readonly Range? _whitebalanceTemperatureRange; internal CameraSettings(Camera camera) { @@ -50,6 +54,10 @@ namespace Tizen.Multimedia _panRange = GetRange(Native.GetPanRange); _tiltRange = GetRange(Native.GetTiltRange); _zoomRange = GetRange(Native.GetZoomRange); + _saturationRange = GetRange(Native.GetSaturationRange); + _sharpnessRange = GetRange(Native.GetSharpnessRange); + _gainRange = GetRange(Native.GetGainRange); + _whitebalanceTemperatureRange = GetRange(Native.GetWhiteBalanceTemperatureRange); } private delegate CameraError GetRangeDelegate(IntPtr handle, out int min, out int max); @@ -191,7 +199,7 @@ namespace Tizen.Multimedia } /// - /// Gets the available contrast level. + /// Gets the available contrast value range. /// /// 3 /// @@ -236,7 +244,7 @@ namespace Tizen.Multimedia } /// - /// Gets the available hue level. + /// Gets the available hue value range. /// /// 5 /// @@ -282,7 +290,7 @@ namespace Tizen.Multimedia } /// - /// Gets the available brightness level. + /// Gets the available brightness value range. /// /// 3 /// @@ -354,7 +362,7 @@ namespace Tizen.Multimedia } /// - /// Gets the available exposure value. + /// Gets the available exposure value range. /// /// 3 /// @@ -375,6 +383,214 @@ namespace Tizen.Multimedia } #endregion Exposure + #region saturation + /// + /// Gets or sets the camera saturation value. + /// + /// 11 + /// The camera has already been disposed. + public int Saturation + { + get + { + Native.GetSaturation(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera saturation value"); + + return val; + } + set + { + Native.SetSaturation(_camera.GetHandle(), value). + ThrowIfFailed("Failed to set camera saturation value."); + } + } + + /// + /// Gets the available saturation value range. + /// + /// 11 + /// + /// If the minimum value is greater than the maximum value, it means this feature is not supported. + /// + /// Saturation is not supported. + public Range SaturationRange + { + get + { + if (!_saturationRange.HasValue) + { + throw new NotSupportedException("Saturation is not supported."); + } + + return _saturationRange.Value; + } + } + #endregion saturation + + #region sharpness + /// + /// Gets or sets the camera sharpness value. + /// + /// 11 + /// The camera has already been disposed. + public int Sharpness + { + get + { + Native.GetSharpness(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera sharpness value"); + + return val; + } + set + { + Native.SetSharpness(_camera.GetHandle(), value). + ThrowIfFailed("Failed to set camera sharpness value."); + } + } + + /// + /// Gets the available sharpness value range. + /// + /// 11 + /// + /// If the minimum value is greater than the maximum value, it means this feature is not supported. + /// + /// Sharpness is not supported. + public Range SharpnessRange + { + get + { + if (!_sharpnessRange.HasValue) + { + throw new NotSupportedException("Sharpness is not supported."); + } + + return _sharpnessRange.Value; + } + } + #endregion sharpness + + #region gain + /// + /// Gets or sets the camera gain value. + /// + /// 11 + /// The camera has already been disposed. + public int Gain + { + get + { + Native.GetGain(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera gain value"); + + return val; + } + set + { + Native.SetGain(_camera.GetHandle(), value). + ThrowIfFailed("Failed to set camera gain value."); + } + } + + /// + /// Gets the available gain value range. + /// + /// 11 + /// + /// If the minimum value is greater than the maximum value, it means this feature is not supported. + /// + /// Gain is not supported. + public Range GainRange + { + get + { + if (!_gainRange.HasValue) + { + throw new NotSupportedException("Gain is not supported."); + } + + return _gainRange.Value; + } + } + + /// + /// Gets the camera gain step value. + /// + /// 11 + /// The camera has already been disposed. + public int GainStep + { + get + { + Native.GetGainStep(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera gain step value"); + + return val; + } + } + #endregion gain + + #region whitebalanceTemperature + /// + /// Gets or sets the camera white balance temperature value. + /// + /// 11 + /// The camera has already been disposed. + public int WhiteBalanceTemperature + { + get + { + Native.GetWhiteBalanceTemperature(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera white balance temperature value"); + + return val; + } + set + { + Native.SetWhitebalanceTemperature(_camera.GetHandle(), value). + ThrowIfFailed("Failed to set camera white balance temperature value."); + } + } + + /// + /// Gets the available camera white balance temperature value range. + /// + /// 11 + /// + /// If the minimum value is greater than the maximum value, it means this feature is not supported. + /// + /// WhiteBalanceTemperatureRange is not supported. + public Range WhiteBalanceTemperatureRange + { + get + { + if (!_whitebalanceTemperatureRange.HasValue) + { + throw new NotSupportedException("WhiteBalanceTemperatureRange is not supported."); + } + + return _whitebalanceTemperatureRange.Value; + } + } + + /// + /// Gets the camera white balance temperature step value. + /// + /// 11 + /// The camera has already been disposed. + public int WhiteBalanceTemperatureStep + { + get + { + Native.GetWhiteBalanceTemperatureStep(_camera.GetHandle(), out int val). + ThrowIfFailed("Failed to get camera white balance temperature step value"); + + return val; + } + } + #endregion whitebalanceTemperature + #region Zoom /// /// The zoom level. @@ -400,7 +616,7 @@ namespace Tizen.Multimedia } /// - /// Gets the available zoom level. + /// Gets the available zoom value range. /// /// 3 /// diff --git a/src/Tizen.Multimedia.Camera/Interop/Interop.CameraSettings.cs b/src/Tizen.Multimedia.Camera/Interop/Interop.CameraSettings.cs index 4fda7b382..b13e60f30 100644 --- a/src/Tizen.Multimedia.Camera/Interop/Interop.CameraSettings.cs +++ b/src/Tizen.Multimedia.Camera/Interop/Interop.CameraSettings.cs @@ -127,6 +127,48 @@ internal static partial class Interop [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_whitebalance")] internal static extern CameraError GetWhiteBalance(IntPtr handle, out CameraWhiteBalance level); + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_whitebalance_temperature")] + internal static extern CameraError SetWhitebalanceTemperature(IntPtr handle, int temperature); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_whitebalance_temperature")] + internal static extern CameraError GetWhiteBalanceTemperature(IntPtr handle, out int temperature); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_whitebalance_temperature_step")] + internal static extern CameraError GetWhiteBalanceTemperatureStep(IntPtr handle, out int step); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_whitebalance_temperature_range")] + internal static extern CameraError GetWhiteBalanceTemperatureRange(IntPtr handle, out int min, out int max); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_saturation")] + internal static extern CameraError SetSaturation(IntPtr handle, int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_saturation")] + internal static extern CameraError GetSaturation(IntPtr handle, out int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_saturation_range")] + internal static extern CameraError GetSaturationRange(IntPtr handle, out int min, out int max); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_sharpness")] + internal static extern CameraError SetSharpness(IntPtr handle, int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_sharpness")] + internal static extern CameraError GetSharpness(IntPtr handle, out int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_sharpness_range")] + internal static extern CameraError GetSharpnessRange(IntPtr handle, out int min, out int max); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_gain")] + internal static extern CameraError SetGain(IntPtr handle, int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_gain")] + internal static extern CameraError GetGain(IntPtr handle, out int level); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_gain_step")] + internal static extern CameraError GetGainStep(IntPtr handle, out int step); + + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_gain_range")] + internal static extern CameraError GetGainRange(IntPtr handle, out int min, out int max); + [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_effect")] internal static extern CameraError SetEffect(IntPtr handle, CameraEffectMode mode);