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;
20 namespace Tizen.Multimedia
22 internal static partial class Interop
24 internal static class MediaPacket
26 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
27 internal delegate void DisposedCallback(IntPtr handle, IntPtr userData);
29 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_create")]
30 internal static extern int Create(IntPtr format, IntPtr finalizeCb, IntPtr cbData, out IntPtr handle);
32 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_alloc")]
33 internal static extern int Alloc(IntPtr handle);
35 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_destroy")]
36 internal static extern int Destroy(IntPtr handle);
38 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_new")]
39 internal static extern int New(IntPtr format, IntPtr disposedCb, IntPtr cbData, out IntPtr handle);
41 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_ref")]
42 internal static extern int Ref(IntPtr handle);
44 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_unref")]
45 internal static extern int Unref(IntPtr handle);
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);
50 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_format")]
51 internal static extern int GetFormat(IntPtr handle, out IntPtr format);
53 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_buffer_data_ptr")]
54 internal static extern int GetBufferData(IntPtr handle, out IntPtr dataHandle);
56 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_buffer_size")]
57 internal static extern int GetBufferSize(IntPtr handle, out ulong size);
59 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_buffer_size")]
60 internal static extern int SetBufferSize(IntPtr handle, ulong size);
62 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_allocated_buffer_size")]
63 internal static extern int GetAllocatedBufferSize(IntPtr handle, out int size);
65 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_number_of_video_planes")]
66 internal static extern int GetNumberOfVideoPlanes(IntPtr handle, out uint num);
68 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_video_stride_width")]
69 internal static extern int GetVideoStrideWidth(IntPtr handle, int planeIndex, out int value);
71 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_video_stride_height")]
72 internal static extern int GetVideoStrideHeight(IntPtr handle, int planeIndex, out int value);
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);
77 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_is_encoded")]
78 internal static extern int IsEncoded(IntPtr handle, out bool value);
80 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_flags")]
81 internal static extern int GetBufferFlags(IntPtr handle, out MediaPacketBufferFlags value);
83 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_flags")]
84 internal static extern int SetBufferFlags(IntPtr handle, int value);
86 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_reset_flags")]
87 internal static extern int ResetBufferFlags(IntPtr handle);
89 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_pts")]
90 internal static extern int GetPts(IntPtr handle, out ulong value);
92 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_dts")]
93 internal static extern int GetDts(IntPtr handle, out ulong value);
95 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_pts")]
96 internal static extern int SetPts(IntPtr handle, ulong value);
98 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_dts")]
99 internal static extern int SetDts(IntPtr handle, ulong value);
101 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_extra")]
102 internal static extern int SetExtra(IntPtr handle, IntPtr value);
104 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_extra")]
105 internal static extern int GetExtra(IntPtr handle, out IntPtr value);
107 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_rotate_method")]
108 internal static extern int SetRotation(IntPtr handle, RotationFlip rotationFlip);
110 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_rotate_method")]
111 internal static extern int GetRotation(IntPtr handle, out RotationFlip rotationFlip);
113 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_set_duration")]
114 internal static extern int SetDuration(IntPtr handle, ulong value);
116 [DllImport(Libraries.MediaTool, EntryPoint = "media_packet_get_duration")]
117 internal static extern int GetDuration(IntPtr handle, out ulong value);
120 internal static class MediaFormat
122 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_create")]
123 internal static extern int Create(out IntPtr handle);
125 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_unref")]
126 internal static extern int Unref(IntPtr handle);
128 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_type")]
129 internal static extern int GetType(IntPtr handle, out MediaFormatType type);
131 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_container_mime")]
132 internal static extern int GetContainerMimeType(IntPtr handle,
133 out MediaFormatContainerMimeType mimeType);
135 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_container_mime")]
136 internal static extern int SetContainerMimeType(IntPtr handle,
137 MediaFormatContainerMimeType mimeType);
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);
144 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_video_frame_rate")]
145 internal static extern int GetVideoFrameRate(IntPtr handle, out int frameRate);
147 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_mime")]
148 internal static extern int SetVideoMimeType(IntPtr handle, MediaFormatVideoMimeType value);
150 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_width")]
151 internal static extern int SetVideoWidth(IntPtr handle, int value);
153 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_height")]
154 internal static extern int SetVideoHeight(IntPtr handle, int value);
156 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_avg_bps")]
157 internal static extern int SetVideoAverageBps(IntPtr handle, int value);
159 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_max_bps")]
160 internal static extern int SetVideoMaxBps(IntPtr handle, int value);
162 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_video_frame_rate")]
163 internal static extern int SetVideoFrameRate(IntPtr handle, int value);
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);
171 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_aac_header_type")]
172 internal static extern int GetAudioAacType(IntPtr handle, out MediaFormatAacType aacType);
174 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_mime")]
175 internal static extern int SetAudioMimeType(IntPtr handle, MediaFormatAudioMimeType value);
177 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_channel")]
178 internal static extern int SetAudioChannel(IntPtr handle, int value);
180 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_samplerate")]
181 internal static extern int SetAudioSampleRate(IntPtr handle, int value);
183 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_bit")]
184 internal static extern int SetAudioBit(IntPtr handle, int value);
186 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_avg_bps")]
187 internal static extern int SetAudioAverageBps(IntPtr handle, int value);
189 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_aac_header_type")]
190 internal static extern int SetAudioAacType(IntPtr handle, MediaFormatAacType value);
192 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_audio_channel_mask")]
193 internal static extern int SetAudioChannelMask(IntPtr handle, ulong mask);
195 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_channel_mask")]
196 internal static extern int GetAudioChannelMask(IntPtr handle, out ulong mask);
198 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_is_little_endian")]
199 internal static extern int IsLittleEndian(IntPtr handle, out bool isLittleEndian);
201 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_get_audio_bit_depth")]
202 internal static extern int GetAudioBitDepth(IntPtr handle, out int bitDepth);
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);
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);
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);
217 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_text_mime")]
218 internal static extern int SetTextMimeType(IntPtr handle, MediaFormatTextMimeType value);
220 [DllImport(Libraries.MediaTool, EntryPoint = "media_format_set_text_type")]
221 internal static extern int SetTextType(IntPtr handle, MediaFormatTextType value);