Message ID | 20230130172224.65193-1-contact@emersion.fr |
---|---|
State | Superseded |
Headers | show |
Series | edid-decode: print human-readable CTA infoframe types | expand |
On 30/01/2023 18:22, Simon Ser wrote: > Instead of printing the code, print the human-readable infoframe > type. This is more informative. > > Signed-off-by: Simon Ser <contact@emersion.fr> > --- > parse-cta-block.cpp | 27 +++++++++++++++++++++++---- > 1 file changed, 23 insertions(+), 4 deletions(-) > > diff --git a/parse-cta-block.cpp b/parse-cta-block.cpp > index 02730a9eafb1..3a6be3972e50 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,24 @@ 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) > + printf(" %s InfoFrame", name); Can you show the type as well? E.g.: " %s InfoFrame (%u)", name, type It can be useful to have the code too. If you can post a v2 with that change, then I'll take it. Regards, Hans > + else > + printf(" Unknown InfoFrame (%u)", 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
On Tuesday, January 31st, 2023 at 10:02, Hans Verkuil <hverkuil@xs4all.nl> wrote: > Can you show the type as well? E.g.: " %s InfoFrame (%u)", name, type > > It can be useful to have the code too. Sure. A bit surprising since we never print the raw values for other fields when we have a human-readable representation, but I'll send a v2 with that changed.
diff --git a/parse-cta-block.cpp b/parse-cta-block.cpp index 02730a9eafb1..3a6be3972e50 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,24 @@ 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) + printf(" %s InfoFrame", name); + else + printf(" Unknown InfoFrame (%u)", 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--; }
Instead of printing the code, print the human-readable infoframe type. This is more informative. Signed-off-by: Simon Ser <contact@emersion.fr> --- parse-cta-block.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) base-commit: e052f5f9fdf74ca11aa1a8edfa62eff8d0aa3d0d