avcodec/cbs_av1: fix range of values for Mastering Display Color Volume Metadata...
authorJames Almer <jamrial@gmail.com>
Thu, 21 Mar 2019 18:37:26 +0000 (15:37 -0300)
committerJames Almer <jamrial@gmail.com>
Mon, 25 Mar 2019 14:26:26 +0000 (11:26 -0300)
Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/cbs_av1_syntax_template.c

index 48f4fab..76eb90b 100644 (file)
@@ -1637,15 +1637,18 @@ static int FUNC(metadata_hdr_mdcv)(CodedBitstreamContext *ctx, RWContext *rw,
     int err, i;
 
     for (i = 0; i < 3; i++) {
-        fcs(16, primary_chromaticity_x[i], 0, 50000, 1, i);
-        fcs(16, primary_chromaticity_y[i], 0, 50000, 1, i);
+        fbs(16, primary_chromaticity_x[i], 1, i);
+        fbs(16, primary_chromaticity_y[i], 1, i);
     }
 
-    fc(16, white_point_chromaticity_x, 0, 50000);
-    fc(16, white_point_chromaticity_y, 0, 50000);
+    fb(16, white_point_chromaticity_x);
+    fb(16, white_point_chromaticity_y);
 
     fc(32, luminance_max, 1, MAX_UINT_BITS(32));
-    fc(32, luminance_min, 0, current->luminance_max >> 6);
+    // luminance_min must be lower than luminance_max. Convert luminance_max from
+    // 24.8 fixed point to 18.14 fixed point in order to compare them.
+    fc(32, luminance_min, 0, FFMIN(((uint64_t)current->luminance_max << 6) - 1,
+                                   MAX_UINT_BITS(32)));
 
     return 0;
 }