[MediaTool] Add new Create API to support increasing ref count (#4321)
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia / Interop / Interop.MediaTool.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
20 namespace Tizen.Multimedia
21 {
22     internal static partial class Interop
23     {
24         internal static class MediaPacket
25         {
26             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
27             internal delegate void DisposedCallback(IntPtr handle, IntPtr userData);
28
29             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_create")]
30             internal static extern int Create(IntPtr format, IntPtr finalizeCb, IntPtr cbData, out IntPtr handle);
31
32             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_alloc")]
33             internal static extern int Alloc(IntPtr handle);
34
35             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_destroy")]
36             internal static extern int Destroy(IntPtr handle);
37
38             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_new")]
39             internal static extern int New(IntPtr format, IntPtr disposedCb, IntPtr cbData, out IntPtr handle);
40
41             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_ref")]
42             internal static extern int Ref(IntPtr handle);
43
44             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_unref")]
45             internal static extern int Unref(IntPtr handle);
46
47             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_add_dispose_cb")]
48             internal static extern int AddDisposedCallback(IntPtr handle, DisposedCallback disposedCb, IntPtr userData, out int callbackId);
49
50             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_format")]
51             internal static extern int GetFormat(IntPtr handle, out IntPtr format);
52
53             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_buffer_data_ptr")]
54             internal static extern int GetBufferData(IntPtr handle, out IntPtr dataHandle);
55
56             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_buffer_size")]
57             internal static extern int GetBufferSize(IntPtr handle, out ulong size);
58
59             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_buffer_size")]
60             internal static extern int SetBufferSize(IntPtr handle, ulong size);
61
62             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_allocated_buffer_size")]
63             internal static extern int GetAllocatedBufferSize(IntPtr handle, out int size);
64
65             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_number_of_video_planes")]
66             internal static extern int GetNumberOfVideoPlanes(IntPtr handle, out uint num);
67
68             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_video_stride_width")]
69             internal static extern int GetVideoStrideWidth(IntPtr handle, int planeIndex, out int value);
70
71             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_video_stride_height")]
72             internal static extern int GetVideoStrideHeight(IntPtr handle, int planeIndex, out int value);
73
74             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_video_plane_data_ptr")]
75             internal static extern int GetVideoPlaneData(IntPtr handle, int planeIndex, out IntPtr dataHandle);
76
77             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_is_encoded")]
78             internal static extern int IsEncoded(IntPtr handle, out bool value);
79
80             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_flags")]
81             internal static extern int GetBufferFlags(IntPtr handle, out MediaPacketBufferFlags value);
82
83             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_flags")]
84             internal static extern int SetBufferFlags(IntPtr handle, int value);
85
86             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_reset_flags")]
87             internal static extern int ResetBufferFlags(IntPtr handle);
88
89             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_pts")]
90             internal static extern int GetPts(IntPtr handle, out ulong value);
91
92             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_dts")]
93             internal static extern int GetDts(IntPtr handle, out ulong value);
94
95             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_pts")]
96             internal static extern int SetPts(IntPtr handle, ulong value);
97
98             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_dts")]
99             internal static extern int SetDts(IntPtr handle, ulong value);
100
101             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_extra")]
102             internal static extern int SetExtra(IntPtr handle, IntPtr value);
103
104             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_extra")]
105             internal static extern int GetExtra(IntPtr handle, out IntPtr value);
106
107             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_rotate_method")]
108             internal static extern int SetRotation(IntPtr handle, RotationFlip rotationFlip);
109
110             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_rotate_method")]
111             internal static extern int GetRotation(IntPtr handle, out RotationFlip rotationFlip);
112
113             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_duration")]
114             internal static extern int SetDuration(IntPtr handle, ulong value);
115
116             [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_duration")]
117             internal static extern int GetDuration(IntPtr handle, out ulong value);
118         }
119
120         internal static class MediaFormat
121         {
122             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_create")]
123             internal static extern int Create(out IntPtr handle);
124
125             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_unref")]
126             internal static extern int Unref(IntPtr handle);
127
128             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_type")]
129             internal static extern int GetType(IntPtr handle, out MediaFormatType type);
130
131             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_container_mime")]
132             internal static extern int GetContainerMimeType(IntPtr handle,
133                 out MediaFormatContainerMimeType mimeType);
134
135             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_container_mime")]
136             internal static extern int SetContainerMimeType(IntPtr handle,
137                 MediaFormatContainerMimeType mimeType);
138
139             #region Video apis
140             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_video_info")]
141             internal static extern int GetVideoInfo(IntPtr handle, out MediaFormatVideoMimeType mimeType,
142                 out int width, out int height, out int averageBps, out int maxBps);
143
144             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_video_frame_rate")]
145             internal static extern int GetVideoFrameRate(IntPtr handle, out int frameRate);
146
147             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_mime")]
148             internal static extern int SetVideoMimeType(IntPtr handle, MediaFormatVideoMimeType value);
149
150             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_width")]
151             internal static extern int SetVideoWidth(IntPtr handle, int value);
152
153             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_height")]
154             internal static extern int SetVideoHeight(IntPtr handle, int value);
155
156             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_avg_bps")]
157             internal static extern int SetVideoAverageBps(IntPtr handle, int value);
158
159             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_max_bps")]
160             internal static extern int SetVideoMaxBps(IntPtr handle, int value);
161
162             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_frame_rate")]
163             internal static extern int SetVideoFrameRate(IntPtr handle, int value);
164             #endregion
165
166             #region Audio apis
167             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_info")]
168             internal static extern int GetAudioInfo(IntPtr handle, out MediaFormatAudioMimeType mimeType,
169                 out int channel, out int sampleRate, out int bit, out int averageBps);
170
171             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_aac_header_type")]
172             internal static extern int GetAudioAacType(IntPtr handle, out MediaFormatAacType aacType);
173
174             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_mime")]
175             internal static extern int SetAudioMimeType(IntPtr handle, MediaFormatAudioMimeType value);
176
177             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_channel")]
178             internal static extern int SetAudioChannel(IntPtr handle, int value);
179
180             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_samplerate")]
181             internal static extern int SetAudioSampleRate(IntPtr handle, int value);
182
183             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_bit")]
184             internal static extern int SetAudioBit(IntPtr handle, int value);
185
186             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_avg_bps")]
187             internal static extern int SetAudioAverageBps(IntPtr handle, int value);
188
189             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_aac_header_type")]
190             internal static extern int SetAudioAacType(IntPtr handle, MediaFormatAacType value);
191
192             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_channel_mask")]
193             internal static extern int SetAudioChannelMask(IntPtr handle, ulong mask);
194
195             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_channel_mask")]
196             internal static extern int GetAudioChannelMask(IntPtr handle, out ulong mask);
197
198             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_is_little_endian")]
199             internal static extern int IsLittleEndian(IntPtr handle, out bool isLittleEndian);
200
201             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_bit_depth")]
202             internal static extern int GetAudioBitDepth(IntPtr handle, out int bitDepth);
203
204             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_channel_positions_from_mask")]
205             internal static extern int GetChannelPositionFromMask(IntPtr handle, ulong mask,
206                 ref MediaFormatAudioChannelPosition[] position);
207
208             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_channel_positions_to_mask")]
209             internal static extern int GetMaskFromChannelPosition(IntPtr handle,
210                 MediaFormatAudioChannelPosition[] position, out ulong mask);
211             #endregion
212
213             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_text_info")]
214             internal static extern int GetTextInfo(IntPtr handle,
215                 out MediaFormatTextMimeType mimeType, out MediaFormatTextType textType);
216
217             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_text_mime")]
218             internal static extern int SetTextMimeType(IntPtr handle, MediaFormatTextMimeType value);
219
220             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_text_type")]
221             internal static extern int SetTextType(IntPtr handle, MediaFormatTextType value);
222         }
223     }
224 }