mirror of
https://github.com/mpv-player/mpv
synced 2025-03-02 04:11:03 +00:00
First of all, black point compensation is now on by default. This is really rather harmless and only improves the result (where "improvement" means "less black clipping"). Second, this adds an option to limit the ICC profile's contrast, which helps for untagged matrix profiles that are implicitly black scaled even in colorimetric intent. (Note that this relies on BPC being enabled to work properly, which is why the two changes are tied together) Third, this uses the LittleCMS built in black point estimator instead of relying on the presence of accurate A2B tables. This also checks tags and does some amounts of noise elimination. If the option is unspecified and the profile is missing black point information, print a warning instructing the user to set the option, and fall back to 1000 otherwise.
34 lines
873 B
C
34 lines
873 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;
|
|
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);
|
|
void gl_lcms_set_memory_profile(struct gl_lcms *p, bstr *profile);
|
|
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
|