[Camera] Add new preview format - RGB (#465)
authorhsgwon <haesu.gwon@samsung.com>
Fri, 14 Sep 2018 03:11:04 +0000 (12:11 +0900)
committerGitHub <noreply@github.com>
Fri, 14 Sep 2018 03:11:04 +0000 (12:11 +0900)
src/Tizen.Multimedia.Camera/Camera/CameraEnums.cs
src/Tizen.Multimedia.Camera/Camera/PreviewFrame.cs
src/Tizen.Multimedia.Camera/Camera/RgbPlane.cs [new file with mode: 0644]
src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs

index bb09162..c1b8b20 100644 (file)
@@ -915,6 +915,11 @@ namespace Tizen.Multimedia
         /// Depth plane data.
         /// </summary>
         /// <since_tizen> 5 </since_tizen>
-        DepthPlane
+        DepthPlane,
+        /// <summary>
+        /// Rgb plane data.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        RgbPlane
     }
 }
index 88369a8..b1975e5 100644 (file)
@@ -50,6 +50,10 @@ namespace Tizen.Multimedia
                 {
                     return new DepthPlane(unmanagedStruct.Plane.DepthPlane);
                 }
+                else if (unmanagedStruct.Format == CameraPixelFormat.Rgba || unmanagedStruct.Format == CameraPixelFormat.Argb)
+                {
+                    return new RgbPlane(unmanagedStruct.Plane.RgbPlane);
+                }
                 else
                 {
                     return new SinglePlane(unmanagedStruct.Plane.SinglePlane);
@@ -80,6 +84,10 @@ namespace Tizen.Multimedia
                 {
                     return PlaneType.DepthPlane;
                 }
+                else if (unmanagedStruct.Format == CameraPixelFormat.Rgba || unmanagedStruct.Format == CameraPixelFormat.Argb)
+                {
+                    return PlaneType.RgbPlane;
+                }
                 else
                 {
                     return PlaneType.SinglePlane;
diff --git a/src/Tizen.Multimedia.Camera/Camera/RgbPlane.cs b/src/Tizen.Multimedia.Camera/Camera/RgbPlane.cs
new file mode 100644 (file)
index 0000000..0b76215
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.Runtime.InteropServices;
+using static Interop.Camera;
+
+namespace Tizen.Multimedia
+{
+    /// <summary>
+    /// The class containing the rgb data for subject distance.
+    /// </summary>
+    /// <since_tizen> 5 </since_tizen>
+    public class RgbPlane : IPreviewPlane
+    {
+        internal RgbPlane(RgbPlaneStruct unmanagedData)
+        {
+            Data = new byte[unmanagedData.DataLength];
+            Marshal.Copy(unmanagedData.Data, Data, 0, (int)unmanagedData.DataLength);
+        }
+
+        /// <summary>
+        /// The buffer containing the rgb data.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public byte[] Data { get; }
+    }
+}
index d1b58dc..3144800 100644 (file)
@@ -262,6 +262,13 @@ internal static partial class Interop
             internal uint DataLength;
         }
 
+        [StructLayout(LayoutKind.Sequential)]
+        internal struct RgbPlaneStruct
+        {
+            internal IntPtr Data;
+            internal uint DataLength;
+        }
+
         [StructLayout(LayoutKind.Explicit)]
         internal struct PreviewPlaneStruct
         {
@@ -275,6 +282,8 @@ internal static partial class Interop
             internal EncodedPlaneStruct EncodedPlane;
             [FieldOffsetAttribute(0)]
             internal DepthPlaneStruct DepthPlane;
+            [FieldOffsetAttribute(0)]
+            internal RgbPlaneStruct RgbPlane;
         }
 
         [StructLayout(LayoutKind.Sequential)]