+=== release 1.3.3 ===
+
+2014-06-22 Sebastian Dröge <slomo@coaxion.net>
+
+ * configure.ac:
+ releasing 1.3.3
+
+2014-06-21 18:29:32 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/libav/gstavvidenc.c:
+ avvidenc: Make sure to fixate caps before setting them on the pad
+ After the recent addition of negotiation support for MPEG4 part 2
+ profiles via caps it can happen that the generated caps at this
+ point still contain multiple profiles. For example if downstream
+ does not care. Just fixate anything here and use those caps.
+
+2014-06-06 16:52:28 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ avcodecmap: place supported profiles in mpeg4 caps
+ Place the supported profiles in the srcpad caps of the mpeg4 encoder.
+
+2014-06-06 16:25:43 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ avcodecmap: remove deprecated media types
+ Remove x-xvid and x-3ivx. The last place where they were used are
+ in the srcpad caps of the decoder but since the decoder will never
+ actually output those caps we can safely remove them.
+
+2014-06-06 16:19:07 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ codecmap: don't expose more deprecated media types
+ x-xvid is deprecated, we don't want to expose it on the encoder, just
+ leave it only exposed on the decoder.
+
+2014-06-06 16:16:27 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ Revert "avcodecmap: do more reverse mapping of MPEG4"
+ This reverts commit e066785ad05f9119e3c1eded46260bcabd556b4d.
+ x-xvid and x-3ivx are removed, we don't want to expose them again.
+
+2014-06-06 12:40:57 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+ * ext/libav/gstavaudenc.c:
+ avaudenc: add a comment about using -1 in _finish_frame
+ See https://bugzilla.gnome.org/show_bug.cgi?id=729268
+
+2014-04-30 15:30:45 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+ * ext/libav/gstavaudenc.c:
+ avaudenc: avoid using wrong number of samples
+ If audio_in is NULL, we'll send a NULL frame to libav, to flush
+ the codec. In that case, we won't know how many samples the codec
+ will have used, so we use -1 (for don't know) when letting the
+ base class know about the buffer.
+ Coverity 1195177
+
+2014-06-02 09:27:17 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/libav/gstavvidenc.c:
+ avvidenc: Fix indention and "bracketing" of goto labels
+ Should fix CID 1219865, which looks like the code analysis
+ algorithm was just confused.
+
+2014-05-29 18:24:20 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ avcodecmap: handle simple and advanced-simple profile in MPEG4
+ Always enable 4MV flag for MPEG4
+ Pare the profile property and enable more features for advanced-simple
+ profile.
+ video/x-xvid is advanced-simple profile so enable more features.
+ We now also support encoding of video/x-xvid so add this to the caps.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=651320
+
+2014-05-29 18:16:42 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavvidenc.c:
+ avvidenc: do all negotiation before opening the decoder
+ We first want to complete negotiation before opening the encoder.
+ Negotiation might configure flags and other things that might be needed
+ when opening the encoder.
+
+2014-05-29 17:00:23 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavcodecmap.c:
+ avcodecmap: do more reverse mapping of MPEG4
+ We previously mapped some caps to MPEG4 and codec_tag so we can use the
+ codec_tag again to map to the original caps.
+
+2014-05-26 16:04:50 -0300 Thiago Santos <ts.santos@sisa.samsung.com>
+
+ * ext/libav/gstavdemux.c:
+ avdemux: use GstFlowCombiner
+ To remove replicated code from all demuxers to a single standard way
+ of aggregating flow returns
+
+2014-05-26 16:02:11 -0300 Thiago Santos <ts.santos@sisa.samsung.com>
+
+ * ext/libav/gstavdemux.c:
+ avdemux: remove legacy check from pad-alloc times
+ The 'no_buffer' error case is from the 0.10 era when a pad_alloc was
+ made before decoding the data and avdemuxer could check again the
+ flow returns for a not-linked. This isn't a valid use case anymore in
+ 1.0
+
+2014-05-21 13:23:36 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ Back to development
+
=== release 1.3.2 ===
-2014-05-21 Sebastian Dröge <slomo@coaxion.net>
+2014-05-21 13:06:36 +0200 Sebastian Dröge <sebastian@centricular.com>
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * common:
* configure.ac:
- releasing 1.3.2
+ * docs/plugins/gst-libav-plugins.args:
+ * docs/plugins/inspect-build.stamp:
+ * docs/plugins/inspect.stamp:
+ * docs/plugins/inspect/plugin-libav.xml:
+ * gst-libav.doap:
+ Release 1.3.2
2014-05-21 10:53:31 +0200 Sebastian Dröge <sebastian@centricular.com>
-This is GStreamer Libav Plugins 1.3.2
+This is GStreamer Libav Plugins 1.3.3
Changes since 1.2:
caps.
• GstCollectPads has support for flushing and a default handler for
SEEK events now.
+ • New GstFlowAggregator helper object that simplifies handling of
+ flow returns in elements with multiple source pads. Additionally
+ GstPad now always stores the last flow return and provides an
+ API to retrieve it.
• GstSegment has new API to offset the running time by a specific
value and this is used in GstPad to allow positive and negative
offsets in gst_pad_set_offset() in all situations.
• Support for tiled, raw video formats has been added.
• GstVideoDecoder and GstAudioDecoder have API to help aggregating tag
events and merge custom tags into them consistently.
+ • GstBufferPool has support for flushing now.
• playbin/playsink has support for application provided audio and video
filters.
• GstDiscoverer has new and simplified API to get details about missing
DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11,
Wayland and EGL platforms.
This replaces eglglessink and also is supposed to replace osxvideosink.
+ • New GstAggregator base class in gst-plugins-bad. This is supposed to
+ replace GstCollectPads in the future and fix long-known shortcomings
+ in its API. Together with the base class some elements are provided
+ already, like a videomixer (compositor).
Major changes:
∘ dvbsrc supports more delivery mechanisms and other features
now, including DVB S2 and T2 support.
∘ The MPEGTS library has support for many more descriptors.
- ∘ Major improvements to tsdemux, especially time related.
+ ∘ Major improvements to tsdemux and tsparse, especially time and
+ seeking related.
∘ souphttpsrc now has support for keep-alive connections,
compression, configurable number of retries and configuration
for SSL certificate validation.
finish.
∘ videoflip can automatically flip based on the orientation tag.
∘ openjpeg supports the OpenJPEG2 API.
+ ∘ waylandsink was refactored and should be more useful now. It also
+ includes a small library which most likely is going to be removed
+ in the future and will result in extensions to the GstVideoOverlay
+ interface.
∘ gst-rtsp-server supports SRTP and MIKEY now.
+ ∘ gst-libav encoders are now negotiating any profile/level settings
+ with downstream via caps.
∘ Lots of fixes for coverity warnings all over the place.
- ∘ 400+ fixed bug reports, and many other bug fixes and other
+ ∘ Negotiation related performance improvements.
+ ∘ 500+ fixed bug reports, and many other bug fixes and other
improvements everywhere that had no bug report.
Things to look out for:
element.
• The mfcdec element was removed and replaced by v4l2videodec.
• osxvideosink is only available in OS X 10.6 or newer.
+ • The GstDeviceMonitor API will likely change slightly before the
+ 1.4.0 release.
<description>All libav codecs and formats (local snapshot)</description>
<filename>../../ext/libav/.libs/libgstlibav.so</filename>
<basename>libgstlibav.so</basename>
- <version>1.3.2</version>
+ <version>1.3.3</version>
<license>GPL</license>
<source>gst-libav</source>
<package>libav</package>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)[ 4, 5 ]; video/x-xvid; video/x-3ivx</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)[ 4, 5 ]</details>
</caps>
<caps>
<name>src</name>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5</details>
</caps>
</pads>
</element>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/x-svq, svqversion=(int)1; video/x-svq, svqversion=(int)3; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)8/9, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)32/27, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)8/9, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)32/27, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)1280, height=(int)1080, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)1280, height=(int)1080, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)3/2, systemstream=(boolean)false; video/x-dv, width=(int)1440, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)1440, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)60000/1001, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)60000/1001, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)50/1, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)50/1, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; image/jpeg, parsed=(boolean)true</details>
+ <details>video/x-svq, svqversion=(int)1; video/x-svq, svqversion=(int)3; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5; video/x-h263, width=(int)352, height=(int)288, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)704, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)1408, height=(int)1152, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, width=(int)128, height=(int)96, framerate=(fraction)[ 0/1, 2147483647/1 ], variant=(string)itu, h263version=(string)h263; video/x-h263, variant=(string)itu, h263version=(string)h263p; video/x-h264, alignment=(string)au; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)8/9, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)32/27, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)8/9, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)32/27, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)16/15, systemstream=(boolean)false; video/x-dv, width=(int)720, height=(int)576, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)64/45, systemstream=(boolean)false; video/x-dv, width=(int)1280, height=(int)1080, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)1280, height=(int)1080, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)3/2, systemstream=(boolean)false; video/x-dv, width=(int)1440, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)1440, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)60000/1001, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)60000/1001, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)50/1, pixel-aspect-ratio=(fraction)1/1, systemstream=(boolean)false; video/x-dv, width=(int)960, height=(int)720, framerate=(fraction)50/1, pixel-aspect-ratio=(fraction)4/3, systemstream=(boolean)false; image/jpeg, parsed=(boolean)true</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5; video/x-h264, alignment=(string)au; image/jpeg, parsed=(boolean)true</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5; video/x-h264, alignment=(string)au; image/jpeg, parsed=(boolean)true</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5</details>
</caps>
<caps>
<name>src</name>
<name>video_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/x-divx, divxversion=(int)5</details>
+ <details>video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, profile=(string){ simple, advanced-simple }; video/x-divx, divxversion=(int)5</details>
</caps>
<caps>
<name>src</name>