Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Vision / Interop / Interop.MediaVision.Common.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using Tizen.Multimedia;
20
21 /// <summary>
22 /// Interop APIs
23 /// </summary>
24 internal static partial class Interop
25 {
26     internal static Tizen.Multimedia.Point ToApiStruct(this MediaVision.Point pt)
27     {
28         return new Tizen.Multimedia.Point(pt.x, pt.y);
29     }
30
31     internal static MediaVision.Point ToMarshalable(this Tizen.Multimedia.Point pt)
32     {
33         return new MediaVision.Point() { x = pt.X, y = pt.Y };
34     }
35
36     internal static MediaVision.Point[] ToMarshalable(Tizen.Multimedia.Point[] pts)
37     {
38         var result = new MediaVision.Point[pts.Length];
39         for (int i = 0; i < pts.Length; ++i)
40         {
41             result[i] = pts[i].ToMarshalable();
42         }
43         return result;
44     }
45
46
47     internal static Tizen.Multimedia.Quadrangle ToApiStruct(this MediaVision.Quadrangle quadrangle)
48     {
49         Tizen.Multimedia.Point[] points = new Tizen.Multimedia.Point[4];
50         for (int i = 0; i < 4; ++i)
51         {
52             points[i] = quadrangle.points[i].ToApiStruct();
53         }
54         return new Tizen.Multimedia.Quadrangle(points);
55     }
56
57     internal static MediaVision.Quadrangle ToMarshalable(this Tizen.Multimedia.Quadrangle quadrangle)
58     {
59         MediaVision.Point[] points = new MediaVision.Point[4];
60         for (int i = 0; i < 4; ++i)
61         {
62             points[i] = quadrangle.Points[i].ToMarshalable();
63         }
64         return new MediaVision.Quadrangle() { points = points };
65     }
66
67     internal static Tizen.Multimedia.Rectangle ToApiStruct(this MediaVision.Rectangle rectangle)
68     {
69         return new Tizen.Multimedia.Rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
70     }
71
72     internal static MediaVision.Rectangle ToMarshalable(this Tizen.Multimedia.Rectangle rectangle)
73     {
74         return new MediaVision.Rectangle()
75         {
76             x = rectangle.X,
77             y = rectangle.Y,
78             width = rectangle.Width,
79             height = rectangle.Height
80         };
81     }
82
83     internal static Tizen.Multimedia.Rectangle[] ToApiStruct(MediaVision.Rectangle[] rects)
84     {
85         var result = new Tizen.Multimedia.Rectangle[rects.Length];
86
87         for (int i = 0; i < rects.Length; i++)
88         {
89             result[i] = rects[i].ToApiStruct();
90         }
91         return result;
92     }
93
94     /// <summary>
95     /// Interop for media vision APIs
96     /// </summary>
97     internal static partial class MediaVision
98     {
99         [StructLayout(LayoutKind.Sequential)]
100         internal struct Point
101         {
102             internal int x;
103             internal int y;
104         }
105
106         [StructLayout(LayoutKind.Sequential)]
107         internal struct Rectangle
108         {
109             internal int x;
110             internal int y;
111             internal int width;
112             internal int height;
113         }
114
115         [StructLayout(LayoutKind.Sequential)]
116         internal struct Quadrangle
117         {
118             [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
119             internal Point[] points;
120         }
121
122         /// <summary>
123         /// Interop for media vision source APIs
124         /// </summary>
125         internal static partial class MediaSource
126         {
127             [DllImport(Libraries.MediaVision, EntryPoint = "mv_create_source")]
128             internal static extern MediaVisionError Create(out IntPtr source);
129
130             [DllImport(Libraries.MediaVision, EntryPoint = "mv_destroy_source")]
131             internal static extern int Destroy(IntPtr /* mv_source_h */ source);
132
133             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_fill_by_media_packet")]
134             internal static extern MediaVisionError FillMediaPacket(IntPtr source, IntPtr mediaPacket);
135
136             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_fill_by_buffer")]
137             internal static extern MediaVisionError FillBuffer(IntPtr source, byte[] buffer,
138                 int bufferSize, uint imageWidth, uint imageHeight, Colorspace colorspace);
139
140             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_clear")]
141             internal static extern int Clear(IntPtr /* mv_source_h */ source);
142
143             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_buffer")]
144             internal static extern MediaVisionError GetBuffer(IntPtr source, out IntPtr buffer, out int bufferSize);
145
146             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_height")]
147             internal static extern int GetHeight(IntPtr source, out uint imageHeight);
148
149             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_width")]
150             internal static extern int GetWidth(IntPtr source, out uint imageWidth);
151
152             [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_colorspace")]
153             internal static extern int GetColorspace(IntPtr /* mv_source_h */ source, out Tizen.Multimedia.Colorspace colorspace);
154         }
155
156         /// <summary>
157         /// Interop for engine configuration APIs
158         /// </summary>
159         internal static partial class EngineConfig
160         {
161             [DllImport(Libraries.MediaVision, EntryPoint = "mv_create_engine_config")]
162             internal static extern MediaVisionError Create(out IntPtr handle);
163
164             [DllImport(Libraries.MediaVision, EntryPoint = "mv_destroy_engine_config")]
165             internal static extern int Destroy(IntPtr handle);
166
167             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_set_double_attribute")]
168             internal static extern Tizen.Multimedia.MediaVisionError SetDouble(IntPtr handle, string name, double value);
169
170             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_set_int_attribute")]
171             internal static extern Tizen.Multimedia.MediaVisionError SetInt(IntPtr handle, string name, int value);
172
173             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_set_bool_attribute")]
174             internal static extern Tizen.Multimedia.MediaVisionError SetBool(IntPtr handle, string name, bool value);
175
176             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_set_string_attribute")]
177             internal static extern Tizen.Multimedia.MediaVisionError SetString(IntPtr handle, string name, string value);
178
179             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_get_double_attribute")]
180             internal static extern Tizen.Multimedia.MediaVisionError GetDouble(IntPtr handle, string name, out double value);
181
182             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_get_int_attribute")]
183             internal static extern Tizen.Multimedia.MediaVisionError GetInt(IntPtr handle, string name, out int value);
184
185             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_get_bool_attribute")]
186             internal static extern Tizen.Multimedia.MediaVisionError GetBool(IntPtr handle, string name, out bool value);
187
188             [DllImport(Libraries.MediaVision, EntryPoint = "mv_engine_config_get_string_attribute")]
189             internal static extern Tizen.Multimedia.MediaVisionError GetString(IntPtr handle, string name, out IntPtr value);
190         }
191     }
192 }