[Camera] Add new enum(camera device) and properties(hue) (#201)
authorhsgwon <haesu.gwon@samsung.com>
Fri, 6 Apr 2018 08:01:07 +0000 (17:01 +0900)
committerGitHub <noreply@github.com>
Fri, 6 Apr 2018 08:01:07 +0000 (17:01 +0900)
* [Camera] Add new enum(camera device) and APIs(hue)

* add missing feature tag

* Add IsHueSupported property and change HueRange return type

src/Tizen.Multimedia.Camera/Camera/Camera.cs
src/Tizen.Multimedia.Camera/Camera/CameraCapabilities.cs [changed mode: 0755->0644]
src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs
src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs [changed mode: 0755->0644]
src/Tizen.Multimedia.Camera/Camera/Location.cs [changed mode: 0755->0644]
src/Tizen.Multimedia.Camera/Interop/Interop.CameraSettings.cs [changed mode: 0755->0644]

index a7aa019..961522d 100644 (file)
@@ -39,6 +39,7 @@ namespace Tizen.Multimedia
     /// It also notifies you when a significant picture parameter changes, (For example, focus).
     /// </summary>
     /// <since_tizen> 3 </since_tizen>
+    /// <feature> http://tizen.org/feature/camera </feature>
     public class Camera : IDisposable, IDisplayable<CameraError>
     {
         private IntPtr _handle = IntPtr.Zero;
@@ -48,9 +49,9 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Initializes a new instance of the <see cref="Camera"/> class.
         /// </summary>
-        /// <feature>http://tizen.org/feature/camera</feature>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="device">The camera device to access.</param>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         public Camera(CameraDevice device)
         {
             if (!Features.IsSupported(CameraFeatures.Camera))
@@ -82,6 +83,7 @@ namespace Tizen.Multimedia
         /// Gets the native handle of the camera.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         public IntPtr Handle => GetHandle();
 
         internal IntPtr GetHandle()
@@ -119,6 +121,7 @@ namespace Tizen.Multimedia
         /// Releases all resources used by the camera.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         public void Dispose()
         {
             ReplaceDisplay(null);
@@ -555,8 +558,9 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Changes the camera device.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="device">The hardware camera to access.</param>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// If display reuse is set using <see cref="DisplayReuseHint"/>
         /// before stopping the preview, the display will be reused and last frame on the display
@@ -579,9 +583,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Gets the device state.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <param name="device">The device to get the state.</param>
         /// <returns>Returns the state of the camera device.</returns>
+        /// <since_tizen> 4 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
@@ -598,9 +603,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Gets the flash state.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="device">The device to get the state.</param>
         /// <returns>Returns the flash state of the camera device.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
@@ -623,9 +629,8 @@ namespace Tizen.Multimedia
         /// The camera must be in the <see cref="CameraState.Created"/> or the <see cref="CameraState.Captured"/> state.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
@@ -646,9 +651,8 @@ namespace Tizen.Multimedia
         /// The camera must be in the <see cref="CameraState.Preview"/> state.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
@@ -670,9 +674,8 @@ namespace Tizen.Multimedia
         /// The camera must be in the <see cref="CameraState.Preview"/> state.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// This function causes the transition of the camera state from capturing to captured
         /// automatically and the corresponding EventHandlers will be invoked.
@@ -698,14 +701,13 @@ namespace Tizen.Multimedia
         /// and for completed using <see cref="CaptureCompleted"/> before calling this method.
         /// The camera must be in the <see cref="CameraState.Preview"/> state.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
         /// <param name="count">The number of still images.</param>
         /// <param name="interval">The interval of the capture(milliseconds).</param>
         /// <param name="cancellationToken">The cancellation token to cancel capturing.</param>
         /// <seealso cref="CancellationToken"/>
+        /// <since_tizen> 3 </since_tizen>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// If this is not supported, zero shutter lag occurs. The capture resolution could be
         /// changed to the preview resolution. This function causes the transition of the camera state
@@ -753,11 +755,10 @@ namespace Tizen.Multimedia
         /// Starts camera auto-focusing, asynchronously.
         /// The camera must be in the <see cref="CameraState.Preview"/> or the <see cref="CameraState.Captured"/> state.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="continuous">Continuous auto focus.</param>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <since_tizen> 3 </since_tizen>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// If continuous status is true, the camera continuously tries to focus.
         /// </remarks>
@@ -779,9 +780,8 @@ namespace Tizen.Multimedia
         /// The camera must be in the <see cref="CameraState.Preview"/> or the <see cref="CameraState.Captured"/> state.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
@@ -799,9 +799,8 @@ namespace Tizen.Multimedia
         /// The camera must be in the <see cref="CameraState.Preview"/> state.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// This should be called after <see cref="StartPreview"/> is started.
         /// The Eventhandler set using <see cref="FaceDetected"/> is invoked when the face is detected in the preview frame.
@@ -836,9 +835,8 @@ namespace Tizen.Multimedia
         /// Stops face detection.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
-        /// <privilege>
-        /// http://tizen.org/privilege/camera
-        /// </privilege>
+        /// <privilege> http://tizen.org/privilege/camera </privilege>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="NotSupportedException">In case of this feature is not supported.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
old mode 100755 (executable)
new mode 100644 (file)
index 7103bc8..156b570
@@ -66,6 +66,7 @@ namespace Tizen.Multimedia
             IsZoomSupported = CheckRangeValid(NativeSettings.GetZoomRange);
             IsPanSupported = CheckRangeValid(NativeSettings.GetPanRange);
             IsTiltSupported = CheckRangeValid(NativeSettings.GetTiltRange);
+            IsHueSupported = CheckRangeValid(NativeSettings.GetHueRange);
         }
 
         private bool IsFeatureSupported(IsSupportedDelegate func)
@@ -173,6 +174,13 @@ namespace Tizen.Multimedia
         public bool IsTiltSupported { get; }
 
         /// <summary>
+        /// Gets the support state of the hue feature.
+        /// </summary>
+        /// <value>true if supported, otherwise false.</value>
+        /// <since_tizen> 5 </since_tizen>
+        public bool IsHueSupported { get; }
+
+        /// <summary>
         /// Retrieves all the preview resolutions supported by the camera.
         /// </summary>
         /// <since_tizen> 4 </since_tizen>
@@ -280,12 +288,13 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Retrieves all the fps by resolution supported by the camera.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <param name="width">The width of required preview resolution.</param>
         /// <param name="height">The height of required preview resolution.</param>
         /// <returns>
         /// It returns a list containing all the supported <see cref="CameraFps"/> by resolution.
         /// </returns>
+        /// <since_tizen> 4 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public IEnumerable<CameraFps> GetSupportedPreviewFpsByResolution(int width, int height)
         {
@@ -295,11 +304,12 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Retrieves all the fps by resolution supported by the camera.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <param name="size">The size of required preview resolution.</param>
         /// <returns>
         /// It returns a list containing all the supported <see cref="CameraFps"/> by resolution.
         /// </returns>
+        /// <since_tizen> 4 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public IEnumerable<CameraFps> GetSupportedPreviewFpsByResolution(Size size)
         {
@@ -309,10 +319,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Retrieves all the auto focus modes supported by the camera.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <returns>
         /// It returns a list containing all the supported <see cref="CameraAutoFocusMode"/>.
         /// </returns>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public IEnumerable<CameraAutoFocusMode> SupportedAutoFocusModes
         {
@@ -330,10 +340,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Retrieves all the exposure modes supported by the camera.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <returns>
         /// It returns a list containing all the supported <see cref="CameraExposureMode"/>.
         /// </returns>
+        /// <since_tizen> 4 </since_tizen>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public IEnumerable<CameraExposureMode> SupportedExposureModes
         {
index 8a5e898..dd7f557 100644 (file)
@@ -31,7 +31,57 @@ namespace Tizen.Multimedia
         /// <summary>
         /// The front camera device.
         /// </summary>
-        Front
+        Front,
+        /// <summary>
+        /// The primary camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice0 = Rear,
+        /// <summary>
+        /// The secondary camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice1 = Front,
+        /// <summary>
+        /// The third camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice2,
+        /// <summary>
+        /// The 4th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice3,
+        /// <summary>
+        /// The 5th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice4,
+        /// <summary>
+        /// The 6th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice5,
+        /// <summary>
+        /// The 7th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice6,
+        /// <summary>
+        /// The 8th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice7,
+        /// <summary>
+        /// The 9th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice8,
+        /// <summary>
+        /// The 10th camera device.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        CameraDevice9
     }
 
     /// <summary>
old mode 100755 (executable)
new mode 100644 (file)
index d98d7f3..1e06426
@@ -32,21 +32,23 @@ namespace Tizen.Multimedia
 
         private readonly Range? _brightnessRange;
         private readonly Range? _contrastRange;
+        private readonly Range? _exposureRange;
+        private readonly Range? _hueRange = null;
         private readonly Range? _panRange;
         private readonly Range? _tiltRange;
-        private readonly Range? _exposureRange;
         private readonly Range? _zoomRange;
 
         internal CameraSettings(Camera camera)
         {
             _camera = camera;
 
-            _contrastRange = GetRange(Native.GetContrastRange);
             _brightnessRange = GetRange(Native.GetBrightnessRange);
+            _contrastRange = GetRange(Native.GetContrastRange);
             _exposureRange = GetRange(Native.GetExposureRange);
-            _zoomRange = GetRange(Native.GetZoomRange);
+            _hueRange = GetRange(Native.GetHueRange);
             _panRange = GetRange(Native.GetPanRange);
             _tiltRange = GetRange(Native.GetTiltRange);
+            _zoomRange = GetRange(Native.GetZoomRange);
         }
 
         private delegate CameraError GetRangeDelegate(IntPtr handle, out int min, out int max);
@@ -67,13 +69,14 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Sets the auto focus area.
         /// </summary>
+        /// <param name="x">X position.</param>
+        /// <param name="y">Y position.</param>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// <see cref="CameraAutoFocusMode"/> should not be the <see cref="CameraAutoFocusMode.None"/>.
         /// </remarks>
-        /// <param name="x">X position.</param>
-        /// <param name="y">Y position.</param>
-        /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
+        /// /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void SetAutoFocusArea(int x, int y)
@@ -85,12 +88,13 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Sets the auto focus area.
         /// </summary>
+        /// <param name="pos"><see cref="Point"/> structure including X, Y position.</param>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// <see cref="CameraAutoFocusMode"/> should not be the <see cref="CameraAutoFocusMode.None"/>.
         /// </remarks>
-        /// <param name="pos"><see cref="Point"/> structure including X, Y position.</param>
-        /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
+        /// /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void SetAutoFocusArea(Point pos)
@@ -103,6 +107,7 @@ namespace Tizen.Multimedia
         /// Clears the auto focus area.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void ClearFocusArea()
         {
@@ -183,6 +188,7 @@ namespace Tizen.Multimedia
                     "Failed to set camera enable auto contrast.");
             }
         }
+
         /// <summary>
         /// Gets the available contrast level.
         /// </summary>
@@ -205,6 +211,52 @@ namespace Tizen.Multimedia
         }
         #endregion Contrast
 
+        #region Hue
+        /// <summary>
+        /// The hue level of the camera.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
+        public int Hue
+        {
+            get
+            {
+                CameraErrorFactory.ThrowIfError(Native.GetHue(_camera.GetHandle(), out int val),
+                    "Failed to get camera hue value");
+
+                return val;
+            }
+
+            set
+            {
+                CameraErrorFactory.ThrowIfError(Native.SetHue(_camera.GetHandle(), value),
+                    "Failed to set camera hue value.");
+            }
+        }
+
+        /// <summary>
+        /// Gets the available hue level.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        /// <remarks>
+        /// If HueRange returns null, it means that hue feature is not supported.
+        /// It can be checked also with <seec cref="CameraCapabilities.IsHueSupported"/>.
+        /// </remarks>
+        /// <seealso cref="Hue"/>
+        public Range? HueRange
+        {
+            get
+            {
+                if (!_hueRange.HasValue)
+                {
+                    return null;
+                }
+
+                return _hueRange.Value;
+            }
+        }
+        #endregion
+
         #region Brightness
         /// <summary>
         /// The brightness level of the camera.
@@ -896,8 +948,9 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Turn the shutter sound on or off, if it is permitted by policy.
         /// </summary>
-        /// <since_tizen> 4 </since_tizen>
         /// <param name="shutterSound">Shutter sound On/Off flag</param>
+        /// <since_tizen> 4 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <remarks>
         /// If this value is true, shutter sound will be disabled, otherwise enabled.
         /// In some countries, this operation is not permitted.
@@ -931,9 +984,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Sets the position to move horizontally.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="type">The PTZ move type. <seealso cref="CameraPtzMoveType"/>.</param>
         /// <param name="panStep">The pan step.</param>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void SetPan(CameraPtzMoveType type, int panStep)
@@ -947,8 +1001,9 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Gets the current position of the camera.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <returns>Returns the camera's horizontal position.</returns>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public int GetPan()
         {
@@ -961,9 +1016,10 @@ namespace Tizen.Multimedia
         /// <summary>
         /// Sets the position to move vertically.
         /// </summary>
-        /// <since_tizen> 3 </since_tizen>
         /// <param name="type">the PTZ move type.</param>
         /// <param name="tiltStep">The tilt step.</param>
+        /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ArgumentException">In case of invalid parameters.</exception>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void SetTilt(CameraPtzMoveType type, int tiltStep)
@@ -977,6 +1033,7 @@ namespace Tizen.Multimedia
         /// Gets the current position of the camera.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <returns>Returns the current vertical position.</returns>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public int GetTilt()
@@ -1141,6 +1198,7 @@ namespace Tizen.Multimedia
         /// Removes the geo tag(GPS data) in the EXIF(EXchangeable Image File format) tag.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <exception cref="ObjectDisposedException">The camera already has been disposed of.</exception>
         public void RemoveGeoTag()
         {
old mode 100755 (executable)
new mode 100644 (file)
index 23a7896..46e91ef
@@ -28,6 +28,7 @@ namespace Tizen.Multimedia
         /// <param name="latitude">The latitude data.</param>
         /// <param name="longitude">The longitude data.</param>
         /// <param name="altitude">The altitude data.</param>
+        /// <feature> http://tizen.org/feature/camera </feature>
         /// <since_tizen> 3 </since_tizen>
         public Location(double latitude, double longitude, double altitude)
         {
old mode 100755 (executable)
new mode 100644 (file)
index bec8a0a..01a7395
@@ -112,6 +112,15 @@ internal static partial class Interop
         [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_contrast_range")]
         internal static extern CameraError GetContrastRange(IntPtr handle, out int min, out int max);
 
+        [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_hue")]
+        internal static extern CameraError SetHue(IntPtr handle, int level);
+
+        [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_hue")]
+        internal static extern CameraError GetHue(IntPtr handle, out int level);
+
+        [DllImport(Libraries.Camera, EntryPoint = "camera_attr_get_hue_range")]
+        internal static extern CameraError GetHueRange(IntPtr handle, out int min, out int max);
+
         [DllImport(Libraries.Camera, EntryPoint = "camera_attr_set_whitebalance")]
         internal static extern CameraError SetWhitebalance(IntPtr handle, CameraWhiteBalance level);