[FFmpeg-devel] [PATCH] ffprobe: add support to option -show_error
Stefano Sabatini
stefasab at gmail.com
Wed Jan 4 01:11:38 CET 2012
On date Saturday 2011-12-31 11:48:10 +0100, Stefano Sabatini encoded:
> On date Thursday 2011-12-29 14:08:04 +0100, Stefano Sabatini encoded:
> > ---
> > doc/ffprobe.texi | 5 +++++
> > doc/ffprobe.xsd | 6 ++++++
> > ffprobe.c | 20 ++++++++++++++++++++
> > 3 files changed, 31 insertions(+), 0 deletions(-)
> >
> > diff --git a/doc/ffprobe.texi b/doc/ffprobe.texi
> > index 736c7f0..002f91e 100644
> > --- a/doc/ffprobe.texi
> > +++ b/doc/ffprobe.texi
> > @@ -94,6 +94,11 @@ For example for printing the output in JSON format, specify:
> > For more details on the available output printing formats, see the
> > Writers section below.
> >
> > + at item -show_error
> > +Show information about the error found when trying to probe the input.
> > +
> > +The error information is printed within a section with name "ERROR".
> > +
> > @item -show_format
> > Show information about the container format of the input multimedia
> > stream.
> > diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd
> > index 92bc2b1..93da1d4 100644
> > --- a/doc/ffprobe.xsd
> > +++ b/doc/ffprobe.xsd
> > @@ -11,6 +11,7 @@
> > <xsd:element name="packets" type="ffprobe:packetsType" minOccurs="0" maxOccurs="1" />
> > <xsd:element name="streams" type="ffprobe:streamsType" minOccurs="0" maxOccurs="1" />
> > <xsd:element name="format" type="ffprobe:formatType" minOccurs="0" maxOccurs="1" />
> > + <xsd:element name="error" type="ffprobe:errorType" minOccurs="0" maxOccurs="1" />
> > </xsd:sequence>
> > </xsd:complexType>
> >
> > @@ -93,4 +94,9 @@
> > <xsd:attribute name="key" type="xsd:string" use="required"/>
> > <xsd:attribute name="value" type="xsd:string" use="required"/>
> > </xsd:complexType>
> > +
> > + <xsd:complexType name="errorType">
> > + <xsd:attribute name="code" type="xsd:int" use="required"/>
> > + <xsd:attribute name="string" type="xsd:string" use="required"/>
> > + </xsd:complexType>
> > </xsd:schema>
> > diff --git a/ffprobe.c b/ffprobe.c
> > index 8d4d021..bf66f29 100644
> > --- a/ffprobe.c
> > +++ b/ffprobe.c
> > @@ -37,6 +37,7 @@
> > const char program_name[] = "ffprobe";
> > const int program_birth_year = 2007;
> >
> > +static int do_show_error = 0;
> > static int do_show_format = 0;
> > static int do_show_packets = 0;
> > static int do_show_streams = 0;
> > @@ -1324,6 +1325,22 @@ static void show_format(WriterContext *w, AVFormatContext *fmt_ctx)
> > fflush(stdout);
> > }
> >
> > +static void show_error(WriterContext *w, int err)
> > +{
> > + char errbuf[128];
> > + const char *errbuf_ptr = errbuf;
> > +
> > + if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
> > + errbuf_ptr = strerror(AVUNERROR(err));
> > +
> > + writer_print_chapter_header(w, "error");
> > + print_section_header("error");
> > + print_int("code", err);
> > + print_str("string", errbuf_ptr);
> > + print_section_footer("error");
> > + writer_print_chapter_footer(w, "error");
> > +}
> > +
> > static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename)
> > {
> > int err, i;
> > @@ -1407,6 +1424,8 @@ static int probe_file(const char *filename)
> > PRINT_CHAPTER(streams);
> > PRINT_CHAPTER(format);
> > avformat_close_input(&fmt_ctx);
> > + } else if (do_show_error) {
> > + show_error(wctx, ret);
> > }
> > writer_print_footer(wctx);
> > writer_close(&wctx);
> > @@ -1480,6 +1499,7 @@ static const OptionDef options[] = {
> > "prettify the format of displayed values, make it more human readable" },
> > { "print_format", OPT_STRING | HAS_ARG, {(void*)&print_format},
> > "set the output printing format (available formats are: default, compact, csv, json, xml)", "format" },
> > + { "show_error", OPT_BOOL, {(void*)&do_show_error} , "show probing error" },
> > { "show_format", OPT_BOOL, {(void*)&do_show_format} , "show format/container info" },
> > { "show_packets", OPT_BOOL, {(void*)&do_show_packets}, "show packets info" },
> > { "show_streams", OPT_BOOL, {(void*)&do_show_streams}, "show streams info" },
>
> I'll push this in a few days, please comment.
Applied.
--
FFmpeg = Fantastic Fundamentalist Mean Philosofic Erotic Guru
More information about the ffmpeg-devel
mailing list