[FFmpeg-devel] [PATCH 2/3] ffprobe: replace fmt callback with str callback.

Clément Bœsch ubitux at gmail.com
Sat Sep 3 20:12:55 CEST 2011


---
 ffprobe.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/ffprobe.c b/ffprobe.c
index 2748224..ce2b505 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -23,6 +23,7 @@
 
 #include "libavformat/avformat.h"
 #include "libavcodec/avcodec.h"
+#include "libavutil/avstring.h"
 #include "libavutil/opt.h"
 #include "libavutil/pixdesc.h"
 #include "libavutil/dict.h"
@@ -132,8 +133,8 @@ struct writer {
     const char *header, *footer;
     void (*print_header)(const char *);
     void (*print_footer)(const char *);
-    void (*print_fmt_f)(const char *, const char *, ...);
     void (*print_int_f)(const char *, int);
+    void (*print_str_f)(const char *, const char *);
     void (*show_tags)(struct writer *w, AVDictionary *dict);
 };
 
@@ -145,13 +146,9 @@ static void default_print_header(const char *section)
     printf("[%s]\n", section);
 }
 
-static void default_print_fmt(const char *key, const char *fmt, ...)
+static void default_print_str(const char *key, const char *value)
 {
-    va_list ap;
-    va_start(ap, fmt);
-    printf("%s=", key);
-    vprintf(fmt, ap);
-    va_end(ap);
+    printf("%s=%s", key, value);
 }
 
 static void default_print_int(const char *key, int value)
@@ -167,11 +164,15 @@ static void default_print_footer(const char *section)
 
 /* Print helpers */
 
-#define print_fmt0(k, f, a...) w->print_fmt_f(k, f, ##a)
-#define print_fmt( k, f, a...) do {   \
+#define print_fmt0(k, f, a...) do {   \
+    char *strv = av_asprintf(f, ##a); \
+    w->print_str_f(k, strv);          \
+    av_free(strv);                    \
+} while (0)
+#define print_fmt(k, f, a...) do {    \
     if (w->item_sep)                  \
         printf("%s", w->item_sep);    \
-    w->print_fmt_f(k, f, ##a);        \
+    print_fmt0(k, f, ##a);            \
 } while (0)
 
 #define print_int0(k, v) w->print_int_f(k, v)
@@ -375,8 +376,8 @@ static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename)
 #define WRITER_FUNC(func)                  \
     .print_header = func ## _print_header, \
     .print_footer = func ## _print_footer, \
-    .print_fmt_f  = func ## _print_fmt,    \
     .print_int_f  = func ## _print_int,    \
+    .print_str_f  = func ## _print_str,    \
     .show_tags    = func ## _show_tags
 
 static struct writer writers[] = {{
-- 
1.7.6.1



More information about the ffmpeg-devel mailing list