summaryrefslogtreecommitdiffstats
path: root/video/csputils.h
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-11-04 06:27:38 +0100
committerDudemanguy <random342@airmail.cc>2024-01-22 14:54:55 +0000
commit475f76dc6d0154a109cb83d123e1839d22455ef8 (patch)
tree8cf0c2b2b8b352e654345485776afb2f44f669fc /video/csputils.h
parent47be5ad4aaa20df4bb1577110198d5aab3c88925 (diff)
downloadmpv-475f76dc6d0154a109cb83d123e1839d22455ef8.tar.bz2
mpv-475f76dc6d0154a109cb83d123e1839d22455ef8.tar.xz
csputils: replace more primitives with pl_
We can go deeper, but need to stop somewhere to not reimplement vo_gpu using libplacebo...
Diffstat (limited to 'video/csputils.h')
-rw-r--r--video/csputils.h57
1 files changed, 2 insertions, 55 deletions
diff --git a/video/csputils.h b/video/csputils.h
index 9b2d0378df..5ab1287d9c 100644
--- a/video/csputils.h
+++ b/video/csputils.h
@@ -46,15 +46,6 @@ enum mp_csp_light {
extern const struct m_opt_choice_alternatives mp_csp_light_names[];
-// These constants are based on the ICC specification (Table 23) and match
-// up with the API of LittleCMS, which treats them as integers.
-enum mp_render_intent {
- MP_INTENT_PERCEPTUAL = 0,
- MP_INTENT_RELATIVE_COLORIMETRIC = 1,
- MP_INTENT_SATURATION = 2,
- MP_INTENT_ABSOLUTE_COLORIMETRIC = 3
-};
-
// The numeric values (except -1) match the Matroska StereoMode element value.
enum mp_stereo3d_mode {
MP_STEREO3D_INVALID = -1,
@@ -123,59 +114,15 @@ bool mp_csp_equalizer_state_changed(struct mp_csp_equalizer_state *state);
void mp_csp_equalizer_state_get(struct mp_csp_equalizer_state *state,
struct mp_csp_params *params);
-struct mp_csp_col_xy {
- float x, y;
-};
-
-static inline float mp_xy_X(struct mp_csp_col_xy xy) {
- return xy.x / xy.y;
-}
-
-static inline float mp_xy_Z(struct mp_csp_col_xy xy) {
- return (1 - xy.x - xy.y) / xy.y;
-}
-
-struct mp_csp_primaries {
- struct mp_csp_col_xy red, green, blue, white;
-};
-
enum pl_color_system mp_csp_guess_colorspace(int width, int height);
enum pl_color_primaries mp_csp_guess_primaries(int width, int height);
-struct mp_csp_primaries mp_get_csp_primaries(enum pl_color_primaries csp);
-float mp_trc_nom_peak(enum pl_color_transfer trc);
-bool mp_trc_is_hdr(enum pl_color_transfer trc);
-
-/* Color conversion matrix: RGB = m * YUV + c
- * m is in row-major matrix, with m[row][col], e.g.:
- * [ a11 a12 a13 ] float m[3][3] = { { a11, a12, a13 },
- * [ a21 a22 a23 ] { a21, a22, a23 },
- * [ a31 a32 a33 ] { a31, a32, a33 } };
- * This is accessed as e.g.: m[2-1][1-1] = a21
- * In particular, each row contains all the coefficients for one of R, G, B,
- * while each column contains all the coefficients for one of Y, U, V:
- * m[r,g,b][y,u,v] = ...
- * The matrix could also be viewed as group of 3 vectors, e.g. the 1st column
- * is the Y vector (1, 1, 1), the 2nd is the U vector, the 3rd the V vector.
- * The matrix might also be used for other conversions and colorspaces.
- */
-struct mp_cmat {
- float m[3][3];
- float c[3];
-};
-
-void mp_get_rgb2xyz_matrix(struct mp_csp_primaries space, float m[3][3]);
-void mp_get_cms_matrix(struct mp_csp_primaries src, struct mp_csp_primaries dest,
- enum mp_render_intent intent, float cms_matrix[3][3]);
-
double mp_get_csp_mul(enum pl_color_system csp, int input_bits, int texture_bits);
void mp_get_csp_uint_mul(enum pl_color_system csp, enum pl_color_levels levels,
int bits, int component, double *out_m, double *out_o);
-void mp_get_csp_matrix(struct mp_csp_params *params, struct mp_cmat *out);
+void mp_get_csp_matrix(struct mp_csp_params *params, struct pl_transform3x3 *out);
-void mp_invert_matrix3x3(float m[3][3]);
-void mp_invert_cmat(struct mp_cmat *out, struct mp_cmat *in);
-void mp_map_fixp_color(struct mp_cmat *matrix, int ibits, int in[3],
+void mp_map_fixp_color(struct pl_transform3x3 *matrix, int ibits, int in[3],
int obits, int out[3]);
#endif /* MPLAYER_CSPUTILS_H */