From 78dc6a9a024169050c5135bb7289cfe080dcb1f3 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 13 Feb 2017 16:35:00 +0200 Subject: [PATCH] clients/weston-info: print unknown formats better Don't just dump the raw 32-bit values, try to interpret it as a DRM fourcc too. This prints properly the formats YUYV, NV12 and YU12 supported by Weston. Signed-off-by: Pekka Paalanen Reviewed-by: Eric Engestrom --- clients/weston-info.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/clients/weston-info.c b/clients/weston-info.c index 712346a0..c07134d1 100644 --- a/clients/weston-info.c +++ b/clients/weston-info.c @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include @@ -240,9 +242,33 @@ print_output_info(void *data) } } +static char +bits2graph(uint32_t value, unsigned bitoffset) +{ + int c = (value >> bitoffset) & 0xff; + + if (isgraph(c) || isspace(c)) + return c; + + return '?'; +} + +static void +fourcc2str(uint32_t format, char *str, int len) +{ + int i; + + assert(len >= 5); + + for (i = 0; i < 4; i++) + str[i] = bits2graph(format, i * 8); + str[i] = '\0'; +} + static void print_shm_info(void *data) { + char str[5]; struct shm_info *shm = data; struct shm_format *format; @@ -262,7 +288,8 @@ print_shm_info(void *data) printf(" RGB565"); break; default: - printf(" unknown(%08x)", format->format); + fourcc2str(format->format, str, sizeof(str)); + printf(" '%s'(0x%08x)", str, format->format); break; }