[FFmpeg-cvslog] ffprobe: fix CSV writer output
Stefano Sabatini
git at videolan.org
Wed Sep 19 11:51:28 CEST 2012
ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Wed Sep 19 11:23:11 2012 +0200| [f398617b197d9a44b27d3313df8cd6c72b6a168a] | committer: Stefano Sabatini
ffprobe: fix CSV writer output
Fix regression introduced in 749ddc14fc9ebcef09965dfd98c8bf2505dc3b58.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f398617b197d9a44b27d3313df8cd6c72b6a168a
---
doc/ffprobe.texi | 21 ++++++++++-----------
ffprobe.c | 24 ++++++++++++++++++------
2 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/doc/ffprobe.texi b/doc/ffprobe.texi
index 19b32ee..6809a99 100644
--- a/doc/ffprobe.texi
+++ b/doc/ffprobe.texi
@@ -218,8 +218,11 @@ If set to 1 specify not to print the section header and footer.
Default value is 0.
@end table
- at section compact
-Compact format.
+ at section compact, csv
+Compact and CSV format.
+
+The @code{csv} writer is equivalent to @code{compact}, but supports
+different defaults.
Each section is printed on a single line.
If no option is specifid, the output has the form:
@@ -240,14 +243,16 @@ The description of the accepted options follows.
@item item_sep, s
Specify the character to use for separating fields in the output line.
-It must be a single printable character, it is "|" by default.
+It must be a single printable character, it is "|" by default ("," for
+the @code{csv} writer).
@item nokey, nk
If set to 1 specify not to print the key of each field. Its default
-value is 0.
+value is 0 (1 for the @code{csv} writer).
@item escape, e
-Set the escape mode to use, default to "c".
+Set the escape mode to use, default to "c" ("csv" for the @code{csv}
+writer).
It can assume one of the following values:
@table @option
@@ -275,12 +280,6 @@ Print the section name at the begin of each line if the value is
@end table
- at section csv
-CSV format.
-
-This writer is equivalent to
- at code{compact=item_sep=,:nokey=1:escape=csv}.
-
@section flat
Flat format.
diff --git a/ffprobe.c b/ffprobe.c
index 771c11d..01576c1 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -709,22 +709,34 @@ static const Writer compact_writer = {
/* CSV output */
-static av_cold int csv_init(WriterContext *wctx, const char *args, void *opaque)
-{
- return compact_init(wctx, "item_sep=,:nokey=1:escape=csv", opaque);
-}
+#undef OFFSET
+#define OFFSET(x) offsetof(CompactContext, x)
+
+static const AVOption csv_options[] = {
+ {"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, CHAR_MIN, CHAR_MAX },
+ {"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, CHAR_MIN, CHAR_MAX },
+ {"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
+ {"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
+ {"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, CHAR_MIN, CHAR_MAX },
+ {"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, CHAR_MIN, CHAR_MAX },
+ {"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
+ {"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_INT, {.i64=1}, 0, 1 },
+ {NULL},
+};
+
+DEFINE_WRITER_CLASS(csv);
static const Writer csv_writer = {
.name = "csv",
.priv_size = sizeof(CompactContext),
- .init = csv_init,
+ .init = compact_init,
.print_section_header = compact_print_section_header,
.print_section_footer = compact_print_section_footer,
.print_integer = compact_print_int,
.print_string = compact_print_str,
.show_tags = compact_show_tags,
.flags = WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS,
- .priv_class = &compact_class,
+ .priv_class = &csv_class,
};
/* Flat output */
More information about the ffmpeg-cvslog
mailing list