Browse Source

ffprobe: fix CSV writer output

Fix regression introduced in 749ddc14fc.
tags/n1.0
Stefano Sabatini 13 years ago
parent
commit
f398617b19
2 changed files with 28 additions and 17 deletions
  1. +10
    -11
      doc/ffprobe.texi
  2. +18
    -6
      ffprobe.c

+ 10
- 11
doc/ffprobe.texi View File

@@ -218,8 +218,11 @@ If set to 1 specify not to print the section header and footer.
Default value is 0. Default value is 0.
@end table @end table


@section compact
Compact format.
@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. Each section is printed on a single line.
If no option is specifid, the output has the form: 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 @item item_sep, s
Specify the character to use for separating fields in the output line. 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 @item nokey, nk
If set to 1 specify not to print the key of each field. Its default 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 @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: It can assume one of the following values:
@table @option @table @option
@@ -275,12 +280,6 @@ Print the section name at the begin of each line if the value is


@end table @end table


@section csv
CSV format.

This writer is equivalent to
@code{compact=item_sep=,:nokey=1:escape=csv}.

@section flat @section flat
Flat format. Flat format.




+ 18
- 6
ffprobe.c View File

@@ -709,22 +709,34 @@ static const Writer compact_writer = {


/* CSV output */ /* 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 = { static const Writer csv_writer = {
.name = "csv", .name = "csv",
.priv_size = sizeof(CompactContext), .priv_size = sizeof(CompactContext),
.init = csv_init,
.init = compact_init,
.print_section_header = compact_print_section_header, .print_section_header = compact_print_section_header,
.print_section_footer = compact_print_section_footer, .print_section_footer = compact_print_section_footer,
.print_integer = compact_print_int, .print_integer = compact_print_int,
.print_string = compact_print_str, .print_string = compact_print_str,
.show_tags = compact_show_tags, .show_tags = compact_show_tags,
.flags = WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS, .flags = WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS,
.priv_class = &compact_class,
.priv_class = &csv_class,
}; };


/* Flat output */ /* Flat output */


Loading…
Cancel
Save