Message ID | 1362578206-2806-8-git-send-email-martin@martin.st |
---|---|
State | Superseded |
Headers | show |
On 06/03/13 14:56, Martin Storsjö wrote: > From: Stefano Sabatini <stefasab@gmail.com> > > Make av_get_codec_tag_string() show codec tag string characters in a more > intelligible ways. For example the ascii char "@" is used as a number, so > should be displayed like "[64]" rather than as a printable character. > > Apart alphanumeric chars, only the characters ' ' and '.' are used > literally in codec tags, all the other characters represent numbers. > > This also avoids relying on locale-dependent character class functions. > --- > libavcodec/utils.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index 4148264..9f907d8c 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -1562,9 +1562,14 @@ size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_ta > { > int i, len, ret = 0; > > +#define IS_PRINT(x) \ > + (((x) >= '0' && (x) <= '9') || \ > + ((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') || \ > + ((x) == '.' || (x) == ' ')) > + Call it TAG_PRINT maybe? lu
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 4148264..9f907d8c 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1562,9 +1562,14 @@ size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_ta { int i, len, ret = 0; +#define IS_PRINT(x) \ + (((x) >= '0' && (x) <= '9') || \ + ((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') || \ + ((x) == '.' || (x) == ' ')) + for (i = 0; i < 4; i++) { len = snprintf(buf, buf_size, - isprint(codec_tag & 0xFF) ? "%c" : "[%d]", codec_tag & 0xFF); + IS_PRINT(codec_tag & 0xFF) ? "%c" : "[%d]", codec_tag & 0xFF); buf += len; buf_size = buf_size > len ? buf_size - len : 0; ret += len;
From: Stefano Sabatini <stefasab@gmail.com> Make av_get_codec_tag_string() show codec tag string characters in a more intelligible ways. For example the ascii char "@" is used as a number, so should be displayed like "[64]" rather than as a printable character. Apart alphanumeric chars, only the characters ' ' and '.' are used literally in codec tags, all the other characters represent numbers. This also avoids relying on locale-dependent character class functions. --- libavcodec/utils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)