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 change21 // find conversion definition on APILookup.txt22 // implement new conversion functionalities on the wrap.utils pakage23 24 25 modulegstreamer.Debug;
26 27 privateimportglib.ListSG;
28 privateimportglib.Str;
29 privateimportglib.c.functions;
30 privateimportgobject.ObjectG;
31 privateimportgstreamer.Bin;
32 privateimportgstreamer.DebugCategory;
33 privateimportgstreamer.c.functions;
34 publicimportgstreamer.c.types;
35 36 37 /** */38 publicstructDebug39 {
40 41 /**
42 * Adds the logging function to the list of logging functions.
43 * Be sure to use #G_GNUC_NO_INSTRUMENT on that function, it is needed.
44 *
45 * Params:
46 * func = the function to use
47 * userData = user data
48 * notify = called when @user_data is not used anymore
49 */50 publicstaticvoidaddLogFunction(GstLogFunctionfunc, void* userData, GDestroyNotifynotify)
51 {
52 gst_debug_add_log_function(func, userData, notify);
53 }
54 55 /**
56 * To aid debugging applications one can use this method to obtain the whole
57 * network of gstreamer elements that form the pipeline into an dot file.
58 * This data can be processed with graphviz to get an image.
59 *
60 * Params:
61 * bin = the top-level pipeline that should be analyzed
62 * details = type of #GstDebugGraphDetails to use
63 *
64 * Returns: a string containing the pipeline in graphviz
65 * dot format.
66 */67 publicstaticstringbinToDotData(Binbin, GstDebugGraphDetailsdetails)
68 {
69 autoretStr = gst_debug_bin_to_dot_data((binisnull) ? null : bin.getBinStruct(), details);
70 71 scope(exit) Str.freeString(retStr);
72 returnStr.toString(retStr);
73 }
74 75 /**
76 * To aid debugging applications one can use this method to write out the whole
77 * network of gstreamer elements that form the pipeline into an dot file.
78 * This file can be processed with graphviz to get an image.
79 *
80 * ``` shell
81 * dot -Tpng -oimage.png graph_lowlevel.dot
82 * ```
83 *
84 * Params:
85 * bin = the top-level pipeline that should be analyzed
86 * details = type of #GstDebugGraphDetails to use
87 * fileName = output base filename (e.g. "myplayer")
88 */89 publicstaticvoidbinToDotFile(Binbin, GstDebugGraphDetailsdetails, stringfileName)
90 {
91 gst_debug_bin_to_dot_file((binisnull) ? null : bin.getBinStruct(), details, Str.toStringz(fileName));
92 }
93 94 /**
95 * This works like gst_debug_bin_to_dot_file(), but adds the current timestamp
96 * to the filename, so that it can be used to take multiple snapshots.
97 *
98 * Params:
99 * bin = the top-level pipeline that should be analyzed
100 * details = type of #GstDebugGraphDetails to use
101 * fileName = output base filename (e.g. "myplayer")
102 */103 publicstaticvoidbinToDotFileWithTs(Binbin, GstDebugGraphDetailsdetails, stringfileName)
104 {
105 gst_debug_bin_to_dot_file_with_ts((binisnull) ? null : bin.getBinStruct(), details, Str.toStringz(fileName));
106 }
107 108 /**
109 * Constructs a string that can be used for getting the desired color in color
110 * terminals.
111 * You need to free the string after use.
112 *
113 * Params:
114 * colorinfo = the color info
115 *
116 * Returns: a string containing the color
117 * definition
118 */119 publicstaticstringconstructTermColor(uintcolorinfo)
120 {
121 autoretStr = gst_debug_construct_term_color(colorinfo);
122 123 scope(exit) Str.freeString(retStr);
124 returnStr.toString(retStr);
125 }
126 127 /**
128 * Constructs an integer that can be used for getting the desired color in
129 * windows' terminals (cmd.exe). As there is no mean to underline, we simply
130 * ignore this attribute.
131 *
132 * This function returns 0 on non-windows machines.
133 *
134 * Params:
135 * colorinfo = the color info
136 *
137 * Returns: an integer containing the color definition
138 */139 publicstaticintconstructWinColor(uintcolorinfo)
140 {
141 returngst_debug_construct_win_color(colorinfo);
142 }
143 144 /**
145 * Returns a snapshot of a all categories that are currently in use . This list
146 * may change anytime.
147 * The caller has to free the list after use.
148 *
149 * Returns: the list of
150 * debug categories
151 */152 publicstaticListSGgetAllCategories()
153 {
154 auto__p = gst_debug_get_all_categories();
155 156 if(__pisnull)
157 {
158 returnnull;
159 }
160 161 returnnewListSG(cast(GSList*) __p);
162 }
163 164 /**
165 * Changes the coloring mode for debug output.
166 *
167 * Returns: see @GstDebugColorMode for possible values.
168 *
169 * Since: 1.2
170 */171 publicstaticGstDebugColorModegetColorMode()
172 {
173 returngst_debug_get_color_mode();
174 }
175 176 /**
177 * Returns the default threshold that is used for new categories.
178 *
179 * Returns: the default threshold level
180 */181 publicstaticGstDebugLevelgetDefaultThreshold()
182 {
183 returngst_debug_get_default_threshold();
184 }
185 186 /**
187 * Checks if debugging output is activated.
188 *
189 * Returns: %TRUE, if debugging is activated
190 */191 publicstaticboolisActive()
192 {
193 returngst_debug_is_active() != 0;
194 }
195 196 /**
197 * Checks if the debugging output should be colored.
198 *
199 * Returns: %TRUE, if the debug output should be colored.
200 */201 publicstaticboolisColored()
202 {
203 returngst_debug_is_colored() != 0;
204 }
205 206 /**
207 * Get the string representation of a debugging level
208 *
209 * Params:
210 * level = the level to get the name for
211 *
212 * Returns: the name
213 */214 publicstaticstringlevelGetName(GstDebugLevellevel)
215 {
216 returnStr.toString(gst_debug_level_get_name(level));
217 }
218 219 /**
220 * The default logging handler used by GStreamer. Logging functions get called
221 * whenever a macro like GST_DEBUG or similar is used. By default this function
222 * is setup to output the message and additional info to stderr (or the log file
223 * specified via the GST_DEBUG_FILE environment variable) as received via
224 * @user_data.
225 *
226 * You can add other handlers by using gst_debug_add_log_function().
227 * And you can remove this handler by calling
228 * gst_debug_remove_log_function(gst_debug_log_default);
229 *
230 * Params:
231 * category = category to log
232 * level = level of the message
233 * file = the file that emitted the message, usually the __FILE__ identifier
234 * function_ = the function that emitted the message
235 * line = the line from that the message was emitted, usually __LINE__
236 * object = the object this message relates to,
237 * or %NULL if none
238 * message = the actual message
239 * userData = the FILE* to log to
240 */241 publicstaticvoidlogDefault(DebugCategorycategory, GstDebugLevellevel, stringfile, stringfunction_, intline, ObjectGobject, GstDebugMessage* message, void* userData)
242 {
243 gst_debug_log_default((categoryisnull) ? null : category.getDebugCategoryStruct(), level, Str.toStringz(file), Str.toStringz(function_), line, (objectisnull) ? null : object.getObjectGStruct(), message, userData);
244 }
245 246 /**
247 * Logs the given message using the currently registered debugging handlers.
248 *
249 * Params:
250 * category = category to log
251 * level = level of the message is in
252 * file = the file that emitted the message, usually the __FILE__ identifier
253 * function_ = the function that emitted the message
254 * line = the line from that the message was emitted, usually __LINE__
255 * object = the object this message relates to,
256 * or %NULL if none
257 * format = a printf style format string
258 * args = optional arguments for the format
259 */260 publicstaticvoidlogValist(DebugCategorycategory, GstDebugLevellevel, stringfile, stringfunction_, intline, ObjectGobject, stringformat, void* args)
261 {
262 gst_debug_log_valist((categoryisnull) ? null : category.getDebugCategoryStruct(), level, Str.toStringz(file), Str.toStringz(function_), line, (objectisnull) ? null : object.getObjectGStruct(), Str.toStringz(format), args);
263 }
264 265 /**
266 * If libunwind, glibc backtrace or DbgHelp are present
267 * a stack trace is printed.
268 */269 publicstaticvoidprintStackTrace()
270 {
271 gst_debug_print_stack_trace();
272 }
273 274 /**
275 * Removes all registered instances of the given logging functions.
276 *
277 * Params:
278 * func = the log function to remove, or %NULL to
279 * remove the default log function
280 *
281 * Returns: How many instances of the function were removed
282 */283 publicstaticuintremoveLogFunction(GstLogFunctionfunc)
284 {
285 returngst_debug_remove_log_function(func);
286 }
287 288 /**
289 * Removes all registered instances of log functions with the given user data.
290 *
291 * Params:
292 * data = user data of the log function to remove
293 *
294 * Returns: How many instances of the function were removed
295 */296 publicstaticuintremoveLogFunctionByData(void* data)
297 {
298 returngst_debug_remove_log_function_by_data(data);
299 }
300 301 /**
302 * If activated, debugging messages are sent to the debugging
303 * handlers.
304 * It makes sense to deactivate it for speed issues.
305 * > This function is not threadsafe. It makes sense to only call it
306 * during initialization.
307 *
308 * Params:
309 * active = Whether to use debugging output or not
310 */311 publicstaticvoidsetActive(boolactive)
312 {
313 gst_debug_set_active(active);
314 }
315 316 /**
317 * Changes the coloring mode for debug output.
318 *
319 * This function may be called before gst_init().
320 *
321 * Params:
322 * mode = The coloring mode for debug output. See @GstDebugColorMode.
323 *
324 * Since: 1.2
325 */326 publicstaticvoidsetColorMode(GstDebugColorModemode)
327 {
328 gst_debug_set_color_mode(mode);
329 }
330 331 /**
332 * Changes the coloring mode for debug output.
333 *
334 * This function may be called before gst_init().
335 *
336 * Params:
337 * mode = The coloring mode for debug output. One of the following:
338 * "on", "auto", "off", "disable", "unix".
339 *
340 * Since: 1.2
341 */342 publicstaticvoidsetColorModeFromString(stringmode)
343 {
344 gst_debug_set_color_mode_from_string(Str.toStringz(mode));
345 }
346 347 /**
348 * Sets or unsets the use of coloured debugging output.
349 * Same as gst_debug_set_color_mode () with the argument being
350 * being GST_DEBUG_COLOR_MODE_ON or GST_DEBUG_COLOR_MODE_OFF.
351 *
352 * This function may be called before gst_init().
353 *
354 * Params:
355 * colored = Whether to use colored output or not
356 */357 publicstaticvoidsetColored(boolcolored)
358 {
359 gst_debug_set_colored(colored);
360 }
361 362 /**
363 * Sets the default threshold to the given level and updates all categories to
364 * use this threshold.
365 *
366 * This function may be called before gst_init().
367 *
368 * Params:
369 * level = level to set
370 */371 publicstaticvoidsetDefaultThreshold(GstDebugLevellevel)
372 {
373 gst_debug_set_default_threshold(level);
374 }
375 376 /**
377 * Sets all categories which match the given glob style pattern to the given
378 * level.
379 *
380 * Params:
381 * name = name of the categories to set
382 * level = level to set them to
383 */384 publicstaticvoidsetThresholdForName(stringname, GstDebugLevellevel)
385 {
386 gst_debug_set_threshold_for_name(Str.toStringz(name), level);
387 }
388 389 /**
390 * Sets the debug logging wanted in the same form as with the GST_DEBUG
391 * environment variable. You can use wildcards such as '*', but note that
392 * the order matters when you use wild cards, e.g. "foosrc:6,*src:3,*:2" sets
393 * everything to log level 2.
394 *
395 * Params:
396 * list = comma-separated list of "category:level" pairs to be used
397 * as debug logging levels
398 * reset = %TRUE to clear all previously-set debug levels before setting
399 * new thresholds
400 * %FALSE if adding the threshold described by @list to the one already set.
401 *
402 * Since: 1.2
403 */404 publicstaticvoidsetThresholdFromString(stringlist, boolreset)
405 {
406 gst_debug_set_threshold_from_string(Str.toStringz(list), reset);
407 }
408 409 /**
410 * Resets all categories with the given name back to the default level.
411 *
412 * Params:
413 * name = name of the categories to set
414 */415 publicstaticvoidunsetThresholdForName(stringname)
416 {
417 gst_debug_unset_threshold_for_name(Str.toStringz(name));
418 }
419 }