1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gst.base.Base;
26 
27 private import glib.Str;
28 private import gobject.ObjectG;
29 private import gst.base.c.functions;
30 public  import gst.base.c.types;
31 private import gstreamer.Buffer;
32 private import gstreamer.Caps;
33 private import gstreamer.ObjectGst;
34 private import gstreamer.Pad;
35 
36 
37 /** */
38 public struct Base
39 {
40 
41 	/**
42 	 * Tries to find what type of data is flowing from the given source #GstPad.
43 	 *
44 	 * Free-function: gst_caps_unref
45 	 *
46 	 * Params:
47 	 *     src = A source #GstPad
48 	 *     size = The length in bytes
49 	 *
50 	 * Returns: the #GstCaps corresponding to the data
51 	 *     stream.  Returns %NULL if no #GstCaps matches the data stream.
52 	 */
53 	public static Caps typeFindHelper(Pad src, ulong size)
54 	{
55 		auto p = gst_type_find_helper((src is null) ? null : src.getPadStruct(), size);
56 
57 		if(p is null)
58 		{
59 			return null;
60 		}
61 
62 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
63 	}
64 
65 	/**
66 	 * Tries to find what type of data is contained in the given #GstBuffer, the
67 	 * assumption being that the buffer represents the beginning of the stream or
68 	 * file.
69 	 *
70 	 * All available typefinders will be called on the data in order of rank. If
71 	 * a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
72 	 * typefinding is stopped immediately and the found caps will be returned
73 	 * right away. Otherwise, all available typefind functions will the tried,
74 	 * and the caps with the highest probability will be returned, or %NULL if
75 	 * the content of the buffer could not be identified.
76 	 *
77 	 * Free-function: gst_caps_unref
78 	 *
79 	 * Params:
80 	 *     obj = object doing the typefinding, or %NULL (used for logging)
81 	 *     buf = a #GstBuffer with data to typefind
82 	 *     prob = location to store the probability of the found
83 	 *         caps, or %NULL
84 	 *
85 	 * Returns: the #GstCaps corresponding to the data,
86 	 *     or %NULL if no type could be found. The caller should free the caps
87 	 *     returned with gst_caps_unref().
88 	 */
89 	public static Caps typeFindHelperForBuffer(ObjectGst obj, Buffer buf, out GstTypeFindProbability prob)
90 	{
91 		auto p = gst_type_find_helper_for_buffer((obj is null) ? null : obj.getObjectGstStruct(), (buf is null) ? null : buf.getBufferStruct(), &prob);
92 
93 		if(p is null)
94 		{
95 			return null;
96 		}
97 
98 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
99 	}
100 
101 	/**
102 	 * Tries to find what type of data is contained in the given @data, the
103 	 * assumption being that the data represents the beginning of the stream or
104 	 * file.
105 	 *
106 	 * All available typefinders will be called on the data in order of rank. If
107 	 * a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
108 	 * typefinding is stopped immediately and the found caps will be returned
109 	 * right away. Otherwise, all available typefind functions will the tried,
110 	 * and the caps with the highest probability will be returned, or %NULL if
111 	 * the content of @data could not be identified.
112 	 *
113 	 * Free-function: gst_caps_unref
114 	 *
115 	 * Params:
116 	 *     obj = object doing the typefinding, or %NULL (used for logging)
117 	 *     data = * a pointer with data to typefind
118 	 *     prob = location to store the probability of the found
119 	 *         caps, or %NULL
120 	 *
121 	 * Returns: the #GstCaps corresponding to the data,
122 	 *     or %NULL if no type could be found. The caller should free the caps
123 	 *     returned with gst_caps_unref().
124 	 */
125 	public static Caps typeFindHelperForData(ObjectGst obj, ubyte[] data, out GstTypeFindProbability prob)
126 	{
127 		auto p = gst_type_find_helper_for_data((obj is null) ? null : obj.getObjectGstStruct(), data.ptr, cast(size_t)data.length, &prob);
128 
129 		if(p is null)
130 		{
131 			return null;
132 		}
133 
134 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
135 	}
136 
137 	/**
138 	 * Tries to find the best #GstCaps associated with @extension.
139 	 *
140 	 * All available typefinders will be checked against the extension in order
141 	 * of rank. The caps of the first typefinder that can handle @extension will be
142 	 * returned.
143 	 *
144 	 * Free-function: gst_caps_unref
145 	 *
146 	 * Params:
147 	 *     obj = object doing the typefinding, or %NULL (used for logging)
148 	 *     extension = an extension
149 	 *
150 	 * Returns: the #GstCaps corresponding to
151 	 *     @extension, or %NULL if no type could be found. The caller should free
152 	 *     the caps returned with gst_caps_unref().
153 	 */
154 	public static Caps typeFindHelperForExtension(ObjectGst obj, string extension)
155 	{
156 		auto p = gst_type_find_helper_for_extension((obj is null) ? null : obj.getObjectGstStruct(), Str.toStringz(extension));
157 
158 		if(p is null)
159 		{
160 			return null;
161 		}
162 
163 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
164 	}
165 
166 	/**
167 	 * Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
168 	 * however, this function will use the specified function @func to obtain the
169 	 * data needed by the typefind functions, rather than operating on a given
170 	 * source pad. This is useful mostly for elements like tag demuxers which
171 	 * strip off data at the beginning and/or end of a file and want to typefind
172 	 * the stripped data stream before adding their own source pad (the specified
173 	 * callback can then call the upstream peer pad with offsets adjusted for the
174 	 * tag size, for example).
175 	 *
176 	 * When @extension is not %NULL, this function will first try the typefind
177 	 * functions for the given extension, which might speed up the typefinding
178 	 * in many cases.
179 	 *
180 	 * Free-function: gst_caps_unref
181 	 *
182 	 * Params:
183 	 *     obj = A #GstObject that will be passed as first argument to @func
184 	 *     parent = the parent of @obj or %NULL
185 	 *     func = A generic #GstTypeFindHelperGetRangeFunction that will
186 	 *         be used to access data at random offsets when doing the typefinding
187 	 *     size = The length in bytes
188 	 *     extension = extension of the media, or %NULL
189 	 *     prob = location to store the probability of the found
190 	 *         caps, or %NULL
191 	 *
192 	 * Returns: the #GstCaps corresponding to the data
193 	 *     stream.  Returns %NULL if no #GstCaps matches the data stream.
194 	 */
195 	public static Caps typeFindHelperGetRange(ObjectGst obj, ObjectGst parent, GstTypeFindHelperGetRangeFunction func, ulong size, string extension, out GstTypeFindProbability prob)
196 	{
197 		auto p = gst_type_find_helper_get_range((obj is null) ? null : obj.getObjectGstStruct(), (parent is null) ? null : parent.getObjectGstStruct(), func, size, Str.toStringz(extension), &prob);
198 
199 		if(p is null)
200 		{
201 			return null;
202 		}
203 
204 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
205 	}
206 
207 	/**
208 	 * Tries to find what type of data is contained in the given #GstBuffer, the
209 	 * assumption being that the buffer represents the beginning of the stream or
210 	 * file.
211 	 *
212 	 * All available typefinders will be called on the data in order of rank. If
213 	 * a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
214 	 * typefinding is stopped immediately and the found caps will be returned
215 	 * right away. Otherwise, all available typefind functions will the tried,
216 	 * and the caps with the highest probability will be returned, or %NULL if
217 	 * the content of the buffer could not be identified.
218 	 *
219 	 * When @extension is not %NULL, this function will first try the typefind
220 	 * functions for the given extension, which might speed up the typefinding
221 	 * in many cases.
222 	 *
223 	 * Free-function: gst_caps_unref
224 	 *
225 	 * Params:
226 	 *     obj = object doing the typefinding, or %NULL (used for logging)
227 	 *     buf = a #GstBuffer with data to typefind
228 	 *     extension = extension of the media, or %NULL
229 	 *     prob = location to store the probability of the found
230 	 *         caps, or %NULL
231 	 *
232 	 * Returns: the #GstCaps corresponding to the data,
233 	 *     or %NULL if no type could be found. The caller should free the caps
234 	 *     returned with gst_caps_unref().
235 	 *
236 	 * Since: 1.16
237 	 */
238 	public static Caps typeFindHelperForBufferWithExtension(ObjectGst obj, Buffer buf, string extension, out GstTypeFindProbability prob)
239 	{
240 		auto p = gst_type_find_helper_for_buffer_with_extension((obj is null) ? null : obj.getObjectGstStruct(), (buf is null) ? null : buf.getBufferStruct(), Str.toStringz(extension), &prob);
241 
242 		if(p is null)
243 		{
244 			return null;
245 		}
246 
247 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
248 	}
249 
250 	/**
251 	 * Tries to find what type of data is contained in the given @data, the
252 	 * assumption being that the data represents the beginning of the stream or
253 	 * file.
254 	 *
255 	 * All available typefinders will be called on the data in order of rank. If
256 	 * a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
257 	 * typefinding is stopped immediately and the found caps will be returned
258 	 * right away. Otherwise, all available typefind functions will the tried,
259 	 * and the caps with the highest probability will be returned, or %NULL if
260 	 * the content of @data could not be identified.
261 	 *
262 	 * When @extension is not %NULL, this function will first try the typefind
263 	 * functions for the given extension, which might speed up the typefinding
264 	 * in many cases.
265 	 *
266 	 * Free-function: gst_caps_unref
267 	 *
268 	 * Params:
269 	 *     obj = object doing the typefinding, or %NULL (used for logging)
270 	 *     data = * a pointer with data to typefind
271 	 *     extension = extension of the media, or %NULL
272 	 *     prob = location to store the probability of the found
273 	 *         caps, or %NULL
274 	 *
275 	 * Returns: the #GstCaps corresponding to the data,
276 	 *     or %NULL if no type could be found. The caller should free the caps
277 	 *     returned with gst_caps_unref().
278 	 *
279 	 * Since: 1.16
280 	 */
281 	public static Caps typeFindHelperForDataWithExtension(ObjectGst obj, ubyte[] data, string extension, out GstTypeFindProbability prob)
282 	{
283 		auto p = gst_type_find_helper_for_data_with_extension((obj is null) ? null : obj.getObjectGstStruct(), data.ptr, cast(size_t)data.length, Str.toStringz(extension), &prob);
284 
285 		if(p is null)
286 		{
287 			return null;
288 		}
289 
290 		return ObjectG.getDObject!(Caps)(cast(GstCaps*) p, true);
291 	}
292 
293 	/**
294 	 * Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
295 	 * however, this function will use the specified function @func to obtain the
296 	 * data needed by the typefind functions, rather than operating on a given
297 	 * source pad. This is useful mostly for elements like tag demuxers which
298 	 * strip off data at the beginning and/or end of a file and want to typefind
299 	 * the stripped data stream before adding their own source pad (the specified
300 	 * callback can then call the upstream peer pad with offsets adjusted for the
301 	 * tag size, for example).
302 	 *
303 	 * When @extension is not %NULL, this function will first try the typefind
304 	 * functions for the given extension, which might speed up the typefinding
305 	 * in many cases.
306 	 *
307 	 * Params:
308 	 *     obj = A #GstObject that will be passed as first argument to @func
309 	 *     parent = the parent of @obj or %NULL
310 	 *     func = A generic #GstTypeFindHelperGetRangeFunction that will
311 	 *         be used to access data at random offsets when doing the typefinding
312 	 *     size = The length in bytes
313 	 *     extension = extension of the media, or %NULL
314 	 *     caps = returned caps
315 	 *     prob = location to store the probability of the found
316 	 *         caps, or %NULL
317 	 *
318 	 * Returns: the last %GstFlowReturn from pulling a buffer or %GST_FLOW_OK if
319 	 *     typefinding was successful.
320 	 *
321 	 * Since: 1.14.3
322 	 */
323 	public static GstFlowReturn typeFindHelperGetRangeFull(ObjectGst obj, ObjectGst parent, GstTypeFindHelperGetRangeFunction func, ulong size, string extension, out Caps caps, out GstTypeFindProbability prob)
324 	{
325 		GstCaps* outcaps = null;
326 
327 		auto p = gst_type_find_helper_get_range_full((obj is null) ? null : obj.getObjectGstStruct(), (parent is null) ? null : parent.getObjectGstStruct(), func, size, Str.toStringz(extension), &outcaps, &prob);
328 
329 		caps = ObjectG.getDObject!(Caps)(outcaps);
330 
331 		return p;
332 	}
333 }