Coverage Report

Created: 2025-12-10 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/mpv/video/out/placebo/utils.c
Line
Count
Source
1
#include "common/common.h"
2
#include "utils.h"
3
4
#include <libplacebo/utils/dolbyvision.h>
5
6
static const int pl_log_to_msg_lev[PL_LOG_ALL+1] = {
7
    [PL_LOG_FATAL] = MSGL_FATAL,
8
    [PL_LOG_ERR]   = MSGL_ERR,
9
    [PL_LOG_WARN]  = MSGL_WARN,
10
    [PL_LOG_INFO]  = MSGL_V,
11
    [PL_LOG_DEBUG] = MSGL_DEBUG,
12
    [PL_LOG_TRACE] = MSGL_TRACE,
13
};
14
15
static const enum pl_log_level msg_lev_to_pl_log[MSGL_MAX+1] = {
16
    [MSGL_FATAL]   = PL_LOG_FATAL,
17
    [MSGL_ERR]     = PL_LOG_ERR,
18
    [MSGL_WARN]    = PL_LOG_WARN,
19
    [MSGL_INFO]    = PL_LOG_WARN,
20
    [MSGL_STATUS]  = PL_LOG_WARN,
21
    [MSGL_V]       = PL_LOG_INFO,
22
    [MSGL_DEBUG]   = PL_LOG_DEBUG,
23
    [MSGL_TRACE]   = PL_LOG_TRACE,
24
    [MSGL_MAX]     = PL_LOG_ALL,
25
};
26
27
// translates log levels while probing
28
static enum pl_log_level probing_map(enum pl_log_level level)
29
0
{
30
0
    switch (level) {
31
0
    case PL_LOG_FATAL:
32
0
    case PL_LOG_ERR:
33
0
    case PL_LOG_WARN:
34
0
        return PL_LOG_INFO;
35
36
0
    default:
37
0
        return level;
38
0
    }
39
0
}
40
41
static void log_cb(void *priv, enum pl_log_level level, const char *msg)
42
0
{
43
0
    struct mp_log *log = priv;
44
0
    mp_msg(log, pl_log_to_msg_lev[level], "%s\n", msg);
45
0
}
46
47
static int determine_pl_log_level(struct mp_log *log)
48
0
{
49
0
    int log_level = mp_msg_level(log);
50
0
    return log_level == -1 ? PL_LOG_NONE : msg_lev_to_pl_log[log_level];
51
0
}
52
53
static void log_cb_probing(void *priv, enum pl_log_level level, const char *msg)
54
0
{
55
0
    struct mp_log *log = priv;
56
0
    mp_msg(log, pl_log_to_msg_lev[probing_map(level)], "%s\n", msg);
57
0
}
58
59
pl_log mppl_log_create(void *tactx, struct mp_log *log)
60
0
{
61
0
    return pl_log_create(PL_API_VER, &(struct pl_log_params) {
62
0
        .log_cb     = log_cb,
63
0
        .log_level  = determine_pl_log_level(log),
64
0
        .log_priv   = mp_log_new(tactx, log, "libplacebo"),
65
0
    });
66
0
}
67
68
void mppl_log_set_probing(pl_log log, bool probing)
69
0
{
70
0
    struct pl_log_params params = log->params;
71
0
    params.log_cb = probing ? log_cb_probing : log_cb;
72
0
    pl_log_update(log, &params);
73
0
}