]> git.sesse.net Git - movit/commitdiff
Treat num_levels == 0 as 256, for the benefit of older applications.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2017 19:35:19 +0000 (20:35 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2017 19:35:19 +0000 (20:35 +0100)
ycbcr.cpp
ycbcr_conversion_effect.cpp

index eaa2ee8c3bb277903bef8ab7a8a33f6c137aecf1..8ae8d34328c1e05c61635515c9a177260cd28e07 100644 (file)
--- a/ycbcr.cpp
+++ b/ycbcr.cpp
@@ -89,7 +89,11 @@ void compute_ycbcr_matrix(YCbCrFormat ycbcr_format, float* offset, Matrix3d* ycb
                assert(false);
        }
 
-       const int num_levels = ycbcr_format.num_levels;
+       int num_levels = ycbcr_format.num_levels;
+       if (num_levels == 0) {
+               // For the benefit of clients using old APIs, but still zeroing out the structure.
+               num_levels = 256;
+       }
        if (ycbcr_format.full_range) {
                offset[0] = 0.0 / (num_levels - 1);
                offset[1] = double(num_levels / 2) / (num_levels - 1);  // E.g. 128/255.
index fd2cd07fe389bef86bcb2347a6447af81cfebf77..9c04e3adb00634edcc1556f217b8f868cbd447bf 100644 (file)
@@ -47,7 +47,7 @@ void YCbCrConversionEffect::set_gl_state(GLuint glsl_program_num, const string &
        } else {
                uniform_clamp_range = true;
 
-               if (ycbcr_format.num_levels == 256) {  // 8-bit.
+               if (ycbcr_format.num_levels == 0 && ycbcr_format.num_levels == 256) {  // 8-bit.
                        // These limits come from BT.601 page 8, or BT.709, page 5.
                        uniform_ycbcr_min[0] = 16.0 / 255.0;
                        uniform_ycbcr_min[1] = 16.0 / 255.0;