All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] edid-decode: print human-readable CTA infoframe types
@ 2023-01-31  9:38 Simon Ser
  0 siblings, 0 replies; only message in thread
From: Simon Ser @ 2023-01-31  9:38 UTC (permalink / raw)
  To: linux-media

In addition to the raw type value, also print the human-readable
infoframe type.

Signed-off-by: Simon Ser <contact@emersion.fr>
---

v2: keep printing raw code.

 parse-cta-block.cpp | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/parse-cta-block.cpp b/parse-cta-block.cpp
index 02730a9eafb1..7eb4c51ad833 100644
--- a/parse-cta-block.cpp
+++ b/parse-cta-block.cpp
@@ -2203,6 +2203,17 @@ static void cta_hdr_dyn_metadata_block(const unsigned char *x, unsigned length)
 	}
 }
 
+static const char *infoframe_types[] = {
+	NULL,
+	"Vendor-Specific",
+	"Auxiliary Video Information",
+	"Source Product Description",
+	"Audio",
+	"MPEG Source",
+	"NTSC VBI",
+	"Dynamic Range and Mastering",
+};
+
 static void cta_ifdb(const unsigned char *x, unsigned length)
 {
 	unsigned len_hdr = x[0] >> 5;
@@ -2218,16 +2229,23 @@ static void cta_ifdb(const unsigned char *x, unsigned length)
 	x += len_hdr + 2;
 	while (length > 0) {
 		int payload_len = x[0] >> 5;
+		unsigned char type = x[0] & 0x1f;
+
+		const char *name = NULL;
+		if (type < ARRAY_SIZE(infoframe_types))
+			name = infoframe_types[type];
+		if (!name)
+			name = "Unknown";
+		printf("    %s InfoFrame (%u)", name, type);
 
-		if ((x[0] & 0x1f) == 1 && length >= 4) {
+		if (type == 1 && length >= 4) {
 			unsigned oui = (x[3] << 16) | (x[2] << 8) | x[1];
 
-			printf("    InfoFrame Type Code %u, OUI %s\n",
-			       x[0] & 0x1f, ouitohex(oui).c_str());
+			printf(", OUI %s\n", ouitohex(oui).c_str());
 			x += 4;
 			length -= 4;
 		} else {
-			printf("    InfoFrame Type Code %u\n", x[0] & 0x1f);
+			printf("\n");
 			x++;
 			length--;
 		}

base-commit: e052f5f9fdf74ca11aa1a8edfa62eff8d0aa3d0d
-- 
2.39.1



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-31  9:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-31  9:38 [PATCH v2] edid-decode: print human-readable CTA infoframe types Simon Ser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.