From 3a4d2ceed7d34add126a44fec9879808ca9fab0a Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Sat, 9 Sep 2017 12:08:26 +0200 Subject: edid-decode: add HDR Dynamic Metadata Data Block Support this CTA-861-G data block. Signed-off-by: Hans Verkuil --- edid-decode.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/edid-decode.c b/edid-decode.c index b2b116f..0fe126c 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); -- cgit v1.2.3