X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgstinfo.h;h=181df55f5ec5a416219a2f2b3ddfea69777f1eb4;hb=2d7f9cfe92de5fe8faa767d9261d3adb55c7f5e2;hp=79ce5bd93fd83c93292084c1b531a0d032f67535;hpb=684db8eb7c71fdc4229363772d1cf8c0c0bf0ed7;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gstinfo.h b/gst/gstinfo.h index 79ce5bd..181df55 100644 --- a/gst/gstinfo.h +++ b/gst/gstinfo.h @@ -48,13 +48,26 @@ G_BEGIN_DECLS * successfully determined the type of the stream or when an mp3 plugin detects * the format to be used. ("This file has mono sound.") * @GST_LEVEL_DEBUG: Debugging messages should be used when something common - * happens that is not the expected default behavior. - * An example would be notifications about state changes or receiving/sending of - * events. + * happens that is not the expected default behavior, or something that's + * useful to know but doesn't happen all the time (ie. per loop iteration or + * buffer processed or event handled). + * An example would be notifications about state changes or receiving/sending + * of events. * @GST_LEVEL_LOG: Log messages are messages that are very common but might be * useful to know. As a rule of thumb a pipeline that is iterating as expected - * should never output anzthing else but LOG messages. - * Examples for this are referencing/dereferencing of objects or cothread switches. + * should never output anything else but LOG messages. Use this log level to + * log recurring information in chain functions and loop functions, for + * example. + * @GST_LEVEL_FIXME: Fixme messages are messages that indicate that something + * in the executed code path is not fully implemented or handled yet. Note + * that this does not replace proper error handling in any way, the purpose + * of this message is to make it easier to spot incomplete/unfinished pieces + * of code when reading the debug log. (Since: 0.10.23) + * @GST_LEVEL_TRACE: Tracing-related messages (Since: 0.10.30) + * Examples for this are referencing/dereferencing of objects. + * @GST_LEVEL_MEMDUMP: memory dump messages are used to log (small) chunks of + * data as memory dumps in the log. They will be displayed as hexdump with + * ASCII characters. (Since: 0.10.23) * @GST_LEVEL_COUNT: The number of defined debugging levels. * * The level defines the importance of a debugging message. The more important a @@ -67,6 +80,10 @@ typedef enum { GST_LEVEL_INFO, GST_LEVEL_DEBUG, GST_LEVEL_LOG, + GST_LEVEL_FIXME = 6, + GST_LEVEL_TRACE = 7, + /* add more */ + GST_LEVEL_MEMDUMP = 9, /* add more */ GST_LEVEL_COUNT } GstDebugLevel; @@ -198,11 +215,14 @@ struct _GstDebugCategory { * be defined when configuring your project, as it is compiler dependant. If it * is not defined, some default value is used. It is used to provide debugging * output with the function name of the message. + * + * Note that this is different from G_STRFUNC as we do not want the full + * function signature in C++ code. */ #ifndef GST_FUNCTION -#if defined (__GNUC__) -# define GST_FUNCTION ((const char*) (__PRETTY_FUNCTION__)) -#elif defined (G_HAVE_ISO_VARARGS) +#if defined (__GNUC__) || (defined (_MSC_VER) && _MSC_VER >= 1300) +# define GST_FUNCTION ((const char*) (__FUNCTION__)) +#elif defined (__STDC__) && defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define GST_FUNCTION ((const char*) (__func__)) #else # define GST_FUNCTION ((const char*) ("???")) @@ -236,11 +256,6 @@ typedef void (*GstLogFunction) (GstDebugCategory * category, GstDebugMessage * message, gpointer data); -#ifndef GST_DISABLE_GST_DEBUG - -void _gst_debug_init (void); - - #ifdef GST_USING_PRINTF_EXTENSION /* not using G_GNUC_PRINTF, since gcc will choke on GST_PTR_FORMAT being %P */ @@ -275,6 +290,32 @@ void gst_debug_log_valist (GstDebugCategory * category, const gchar * format, va_list args) G_GNUC_NO_INSTRUMENT; +/* do not use this function, use the GST_DEBUG_CATEGORY_INIT macro */ +GstDebugCategory *_gst_debug_category_new (const gchar * name, + guint color, + const gchar * description); +/* do not use this function, use the GST_DEBUG_CATEGORY_GET macro */ +GstDebugCategory *_gst_debug_get_category (const gchar *name); + + +/* do not use this function, use the GST_CAT_MEMDUMP_* macros */ +void _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file, + const gchar * func, gint line, GObject * obj, const gchar * msg, + const guint8 * data, guint length); + +/* we define this to avoid a compiler warning regarding a cast from a function + * pointer to a void pointer + * (see https://bugzilla.gnome.org/show_bug.cgi?id=309253) + */ +typedef void (* GstDebugFuncPtr) (void); + +/* do no use these functions, use the GST_DEBUG*_FUNCPTR macros */ +void _gst_debug_register_funcptr (GstDebugFuncPtr func, + const gchar * ptrname); +const gchar * + _gst_debug_nameof_funcptr (GstDebugFuncPtr func) G_GNUC_NO_INSTRUMENT; + + const gchar * gst_debug_message_get (GstDebugMessage * message); void gst_debug_log_default (GstDebugCategory * category, @@ -286,11 +327,11 @@ void gst_debug_log_default (GstDebugCategory * category, GstDebugMessage * message, gpointer unused) G_GNUC_NO_INSTRUMENT; -G_CONST_RETURN gchar * - gst_debug_level_get_name (GstDebugLevel level); +const gchar * gst_debug_level_get_name (GstDebugLevel level); void gst_debug_add_log_function (GstLogFunction func, gpointer data); + guint gst_debug_remove_log_function (GstLogFunction func); guint gst_debug_remove_log_function_by_data (gpointer data); @@ -300,11 +341,43 @@ gboolean gst_debug_is_active (void); void gst_debug_set_colored (gboolean colored); gboolean gst_debug_is_colored (void); -void gst_debug_set_default_threshold (GstDebugLevel level); -GstDebugLevel gst_debug_get_default_threshold (void); -void gst_debug_set_threshold_for_name (const gchar * name, - GstDebugLevel level); -void gst_debug_unset_threshold_for_name (const gchar * name); +void gst_debug_set_default_threshold (GstDebugLevel level); +GstDebugLevel gst_debug_get_default_threshold (void); +void gst_debug_set_threshold_for_name (const gchar * name, + GstDebugLevel level); +void gst_debug_unset_threshold_for_name (const gchar * name); + + +void gst_debug_category_free (GstDebugCategory * category); +void gst_debug_category_set_threshold (GstDebugCategory * category, + GstDebugLevel level); +void gst_debug_category_reset_threshold (GstDebugCategory * category); +GstDebugLevel gst_debug_category_get_threshold (GstDebugCategory * category); +const gchar * gst_debug_category_get_name (GstDebugCategory * category); +guint gst_debug_category_get_color (GstDebugCategory * category); +const gchar * gst_debug_category_get_description (GstDebugCategory * category); +GSList * gst_debug_get_all_categories (void); + + +gchar * gst_debug_construct_term_color (guint colorinfo); +gint gst_debug_construct_win_color (guint colorinfo); + + +#ifndef GST_DISABLE_GST_DEBUG + +#define gst_debug_add_log_function(func,data) \ +G_STMT_START{ \ + if (func == gst_debug_log_default) { \ + gst_debug_add_log_function(NULL,data); \ + } else { \ + gst_debug_add_log_function(func,data); \ + } \ +}G_STMT_END + +#define gst_debug_remove_log_function(func) \ + (func == gst_debug_log_default) ? \ + gst_debug_remove_log_function(NULL) : \ + gst_debug_remove_log_function(func) /** * GST_DEBUG_CATEGORY: @@ -321,12 +394,7 @@ void gst_debug_unset_threshold_for_name (const gchar * name); * Declares a GstDebugCategory variable as extern. Use in header files. * This macro expands to nothing if debugging is disabled. */ -#ifndef _MSC_VER #define GST_DEBUG_CATEGORY_EXTERN(cat) extern GstDebugCategory *cat -#else /* _MSC_VER */ -#define GST_DEBUG_CATEGORY_EXTERN(cat) \ - extern __declspec (dllimport) GstDebugCategory *cat; -#endif /** * GST_DEBUG_CATEGORY_STATIC: @@ -336,10 +404,7 @@ void gst_debug_unset_threshold_for_name (const gchar * name); * This macro expands to nothing if debugging is disabled. */ #define GST_DEBUG_CATEGORY_STATIC(cat) static GstDebugCategory *cat = NULL -/* do not use this function, use the macros below */ -GstDebugCategory *_gst_debug_category_new (gchar * name, - guint color, - gchar * description); + /** * GST_DEBUG_CATEGORY_INIT: * @cat: the category to initialize. @@ -380,22 +445,38 @@ GstDebugCategory *_gst_debug_category_new (gchar * name, cat = _gst_debug_category_new (name,color,description); \ }G_STMT_END -void gst_debug_category_free (GstDebugCategory * category); -void gst_debug_category_set_threshold (GstDebugCategory * category, - GstDebugLevel level); -void gst_debug_category_reset_threshold(GstDebugCategory * category); -GstDebugLevel - gst_debug_category_get_threshold (GstDebugCategory * category); -G_CONST_RETURN gchar * - gst_debug_category_get_name (GstDebugCategory * category); -guint gst_debug_category_get_color (GstDebugCategory * category); -G_CONST_RETURN gchar * - gst_debug_category_get_description (GstDebugCategory * category); -GSList * - gst_debug_get_all_categories (void); - -gchar * gst_debug_construct_term_color (guint colorinfo); - +/** + * GST_DEBUG_CATEGORY_GET: + * @cat: the category to initialize. + * @name: log category name + * + * Looks up an existing #GstDebugCategory by its @name and sets @cat. If the + * category is not found, but GST_CAT_DEFAULT is defined, that is assigned to + * @cat. Otherwise @cat will be NULL. + * + * |[ + * GST_DEBUG_CATEGORY_STATIC (gst_myplugin_debug); + * #define GST_CAT_DEFAULT gst_myplugin_debug + * GST_DEBUG_CATEGORY_STATIC (GST_CAT_PERFORMANCE); + * ... + * GST_DEBUG_CATEGORY_INIT (gst_myplugin_debug, "myplugin", 0, "nice element"); + * GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE"); + * ]| + * + * Since: 0.10.24 + */ +#ifdef GST_CAT_DEFAULT +#define GST_DEBUG_CATEGORY_GET(cat,name) G_STMT_START{\ + cat = _gst_debug_get_category (name); \ + if (!cat) { \ + cat = GST_CAT_DEFAULT; \ + } \ +}G_STMT_END +#else +#define GST_DEBUG_CATEGORY_GET(cat,name) G_STMT_START{\ + cat = _gst_debug_get_category (name); \ +}G_STMT_END +#endif /** * GST_CAT_DEFAULT: @@ -404,11 +485,11 @@ gchar * gst_debug_construct_term_color (guint colorinfo); */ GST_EXPORT GstDebugCategory * GST_CAT_DEFAULT; /* this symbol may not be used */ -extern gboolean __gst_debug_enabled; +extern gboolean _gst_debug_enabled; /* since 0.10.7, the min debug level, used for quickly discarding debug * messages that fall under the threshold. */ -extern GstDebugLevel __gst_debug_min; +GST_EXPORT GstDebugLevel _gst_debug_min; /** * GST_CAT_LEVEL_LOG: @@ -423,7 +504,7 @@ extern GstDebugLevel __gst_debug_min; */ #ifdef G_HAVE_ISO_VARARGS #define GST_CAT_LEVEL_LOG(cat,level,object,...) G_STMT_START{ \ - if (G_UNLIKELY (level <= __gst_debug_min)) { \ + if (G_UNLIKELY (level <= _gst_debug_min)) { \ gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \ (GObject *) (object), __VA_ARGS__); \ } \ @@ -431,7 +512,7 @@ extern GstDebugLevel __gst_debug_min; #else /* G_HAVE_GNUC_VARARGS */ #ifdef G_HAVE_GNUC_VARARGS #define GST_CAT_LEVEL_LOG(cat,level,object,args...) G_STMT_START{ \ - if (G_UNLIKELY (level <= __gst_debug_min)) { \ + if (G_UNLIKELY (level <= _gst_debug_min)) { \ gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \ (GObject *) (object), ##args ); \ } \ @@ -441,7 +522,7 @@ static inline void GST_CAT_LEVEL_LOG_valist (GstDebugCategory * cat, GstDebugLevel level, gpointer object, const char *format, va_list varargs) { - if (G_UNLIKELY (level <= __gst_debug_min)) { + if (G_UNLIKELY (level <= _gst_debug_min)) { gst_debug_log_valist (cat, level, "", "", 0, (GObject *) object, format, varargs); } @@ -460,6 +541,25 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, #endif #endif /* G_HAVE_ISO_VARARGS */ +/* This one doesn't have varargs in the macro, so it's different than all the + * other macros and hence in a separate block right here. Docs chunks are + * with the other doc chunks below though. */ +#define __GST_CAT_MEMDUMP_LOG(cat,object,msg,data,length) G_STMT_START{ \ + if (G_UNLIKELY (GST_LEVEL_MEMDUMP <= _gst_debug_min)) { \ + _gst_debug_dump_mem ((cat), __FILE__, GST_FUNCTION, __LINE__, \ + (GObject *) (object), (msg), (data), (length)); \ + } \ +}G_STMT_END + +#define GST_CAT_MEMDUMP_OBJECT(cat,obj,msg,data,length) \ + __GST_CAT_MEMDUMP_LOG(cat,obj,msg,data,length) +#define GST_CAT_MEMDUMP(cat,msg,data,length) \ + __GST_CAT_MEMDUMP_LOG(cat,NULL,msg,data,length) +#define GST_MEMDUMP_OBJECT(obj,msg,data,length) \ + __GST_CAT_MEMDUMP_LOG(GST_CAT_DEFAULT,obj,msg,data,length) +#define GST_MEMDUMP(msg,data,length) \ + __GST_CAT_MEMDUMP_LOG(GST_CAT_DEFAULT,NULL,msg,data,length) + /** * GST_CAT_ERROR_OBJECT: * @cat: category to use @@ -501,6 +601,40 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, * * Output an logging message belonging to the given object in the given category. */ +/** + * GST_CAT_FIXME_OBJECT: + * @cat: category to use + * @obj: the #GObject the message belongs to + * @...: printf-style message to output + * + * Output a fixme message belonging to the given object in the given category. + * + * Since: 0.10.23 + */ +/** + * GST_CAT_TRACE_OBJECT: + * @cat: category to use + * @obj: the #GObject the message belongs to + * @...: printf-style message to output + * + * Output a tracing message belonging to the given object in the given + * category. + * + * Since: 0.10.30 + */ +/** + * GST_CAT_MEMDUMP_OBJECT: + * @cat: category to use + * @obj: the #GObject the message belongs to + * @msg: message string to log with the data + * @data: pointer to the data to output + * @length: length of the data to output + * + * Output a hexdump of @data relating to the given object in the given + * category. + * + * Since: 0.10.23 + */ /** @@ -538,6 +672,35 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, * * Output an logging message in the given category. */ +/** + * GST_CAT_FIXME: + * @cat: category to use + * @...: printf-style message to output + * + * Output an fixme message in the given category. + * + * Since: 0.10.23 + */ +/** + * GST_CAT_TRACE: + * @cat: category to use + * @...: printf-style message to output + * + * Output a tracing message in the given category. + * + * Since: 0.10.30 + */ +/** + * GST_CAT_MEMDUMP: + * @cat: category to use + * @msg: message string to log with the data + * @data: pointer to the data to output + * @length: length of the data to output + * + * Output a hexdump of @data in the given category. + * + * Since: 0.10.23 + */ /** @@ -577,6 +740,35 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, * * Output a logging message belonging to the given object in the default category. */ +/** + * GST_FIXME_OBJECT: + * @obj: the #GObject the message belongs to + * @...: printf-style message to output + * + * Output a fixme message belonging to the given object in the default category. + * + * Since: 0.10.23 + */ +/** + * GST_TRACE_OBJECT: + * @obj: the #GObject the message belongs to + * @...: printf-style message to output + * + * Output a tracing message belonging to the given object in the default category. + * + * Since: 0.10.30 + */ +/** + * GST_MEMDUMP_OBJECT: + * @obj: the #GObject the message belongs to + * @msg: message string to log with the data + * @data: pointer to the data to output + * @length: length of the data to output + * + * Output a logging message belonging to the given object in the default category. + * + * Since: 0.10.23 + */ /** @@ -609,6 +801,32 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, * * Output a logging message in the default category. */ +/** + * GST_FIXME: + * @...: printf-style message to output + * + * Output a fixme message in the default category. + * + * Since: 0.10.23 + */ +/** + * GST_TRACE: + * @...: printf-style message to output + * + * Output a tracing message in the default category. + * + * Since: 0.10.30 + */ +/** + * GST_MEMDUMP: + * @msg: message string to log with the data + * @data: pointer to the data to output + * @length: length of the data to output + * + * Output a hexdump of @data. + * + * Since: 0.10.23 + */ #ifdef G_HAVE_ISO_VARARGS @@ -617,24 +835,32 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, #define GST_CAT_INFO_OBJECT(cat,obj,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_INFO, obj, __VA_ARGS__) #define GST_CAT_DEBUG_OBJECT(cat,obj,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_DEBUG, obj, __VA_ARGS__) #define GST_CAT_LOG_OBJECT(cat,obj,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_LOG, obj, __VA_ARGS__) +#define GST_CAT_FIXME_OBJECT(cat,obj,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_FIXME, obj, __VA_ARGS__) +#define GST_CAT_TRACE_OBJECT(cat,obj,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_TRACE, obj, __VA_ARGS__) #define GST_CAT_ERROR(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_ERROR, NULL, __VA_ARGS__) #define GST_CAT_WARNING(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_WARNING, NULL, __VA_ARGS__) #define GST_CAT_INFO(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_INFO, NULL, __VA_ARGS__) #define GST_CAT_DEBUG(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_DEBUG, NULL, __VA_ARGS__) #define GST_CAT_LOG(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_LOG, NULL, __VA_ARGS__) +#define GST_CAT_FIXME(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_FIXME, NULL, __VA_ARGS__) +#define GST_CAT_TRACE(cat,...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_TRACE, NULL, __VA_ARGS__) #define GST_ERROR_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR, obj, __VA_ARGS__) #define GST_WARNING_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, obj, __VA_ARGS__) #define GST_INFO_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_INFO, obj, __VA_ARGS__) #define GST_DEBUG_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, obj, __VA_ARGS__) #define GST_LOG_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_LOG, obj, __VA_ARGS__) +#define GST_FIXME_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_FIXME, obj, __VA_ARGS__) +#define GST_TRACE_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, obj, __VA_ARGS__) #define GST_ERROR(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR, NULL, __VA_ARGS__) #define GST_WARNING(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, __VA_ARGS__) #define GST_INFO(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_INFO, NULL, __VA_ARGS__) #define GST_DEBUG(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, NULL, __VA_ARGS__) #define GST_LOG(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_LOG, NULL, __VA_ARGS__) +#define GST_FIXME(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_FIXME, NULL, __VA_ARGS__) +#define GST_TRACE(...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, NULL, __VA_ARGS__) #else #ifdef G_HAVE_GNUC_VARARGS @@ -644,24 +870,32 @@ GST_CAT_LEVEL_LOG (GstDebugCategory * cat, GstDebugLevel level, #define GST_CAT_INFO_OBJECT(cat,obj,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_INFO, obj, ##args ) #define GST_CAT_DEBUG_OBJECT(cat,obj,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_DEBUG, obj, ##args ) #define GST_CAT_LOG_OBJECT(cat,obj,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_LOG, obj, ##args ) +#define GST_CAT_FIXME_OBJECT(cat,obj,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_FIXME, obj, ##args ) +#define GST_CAT_TRACE_OBJECT(cat,obj,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_TRACE, obj, ##args ) #define GST_CAT_ERROR(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_ERROR, NULL, ##args ) #define GST_CAT_WARNING(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_WARNING, NULL, ##args ) #define GST_CAT_INFO(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_INFO, NULL, ##args ) #define GST_CAT_DEBUG(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_DEBUG, NULL, ##args ) #define GST_CAT_LOG(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_LOG, NULL, ##args ) +#define GST_CAT_FIXME(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_FIXME, NULL, ##args ) +#define GST_CAT_TRACE(cat,args...) GST_CAT_LEVEL_LOG (cat, GST_LEVEL_TRACE, NULL, ##args ) #define GST_ERROR_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR, obj, ##args ) #define GST_WARNING_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, obj, ##args ) #define GST_INFO_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_INFO, obj, ##args ) #define GST_DEBUG_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, obj, ##args ) #define GST_LOG_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_LOG, obj, ##args ) +#define GST_FIXME_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_FIXME, obj, ##args ) +#define GST_TRACE_OBJECT(obj,args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, obj, ##args ) #define GST_ERROR(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR, NULL, ##args ) #define GST_WARNING(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, ##args ) #define GST_INFO(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_INFO, NULL, ##args ) #define GST_DEBUG(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, NULL, ##args ) #define GST_LOG(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_LOG, NULL, ##args ) +#define GST_FIXME(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_FIXME, NULL, ##args ) +#define GST_TRACE(args...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, NULL, ##args ) #else /* no variadic macros, use inline */ @@ -721,6 +955,28 @@ GST_CAT_LOG_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, } static inline void +GST_CAT_FIXME_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, + ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (cat, GST_LEVEL_FIXME, obj, format, varargs); + va_end (varargs); +} + +static inline void +GST_CAT_TRACE_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, + ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (cat, GST_LEVEL_TRACE, obj, format, varargs); + va_end (varargs); +} + +static inline void GST_CAT_ERROR (GstDebugCategory * cat, const char *format, ...) { va_list varargs; @@ -771,6 +1027,26 @@ GST_CAT_LOG (GstDebugCategory * cat, const char *format, ...) } static inline void +GST_CAT_FIXME (GstDebugCategory * cat, const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (cat, GST_LEVEL_FIXME, NULL, format, varargs); + va_end (varargs); +} + +static inline void +GST_CAT_TRACE (GstDebugCategory * cat, const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (cat, GST_LEVEL_TRACE, NULL, format, varargs); + va_end (varargs); +} + +static inline void GST_ERROR_OBJECT (gpointer obj, const char *format, ...) { va_list varargs; @@ -826,6 +1102,28 @@ GST_LOG_OBJECT (gpointer obj, const char *format, ...) } static inline void +GST_FIXME_OBJECT (gpointer obj, const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (GST_CAT_DEFAULT, GST_LEVEL_FIXME, obj, format, + varargs); + va_end (varargs); +} + +static inline void +GST_TRACE_OBJECT (gpointer obj, const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (GST_CAT_DEFAULT, GST_LEVEL_TRACE, obj, format, + varargs); + va_end (varargs); +} + +static inline void GST_ERROR (const char *format, ...) { va_list varargs; @@ -879,24 +1177,55 @@ GST_LOG (const char *format, ...) format, varargs); va_end (varargs); } + +static inline void +GST_FIXME (const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (GST_CAT_DEFAULT, GST_LEVEL_FIXME, NULL, format, + varargs); + va_end (varargs); +} + +static inline void +GST_TRACE (const char *format, ...) +{ + va_list varargs; + + va_start (varargs, format); + GST_CAT_LEVEL_LOG_valist (GST_CAT_DEFAULT, GST_LEVEL_TRACE, NULL, format, + varargs); + va_end (varargs); +} #endif #endif /********** function pointer stuff **********/ -typedef void (* GstDebugFuncPtr) (void); -void _gst_debug_register_funcptr (GstDebugFuncPtr func, - const gchar * ptrname); -G_CONST_RETURN gchar * - _gst_debug_nameof_funcptr (GstDebugFuncPtr func); - +/** + * GST_DEBUG_REGISTER_FUNCPTR: + * @ptr: pointer to the function to register + * + * Register a pointer to a function with its name, so it can later be used by + * GST_DEBUG_FUNCPTR_NAME(). + * + * Use this variant of #GST_DEBUG_FUNCPTR if you do not need to use @ptr. + * + * Since: 0.10.26 + */ +#define GST_DEBUG_REGISTER_FUNCPTR(ptr) \ + _gst_debug_register_funcptr((GstDebugFuncPtr)(ptr), #ptr) /** * GST_DEBUG_FUNCPTR: * @ptr: pointer to the function to register * * Register a pointer to a function with its name, so it can later be used by * GST_DEBUG_FUNCPTR_NAME(). + * + * Returns: the value passed to @ptr. */ #define GST_DEBUG_FUNCPTR(ptr) \ (_gst_debug_register_funcptr((GstDebugFuncPtr)(ptr), #ptr) , ptr) @@ -914,109 +1243,130 @@ G_CONST_RETURN gchar * #define GST_DEBUG_FUNCPTR_NAME(ptr) \ _gst_debug_nameof_funcptr((GstDebugFuncPtr)ptr) + #else /* GST_DISABLE_GST_DEBUG */ + +#ifndef GST_INFO_C + #if defined(__GNUC__) && __GNUC__ >= 3 # pragma GCC poison gst_debug_log # pragma GCC poison gst_debug_log_valist # pragma GCC poison _gst_debug_category_new #endif -#define _gst_debug_init() /* NOP */ +#define _gst_debug_min GST_LEVEL_NONE -#define gst_debug_set_default_threshold(level) /* NOP */ +#define gst_debug_set_default_threshold(level) G_STMT_START{ }G_STMT_END #define gst_debug_get_default_threshold() (GST_LEVEL_NONE) #define gst_debug_level_get_name(level) ("NONE") -#define gst_debug_message_get(message) ("NONE") -#define gst_debug_add_log_function(func,data) /* NOP */ -guint gst_debug_remove_log_function (GstLogFunction func); -guint gst_debug_remove_log_function_by_data (gpointer data); -#define gst_debug_set_active(active) /* NOP */ +#define gst_debug_message_get(message) ("") +#define gst_debug_add_log_function(func,data) G_STMT_START{ }G_STMT_END +#define gst_debug_set_active(active) G_STMT_START{ }G_STMT_END #define gst_debug_is_active() (FALSE) -#define gst_debug_set_colored(colored) /* NOP */ +#define gst_debug_set_colored(colored) G_STMT_START{ }G_STMT_END #define gst_debug_is_colored() (FALSE) -#define gst_debug_set_default_threshold(level) /* NOP */ +#define gst_debug_set_default_threshold(level) G_STMT_START{ }G_STMT_END #define gst_debug_get_default_threshold() (GST_LEVEL_NONE) -#define gst_debug_set_threshold_for_name(name,level) /* NOP */ -#define gst_debug_unset_threshold_for_name(name) /* NOP */ - -#define GST_DEBUG_CATEGORY(var) /* NOP */ -#define GST_DEBUG_CATEGORY_EXTERN(var) /* NOP */ -#if !defined(G_HAVE_GNUC_VARARGS) && !defined(G_HAVE_ISO_VARARGS) -#define GST_DEBUG_CATEGORY_STATIC(var) static GstDebugCategory *var = NULL -#else -#define GST_DEBUG_CATEGORY_STATIC(var) /* NOP */ -#endif -#define GST_DEBUG_CATEGORY_INIT(var,name,color,desc) /* NOP */ -#define gst_debug_category_free(category) /* NOP */ -#define gst_debug_category_set_threshold(category,level) /* NOP */ -#define gst_debug_category_reset_threshold(category) /* NOP */ +#define gst_debug_set_threshold_for_name(name,level) G_STMT_START{ }G_STMT_END +#define gst_debug_unset_threshold_for_name(name) G_STMT_START{ }G_STMT_END + +/* we are using dummy function prototypes here to eat ';' as these macros are + * used outside of functions */ +#define GST_DEBUG_CATEGORY(var) void _gst_debug_dummy_##var (void) +#define GST_DEBUG_CATEGORY_EXTERN(var) void _gst_debug_dummy_extern_##var (void) +#define GST_DEBUG_CATEGORY_STATIC(var) void _gst_debug_dummy_static_##var (void) + +#define GST_DEBUG_CATEGORY_INIT(var,name,color,desc) G_STMT_START{ }G_STMT_END +#define GST_DEBUG_CATEGORY_GET(var,name) G_STMT_START{ }G_STMT_END +#define gst_debug_category_free(category) G_STMT_START{ }G_STMT_END +#define gst_debug_category_set_threshold(category,level) G_STMT_START{ }G_STMT_END +#define gst_debug_category_reset_threshold(category) G_STMT_START{ }G_STMT_END #define gst_debug_category_get_threshold(category) (GST_LEVEL_NONE) #define gst_debug_category_get_name(cat) ("") #define gst_debug_category_get_color(cat) (0) #define gst_debug_category_get_description(cat) ("") #define gst_debug_get_all_categories() (NULL) #define gst_debug_construct_term_color(colorinfo) (g_strdup ("00")) +#define gst_debug_construct_win_color(colorinfo) (0) -#ifdef G_HAVE_ISO_VARARGS - -#define GST_CAT_LEVEL_LOG(cat,level,...) /* NOP */ - -#define GST_CAT_ERROR_OBJECT(...) /* NOP */ -#define GST_CAT_WARNING_OBJECT(...) /* NOP */ -#define GST_CAT_INFO_OBJECT(...) /* NOP */ -#define GST_CAT_DEBUG_OBJECT(...) /* NOP */ -#define GST_CAT_LOG_OBJECT(...) /* NOP */ - -#define GST_CAT_ERROR(...) /* NOP */ -#define GST_CAT_WARNING(...) /* NOP */ -#define GST_CAT_INFO(...) /* NOP */ -#define GST_CAT_DEBUG(...) /* NOP */ -#define GST_CAT_LOG(...) /* NOP */ - -#define GST_ERROR_OBJECT(...) /* NOP */ -#define GST_WARNING_OBJECT(...) /* NOP */ -#define GST_INFO_OBJECT(...) /* NOP */ -#define GST_DEBUG_OBJECT(...) /* NOP */ -#define GST_LOG_OBJECT(...) /* NOP */ +#endif /* !GST_INFO_C */ -#define GST_ERROR(...) /* NOP */ -#define GST_WARNING(...) /* NOP */ -#define GST_INFO(...) /* NOP */ -#define GST_DEBUG(...) /* NOP */ -#define GST_LOG(...) /* NOP */ +#ifdef G_HAVE_ISO_VARARGS -#else +#define GST_CAT_LEVEL_LOG(cat,level,...) G_STMT_START{ }G_STMT_END + +#define GST_CAT_ERROR_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_WARNING_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_INFO_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_DEBUG_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_LOG_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_FIXME_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_TRACE_OBJECT(...) G_STMT_START{ }G_STMT_END + +#define GST_CAT_ERROR(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_WARNING(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_INFO(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_DEBUG(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_LOG(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_FIXME(...) G_STMT_START{ }G_STMT_END +#define GST_CAT_TRACE(...) G_STMT_START{ }G_STMT_END + +#define GST_ERROR_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_WARNING_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_INFO_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_DEBUG_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_LOG_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_FIXME_OBJECT(...) G_STMT_START{ }G_STMT_END +#define GST_TRACE_OBJECT(...) G_STMT_START{ }G_STMT_END + +#define GST_ERROR(...) G_STMT_START{ }G_STMT_END +#define GST_WARNING(...) G_STMT_START{ }G_STMT_END +#define GST_INFO(...) G_STMT_START{ }G_STMT_END +#define GST_DEBUG(...) G_STMT_START{ }G_STMT_END +#define GST_LOG(...) G_STMT_START{ }G_STMT_END +#define GST_FIXME(...) G_STMT_START{ }G_STMT_END +#define GST_TRACE(...) G_STMT_START{ }G_STMT_END + +#else /* !G_HAVE_ISO_VARARGS */ #ifdef G_HAVE_GNUC_VARARGS -#define GST_CAT_LEVEL_LOG(cat,level,args...) /* NOP */ - -#define GST_CAT_ERROR_OBJECT(args...) /* NOP */ -#define GST_CAT_WARNING_OBJECT(args...) /* NOP */ -#define GST_CAT_INFO_OBJECT(args...) /* NOP */ -#define GST_CAT_DEBUG_OBJECT(args...) /* NOP */ -#define GST_CAT_LOG_OBJECT(args...) /* NOP */ - -#define GST_CAT_ERROR(args...) /* NOP */ -#define GST_CAT_WARNING(args...) /* NOP */ -#define GST_CAT_INFO(args...) /* NOP */ -#define GST_CAT_DEBUG(args...) /* NOP */ -#define GST_CAT_LOG(args...) /* NOP */ - -#define GST_ERROR_OBJECT(args...) /* NOP */ -#define GST_WARNING_OBJECT(args...) /* NOP */ -#define GST_INFO_OBJECT(args...) /* NOP */ -#define GST_DEBUG_OBJECT(args...) /* NOP */ -#define GST_LOG_OBJECT(args...) /* NOP */ - -#define GST_ERROR(args...) /* NOP */ -#define GST_WARNING(args...) /* NOP */ -#define GST_INFO(args...) /* NOP */ -#define GST_DEBUG(args...) /* NOP */ -#define GST_LOG(args...) /* NOP */ - -#else +#define GST_CAT_LEVEL_LOG(cat,level,args...) G_STMT_START{ }G_STMT_END + +#define GST_CAT_ERROR_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_WARNING_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_INFO_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_DEBUG_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_LOG_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_FIXME_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_TRACE_OBJECT(args...) G_STMT_START{ }G_STMT_END + +#define GST_CAT_ERROR(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_WARNING(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_INFO(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_DEBUG(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_LOG(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_FIXME(args...) G_STMT_START{ }G_STMT_END +#define GST_CAT_TRACE(args...) G_STMT_START{ }G_STMT_END + +#define GST_ERROR_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_WARNING_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_INFO_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_DEBUG_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_LOG_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_FIXME_OBJECT(args...) G_STMT_START{ }G_STMT_END +#define GST_TRACE_OBJECT(args...) G_STMT_START{ }G_STMT_END + +#define GST_ERROR(args...) G_STMT_START{ }G_STMT_END +#define GST_WARNING(args...) G_STMT_START{ }G_STMT_END +#define GST_INFO(args...) G_STMT_START{ }G_STMT_END +#define GST_DEBUG(args...) G_STMT_START{ }G_STMT_END +#define GST_LOG(args...) G_STMT_START{ }G_STMT_END +#define GST_FIXME(args...) G_STMT_START{ }G_STMT_END +#define GST_TRACE(args...) G_STMT_START{ }G_STMT_END + +#else /* !G_HAVE_GNUC_VARARGS */ static inline void GST_CAT_LEVEL_LOG_valist (GstDebugCategory * cat, GstDebugLevel level, gpointer object, const char *format, va_list varargs) @@ -1054,6 +1404,18 @@ GST_CAT_LOG_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, } static inline void +GST_CAT_FIXME_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, + ...) +{ +} + +static inline void +GST_CAT_TRACE_OBJECT (GstDebugCategory * cat, gpointer obj, const char *format, + ...) +{ +} + +static inline void GST_CAT_ERROR (GstDebugCategory * cat, const char *format, ...) { } @@ -1079,6 +1441,16 @@ GST_CAT_LOG (GstDebugCategory * cat, const char *format, ...) } static inline void +GST_CAT_FIXME (GstDebugCategory * cat, const char *format, ...) +{ +} + +static inline void +GST_CAT_TRACE (GstDebugCategory * cat, const char *format, ...) +{ +} + +static inline void GST_ERROR_OBJECT (gpointer obj, const char *format, ...) { } @@ -1104,6 +1476,16 @@ GST_LOG_OBJECT (gpointer obj, const char *format, ...) } static inline void +GST_FIXME_OBJECT (gpointer obj, const char *format, ...) +{ +} + +static inline void +GST_TRACE_OBJECT (gpointer obj, const char *format, ...) +{ +} + +static inline void GST_ERROR (const char *format, ...) { } @@ -1127,14 +1509,32 @@ static inline void GST_LOG (const char *format, ...) { } -#endif -#endif +static inline void +GST_FIXME (const char *format, ...) +{ +} + +static inline void +GST_TRACE (const char *format, ...) +{ +} + +#endif /* G_HAVE_GNUC_VARARGS */ +#endif /* G_HAVE_ISO_VARARGS */ + +#define GST_DEBUG_REGISTER_FUNCPTR(ptr) G_STMT_START{ }G_STMT_END #define GST_DEBUG_FUNCPTR(ptr) (ptr) #define GST_DEBUG_FUNCPTR_NAME(ptr) (g_strdup_printf ("%p", ptr)) +#define GST_CAT_MEMDUMP_OBJECT(cat,obj,msg,data,length) G_STMT_START{ }G_STMT_END +#define GST_CAT_MEMDUMP(cat,msg,data,length) G_STMT_START{ }G_STMT_END +#define GST_MEMDUMP_OBJECT(obj,msg,data,length) G_STMT_START{ }G_STMT_END +#define GST_MEMDUMP(msg,data,length) G_STMT_START{ }G_STMT_END + #endif /* GST_DISABLE_GST_DEBUG */ + void gst_debug_print_stack_trace (void); G_END_DECLS