<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel">
    <title>gmane.comp.video.libav.devel</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27744"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27743"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27742"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27741"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27740"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27739"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27738"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27737"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27736"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27735"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27734"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27733"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27732"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27731"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27730"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27729"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27728"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27727"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27726"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.video.libav.devel/27725"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27744">
    <title>Re: [PATCH] avprobe: display the codec profile in show_stream()</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27744</link>
    <description>&lt;pre&gt;
On Fri, 25 May 2012 15:53:05 -0700, Luca Barbato &amp;lt;lu_zero-aBrp7R+bbdUdnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org&amp;gt; wrote:

LGTM

&lt;/pre&gt;</description>
    <dc:creator>Anton Khirnov</dc:creator>
    <dc:date>2012-05-26T05:50:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27743">
    <title>Re: [PATCH] avprobe: fix function prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27743</link>
    <description>&lt;pre&gt;
I'll stab that part on a later commit later.

lu

&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T23:41:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27742">
    <title>Re: [PATCH] avprobe: fix function prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27742</link>
    <description>&lt;pre&gt;

Ok if you mention it in the commit message.

// Martin&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T23:32:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27741">
    <title>Re: [PATCH] avprobe: fix function prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27741</link>
    <description>&lt;pre&gt;
Making it consistent with the previous option mostly.

lu

&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T23:30:35</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27740">
    <title>Re: [PATCH] avprobe: fix function prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27740</link>
    <description>&lt;pre&gt;

This change is unrelated, right? Ok without this part, unless there's a 
reason for it?

// Martin
&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T23:13:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27739">
    <title>[PATCH] avprobe: display the codec profile inshow_stream()</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27739</link>
    <description>&lt;pre&gt;From: Christian Schmidt &amp;lt;schmidt-IABvq36EpHazQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;

---
 avprobe.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index 3015763..cd0fdd7 100644
--- a/avprobe.c
+++ b/avprobe.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -540,6 +540,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
     AVStream *stream = fmt_ctx-&amp;gt;streams[stream_idx];
     AVCodecContext *dec_ctx;
     AVCodec *dec;
+    const char *profile;
     char val_str[128];
     AVRational display_aspect_ratio;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -566,6 +567,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
         probe_str("codec_tag", tag_string(val_str, sizeof(val_str),
                                           dec_ctx-&amp;gt;codec_tag));
 
+        /* print profile, if there is one */
+        if (dec &amp;amp;&amp;amp; (profile = av_get_profile_name(dec, dec_ctx-&amp;gt;profile)))
+            probe_str("profile", profile);
+
         switch (dec_ctx-&amp;gt;codec_type) {
         case AVMEDIA_TYPE_VIDEO:
             probe_int("widt&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:53:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27738">
    <title>Re: [PATCH 3/3] avconv: Display the error returned by avformat_write_header</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27738</link>
    <description>&lt;pre&gt;
Patch ok then.

lu

&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:30:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27737">
    <title>Re: [PATCH] rtpenc: Expose the ssrc as an avoption</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27737</link>
    <description>&lt;pre&gt;
OK.


&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:27:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27736">
    <title>Re: [PATCH 1/3] rtpenc_chain: Free the URLContext on failure</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27736</link>
    <description>&lt;pre&gt;
Seems fine and so patch 2.


&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:26:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27735">
    <title>Re: [PATCH 3/3] avconv: Display the error returned by avformat_write_header</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27735</link>
    <description>&lt;pre&gt;

We have print_error in cmdutils.c, which prints it directly using av_log. 
Here we seem to fill the error string into a buffer which is printed 
later. (Anton might be able to comment on whether this is necessary or if 
we'd want to adjust it.)

A separate question is whether this is useful, or if the error codes are 
bogus more often than not - then this is just misleading... But if we 
start printing it, we have more motivation to actually fix the error 
codes.

// Martin&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T22:26:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27734">
    <title>Re: [PATCH 3/3] avconv: Display the error returned by avformat_write_header</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27734</link>
    <description>&lt;pre&gt;
Don't we have already something for that around? The rest seems fine.

&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:24:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27733">
    <title>[PATCH] avprobe: fix function prototype</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27733</link>
    <description>&lt;pre&gt;make opt_output_format return the correct value.
---
 avprobe.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index 5313894..3015763 100644
--- a/avprobe.c
+++ b/avprobe.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -757,7 +757,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int opt_format(const char *opt, const char *arg)
     return 0;
 }
 
-static void opt_output_format(const char *opt, const char *arg)
+static int opt_output_format(const char *opt, const char *arg)
 {
 
     if (!strcmp(arg, "json")) {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -781,8 +781,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void opt_output_format(const char *opt, const char *arg)
         print_string  = ini_print_string;
     } else {
         av_log(NULL, AV_LOG_ERROR, "Unsupported formatter %s\n", arg);
-        exit(1);
+        return AVERROR(EINVAL);
     }
+    return 0;
 }
 
 static int opt_show_format_entry(const char *opt, const char *arg)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -835,7 +836,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void opt_pretty(void)
 static const OptionDef options[] = {
 #include "cmdutils_common_opts.h"
     { "f", HAS_ARG, {(void*)opt_format}, "force for&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T22:21:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27732">
    <title>[PATCH] rtpenc: Expose the ssrc as an avoption</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27732</link>
    <description>&lt;pre&gt;This allows the caller to set it, and allows the caller to query
what it was set to.
---
 libavformat/rtpenc.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c
index 29fc2f4..71eeb7e 100644
--- a/libavformat/rtpenc.c
+++ b/libavformat/rtpenc.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,6 +33,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 static const AVOption options[] = {
     FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
     { "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
+    { "ssrc", "Stream identifier", offsetof(RTPMuxContext, ssrc), AV_OPT_TYPE_INT, { 0 }, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
     { NULL },
 };
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -101,7 +102,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int rtp_write_header(AVFormatContext *s1)
     s-&amp;gt;base_timestamp = av_get_random_seed();
     s-&amp;gt;timestamp = s-&amp;gt;base_timestamp;
     s-&amp;gt;cur_timestamp = 0;
-    s-&amp;gt;ssrc = av_get_random_seed();
+    if (!s-&amp;gt;ssrc)
+        s-&amp;gt;ssrc = av_get_random_seed();
     s-&amp;gt;firs&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T22:03:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27731">
    <title>[PATCH 2/3] rtpenc_chain: Return an error codeinstead of just a plain pointer</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27731</link>
    <description>&lt;pre&gt;Also check the return value in sapenc.
---
 libavformat/movenchint.c   |    6 +++---
 libavformat/rtpenc_chain.c |   23 +++++++++++++++--------
 libavformat/rtpenc_chain.h |    4 ++--
 libavformat/rtsp.c         |    8 +++++---
 libavformat/sapenc.c       |    6 ++++--
 5 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/libavformat/movenchint.c b/libavformat/movenchint.c
index 579d040..5ef90f1 100644
--- a/libavformat/movenchint.c
+++ b/libavformat/movenchint.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,9 +43,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int ff_mov_init_hinting(AVFormatContext *s, int index, int src_index)
     track-&amp;gt;enc-&amp;gt;codec_type = AVMEDIA_TYPE_DATA;
     track-&amp;gt;enc-&amp;gt;codec_tag  = track-&amp;gt;tag;
 
-    track-&amp;gt;rtp_ctx = ff_rtp_chain_mux_open(s, src_st, NULL,
-                                           RTP_MAX_PACKET_SIZE);
-    if (!track-&amp;gt;rtp_ctx)
+    ret = ff_rtp_chain_mux_open(&amp;amp;track-&amp;gt;rtp_ctx, s, src_st, NULL,
+                                RTP_MAX_PACKET_SIZE);
+    if (ret &amp;lt; 0)
         goto fail;
 
     /* Copy the RTP AVStream timebase back to &lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T22:00:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27730">
    <title>[PATCH 3/3] avconv: Display the error returned byavformat_write_header</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27730</link>
    <description>&lt;pre&gt;---
 avconv.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/avconv.c b/avconv.c
index 5506869..5861f1b 100644
--- a/avconv.c
+++ b/avconv.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2863,8 +2863,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int transcode_init(void)
     for (i = 0; i &amp;lt; nb_output_files; i++) {
         oc = output_files[i]-&amp;gt;ctx;
         oc-&amp;gt;interrupt_callback = int_cb;
-        if (avformat_write_header(oc, &amp;amp;output_files[i]-&amp;gt;opts) &amp;lt; 0) {
-            snprintf(error, sizeof(error), "Could not write header for output file #%d (incorrect codec parameters ?)", i);
+        if ((ret = avformat_write_header(oc, &amp;amp;output_files[i]-&amp;gt;opts)) &amp;lt; 0) {
+            char errbuf[128];
+            const char *errbuf_ptr = errbuf;
+            if (av_strerror(ret, errbuf, sizeof(errbuf)) &amp;lt; 0)
+                errbuf_ptr = strerror(AVUNERROR(ret));
+            snprintf(error, sizeof(error), "Could not write header for output file #%d (incorrect codec parameters ?): %s", i, errbuf_ptr);
             ret = AVERROR(EINVAL);
             goto dump_for&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T22:00:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27729">
    <title>[PATCH 1/3] rtpenc_chain: Free the URLContext onfailure</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27729</link>
    <description>&lt;pre&gt;If an URLContext is passed in, its ownership is given to this
function, and is either owned by the returned AVFormatContext
on a successful return, or freed on failure.
---
 libavformat/rtpenc_chain.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/libavformat/rtpenc_chain.c b/libavformat/rtpenc_chain.c
index 16b38d6..3b5ea6c 100644
--- a/libavformat/rtpenc_chain.c
+++ b/libavformat/rtpenc_chain.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -28,25 +28,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 AVFormatContext *ff_rtp_chain_mux_open(AVFormatContext *s, AVStream *st,
                                        URLContext *handle, int packet_size)
 {
-    AVFormatContext *rtpctx;
+    AVFormatContext *rtpctx = NULL;
     int ret;
     AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL);
     uint8_t *rtpflags;
     AVDictionary *opts = NULL;
 
     if (!rtp_format)
-        return NULL;
+        goto fail;
 
     /* Allocate an AVFormatContext for each output stream */
     rtpctx = avformat_alloc_context();
     if (!rtpctx)
-        re&lt;/pre&gt;</description>
    <dc:creator>Martin Storsjö</dc:creator>
    <dc:date>2012-05-25T22:00:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27728">
    <title>[PATCH 5/5] avprobe: changelog entry</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27728</link>
    <description>&lt;pre&gt;---
 Changelog |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Changelog b/Changelog
index 252cd9e..822f062 100644
--- a/Changelog
+++ b/Changelog
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -21,7 +21,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; version &amp;lt;next&amp;gt;:
 - add fps filter
 - audio split filter
 - audio mix filter
-
+- avprobe output is now standard INI or JSON.
 
 version 0.8:
 
&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T20:00:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27727">
    <title>[PATCH 3/5] avprobe: provide JSON output</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27727</link>
    <description>&lt;pre&gt;JSON usage is quite widespread.
---
 avprobe.c |  120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 120 insertions(+), 0 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index f3bb437..5313894 100644
--- a/avprobe.c
+++ b/avprobe.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -97,6 +97,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct {
 
 static AVIOContext *probe_out = NULL;
 static OutputContext octx;
+#define AVP_INDENT() avio_printf(probe_out, "%*c", octx.level * 2, ' ')
 
 /*
  * Default format, INI
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -190,6 +191,96 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void ini_print_string(const char *key, const char *value)
 }
 
 /*
+ * Alternate format, JSON
+ */
+
+static void json_print_header(void)
+{
+    avio_printf(probe_out, "{");
+}
+static void json_print_footer(void)
+{
+    avio_printf(probe_out, "}\n");
+}
+
+static void json_print_array_header(const char *name)
+{
+    if (octx.prefix[octx.level -1].nb_elems)
+        avio_printf(probe_out, ",\n");
+    AVP_INDENT();
+    avio_printf(probe_out, "\"%s\" : ", name);
+    avio_printf(probe_out, "[\n");
+}
+
+static voi&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T20:00:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27726">
    <title>[PATCH 4/5] avprobe: update documentation</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27726</link>
    <description>&lt;pre&gt;Update the documentation according to the latest changes
---
 doc/avprobe.texi |   18 +++++-------------
 1 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/doc/avprobe.texi b/doc/avprobe.texi
index 67c5e20..af111e7 100644
--- a/doc/avprobe.texi
+++ b/doc/avprobe.texi
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,19 +41,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Options are used to list some of the formats supported by avprobe or
 for specifying which information to display, and for setting how
 avprobe will show it.
 
-avprobe output is designed to be easily parsable by a textual filter,
-and consists of one or more sections of the form:
-&amp;lt; at &amp;gt;example
-[SECTION]
-key1=val1
-...
-keyN=valN
-[/SECTION]
-&amp;lt; at &amp;gt;end example
-
-Metadata tags stored in the container or in the streams are recognized
-and printed in the corresponding "FORMAT" or "STREAM" section, and
-are prefixed by the string "TAG:".
+avprobe output is designed to be easily parsable by any INI or JSON
+parsers.
 
 &amp;lt; at &amp;gt;c man end
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -69,6 +58,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; are prefixed by the string "TAG:".
 &amp;lt; at &amp;gt;item -f &amp;lt; at &amp;gt;var{format}
 Force format to &lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T20:00:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27725">
    <title>[PATCH 1/5] avprobe: improve formatting</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27725</link>
    <description>&lt;pre&gt;Do not use decimals if not needed.
---
 avprobe.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index 6182875..5df6937 100644
--- a/avprobe.c
+++ b/avprobe.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -90,11 +90,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static char *value_string(char *buf, int buf_size, double val, const char *unit)
             val  /= pow(10, index * 3);
             prefix_string = decimal_unit_prefixes[index];
         }
-
-        snprintf(buf, buf_size, "%.3f %s%s", val, prefix_string,
+        snprintf(buf, buf_size, "%.*f%s%s",
+                 index ? 3 : 0, val,
+                 prefix_string,
                  show_value_unit ? unit : "");
     } else {
-        snprintf(buf, buf_size, "%f %s", val, show_value_unit ? unit : "");
+        snprintf(buf, buf_size, "%f%s", val, show_value_unit ? unit : "");
     }
 
     return buf;
&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T20:00:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.video.libav.devel/27724">
    <title>[PATCH 2/5] avprobe: output proper INI format</title>
    <link>http://permalink.gmane.org/gmane.comp.video.libav.devel/27724</link>
    <description>&lt;pre&gt;Make the output valid INI serialization.
---
 avprobe.c |  502 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 393 insertions(+), 109 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index 5df6937..f3bb437 100644
--- a/avprobe.c
+++ b/avprobe.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -64,6 +64,262 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void exit_program(int ret)
     exit(ret);
 }
 
+/*
+ * The output is structured in array and objects that might contain items
+ * Array could require the objects within to not be named.
+ * Object could require the items within to be named.
+ *
+ * For flat representation the name of each section is saved on prefix so it
+ * can be rendered in order to represent nested structures (e.g. array of
+ * objects for the packets list).
+ *
+ * Within an array each element can need an unique identifier or an index.
+ *
+ * Nesting level is accounted separately.
+ */
+
+typedef enum {
+    ARRAY,
+    OBJECT
+} ProbeElementType;
+
+typedef struct {
+    const char *name;
+    ProbeElementType type;
+    int64_t index;
+    in&lt;/pre&gt;</description>
    <dc:creator>Luca Barbato</dc:creator>
    <dc:date>2012-05-25T20:00:18</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.video.libav.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.video.libav.devel</link>
  </textinput>
</rdf:RDF>

