mirror of
https://github.com/mpv-player/mpv
synced 2025-01-01 04:12:25 +00:00
352904fd03
Commit 026b75e7 actually enabled changing icc options at runtime (via vo_cmdline), but it didn't quite work. In particular, changing the icc- profile option just kept the old profile, because it was cached accordingly. As part of this, change gl_lcms.opts from a struct to a pointer to a struct. We properly copy it, instead of allowing possibly dangling strings, like it was done in a working but unclean way before. Also, reinit the whole rendering chain when the auto icc profile changes, just like it's done when icc options are changed.
39 lines
959 B
C
39 lines
959 B
C
#ifndef MP_GL_LCMS_H
|
|
#define MP_GL_LCMS_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
#include "misc/bstr.h"
|
|
|
|
extern const struct m_sub_options mp_icc_conf;
|
|
|
|
struct mp_icc_opts {
|
|
char *profile;
|
|
int profile_auto;
|
|
char *cache_dir;
|
|
char *size_str;
|
|
int intent;
|
|
int contrast;
|
|
};
|
|
|
|
struct lut3d {
|
|
uint16_t *data;
|
|
int size[3];
|
|
};
|
|
|
|
struct mp_log;
|
|
struct mpv_global;
|
|
struct gl_lcms;
|
|
|
|
struct gl_lcms *gl_lcms_init(void *talloc_ctx, struct mp_log *log,
|
|
struct mpv_global *global);
|
|
void gl_lcms_set_options(struct gl_lcms *p, struct mp_icc_opts *opts);
|
|
bool gl_lcms_set_memory_profile(struct gl_lcms *p, bstr profile);
|
|
bool gl_lcms_has_profile(struct gl_lcms *p);
|
|
bool gl_lcms_get_lut3d(struct gl_lcms *p, struct lut3d **,
|
|
enum mp_csp_prim prim, enum mp_csp_trc trc);
|
|
bool gl_lcms_has_changed(struct gl_lcms *p, enum mp_csp_prim prim,
|
|
enum mp_csp_trc trc);
|
|
|
|
#endif
|