vdr-plugin-drmdevice 2.0.0-46418f1
logger.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-or-later
2
12#ifndef __DRMDEVICE_LOGGER_H
13#define __DRMDEVICE_LOGGER_H
14
15#include <atomic>
16#include <chrono>
17#include <cstdarg>
18#include <memory>
19
31#define AV_LOGLEVEL AV_LOG_INFO
32
33/********************************************************************************
34 * Logger macros
35 *******************************************************************************/
36
38#define LOGFATAL cLogger::GetLogger()->LogFatal
40#define LOGERROR cLogger::GetLogger()->LogError
42#define LOGWARNING cLogger::GetLogger()->LogWarning
44#define LOGINFO cLogger::GetLogger()->LogInfo
46#define LOGDEBUG cLogger::GetLogger()->LogDebug
48#define LOGDEBUG2 cLogger::GetLogger()->LogDebug2
49
51#define LOGGER cLogger::GetLogger()
52
60 L_DEBUG = (1 << 0),
61 L_AV_SYNC = (1 << 1),
62 L_SOUND = (1 << 2),
63 L_OSD = (1 << 3),
64 L_DRM = (1 << 4),
65 L_CODEC = (1 << 5),
66 L_STILL = (1 << 6),
67 L_TRICK = (1 << 7),
68 L_MEDIA = (1 << 8),
69 L_OPENGL = (1 << 9),
70 L_OPENGL_TIME = (1 << 10),
71 L_OPENGL_TIME_ALL = (1 << 11),
72 L_PACKET = (1 << 12),
73 L_GRAB = (1 << 13),
74 L_FFMPEG = (1 << 14),
75};
76
86class cLogger {
87public:
88 static std::shared_ptr<cLogger> GetLogger();
89 static void LogFFmpegCallback(void *, int, const char *, va_list);
90 void LogFatal(const char *format, ...);
91 void LogError(const char *format, ...);
92 void LogWarning(const char *format, ...);
93 void LogInfo(const char *format, ...);
94 void LogDebug(const char *format, ...);
95 void LogDebug2(const int cat, const char *format, ...);
96 void LogFFmpeg(const char *, va_list);
97
99 int GetLogLevel(void) { return m_logLevel; };
100
101 void SetChannelSwitchStartTime(std::chrono::steady_clock::time_point time) { m_channelSwitchStartTime = time; };
102 void SetChannelSwitchDataReceivedTime(std::chrono::steady_clock::time_point time) { m_dataReceivedTime = time; };
103 std::chrono::steady_clock::time_point GetChannelSwitchStartTime(void) { return m_channelSwitchStartTime; };
104 std::chrono::steady_clock::time_point GetChannelSwitchDataReceivedTime(void) { return m_dataReceivedTime; };
105
106private:
107 cLogger(void) = default;
108 cLogger(const cLogger &) = delete;
109 cLogger& operator=(const cLogger &) = delete;
110
111 static constexpr int MAX_LOGMESSAGE_SIZE = 512;
112
113 std::chrono::steady_clock::time_point m_channelSwitchStartTime;
114 std::chrono::steady_clock::time_point m_dataReceivedTime;
115
116 std::atomic<int> m_logLevel = 0;
117};
118
119#endif
Logger.
Definition logger.h:86
static constexpr int MAX_LOGMESSAGE_SIZE
max size of the log message
Definition logger.h:111
std::chrono::steady_clock::time_point m_dataReceivedTime
timestamp, when the first audio or video data after a channel switch arrives in Play*()
Definition logger.h:114
static void LogFFmpegCallback(void *, int, const char *, va_list)
Callback for ffmpeg logs.
Definition logger.cpp:231
void LogDebug2(const int cat, const char *format,...)
Log to syslog LOG_DEBUG and add logging category to output.
Definition logger.cpp:149
void LogInfo(const char *format,...)
Log to syslog LOG_INFO.
Definition logger.cpp:111
cLogger(const cLogger &)=delete
void LogFatal(const char *format,...)
Log to syslog LOG_ERR and abort.
Definition logger.cpp:52
void LogFFmpeg(const char *, va_list)
Log to syslog LOG_DEBUG and add prefix [FFMpeg] to output.
Definition logger.cpp:209
std::chrono::steady_clock::time_point GetChannelSwitchStartTime(void)
Definition logger.h:103
void LogDebug(const char *format,...)
Log to syslog LOG_DEBUG.
Definition logger.cpp:130
void SetChannelSwitchDataReceivedTime(std::chrono::steady_clock::time_point time)
Definition logger.h:102
std::atomic< int > m_logLevel
loglevel mask (see enum LogFlags)
Definition logger.h:116
int GetLogLevel(void)
Definition logger.h:99
void LogError(const char *format,...)
Log to syslog LOG_ERR.
Definition logger.cpp:73
void SetLogLevel(int level)
Definition logger.h:98
cLogger & operator=(const cLogger &)=delete
static std::shared_ptr< cLogger > GetLogger()
Get an instance to the global logger.
Definition logger.cpp:43
void LogWarning(const char *format,...)
Log to syslog LOG_WARNING.
Definition logger.cpp:92
void SetChannelSwitchStartTime(std::chrono::steady_clock::time_point time)
Definition logger.h:101
cLogger(void)=default
std::chrono::steady_clock::time_point m_channelSwitchStartTime
timestamp, when VDR triggered a channel switch
Definition logger.h:113
std::chrono::steady_clock::time_point GetChannelSwitchDataReceivedTime(void)
Definition logger.h:104
LogFlags
Logger Flags.
Definition logger.h:59
@ L_PACKET
decoder packet/frame tracking logs
Definition logger.h:72
@ L_DRM
drm logs
Definition logger.h:64
@ L_OPENGL_TIME
opengl osd flush time measurement
Definition logger.h:70
@ L_STILL
stillpicture logs
Definition logger.h:66
@ L_FFMPEG
ffmpeg logs
Definition logger.h:74
@ L_AV_SYNC
audio/video sync logs
Definition logger.h:61
@ L_MEDIA
mediaplayer logs
Definition logger.h:68
@ L_OSD
osd logs
Definition logger.h:63
@ L_TRICK
trickspeed logs
Definition logger.h:67
@ L_OPENGL
opengl osd logs
Definition logger.h:69
@ L_DEBUG
common debug logs
Definition logger.h:60
@ L_OPENGL_TIME_ALL
opengl osd all commands time measurement
Definition logger.h:71
@ L_CODEC
codec logs
Definition logger.h:65
@ L_SOUND
sound logs
Definition logger.h:62
@ L_GRAB
grabbing logs
Definition logger.h:73