avprobe: restore pseudo-INI old style format for compatibility.
authorAnton Khirnov <anton@khirnov.net>
Sat, 26 May 2012 06:54:25 +0000 (08:54 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sat, 26 May 2012 19:14:35 +0000 (21:14 +0200)
Changelog
avprobe.c
doc/avprobe.texi

index 822f062..358662b 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -21,7 +21,8 @@ version <next>:
 - add fps filter
 - audio split filter
 - audio mix filter
-- avprobe output is now standard INI or JSON.
+- avprobe output is now standard INI or JSON. The old format can still
+  be used with -of old.
 
 version 0.8:
 
index acf0ab9..867d10d 100644 (file)
--- a/avprobe.c
+++ b/avprobe.c
@@ -280,6 +280,50 @@ static void json_print_string(const char *key, const char *value)
     avio_w8(probe_out, '\"');
 }
 
+/*
+ * old-style pseudo-INI
+ */
+static void old_print_object_header(const char *name)
+{
+    char *str, *p;
+
+    if (!strcmp(name, "tags"))
+        return;
+
+    str = p = av_strdup(name);
+    while (*p) {
+        *p = toupper(*p);
+        p++;
+    }
+
+    avio_printf(probe_out, "[%s]\n", str);
+    av_freep(&str);
+}
+
+static void old_print_object_footer(const char *name)
+{
+    char *str, *p;
+
+    if (!strcmp(name, "tags"))
+        return;
+
+    str = p = av_strdup(name);
+    while (*p) {
+        *p = toupper(*p);
+        p++;
+    }
+
+    avio_printf(probe_out, "[/%s]\n", str);
+    av_freep(&str);
+}
+
+static void old_print_string(const char *key, const char *value)
+{
+    if (!strcmp(octx.prefix[octx.level - 1].name, "tags"))
+        avio_printf(probe_out, "TAG:");
+    ini_print_string(key, value);
+}
+
 /*
  * Simple Formatter for single entries.
  */
@@ -783,6 +827,12 @@ static int opt_output_format(const char *opt, const char *arg)
 
         print_integer = ini_print_integer;
         print_string  = ini_print_string;
+    } else if (!strcmp(arg, "old")) {
+        print_header        = NULL;
+        print_object_header = old_print_object_header;
+        print_object_footer = old_print_object_footer;
+
+        print_string        = old_print_string;
     } else {
         av_log(NULL, AV_LOG_ERROR, "Unsupported formatter %s\n", arg);
         return AVERROR(EINVAL);
index 9c28125..7e6fedf 100644 (file)
@@ -59,8 +59,17 @@ parsers.
 Force format to use.
 
 @item -of @var{formatter}
-Use a specific formatter to output the document, either @var{ini} or
-@var{json} available.
+Use a specific formatter to output the document. The following
+formatters are available
+@table @option
+@item ini
+
+@item json
+
+@item old
+Pseudo-INI format that used to be the only one available in old
+avprobe versions.
+@end table
 
 @item -unit
 Show the unit of the displayed values.