summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Vrac <avrac@freebox.fr>2016-07-08 16:09:40 +0200
committerAdam Jackson <ajax@redhat.com>2016-07-15 11:20:28 -0400
commita555b6ccd33297cc0ec4591d3c5b4a00e7fb96a2 (patch)
tree319b934bfa5456b598d20fc41ebbe88dcd9899e2
parentb9392a2f0f2244314075277a17bf4924c2aa27ab (diff)
Print video format preference data block
This only prints VIC codes, not DTD.
-rw-r--r--edid-decode.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/edid-decode.c b/edid-decode.c
index cd5a257..2e367b3 100644
--- a/edid-decode.c
+++ b/edid-decode.c
@@ -795,6 +795,36 @@ cea_y420vdb(unsigned char *x)
cea_svd(x + 2, length - 1);
}
+static void
+cea_vfpdb(unsigned char *x)
+{
+ int length = x[0] & 0x1f;
+ int i;
+
+ for (i = 2; i <= length; i++) {
+ unsigned char svr = x[i];
+
+ if ((svr > 0 && svr < 128) || (svr > 192 && svr < 254)) {
+ unsigned char vic;
+ const char *mode;
+ int index;
+
+ vic = svr;
+ index = vic - 1;
+
+ if (index < ARRAY_SIZE(edid_cea_modes))
+ mode = edid_cea_modes[vic];
+ else
+ mode = "Unknown mode";
+
+ printf(" VIC %02d %s\n", vic, mode);
+
+ } else if (svr > 128 && svr < 145) {
+ printf(" DTD number %02d\n", svr - 128);
+ }
+ }
+}
+
static const char *edid_cea_hdmi_modes[] = {
"3840x2160@30Hz",
"3840x2160@25Hz",
@@ -1128,6 +1158,7 @@ cea_block(unsigned char *x)
break;
case 0x0d:
printf("Video format preference data block\n");
+ cea_vfpdb(x);
break;
case 0x0e:
printf("YCbCr 4:2:0 video data block\n");