[PATCHv2 8/8] edid-decode: add HDR Dynamic Metadata Data Block

Hans Verkuil hverkuil at xs4all.nl
Fri Sep 8 10:32:04 UTC 2017


From: Hans Verkuil <hans.verkuil at cisco.com>

Support this CTA-861-G data block.

Signed-off-by: Hans Verkuil <hans.verkuil at cisco.com>
---
 edid-decode.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/edid-decode.c b/edid-decode.c
index b2b116f3..0fe126cd 100644
--- a/edid-decode.c
+++ b/edid-decode.c
@@ -1899,6 +1899,37 @@ cea_hdr_static_metadata_block(unsigned char *x)
 	       x[6], (50.0 * pow(2, x[4] / 32.0)) * pow(x[6] / 255.0, 2) / 100.0);
 }
 
+static void
+cea_hdr_dyn_metadata_block(unsigned char *x)
+{
+    int length = x[0] & 0x1f;
+
+    if (!length)
+	return;
+    length--;
+    x += 2;
+    while (length >= 3) {
+	int type_len = x[0];
+	int type = x[1] | (x[2] << 8);
+
+	if (length < type_len + 1)
+	    return;
+	printf("    HDR Dynamic Metadata Type %d\n", type);
+	switch (type) {
+	case 1:
+	case 2:
+	case 4:
+	    if (type_len > 2)
+		printf("      Version: %d\n", x[3] & 0xf);
+	    break;
+	default:
+	    break;
+	}
+	length -= type_len + 1;
+	x += type_len + 1;
+    }
+}
+
 static void
 cea_block(unsigned char *x)
 {
@@ -1965,6 +1996,10 @@ cea_block(unsigned char *x)
 		    printf("HDR static metadata data block\n");
 		    cea_hdr_static_metadata_block(x);
 		    break;
+		case 0x07:
+		    printf("HDR dynamic metadata data block\n");
+		    cea_hdr_dyn_metadata_block(x);
+		    break;
 		case 0x0d:
 		    printf("Video format preference data block\n");
 		    cea_vfpdb(x);
-- 
2.14.1



More information about the xorg-devel mailing list