MLT  7.34.0
mlt_log.h
Go to the documentation of this file.
1 
22 #ifndef MLT_LOG_H
23 #define MLT_LOG_H
24 
25 #include "mlt_export.h"
26 #include <stdarg.h>
27 #include <stdint.h>
28 
29 #define MLT_LOG_QUIET -8
30 
34 #define MLT_LOG_PANIC 0
35 
41 #define MLT_LOG_FATAL 8
42 
47 #define MLT_LOG_ERROR 16
48 
53 #define MLT_LOG_WARNING 24
54 
55 #define MLT_LOG_INFO 32
56 #define MLT_LOG_VERBOSE 40
57 #define MLT_LOG_TIMINGS 44
58 
62 #define MLT_LOG_DEBUG 48
63 
77 #ifdef __GNUC__
78 MLT_EXPORT void mlt_log(void *service, int level, const char *fmt, ...)
79  __attribute__((__format__(__printf__, 3, 4)));
80 #else
81 MLT_EXPORT void mlt_log(void *service, int level, const char *fmt, ...);
82 #endif
83 
84 #ifdef _MSC_VER
85 
86 #define MLT_LOG_EXPAND_ARGS(...) , ##__VA_ARGS__
87 
88 #define mlt_log_panic(service, format, ...) \
89  mlt_log((service), MLT_LOG_PANIC, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
90 #define mlt_log_fatal(service, format, ...) \
91  mlt_log((service), MLT_LOG_FATAL, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
92 #define mlt_log_error(service, format, ...) \
93  mlt_log((service), MLT_LOG_ERROR, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
94 #define mlt_log_warning(service, format, ...) \
95  mlt_log((service), MLT_LOG_WARNING, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
96 #define mlt_log_info(service, format, ...) \
97  mlt_log((service), MLT_LOG_INFO, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
98 #define mlt_log_verbose(service, format, ...) \
99  mlt_log((service), MLT_LOG_VERBOSE, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
100 #define mlt_log_timings(service, format, ...) \
101  mlt_log((service), MLT_LOG_TIMINGS, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
102 #define mlt_log_debug(service, format, ...) \
103  mlt_log((service), MLT_LOG_DEBUG, format MLT_LOG_EXPAND_ARGS(__VA_ARGS__))
104 
105 #else
106 
107 #define mlt_log_panic(service, format, args...) mlt_log((service), MLT_LOG_PANIC, (format), ##args)
108 #define mlt_log_fatal(service, format, args...) mlt_log((service), MLT_LOG_FATAL, (format), ##args)
109 #define mlt_log_error(service, format, args...) mlt_log((service), MLT_LOG_ERROR, (format), ##args)
110 #define mlt_log_warning(service, format, args...) \
111  mlt_log((service), MLT_LOG_WARNING, (format), ##args)
112 #define mlt_log_info(service, format, args...) mlt_log((service), MLT_LOG_INFO, (format), ##args)
113 #define mlt_log_verbose(service, format, args...) \
114  mlt_log((service), MLT_LOG_VERBOSE, (format), ##args)
115 #define mlt_log_timings(service, format, args...) \
116  mlt_log((service), MLT_LOG_TIMINGS, (format), ##args)
117 #define mlt_log_debug(service, format, args...) mlt_log((service), MLT_LOG_DEBUG, (format), ##args)
118 
119 #endif
120 
121 MLT_EXPORT void mlt_vlog(void *service, int level, const char *fmt, va_list);
122 MLT_EXPORT int mlt_log_get_level(void);
123 MLT_EXPORT void mlt_log_set_level(int);
124 MLT_EXPORT void mlt_log_set_callback(void (*)(void *, int, const char *, va_list));
125 
126 #define mlt_log_timings_begin() \
127  { \
128  int64_t _mlt_log_timings_begin = mlt_log_timings_now(), _mlt_log_timings_end;
129 
130 #define mlt_log_timings_end(service, msg) \
131  _mlt_log_timings_end = mlt_log_timings_now(); \
132  mlt_log_timings(service, \
133  "%s:%d: T(%s)=%" PRId64 " us\n", \
134  __FILE__, \
135  __LINE__, \
136  msg, \
137  _mlt_log_timings_end - _mlt_log_timings_begin); \
138  }
139 
140 MLT_EXPORT int64_t mlt_log_timings_now(void);
141 
142 #endif /* MLT_LOG_H */
MLT_EXPORT void mlt_vlog(void *service, int level, const char *fmt, va_list)
Definition: mlt_log.c:86
MLT_EXPORT void mlt_log_set_level(int)
Definition: mlt_log.c:97
MLT_EXPORT int64_t mlt_log_timings_now(void)
Definition: mlt_log.c:107
MLT_EXPORT int mlt_log_get_level(void)
Definition: mlt_log.c:92
MLT_EXPORT void mlt_log_set_callback(void(*)(void *, int, const char *, va_list))
Definition: mlt_log.c:102
MLT_EXPORT void mlt_log(void *service, int level, const char *fmt,...)
Send the specified message to the log if the level is less than or equal to the current logging level...
struct __attribute__((aligned(16)))
private to mlt_pool_s, for tracking items to release
Definition: mlt_pool.c:103