[FFmpeg-devel] [PATCH] ffprobe: force display of missing fields, depending on writer.flags
Clément Bœsch
ubitux at gmail.com
Wed Nov 9 07:43:56 CET 2011
On Mon, Nov 07, 2011 at 05:58:36PM +0100, Stefano Sabatini wrote:
> On date Monday 2011-10-24 02:39:46 +0200, Stefano Sabatini encoded:
> > Add flags field to Writer, and define the
> > WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS flag which forces the display of
> > optional fields, for example non-available or invalid fields.
> >
> > Also set the flag in the default writer.
> >
> > This change is required since for some writers it is preferable to show
> > all the fields (for example for avoiding a variable number of fields in
> > CSV output), while for other formats (e.g. JSON, XML), it is better to
> > leave invalid/unavailable fields unspecified and thus avoid parsing work
> > to the deserializer.
> > ---
> > ffprobe.c | 130 +++++++++++++++++++++++++++++++++++++-----------------------
> > 1 files changed, 80 insertions(+), 50 deletions(-)
>
> Updated, this is required by the compact writer.
> --
> FFmpeg = Faithful Fancy Muttering Portentous Eccentric Glue
> From 3d8324175b34510291b48b21826f83ac4e0cb96c Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Mon, 24 Oct 2011 01:23:22 +0200
> Subject: [PATCH] ffprobe: force display of missing fields, depending on writer.flags
>
> Add flags field to Writer, and define the
> WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS flag which forces the display of
> optional fields, for example non-available or invalid fields.
>
> Also set the flag in the default writer.
>
> This change is required since for some writers it is preferable to show
> all the fields (for example for avoiding a variable number of fields in
> CSV output), while for other formats (e.g. JSON, XML), it is better to
> leave invalid/unavailable fields unspecified and thus avoid parsing work
> to the deserializer.
> ---
> ffprobe.c | 125 +++++++++++++++++++++++++++++++++++++-----------------------
> 1 files changed, 77 insertions(+), 48 deletions(-)
>
[...]
> @@ -450,7 +458,8 @@ static Writer default_writer = {
> .print_section_footer = default_print_section_footer,
> .print_integer = default_print_int,
> .print_string = default_print_str,
> - .show_tags = default_show_tags
> + .show_tags = default_show_tags,
> + .flags = WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
nit: please add a trailing coma so we don't have to edit that line again
next time.
> };
>
> /* JSON output */
> @@ -626,15 +635,21 @@ static void writer_register_all(void)
>
> #define print_fmt(k, f, ...) do { \
> if (fast_asprintf(&pbuf, f, __VA_ARGS__)) \
> - writer_print_string(w, k, pbuf.s); \
> + writer_print_string(w, k, pbuf.s, 0); \
> +} while (0)
> +
> +#define print_fmt_opt(k, f, ...) do { \
> + if (fast_asprintf(&pbuf, f, __VA_ARGS__)) \
> + writer_print_string(w, k, pbuf.s, 1); \
> } while (0)
>
> #define print_int(k, v) writer_print_integer(w, k, v)
> -#define print_str(k, v) writer_print_string(w, k, v)
> -#define print_ts(k, v) writer_print_string(w, k, ts_value_string (val_str, sizeof(val_str), v))
> -#define print_time(k, v, tb) writer_print_string(w, k, time_value_string(val_str, sizeof(val_str), v, tb))
> -#define print_val(k, v, u) writer_print_string(w, k, value_string (val_str, sizeof(val_str), \
> - (struct unit_value){.val.i = v, .unit=u}))
> +#define print_str(k, v) writer_print_string(w, k, v, 0)
> +#define print_str_opt(k, v) writer_print_string(w, k, v, 1)
> +#define print_time(k, v, tb) writer_print_time(w, k, v, tb)
> +#define print_ts(k, v) writer_print_ts(w, k, v)
> +#define print_val(k, v, u) writer_print_string(w, k, \
> + value_string(val_str, sizeof(val_str), (struct unit_value){.val.i = v, .unit=u}), 1)
> #define print_section_header(s) writer_print_section_header(w, s)
> #define print_section_footer(s) writer_print_section_footer(w, s)
> #define show_tags(metadata) writer_show_tags(w, metadata)
> @@ -644,9 +659,12 @@ static void show_packet(WriterContext *w, AVFormatContext *fmt_ctx, AVPacket *pk
> char val_str[128];
> AVStream *st = fmt_ctx->streams[pkt->stream_index];
> struct print_buf pbuf = {.s = NULL};
> + const char *s;
>
> print_section_header("packet");
> - print_str("codec_type", av_x_if_null(av_get_media_type_string(st->codec->codec_type), "unknown"));
> + s = av_get_media_type_string(st->codec->codec_type);;
Trailing ';'
Looks OK otherwise.
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20111109/e42453ca/attachment.asc>
More information about the ffmpeg-devel
mailing list