[FFmpeg-cvslog] lavc: prettify printing of some codec tags which contains non alphanumeric characters

Stefano Sabatini git at videolan.org
Tue May 29 01:04:28 CEST 2012


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Sat May 26 01:38:03 2012 +0200| [67b763104052a4135ff095a56d446c9691c0d098] | committer: Stefano Sabatini

lavc: prettify printing of some codec tags which contains non alphanumeric characters

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=67b763104052a4135ff095a56d446c9691c0d098
---

 libavcodec/utils.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 15dd05a..74329e1 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1774,9 +1774,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;



More information about the ffmpeg-cvslog mailing list