Files
utun2/tools/chatgui/src/video_codec_log.h
T

26 lines
1.8 KiB
C++

/* Диагностика codec: VideoCodecProbe задаёт вложенную scoped-пробу в текущем потоке.
* Создать/уничтожить в одном потоке; копирование и перенос запрещены. Конструктор возвращает
* общий FFmpeg callback после возможной замены Qt Multimedia; деструктор завершает одну вложенность.
* CODEC_LOG внутри пробы переводит error/warn/info в debug; debug/trace не меняются.
* Подробности FFmpeg-пробы и сводка повторов идут на trace категории video, вне пробы — error/warn.
* Глобальные уровни не меняются, ошибки рабочего codec в соседнем потоке сохраняют свой уровень. */
#pragma once
#include "../../../src/video/video.h"
#include "debug_config.h"
class VideoCodecProbe {
public:
VideoCodecProbe() { video_codec_probe_begin(); }
~VideoCodecProbe() { video_codec_probe_end(); }
VideoCodecProbe(const VideoCodecProbe&) = delete;
VideoCodecProbe& operator=(const VideoCodecProbe&) = delete;
};
// level/category — DEBUG_LEVEL_*/DEBUG_CATEGORY_*, далее printf-формат и аргументы;
// аргументы форматирования вычисляются только после фильтрации по итоговому уровню.
#define CODEC_LOG(level, category, ...) do { \
const auto codecLevel = static_cast<debug_level_t>(video_codec_log_level(level)); \
if (debug_should_output(codecLevel, category)) \
debug_output(codecLevel, category, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__); \
} while (0)