22
22
#include < istream>
23
23
#include < vector>
24
24
25
- // #define _DEBUG
26
- #ifdef _DEBUG
27
- # define DBG (FMT, ...) printf(FMT " \n " , ##__VA_ARGS__)
28
- #else
29
- # define DBG (FMT, ...)
30
- #endif
31
- #define DUMP (FMT, ...) printf(FMT, ##__VA_ARGS__)
32
- #define INFO (FMT, ...) printf(FMT " \n " , ##__VA_ARGS__)
33
- #define ERR (FMT, ...) printf(" ERROR: " FMT " \n " , ##__VA_ARGS__)
25
+ #include < stdarg.h>
26
+ #include < string.h>
27
+
28
+ enum {
29
+ ES_LOG_LEVEL_NONE = 0 ,
30
+ ES_LOG_LEVEL_ERROR,
31
+ ES_LOG_LEVEL_INFO,
32
+ ES_LOG_LEVEL_DEBUG,
33
+ ES_LOG_LEVEL_MEMDUMP,
34
+ ES_LOG_LEVEL_MAX
35
+ };
36
+
37
+ class Logger {
38
+ public:
39
+ Logger () {
40
+ m_level = ES_LOG_LEVEL_ERROR;
41
+
42
+ }
43
+ static Logger& instance ()
44
+ {
45
+ static Logger instance;
46
+ return instance;
47
+ }
48
+ int level () { return m_level;}
49
+ void setLogLevel (uint8_t level) {
50
+ m_level = level;
51
+ if (m_level > ES_LOG_LEVEL_MAX)
52
+ m_level=ES_LOG_LEVEL_DEBUG;
53
+ }
54
+ void createLog (const char *format, ...) {
55
+ va_list argptr;
56
+ va_start (argptr, format);
57
+ vfprintf (stdout, format, argptr);
58
+ va_end (argptr);
59
+ }
60
+
61
+ void createLogData (const uint8_t * buffer, uint32_t length, const char * format, ...) {
62
+ va_list argptr;
63
+ va_start (argptr, format);
64
+ vfprintf (stdout, format, argptr);
65
+ va_end (argptr);
66
+ for (uint32_t i = 0 ; i < length; i++) {
67
+ fprintf (stdout, " 0x%.2X " , buffer[i]);
68
+ }
69
+ fprintf (stdout, " \n " );
70
+ }
71
+
72
+ private:
73
+ uint8_t m_level;
74
+ };
75
+
76
+ #define __FILENAME__ (strrchr(__FILE__, ' /' ) ? strrchr(__FILE__, ' /' ) + 1 : __FILE__)
77
+
78
+ #define LOGGER (LEVEL, PREFIX, FMT, SUFFIX, ...) if (LEVEL <= Logger::instance().level()) Logger::instance().createLog(PREFIX " %s:%d:%s:\t " FMT SUFFIX,__FILENAME__,__LINE__,__FUNCTION__, ##__VA_ARGS__)
79
+ #define LOGGER_DATA (LEVEL, DATA, LENGTH, PREFIX, FMT, SUFFIX, ...) if (LEVEL <= Logger::instance().level()) Logger::instance().createLogData(DATA, LENGTH, PREFIX " %s:%d:%s:\t " FMT SUFFIX,__FILENAME__,__LINE__,__FUNCTION__, ##__VA_ARGS__)
80
+ #define ERR (FMT, ...) LOGGER(ES_LOG_LEVEL_ERROR, " ESE_ERROR\t " , FMT, " \n " , ##__VA_ARGS__)
81
+ #define INFO (FMT, ...) LOGGER(ES_LOG_LEVEL_INFO, " ESE_INFO\t " , FMT, " \n " , ##__VA_ARGS__)
82
+
83
+ #define DBG (FMT, ...) LOGGER(ES_LOG_LEVEL_DEBUG, " ESE_DEBUG\t " , FMT, " \n " , ##__VA_ARGS__)
84
+ #define MEM_DUMP (DATA, LENGTH, FMT, ...) LOGGER_DATA(ES_LOG_LEVEL_MEMDUMP, DATA, LENGTH, " ESE_MEMDUMP\t " , FMT, " " , ##__VA_ARGS__)
34
85
35
86
#if (defined _WIN32 || defined __CYGWIN__) && !defined(ES_STATIC_COMPILATION)
36
87
#ifdef BUILDING_ES_EXTRACTOR
46
97
#endif
47
98
#endif
48
99
49
- inline void
50
- printBufferHex (unsigned char *buffer, int size)
51
- {
52
- for (int i = 0 ; i < size; i++) {
53
- DUMP (" 0x%.2X " , buffer[i]);
54
- }
55
- DUMP (" \n " );
56
- }
57
-
58
-
59
100
typedef enum ESExtractorVideoCodec {
60
101
ES_EXTRACTOR_VIDEO_CODEC_UNKNOWN = 0 ,
61
102
ES_EXTRACTOR_VIDEO_CODEC_H264,
@@ -172,6 +213,9 @@ int es_extractor_frame_count (ESExtractor * extractor);
172
213
ES_EXTRACTOR_API
173
214
void es_extractor_teardown (ESExtractor * demuxer);
174
215
216
+ ES_EXTRACTOR_API
217
+ void es_extractor_set_log_level (uint8_t level);
218
+
175
219
#ifdef __cplusplus
176
220
}
177
221
#endif
0 commit comments