Skip to content

Commit

Permalink
Parse the list of additional 3D modes
Browse files Browse the repository at this point in the history
Parse 2D_VIC_order_X and 3D_Structure_X from the list at the end of the
HDMI Vendor Specific Block.

v2: check 3D_Detail_X indicates horizontal sub-sampling in side-by-side
(half) mode

Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
  • Loading branch information
thos authored and Damien Lespiau committed Dec 16, 2013
1 parent a01bb62 commit cfe8e56
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion edid-decode.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,7 @@ cea_hdmi_block(unsigned char *x)
if (x[10 + b] & 0x01)
printf(" 3D: Frame-packing\n");
b += 2;
len_3d -= 2;
}
if (mask) {
int i;
Expand All @@ -864,14 +865,40 @@ cea_hdmi_block(unsigned char *x)
printf(" %d", i + 8);
printf("\n");
b += 2;
len_3d -= 2;
}

/*
* XXX list of nibbles:
* list of nibbles:
* 2D_VIC_Order_X
* 3D_Structure_X
* (optionally: 3D_Detail_X and reserved)
*/
if (len_3d > 0) {
int end = b + len_3d;

while (b < end) {
printf(" VIC index %d supports ", x[9 + b] >> 4);
switch (x[9 + b] & 0x0f) {
case 0: printf("frame packing"); break;
case 6: printf("top-and-bottom"); break;
case 8:
if ((x[10 + b] >> 4) == 1) {
printf("side-by-side (half, horizontal)");
break;
}
default: printf("unknown");
}
printf("\n");

if ((x[9 + b] & 0x0f) > 7) {
/* Optional 3D_Detail_X and reserved */
b++;
}
b++;
}
}

}

}
Expand Down

0 comments on commit cfe8e56

Please sign in to comment.