X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr.h;h=207be4e98a81963aae12a86f18ff9aa8e5a9000a;hp=6f9f4c9d3ac6b25e880c2931e439c3549688694e;hb=a2e7b432626b8a2c54cb1ff9d09203f50227fc07;hpb=04ea19a8d042805d1483d1478a0dd74fb18eca24 diff --git a/ycbcr.h b/ycbcr.h index 6f9f4c9..207be4e 100644 --- a/ycbcr.h +++ b/ycbcr.h @@ -39,6 +39,7 @@ #include "image_format.h" +#include #include namespace movit { @@ -75,7 +76,13 @@ float compute_chroma_offset(float pos, unsigned subsampling_factor, unsigned res // Given , compute the values needed to turn Y'CbCr into R'G'B'; // first subtract the returned offset, then left-multiply the returned matrix // (the scaling is already folded into it). -void compute_ycbcr_matrix(YCbCrFormat ycbcr_format, float *offset, Eigen::Matrix3d *ycbcr_to_rgb); +// +// is the data type you're rendering from; normally, it would should match +// , but for the special case of 10- and 12-bit Y'CbCr, +// we support storing it in 16-bit formats, which incurs extra scaling factors. +// You can get that scaling factor in if you want. +void compute_ycbcr_matrix(YCbCrFormat ycbcr_format, float *offset, Eigen::Matrix3d *ycbcr_to_rgb, + GLenum type = GL_UNSIGNED_BYTE, double *scale_factor = nullptr); } // namespace movit