/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, ¶ms); |
73 | 0 | } |