2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Runtime.InteropServices;
19 using Tizen.Multimedia;
24 internal static partial class Interop
26 internal static Tizen.Multimedia.Point ToApiStruct(this MediaVision.Point pt)
28 return new Tizen.Multimedia.Point(pt.x, pt.y);
31 internal static MediaVision.Point ToMarshalable(this Tizen.Multimedia.Point pt)
33 return new MediaVision.Point() { x = pt.X, y = pt.Y };
36 internal static MediaVision.Point[] ToMarshalable(Tizen.Multimedia.Point[] pts)
38 var result = new MediaVision.Point[pts.Length];
39 for (int i = 0; i < pts.Length; ++i)
41 result[i] = pts[i].ToMarshalable();
47 internal static Tizen.Multimedia.Quadrangle ToApiStruct(this MediaVision.Quadrangle quadrangle)
49 Tizen.Multimedia.Point[] points = new Tizen.Multimedia.Point[4];
50 for (int i = 0; i < 4; ++i)
52 points[i] = quadrangle.points[i].ToApiStruct();
54 return new Tizen.Multimedia.Quadrangle(points);
57 internal static MediaVision.Quadrangle ToMarshalable(this Tizen.Multimedia.Quadrangle quadrangle)
59 MediaVision.Point[] points = new MediaVision.Point[4];
60 for (int i = 0; i < 4; ++i)
62 points[i] = quadrangle.Points[i].ToMarshalable();
64 return new MediaVision.Quadrangle() { points = points };
67 internal static Tizen.Multimedia.Rectangle ToApiStruct(this MediaVision.Rectangle rectangle)
69 return new Tizen.Multimedia.Rectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
72 internal static MediaVision.Rectangle ToMarshalable(this Tizen.Multimedia.Rectangle rectangle)
74 return new MediaVision.Rectangle()
78 width = rectangle.Width,
79 height = rectangle.Height
83 internal static Tizen.Multimedia.Rectangle[] ToApiStruct(MediaVision.Rectangle[] rects)
85 var result = new Tizen.Multimedia.Rectangle[rects.Length];
87 for (int i = 0; i < rects.Length; i++)
89 result[i] = rects[i].ToApiStruct();
95 /// Interop for media vision APIs
97 internal static partial class MediaVision
99 [StructLayout(LayoutKind.Sequential)]
100 internal struct Point
106 [StructLayout(LayoutKind.Sequential)]
107 internal struct Rectangle
115 [StructLayout(LayoutKind.Sequential)]
116 internal struct Quadrangle
118 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
119 internal Point[] points;
123 /// Interop for media vision source APIs
125 internal static partial class MediaSource
127 [DllImport(Libraries.MediaVision, EntryPoint = "mv_create_source")]
128 internal static extern MediaVisionError Create(out IntPtr source);
130 [DllImport(Libraries.MediaVision, EntryPoint = "mv_destroy_source")]
131 internal static extern int Destroy(IntPtr /* mv_source_h */ source);
133 [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_fill_by_media_packet")]
134 internal static extern MediaVisionError FillMediaPacket(IntPtr source, IntPtr mediaPacket);
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);
140 [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_clear")]
141 internal static extern int Clear(IntPtr /* mv_source_h */ source);
143 [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_buffer")]
144 internal static extern MediaVisionError GetBuffer(IntPtr source, out IntPtr buffer, out int bufferSize);
146 [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_height")]
147 internal static extern int GetHeight(IntPtr source, out uint imageHeight);
149 [DllImport(Libraries.MediaVision, EntryPoint = "mv_source_get_width")]
150 internal static extern int GetWidth(IntPtr source, out uint imageWidth);
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);
157 /// Interop for engine configuration APIs
159 internal static partial class EngineConfig
161 [DllImport(Libraries.MediaVision, EntryPoint = "mv_create_engine_config")]
162 internal static extern MediaVisionError Create(out IntPtr handle);
164 [DllImport(Libraries.MediaVision, EntryPoint = "mv_destroy_engine_config")]
165 internal static extern int Destroy(IntPtr handle);
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);
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);
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);
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);
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);
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);
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);
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);