[FFmpeg-cvslog] ffprobe: change formatting logic in the JSON writer

Stefano Sabatini git at videolan.org
Mon Jan 9 13:47:44 CET 2012


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Sun Jan  8 01:44:02 2012 +0100| [3b1355bb93ad55f219e20feb31d418ef782cfb83] | committer: Stefano Sabatini

ffprobe: change formatting logic in the JSON writer

Print a "\n" at the end of each section, also print the section name in
the section print function, print the chapter name only in case the
chapter contains multiple entries.

Increase textual output readability - different sections can be
distinguished more easily.

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

 ffprobe.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/ffprobe.c b/ffprobe.c
index 7be505a..bdc3814 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -798,15 +798,16 @@ static void json_print_chapter_header(WriterContext *wctx, const char *chapter)
 
     if (wctx->nb_chapter)
         printf(",");
+    printf("\n");
     json->multiple_entries = !strcmp(chapter, "packets") || !strcmp(chapter, "frames" ) ||
                              !strcmp(chapter, "packets_and_frames") ||
                              !strcmp(chapter, "streams");
-    printf("\n"); JSON_INDENT();
-    printf("\"%s\":%s", json_escape_str(&json->buf, &json->buf_size, chapter, wctx),
-           json->multiple_entries ? " [" : " ");
-    json->print_packets_and_frames = !strcmp(chapter, "packets_and_frames");
-    if (json->multiple_entries)
+    if (json->multiple_entries) {
+        JSON_INDENT();
+        printf("\"%s\": [\n", json_escape_str(&json->buf, &json->buf_size, chapter, wctx));
+        json->print_packets_and_frames = !strcmp(chapter, "packets_and_frames");
         json->indent_level++;
+    }
 }
 
 static void json_print_chapter_footer(WriterContext *wctx, const char *chapter)
@@ -814,8 +815,10 @@ static void json_print_chapter_footer(WriterContext *wctx, const char *chapter)
     JSONContext *json = wctx->priv;
 
     if (json->multiple_entries) {
-        printf("]");
+        printf("\n");
         json->indent_level--;
+        JSON_INDENT();
+        printf("]");
     }
 }
 
@@ -823,7 +826,11 @@ static void json_print_section_header(WriterContext *wctx, const char *section)
 {
     JSONContext *json = wctx->priv;
 
-    if (wctx->nb_section) printf(",");
+    if (wctx->nb_section)
+        printf(",\n");
+    JSON_INDENT();
+    if (!json->multiple_entries)
+        printf("\"%s\": ", section);
     printf("{\n");
     json->indent_level++;
     /* this is required so the parser can distinguish between packets and frames */



More information about the ffmpeg-cvslog mailing list