Files
One-KVM/libs/hwcodec/cpp/common/log.cpp
mofeng-git d143d158e4 init
2025-12-28 18:19:16 +08:00

55 lines
1.2 KiB
C++

#include "log.h"
extern "C" {
#include <libavutil/log.h>
}
namespace gol {
enum {
LOG_LEVEL_ERROR = 0,
LOG_LEVEL_WARN = 1,
LOG_LEVEL_INFO = 2,
LOG_LEVEL_DEBUG = 3,
LOG_LEVEL_TRACE = 4,
};
extern "C" void hwcodec_log(int level, const char *message);
extern "C" void hwcodec_av_log_callback(int level, const char *message);
void log_to_rust(int level, const std::string &message) {
const char *cstr = message.c_str();
hwcodec_log(level, cstr);
}
void error(const std::string &message) {
log_to_rust(LOG_LEVEL_ERROR, message);
}
void warn(const std::string &message) { log_to_rust(LOG_LEVEL_WARN, message); }
void info(const std::string &message) { log_to_rust(LOG_LEVEL_INFO, message); }
void debug(const std::string &message) {
log_to_rust(LOG_LEVEL_DEBUG, message);
}
void trace(const std::string &message) {
log_to_rust(LOG_LEVEL_TRACE, message);
}
void av_log_callback(void *ptr, int level, const char *fmt, va_list vl) {
(void)ptr;
if (level > av_log_get_level()) {
return;
}
char line[1024] = {0};
vsnprintf(line, sizeof(line), fmt, vl);
hwcodec_av_log_callback(level, line);
};
} // namespace gol
extern "C" void hwcodec_set_av_log_callback() {
av_log_set_callback(gol::av_log_callback);
}