New upstream version 1.10.2
diff --git a/ChangeLog b/ChangeLog
index 310fbc8..0add868 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,457 @@
-=== release 1.10.1 ===
+=== release 1.10.2 ===
 
-2016-11-17  Sebastian Dröge <slomo@coaxion.net>
+2016-11-29  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.10.1
+	  releasing 1.10.2
+
+2016-11-29 14:10:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/hr.po:
+	* po/ky.po:
+	* po/sv.po:
+	  po: Update translations
+
+2016-11-28 20:05:02 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/mpegts/gstmpegtssection.c:
+	  mpegtssection: Fix off-by-one in PMT parsing
+
+2016-11-28 19:52:24 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/mpegts/gstmpegtssection.c:
+	  mpegtssection: Don't assert if the given section length is longer than the PMT actually is
+	  Instead error out cleanly and just assert that we didn't read more than
+	  the available data.
+
+2016-11-28 17:17:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklink.h:
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklink: Correctly set top-field-first/bottom-field-first
+	  First of all, all the HD and UHD modes should be top-field-first, as
+	  also returned by the Decklink mode iterator API.
+	  Then we should include the caps field "field-order" in the caps of the
+	  source (not the sink due to negotiation problems with optional fields).
+	  And finally we should set the TFF flag on interlaced buffers that are
+	  top-field-first.
+
+2016-11-28 10:27:56 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: Post an error message on the bus if we activated a program without pads
+	  Otherwise decodebin and applications are going to wait forever for pads
+	  to appear, which is never going to happen.
+	  Happens on this stream, which probably just need support for it added:
+	  https://samples.mplayerhq.hu/3D/AVC_codec_in_m2ts_not_recognized/AVC_codec_not_recognized_right_video_sample.m2ts
+
+2016-11-28 10:49:23 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/hls/m3u8.c:
+	  m3u8: Mark uri_join() function as static
+	  We don't really want to export this, especially not without any
+	  namespacing. This can cause problems for static builds.
+
+2016-11-28 14:22:05 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  glwindow: move g_main_context_push/pop_thread_default() to run()
+	  Calling g_main_context_push_thread and then g_main_context_invoke()
+	  (used by gst_gl_window_send_message_async()) in the same thread will
+	  cause the invoked function to run immediately instead of being delayed.
+	  This had implications for the creation of the OpenGL context not waiting
+	  until the main loop had completely started up and as a result would
+	  sometimes deadlock in short create/destroy scenarios.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775171
+
+2016-11-28 14:19:18 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: fix race between creation/shutdown
+	  626bcccff96f624f59c5212b3e21e472240171fd removed some locks that
+	  allowed the main loop quit to occur before the context was fully
+	  created.
+	  2776cef25d2a98668b73272aecfe77e684e6627e attempted to readd them but
+	  missed the scop of the quit() call.
+	  Also remove the use of g_thread_join() as that's not safe to use when
+	  it's possible to lose the last reference from the GL thread.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775171
+
+2016-11-27 12:40:53 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/rawparse/gstrawbaseparse.c:
+	  rawbaseparse: Fix output buffer size trimming
+	  For frame->buffer, baseparse is doing that automatically for us. For
+	  frame->output_buffer it doesn't and assumes that the subclass is already
+	  doing that. Consistency!
+
+2016-11-27 12:20:11 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstmpdparser.c:
+	  dash: Fix stripping of space at the beginning/end of durations
+	  The way how strchr() was called here, it could easily read after the end
+	  of the string. Use g_ascii_isspace() instead.
+	  Detected by asan in the unit test.
+
+2016-11-27 11:44:14 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/rawparse/gstrawaudioparse.c:
+	* gst/rawparse/gstrawbaseparse.c:
+	* gst/rawparse/gstrawbaseparse.h:
+	* gst/rawparse/gstrawvideoparse.c:
+	  rawparse: Properly align raw audio/video output buffers
+	  That is, aligned to the basic type for audio and to 32 bytes for video.
+	  Fixes crashes if the raw buffers are passed to SIMD processing functions.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774428
+
+2016-11-26 12:28:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfdemux.c:
+	  mxfdemux: Post an error message if we got EOS before having any source pads
+	  Otherwise, sending an EOS event has no effect and the application waits
+	  forever for something to happen.
+
+2016-11-26 12:16:39 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: Fix indentation
+
+2016-11-26 12:16:18 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Fix assertion when encountering an invalid NALU
+	  Error out properly instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775130
+
+2016-11-26 12:15:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: Fix assertion when encountering an invalid NALU
+	  Error out properly instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775130
+
+2016-11-26 10:44:43 +0100  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/mpegts/gstmpegtssection.c:
+	  mpegtssection: Add more section size checks
+	  The smallest section ever needs to be at least 3 bytes (i.e. just the short
+	  header).
+	  Non-short headers need to be at least 11 bytes long (3 for the minimum header,
+	  5 for the non-short header, and 4 for the CRC).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775048
+
+2016-11-26 10:23:01 +0100  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/mpegts/gstmpegtssection.c:
+	  mpegtssection: Fix PAT parsing
+	  Use the estimated number of programs for parsing. Avoids over-reading.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775120
+
+2016-11-26 09:26:36 +0100  Edward Hervey <edward@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Handle GST_SEEK_TYPE_NONE seek
+	  When one is only updating the "stop" position (i.e. non-flushing seek,
+	  with GST_SEEK_TYPE_NONE on the "start" (or stop in reverse) position),
+	  we only need to store those values instead of moving the current position.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=775127
+
+2016-11-25 16:46:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfdemux.c:
+	* gst/mxf/mxftypes.c:
+	  mxfdemux: Fix up another size check and prevent allocating too much memory
+
+2016-11-25 15:59:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	* gst/mxf/mxftypes.c:
+	* gst/mxf/mxful.c:
+	  mxfdemux: Handle zero-sized KLV items better and don't assert on them
+
+2016-11-25 15:53:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfdemux.c:
+	  mxfdemux: Fix various logic errors in error handling of footer partition parsing
+
+2016-11-25 15:53:36 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfdemux.c:
+	  mxfdemux: Don't try parsing empty metadata items
+
+2016-11-25 01:06:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: Add missing NULL check
+
+2016-11-24 19:45:10 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/Makefile.am:
+	* gst/mxf/mxf.c:
+	  mxf: Remove mxfdms1.[ch] from the build for now
+	  It's completely unused currently but might be used in the future.
+
+2016-11-24 23:36:22 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfaes-bwf.c:
+	* gst/mxf/mxfdemux.c:
+	* gst/mxf/mxfdms1.c:
+	* gst/mxf/mxfmetadata.c:
+	* gst/mxf/mxftypes.c:
+	* gst/mxf/mxful.c:
+	  mxfdemux: Add various missing bounds checks, NULL checks and integer overflow protection for error cases
+
+2016-11-24 14:48:35 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklinkvideosrc: Free timecodes when done with a frame
+
+2016-11-24 14:41:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/timecode/gsttimecodestamper.c:
+	  timecodestamper: Remove all existing timecode metas if requested to override existing
+
+2016-11-19 16:12:06 +0900  Seungha Yang <sh.yang@lge.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Fix leak in gst_dash_demux_stream_free
+	  Free parsed moof and sync samples with _stream_free().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774702
+
+2016-11-24 11:12:23 +0100  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/mpegts/gstmpegtssection.c:
+	  mpegtssection: Don't free empty streams
+	  Also avoids a useless assertion
+
+2016-11-24 11:11:35 +0100  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/mpegtspacketizer.c:
+	  mpegtspacketizer: Don't add existing values to group
+	  If the last value is already identical, there is no need in adding it
+	  yet-another-time
+
+2016-11-17 15:41:00 +0000  David Evans <bbcrddave@gmail.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	  gl: add gstreamer-video to pkg-config path
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774624
+
+2016-11-23 10:51:17 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: Ensure codec_data has the required size when reading number of SPS
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774896
+
+2016-11-23 10:52:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Ensure codec_data has the required size when reading number of NAL arrays
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774896
+
+2016-11-22 12:58:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mpegtsdemux/mpegtspacketizer.c:
+	  mpegtspacketizer: Reset values before parsing each section
+
+2016-11-22 12:42:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mpegtsdemux/mpegtspacketizer.c:
+	  mpegtspacketizer: Make sure in all cases that we have enough data left for reading a section start
+	  In some cases we ended up parsing sections without.
+
+2016-11-23 17:04:34 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/x11/gstglcontext_glx.c:
+	  gl/contextglx: error out on more invalid display/window combinations
+	  https://bugzilla.gnome.org/show_bug.cgi?id=774851
+
+2016-11-20 12:40:07 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/Makefile.am:
+	  tests: fix lib and cflags order in Makefile.am
+	  pnm: add misssing continuation slash at end of line
+	  vp8parser: no need to link codecparsers twice
+	  dash_demux, mssdemux, hlsdemux: fix lib/flags ordering - local
+	  libs and flags must come first, then base before core before rest
+
+2016-11-20 14:53:52 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* meson.build:
+	  meson: update version
+
+=== release 1.10.1 ===
+
+2016-11-17 15:53:46 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-accurip.xml:
+	* docs/plugins/inspect/plugin-adpcmdec.xml:
+	* docs/plugins/inspect/plugin-adpcmenc.xml:
+	* docs/plugins/inspect/plugin-aiff.xml:
+	* docs/plugins/inspect/plugin-asfmux.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiofxbad.xml:
+	* docs/plugins/inspect/plugin-audiomixer.xml:
+	* docs/plugins/inspect/plugin-audiovisualizers.xml:
+	* docs/plugins/inspect/plugin-autoconvert.xml:
+	* docs/plugins/inspect/plugin-bayer.xml:
+	* docs/plugins/inspect/plugin-bluez.xml:
+	* docs/plugins/inspect/plugin-bs2b.xml:
+	* docs/plugins/inspect/plugin-bz2.xml:
+	* docs/plugins/inspect/plugin-camerabin.xml:
+	* docs/plugins/inspect/plugin-chromaprint.xml:
+	* docs/plugins/inspect/plugin-coloreffects.xml:
+	* docs/plugins/inspect/plugin-compositor.xml:
+	* docs/plugins/inspect/plugin-curl.xml:
+	* docs/plugins/inspect/plugin-dashdemux.xml:
+	* docs/plugins/inspect/plugin-dataurisrc.xml:
+	* docs/plugins/inspect/plugin-debugutilsbad.xml:
+	* docs/plugins/inspect/plugin-decklink.xml:
+	* docs/plugins/inspect/plugin-dtls.xml:
+	* docs/plugins/inspect/plugin-dtsdec.xml:
+	* docs/plugins/inspect/plugin-dvb.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-dvdspu.xml:
+	* docs/plugins/inspect/plugin-faac.xml:
+	* docs/plugins/inspect/plugin-faad.xml:
+	* docs/plugins/inspect/plugin-fbdevsink.xml:
+	* docs/plugins/inspect/plugin-festival.xml:
+	* docs/plugins/inspect/plugin-fieldanalysis.xml:
+	* docs/plugins/inspect/plugin-flite.xml:
+	* docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+	* docs/plugins/inspect/plugin-freeverb.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gaudieffects.xml:
+	* docs/plugins/inspect/plugin-gdp.xml:
+	* docs/plugins/inspect/plugin-geometrictransform.xml:
+	* docs/plugins/inspect/plugin-gmedec.xml:
+	* docs/plugins/inspect/plugin-gsm.xml:
+	* docs/plugins/inspect/plugin-gstgtk.xml:
+	* docs/plugins/inspect/plugin-gstsiren.xml:
+	* docs/plugins/inspect/plugin-hls.xml:
+	* docs/plugins/inspect/plugin-id3tag.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-interlace.xml:
+	* docs/plugins/inspect/plugin-ivfparse.xml:
+	* docs/plugins/inspect/plugin-ivtc.xml:
+	* docs/plugins/inspect/plugin-jp2kdecimator.xml:
+	* docs/plugins/inspect/plugin-jpegformat.xml:
+	* docs/plugins/inspect/plugin-kate.xml:
+	* docs/plugins/inspect/plugin-ladspa.xml:
+	* docs/plugins/inspect/plugin-midi.xml:
+	* docs/plugins/inspect/plugin-mimic.xml:
+	* docs/plugins/inspect/plugin-mms.xml:
+	* docs/plugins/inspect/plugin-modplug.xml:
+	* docs/plugins/inspect/plugin-mpeg2enc.xml:
+	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegpsmux.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegtsmux.xml:
+	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-mxf.xml:
+	* docs/plugins/inspect/plugin-netsim.xml:
+	* docs/plugins/inspect/plugin-ofa.xml:
+	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* docs/plugins/inspect/plugin-openexr.xml:
+	* docs/plugins/inspect/plugin-opengl.xml:
+	* docs/plugins/inspect/plugin-openjpeg.xml:
+	* docs/plugins/inspect/plugin-opusparse.xml:
+	* docs/plugins/inspect/plugin-pcapparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-qt.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-removesilence.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rfbsrc.xml:
+	* docs/plugins/inspect/plugin-rsvg.xml:
+	* docs/plugins/inspect/plugin-rtmp.xml:
+	* docs/plugins/inspect/plugin-rtponvif.xml:
+	* docs/plugins/inspect/plugin-schro.xml:
+	* docs/plugins/inspect/plugin-sdp.xml:
+	* docs/plugins/inspect/plugin-segmentclip.xml:
+	* docs/plugins/inspect/plugin-shm.xml:
+	* docs/plugins/inspect/plugin-smooth.xml:
+	* docs/plugins/inspect/plugin-smoothstreaming.xml:
+	* docs/plugins/inspect/plugin-sndfile.xml:
+	* docs/plugins/inspect/plugin-soundtouch.xml:
+	* docs/plugins/inspect/plugin-spandsp.xml:
+	* docs/plugins/inspect/plugin-speed.xml:
+	* docs/plugins/inspect/plugin-srtp.xml:
+	* docs/plugins/inspect/plugin-stereo.xml:
+	* docs/plugins/inspect/plugin-subenc.xml:
+	* docs/plugins/inspect/plugin-teletext.xml:
+	* docs/plugins/inspect/plugin-uvch264.xml:
+	* docs/plugins/inspect/plugin-vcdsrc.xml:
+	* docs/plugins/inspect/plugin-videofiltersbad.xml:
+	* docs/plugins/inspect/plugin-videoframe_audiolevel.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-videosignal.xml:
+	* docs/plugins/inspect/plugin-vmnc.xml:
+	* docs/plugins/inspect/plugin-voaacenc.xml:
+	* docs/plugins/inspect/plugin-voamrwbenc.xml:
+	* docs/plugins/inspect/plugin-waylandsink.xml:
+	* docs/plugins/inspect/plugin-webp.xml:
+	* docs/plugins/inspect/plugin-webrtcdsp.xml:
+	* docs/plugins/inspect/plugin-wildmidi.xml:
+	* docs/plugins/inspect/plugin-x265.xml:
+	* docs/plugins/inspect/plugin-y4mdec.xml:
+	* docs/plugins/inspect/plugin-yadif.xml:
+	* docs/plugins/inspect/plugin-zbar.xml:
+	* gst-plugins-bad.doap:
+	* win32/common/config.h:
+	  Release 1.10.1
+
+2016-11-17 15:05:01 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/ky.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/mt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/or.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	  Update .po files
 
 2016-11-17 14:46:17 +0200  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/Makefile.in b/Makefile.in
index d5f9bb8..ed26e37 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -207,7 +207,7 @@
 	$(top_srcdir)/common/release.mak \
 	$(top_srcdir)/common/win32.mak ABOUT-NLS AUTHORS COPYING \
 	COPYING.LIB ChangeLog INSTALL NEWS README compile config.guess \
-	config.rpath config.sub install-sh ltmain.sh missing
+	config.rpath config.sub depcomp install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
diff --git a/NEWS b/NEWS
index 23b5ab7..815dee3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,8 @@
 # GStreamer 1.10 Release Notes
 
 GStreamer 1.10.0 was originally released on 1st November 2016.
-The latest bug-fix release in the 1.10 series is [1.10.1](#1.10.1) and was
-released on 17 November 2016.
+The latest bug-fix release in the 1.10 series is [1.10.2](#1.10.2) and was
+released on 29 November 2016.
 
 The GStreamer team is proud to announce a new major feature release in the
 stable 1.x API series of your favourite cross-platform multimedia framework!
@@ -13,7 +13,7 @@
 See [https://gstreamer.freedesktop.org/releases/1.10/][latest] for the latest
 version of this document.
 
-*Last updated: Tuesday 17 Nov 2016, 15:00 UTC [(log)][gitlog]*
+*Last updated: Tuesday 29 Nov 2016, 12:30 UTC [(log)][gitlog]*
 
 [latest]: https://gstreamer.freedesktop.org/releases/1.10/
 [gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.10/release-notes-1.10.md
@@ -1084,7 +1084,7 @@
 
 #### Major bugfixes in 1.10.1
 
- - Security-relevant bugfix in the vmnc decoder (no CVE)
+ - Security-relevant bugfix in the vmnc decoder (CVE-2016-9445, CVE-2016-9446)
  - Various bugfixes to playbin3/decodebin3
  - Fix error at the end of playing any WAV file
  - Fix usability of androidmedia plugin if the camera or sensor API is not
@@ -1099,6 +1099,31 @@
 
 [buglist-1.10.1]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=168172&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.1
 
+<a name="1.10.2"></a>
+
+### 1.10.2
+
+The first 1.10 bug-fix release (1.10.2) was released on 29 November 2016.
+This release only contains bugfixes and it should be safe to update from 1.10.x.
+
+#### Major bugfixes in 1.10.2
+
+ - Security-relevant bugfix in the FLI/FLX/FLC decoder (CVE-2016-9634,
+   CVE-2016-9635, CVE-2016-9636)
+ - Various fixes for crashes, assertions and other failures on fuzzed input
+   files (among others, thanks to Hanno Böck for testing and reporting)
+ - SAVP/SAVPF profile in gst-rtsp-server works for live streams again, and the
+   correct MIKEY policy message is generated
+ - Further OpenGL related bugfixes
+ - gst-libav was updated to ffmpeg 3.2.1
+ - ... and many, many more!
+
+For a full list of bugfixes see [Bugzilla][buglist-1.10.2]. Note that this is
+not the full list of changes. For the full list of changes please refer to the
+GIT logs or ChangeLogs of the particular modules.
+
+[buglist-1.10.2]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=168172&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.10.2
+
 ## Known Issues
 
 - iOS builds with iOS 6 SDK and old C++ STL. You need to select iOS 6 instead
diff --git a/RELEASE b/RELEASE
index 6317e5f..e2b60d1 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,11 +1,11 @@
 
-Release notes for GStreamer Bad Plugins 1.10.1
+Release notes for GStreamer Bad Plugins 1.10.2
 
-The GStreamer team is proud to announce the first bugfix release in the stable
+The GStreamer team is proud to announce the second bugfix release in the stable
 1.10 release series of your favourite cross-platform multimedia framework!
 
 
-This release only contains bugfixes and it is safe to update from 1.10.0. For a
+This release only contains bugfixes and it is safe to update from 1.10.x. For a
 full list of bugfixes see Bugzilla.
 
 
@@ -60,11 +60,14 @@
 
 Bugs fixed in this release
      
-      * 773681 : directsoundsink: High cpu usage on windows x86
-      * 773313 : decklinkaudiosrc: Ignore channel-mask when checking set_caps compatibility
-      * 774287 : hls: gst_m3u8_has_next_fragment crash
-      * 774328 : dtlssrtpenc: criticals with gst-inspect-1.0 and state change unit test
-      * 774462 : glwindow: found memory leak of navigation_thread
+      * 774624 : GstGL build error due to not finding GstVideo-1.0.gir
+      * 774702 : dashdemux: Fix leak in gst_dash_demux_stream_free
+      * 774851 : glimagesink segfault when specifying GST_GL_WINDOW to something else than x11
+      * 774896 : h264 parser: Off by one read in gst_h264_parse_set_caps()
+      * 775048 : mpegts decoder: Out of bounds read in gst_mpegts_section_new
+      * 775120 : mpegts parser: null pointer deref in _parse_pat
+      * 775127 : hls_demux.testSeekUpdateStopPosition : The unit test that was always wrong
+      * 775130 : h264 parser: invalid input causes assert
 
 ==== Download ====
 
@@ -101,9 +104,10 @@
         
 Contributors to this release
     
-      * Haihua Hu
+      * David Evans
+      * Edward Hervey
       * Matthew Waters
       * Sebastian Dröge
+      * Seungha Yang
       * Tim-Philipp Müller
-      * Vivia Nikolaidou
  
\ No newline at end of file
diff --git a/config.guess b/config.guess
index 0967f2a..2e9ad7f 100755
--- a/config.guess
+++ b/config.guess
@@ -2,7 +2,7 @@
 # Attempt to guess a canonical system name.
 #   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2016-04-02'
+timestamp='2016-10-02'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -186,9 +186,12 @@
 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
+	# to ELF recently (or will in the future) and ABI.
 	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
+	    earm*)
+		os=netbsdelf
+		;;
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
 			| grep -q __ELF__
@@ -997,6 +1000,9 @@
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
 	;;
+    mips64el:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     openrisc*:Linux:*:*)
 	echo or1k-unknown-linux-${LIBC}
 	exit ;;
@@ -1029,6 +1035,9 @@
     ppcle:Linux:*:*)
 	echo powerpcle-unknown-linux-${LIBC}
 	exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
 	exit ;;
@@ -1408,18 +1417,17 @@
 cat >&2 <<EOF
 $0: unable to guess system type
 
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite
+config.guess and config.sub with the latest versions from:
 
   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
diff --git a/config.sub b/config.sub
index 8d39c4b..dd2ca93 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2016-03-30'
+timestamp='2016-11-04'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -117,7 +117,7 @@
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | \
+  kopensolaris*-gnu* | cloudabi*-eabi* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -301,6 +301,7 @@
 	| open8 | or1k | or1knd | or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pru \
 	| pyramid \
 	| riscv32 | riscv64 \
 	| rl78 | rx \
@@ -428,6 +429,7 @@
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pru-* \
 	| pyramid-* \
 	| riscv32-* | riscv64-* \
 	| rl78-* | romp-* | rs6000-* | rx-* \
@@ -643,6 +645,14 @@
 		basic_machine=m68k-bull
 		os=-sysv3
 		;;
+	e500v[12])
+		basic_machine=powerpc-unknown
+		os=$os"spe"
+		;;
+	e500v[12]-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=$os"spe"
+		;;
 	ebmon29k)
 		basic_machine=a29k-amd
 		os=-ebmon
@@ -1022,7 +1032,7 @@
 	ppc-* | ppcbe-*)
 		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
+	ppcle | powerpclittle)
 		basic_machine=powerpcle-unknown
 		;;
 	ppcle-* | powerpclittle-*)
@@ -1032,7 +1042,7 @@
 		;;
 	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+	ppc64le | powerpc64little)
 		basic_machine=powerpc64le-unknown
 		;;
 	ppc64le-* | powerpc64little-*)
@@ -1389,7 +1399,7 @@
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
@@ -1399,7 +1409,7 @@
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
 	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-	      | -onefs* | -tirtos*)
+	      | -onefs* | -tirtos* | -phoenix* | -fuchsia*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
diff --git a/configure b/configure
index 7983b05..b5a3f41 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.10.1.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.10.2.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer Bad Plug-ins'
 PACKAGE_TARNAME='gst-plugins-bad'
-PACKAGE_VERSION='1.10.1'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.10.1'
+PACKAGE_VERSION='1.10.2'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.10.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -2689,7 +2689,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GStreamer Bad Plug-ins 1.10.1 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.10.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2761,7 +2761,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.10.1:";;
+     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.10.2:";;
    esac
   cat <<\_ACEOF
 
@@ -3485,7 +3485,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.10.1
+GStreamer Bad Plug-ins configure 1.10.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4458,7 +4458,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GStreamer Bad Plug-ins $as_me 1.10.1, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.10.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5440,7 +5440,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-bad'
- VERSION='1.10.1'
+ VERSION='1.10.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5651,9 +5651,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.10.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.10.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.10.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.10.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.10.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.10.2 | cut -d'.' -f3)
 
 
 
@@ -5664,7 +5664,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.10.1 | cut -d'.' -f4)
+  NANO=$(echo 1.10.2 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -10508,10 +10508,10 @@
 done
 
 
-  GST_CURRENT=1001
+  GST_CURRENT=1002
   GST_REVISION=0
-  GST_AGE=1001
-  GST_LIBVERSION=1001:0:1001
+  GST_AGE=1002
+  GST_LIBVERSION=1002:0:1002
 
 
 
@@ -61312,7 +61312,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Bad Plug-ins $as_me 1.10.1, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.10.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -61378,7 +61378,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GStreamer Bad Plug-ins config.status 1.10.1
+GStreamer Bad Plug-ins config.status 1.10.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 35986ec..f9a3051 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
-AC_INIT([GStreamer Bad Plug-ins],[1.10.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.10.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
 
 AG_GST_INIT
 
@@ -51,7 +51,7 @@
 dnl - interfaces added -> increment AGE
 dnl - interfaces removed -> AGE = 0
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 1001, 0, 1001)
+AS_LIBTOOL(GST, 1002, 0, 1002)
 
 dnl *** required versions of GStreamer stuff ***
 GST_REQ=1.10.0
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index efd6412..cf24f01 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -403,15 +403,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextCocoa.html#GstGLContextCocoa">GstGLContextCocoa</a>, struct in GstGLContextCocoa
+GstGLContextCocoa, struct in GstGLContextCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEagl.html#GstGLContextEagl">GstGLContextEagl</a>, struct in GstGLContextEagl
+GstGLContextEagl, struct in GstGLContextEagl
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEGL.html#GstGLContextEGL">GstGLContextEGL</a>, struct in GstGLContextEGL
+GstGLContextEGL, struct in GstGLContextEGL
 </dt>
 <dd></dd>
 <dt>
@@ -419,7 +419,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextGLX.html#GstGLContextGLX">GstGLContextGLX</a>, struct in GstGLContextGLX
+GstGLContextGLX, struct in GstGLContextGLX
 </dt>
 <dd></dd>
 <dt>
@@ -427,7 +427,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextWGL.html#GstGLContextWGL">GstGLContextWGL</a>, struct in GstGLContextWGL
+GstGLContextWGL, struct in GstGLContextWGL
 </dt>
 <dd></dd>
 <dt>
@@ -667,11 +667,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowAndroid.html#GstGLWindowAndroidEGL">GstGLWindowAndroidEGL</a>, struct in GstGLWindowAndroid
+GstGLWindowAndroidEGL, struct in GstGLWindowAndroid
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowAndroid.html#GstGLWindowAndroidEGLClass">GstGLWindowAndroidEGLClass</a>, struct in GstGLWindowAndroid
+GstGLWindowAndroidEGLClass, struct in GstGLWindowAndroid
 </dt>
 <dd></dd>
 <dt>
@@ -683,19 +683,19 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowCocoa.html#GstGLWindowCocoa">GstGLWindowCocoa</a>, struct in GstGLWindowCocoa
+GstGLWindowCocoa, struct in GstGLWindowCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowCocoa.html#GstGLWindowCocoaClass">GstGLWindowCocoaClass</a>, struct in GstGLWindowCocoa
+GstGLWindowCocoaClass, struct in GstGLWindowCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowDispmanx.html#GstGLWindowDispmanxEGL">GstGLWindowDispmanxEGL</a>, struct in GstGLWindowDispmanx
+GstGLWindowDispmanxEGL, struct in GstGLWindowDispmanx
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowDispmanx.html#GstGLWindowDispmanxEGLClass">GstGLWindowDispmanxEGLClass</a>, struct in GstGLWindowDispmanx
+GstGLWindowDispmanxEGLClass, struct in GstGLWindowDispmanx
 </dt>
 <dd></dd>
 <dt>
@@ -707,27 +707,27 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWayland.html#GstGLWindowWaylandEGL">GstGLWindowWaylandEGL</a>, struct in GstGLWindowWayland
+GstGLWindowWaylandEGL, struct in GstGLWindowWayland
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWayland.html#GstGLWindowWaylandEGLClass">GstGLWindowWaylandEGLClass</a>, struct in GstGLWindowWayland
+GstGLWindowWaylandEGLClass, struct in GstGLWindowWayland
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWin32.html#GstGLWindowWin32">GstGLWindowWin32</a>, struct in GstGLWindowWin32
+GstGLWindowWin32, struct in GstGLWindowWin32
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWin32.html#GstGLWindowWin32Class">GstGLWindowWin32Class</a>, struct in GstGLWindowWin32
+GstGLWindowWin32Class, struct in GstGLWindowWin32
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11">GstGLWindowX11</a>, struct in GstGLWindowX11
+GstGLWindowX11, struct in GstGLWindowX11
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11Class">GstGLWindowX11Class</a>, struct in GstGLWindowX11
+GstGLWindowX11Class, struct in GstGLWindowX11
 </dt>
 <dd></dd>
 <dt>
@@ -955,15 +955,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextCocoa.html#gst-gl-context-cocoa-get-current-context">gst_gl_context_cocoa_get_current_context</a>, function in GstGLContextCocoa
+gst_gl_context_cocoa_get_current_context, function in GstGLContextCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextCocoa.html#gst-gl-context-cocoa-get-pixel-format">gst_gl_context_cocoa_get_pixel_format</a>, function in GstGLContextCocoa
+gst_gl_context_cocoa_get_pixel_format, function in GstGLContextCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextCocoa.html#gst-gl-context-cocoa-new">gst_gl_context_cocoa_new</a>, function in GstGLContextCocoa
+gst_gl_context_cocoa_new, function in GstGLContextCocoa
 </dt>
 <dd></dd>
 <dt>
@@ -983,15 +983,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEagl.html#gst-gl-context-eagl-get-current-context">gst_gl_context_eagl_get_current_context</a>, function in GstGLContextEagl
+gst_gl_context_eagl_get_current_context, function in GstGLContextEagl
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEagl.html#gst-gl-context-eagl-new">gst_gl_context_eagl_new</a>, function in GstGLContextEagl
+gst_gl_context_eagl_new, function in GstGLContextEagl
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEGL.html#gst-gl-context-egl-get-current-context">gst_gl_context_egl_get_current_context</a>, function in GstGLContextEGL
+gst_gl_context_egl_get_current_context, function in GstGLContextEGL
 </dt>
 <dd></dd>
 <dt>
@@ -999,11 +999,11 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEGL.html#gst-gl-context-egl-get-proc-address">gst_gl_context_egl_get_proc_address</a>, function in GstGLContextEGL
+gst_gl_context_egl_get_proc_address, function in GstGLContextEGL
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextEGL.html#gst-gl-context-egl-new">gst_gl_context_egl_new</a>, function in GstGLContextEGL
+gst_gl_context_egl_new, function in GstGLContextEGL
 </dt>
 <dd></dd>
 <dt>
@@ -1071,15 +1071,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextGLX.html#gst-gl-context-glx-get-current-context">gst_gl_context_glx_get_current_context</a>, function in GstGLContextGLX
+gst_gl_context_glx_get_current_context, function in GstGLContextGLX
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextGLX.html#gst-gl-context-glx-get-proc-address">gst_gl_context_glx_get_proc_address</a>, function in GstGLContextGLX
+gst_gl_context_glx_get_proc_address, function in GstGLContextGLX
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextGLX.html#gst-gl-context-glx-new">gst_gl_context_glx_new</a>, function in GstGLContextGLX
+gst_gl_context_glx_new, function in GstGLContextGLX
 </dt>
 <dd></dd>
 <dt>
@@ -1111,15 +1111,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-get-current-context">gst_gl_context_wgl_get_current_context</a>, function in GstGLContextWGL
+gst_gl_context_wgl_get_current_context, function in GstGLContextWGL
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-get-proc-address">gst_gl_context_wgl_get_proc_address</a>, function in GstGLContextWGL
+gst_gl_context_wgl_get_proc_address, function in GstGLContextWGL
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-new">gst_gl_context_wgl_new</a>, function in GstGLContextWGL
+gst_gl_context_wgl_new, function in GstGLContextWGL
 </dt>
 <dd></dd>
 <dt>
@@ -1823,7 +1823,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowAndroid.html#gst-gl-window-android-egl-new">gst_gl_window_android_egl_new</a>, function in GstGLWindowAndroid
+gst_gl_window_android_egl_new, function in GstGLWindowAndroid
 </dt>
 <dd></dd>
 <dt>
@@ -1831,15 +1831,15 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowCocoa.html#gst-gl-window-cocoa-create-window">gst_gl_window_cocoa_create_window</a>, function in GstGLWindowCocoa
+gst_gl_window_cocoa_create_window, function in GstGLWindowCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowCocoa.html#gst-gl-window-cocoa-new">gst_gl_window_cocoa_new</a>, function in GstGLWindowCocoa
+gst_gl_window_cocoa_new, function in GstGLWindowCocoa
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowDispmanx.html#gst-gl-window-dispmanx-egl-new">gst_gl_window_dispmanx_egl_new</a>, function in GstGLWindowDispmanx
+gst_gl_window_dispmanx_egl_new, function in GstGLWindowDispmanx
 </dt>
 <dd></dd>
 <dt>
@@ -1939,31 +1939,31 @@
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWayland.html#gst-gl-window-wayland-egl-new">gst_gl_window_wayland_egl_new</a>, function in GstGLWindowWayland
+gst_gl_window_wayland_egl_new, function in GstGLWindowWayland
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWin32.html#gst-gl-window-win32-create-window">gst_gl_window_win32_create_window</a>, function in GstGLWindowWin32
+gst_gl_window_win32_create_window, function in GstGLWindowWin32
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowWin32.html#gst-gl-window-win32-new">gst_gl_window_win32_new</a>, function in GstGLWindowWin32
+gst_gl_window_win32_new, function in GstGLWindowWin32
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-create-window">gst_gl_window_x11_create_window</a>, function in GstGLWindowX11
+gst_gl_window_x11_create_window, function in GstGLWindowX11
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-new">gst_gl_window_x11_new</a>, function in GstGLWindowX11
+gst_gl_window_x11_new, function in GstGLWindowX11
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-trap-x-errors">gst_gl_window_x11_trap_x_errors</a>, function in GstGLWindowX11
+gst_gl_window_x11_trap_x_errors, function in GstGLWindowX11
 </dt>
 <dd></dd>
 <dt>
-<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-untrap-x-errors">gst_gl_window_x11_untrap_x_errors</a>, function in GstGLWindowX11
+gst_gl_window_x11_untrap_x_errors, function in GstGLWindowX11
 </dt>
 <dd></dd>
 <a name="idxH"></a><h3 class="title">H</h3>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 6320114..041bcc7 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Library 1.0 (1.10.1)
+      for GStreamer Bad Library 1.0 (1.10.2)
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/</a>.
     </p></div>
 </div>
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index 2a879f1..913cd8e 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -391,45 +391,6 @@
   GstColorBalanceChannel
   GstEncodingProfile
   MXFMetadataBase
-    MXFDescriptiveMetadata
-      MXFDMS1
-        MXFDMS1Address
-        MXFDMS1Communications
-        MXFDMS1ContactsList
-        MXFDMS1Framework
-          MXFDMS1ProductionClipFramework
-            MXFDMS1ClipFramework
-            MXFDMS1ProductionFramework
-          MXFDMS1SceneFramework
-        MXFDMS1NameValue
-        MXFDMS1PictureFormat
-        MXFDMS1Processing
-        MXFDMS1Project
-        MXFDMS1Publication
-        MXFDMS1TextLanguage
-          MXFDMS1Branding
-          MXFDMS1CueWords
-          MXFDMS1Shot
-          MXFDMS1Thesaurus
-            MXFDMS1Annotation
-            MXFDMS1Award
-            MXFDMS1CaptionsDescription
-            MXFDMS1Classification
-            MXFDMS1Contact
-              MXFDMS1Location
-              MXFDMS1Organisation
-              MXFDMS1Person
-            MXFDMS1Contract
-            MXFDMS1DeviceParameters
-            MXFDMS1Event
-            MXFDMS1GroupRelationship
-            MXFDMS1Identification
-            MXFDMS1KeyPoint
-            MXFDMS1Participant
-            MXFDMS1Rights
-            MXFDMS1Scripting
-            MXFDMS1SettingPeriod
-          MXFDMS1Titles
     MXFMetadata
       MXFMetadataContentStorage
       MXFMetadataEssenceContainerData
@@ -476,4 +437,3 @@
   GstVideoOverlay
   GstWaylandVideo
   GtkBuildable
-  MXFDescriptiveMetadataFrameworkInterface
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html b/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html
index a735f9e..adb8500 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html
@@ -98,7 +98,7 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
-<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-downmix-mode" title="The “output-multiview-downmix-mode” property">output-multiview-downmix-mode</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -324,7 +324,7 @@
 <hr>
 <div class="refsect2">
 <a name="GstGLImageSink--output-multiview-downmix-mode"></a><h3>The <code class="literal">“output-multiview-downmix-mode”</code> property</h3>
-<pre class="programlisting">  “output-multiview-downmix-mode” <span class="type">GstGLStereoDownmix</span></pre>
+<pre class="programlisting">  “output-multiview-downmix-mode” <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></pre>
 <p>Output anaglyph type to generate when downmixing to mono.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Dubois optimised Green-Magenta anaglyph</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html b/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html
index f6e4334..e95aa30 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html
@@ -43,7 +43,7 @@
 <col width="200px" class="properties_flags">
 </colgroup>
 <tbody><tr>
-<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glstereomix.html#GstGLStereoMix--downmix-mode" title="The “downmix-mode” property">downmix-mode</a></td>
 <td class="property_flags">Read / Write</td>
 </tr></tbody>
@@ -252,7 +252,7 @@
 <a name="gst-plugins-bad-plugins-glstereomix.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
 <a name="GstGLStereoMix--downmix-mode"></a><h3>The <code class="literal">“downmix-mode”</code> property</h3>
-<pre class="programlisting">  “downmix-mode”             <span class="type">GstGLStereoDownmix</span></pre>
+<pre class="programlisting">  “downmix-mode”             <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></pre>
 <p>Output anaglyph type to generate when downmixing to mono.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Dubois optimised Green-Magenta anaglyph</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html
index abb8b4a..bc43e0b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html
@@ -43,7 +43,7 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--downmix-mode" title="The “downmix-mode” property">downmix-mode</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
@@ -234,7 +234,7 @@
 <a name="gst-plugins-bad-plugins-glviewconvert.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
 <a name="GstGLViewConvertElement--downmix-mode"></a><h3>The <code class="literal">“downmix-mode”</code> property</h3>
-<pre class="programlisting">  “downmix-mode”             <span class="type">GstGLStereoDownmix</span></pre>
+<pre class="programlisting">  “downmix-mode”             <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLViewConvert.html#GstGLStereoDownmix"><span class="type">GstGLStereoDownmix</span></a></pre>
 <p>Output anaglyph type to generate when downmixing to mono.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Dubois optimised Green-Magenta anaglyph</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
index fba6224..40f293f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
index 337bbff..a6f05d1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
index ab534fc..1379d2b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
index ea14780..ca95a27 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
index 051ed64..c72c95f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
index dc3804c..0e83165 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
index 2d349cb..fe7e312 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
index a136231..df2fbe0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
index 319d0b7..294b471 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
index 418b7aa..ae40196 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
index 0fee052..a4821ac 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
index 8188adf..e4c8b88 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
index e9113d3..dc2416f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
index 2a9ac93..6ec3488 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
index 45116fa..466d2ed 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
index ccb54cf..3da2ad0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
index 7760412..402ba12 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
index fa8de8b..f721e21 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
index d85d265..a4f270c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
index f6d83d7..433658a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
index 70a7d2a..29492c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
index 28cf31b..abac403 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
index 3fc8551..35298ce 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
index 05e518f..f0ee560 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
index 59e64fd..7a3d23a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
index 433e1bd..d6f9439 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
index 0056ffc..3e5d15e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
index 5c5228a..be084b3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
index 3af6e03..6e171cd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
index 2360624..85755a3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
index 7623de3..902b5c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
index 076ebd7..f2a0486 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
index aabf2cd..4cbf28d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
index a5ce1a5..f9628ef 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index c1c893d..53ac02d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
index 54f9961..c72d99a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index 99ddc2c..f757f71 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
index 4e42666..13c3c47 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index aa45a35..e2f5228 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index 19d6042..bebac8f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
index 76bff67..958cd75 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
index 5174a1d..2aa3d39 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
index 202d733..ff86a16 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
index 9ded448..dff87f4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
index 243d1be..bfe6b0f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index fb73b67..528dd31 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.10.1</td>
+<td>1.10.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index ff6b576..feced84 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Plugins 1.0 (1.10.1)
+      for GStreamer Bad Plugins 1.0 (1.10.2)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/</a>.
     </p></div>
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index e7fd395..47975cb 100644
--- a/docs/plugins/inspect/plugin-accurip.xml
+++ b/docs/plugins/inspect/plugin-accurip.xml
@@ -3,7 +3,7 @@
   <description>Computes an AccurateRip CRC</description>
   <filename>../../gst/accurip/.libs/libgstaccurip.so</filename>
   <basename>libgstaccurip.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmdec.xml b/docs/plugins/inspect/plugin-adpcmdec.xml
index d553995..300316b 100644
--- a/docs/plugins/inspect/plugin-adpcmdec.xml
+++ b/docs/plugins/inspect/plugin-adpcmdec.xml
@@ -3,7 +3,7 @@
   <description>ADPCM decoder</description>
   <filename>../../gst/adpcmdec/.libs/libgstadpcmdec.so</filename>
   <basename>libgstadpcmdec.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmenc.xml b/docs/plugins/inspect/plugin-adpcmenc.xml
index 5b699bd..66fe0d2 100644
--- a/docs/plugins/inspect/plugin-adpcmenc.xml
+++ b/docs/plugins/inspect/plugin-adpcmenc.xml
@@ -3,7 +3,7 @@
   <description>ADPCM encoder</description>
   <filename>../../gst/adpcmenc/.libs/libgstadpcmenc.so</filename>
   <basename>libgstadpcmenc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-aiff.xml b/docs/plugins/inspect/plugin-aiff.xml
index e5506e7..c75ecb6 100644
--- a/docs/plugins/inspect/plugin-aiff.xml
+++ b/docs/plugins/inspect/plugin-aiff.xml
@@ -3,7 +3,7 @@
   <description>Create and parse Audio Interchange File Format (AIFF) files</description>
   <filename>../../gst/aiff/.libs/libgstaiff.so</filename>
   <basename>libgstaiff.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index cb22a45..71e47f1 100644
--- a/docs/plugins/inspect/plugin-asfmux.xml
+++ b/docs/plugins/inspect/plugin-asfmux.xml
@@ -3,7 +3,7 @@
   <description>ASF Muxer Plugin</description>
   <filename>../../gst/asfmux/.libs/libgstasfmux.so</filename>
   <basename>libgstasfmux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-assrender.xml b/docs/plugins/inspect/plugin-assrender.xml
index 6bb50dd..e58c79c 100644
--- a/docs/plugins/inspect/plugin-assrender.xml
+++ b/docs/plugins/inspect/plugin-assrender.xml
@@ -3,7 +3,7 @@
   <description>ASS/SSA subtitle renderer</description>
   <filename>../../ext/assrender/.libs/libgstassrender.so</filename>
   <basename>libgstassrender.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index 7f78a60..0b307da 100644
--- a/docs/plugins/inspect/plugin-audiofxbad.xml
+++ b/docs/plugins/inspect/plugin-audiofxbad.xml
@@ -3,7 +3,7 @@
   <description>Audio filters from gst-plugins-bad</description>
   <filename>../../gst/audiofxbad/.libs/libgstaudiofxbad.so</filename>
   <basename>libgstaudiofxbad.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-audiomixer.xml b/docs/plugins/inspect/plugin-audiomixer.xml
index 2a79212..ac3f2b3 100644
--- a/docs/plugins/inspect/plugin-audiomixer.xml
+++ b/docs/plugins/inspect/plugin-audiomixer.xml
@@ -3,7 +3,7 @@
   <description>Mixes multiple audio streams</description>
   <filename>../../gst/audiomixer/.libs/libgstaudiomixer.so</filename>
   <basename>libgstaudiomixer.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiovisualizers.xml b/docs/plugins/inspect/plugin-audiovisualizers.xml
index 292a252..0c10270 100644
--- a/docs/plugins/inspect/plugin-audiovisualizers.xml
+++ b/docs/plugins/inspect/plugin-audiovisualizers.xml
@@ -3,7 +3,7 @@
   <description>Creates video visualizations of audio input</description>
   <filename>../../gst/audiovisualizers/.libs/libgstaudiovisualizers.so</filename>
   <basename>libgstaudiovisualizers.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-autoconvert.xml b/docs/plugins/inspect/plugin-autoconvert.xml
index 319e3d5..5153926 100644
--- a/docs/plugins/inspect/plugin-autoconvert.xml
+++ b/docs/plugins/inspect/plugin-autoconvert.xml
@@ -3,7 +3,7 @@
   <description>Selects convertor element based on caps</description>
   <filename>../../gst/autoconvert/.libs/libgstautoconvert.so</filename>
   <basename>libgstautoconvert.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bayer.xml b/docs/plugins/inspect/plugin-bayer.xml
index b71750c..5598043 100644
--- a/docs/plugins/inspect/plugin-bayer.xml
+++ b/docs/plugins/inspect/plugin-bayer.xml
@@ -3,7 +3,7 @@
   <description>Elements to convert Bayer images</description>
   <filename>../../gst/bayer/.libs/libgstbayer.so</filename>
   <basename>libgstbayer.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bluez.xml b/docs/plugins/inspect/plugin-bluez.xml
index 4b3c2b7..4d0e3d1 100644
--- a/docs/plugins/inspect/plugin-bluez.xml
+++ b/docs/plugins/inspect/plugin-bluez.xml
@@ -3,7 +3,7 @@
   <description>Bluez-based bluetooth support</description>
   <filename>../../sys/bluez/.libs/libgstbluez.so</filename>
   <basename>libgstbluez.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bs2b.xml b/docs/plugins/inspect/plugin-bs2b.xml
index 58bb665..dcec29c 100644
--- a/docs/plugins/inspect/plugin-bs2b.xml
+++ b/docs/plugins/inspect/plugin-bs2b.xml
@@ -3,7 +3,7 @@
   <description>Improve headphone listening of stereo audio recordsusing the bs2b library.</description>
   <filename>../../ext/bs2b/.libs/libgstbs2b.so</filename>
   <basename>libgstbs2b.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index ff042ef..324813b 100644
--- a/docs/plugins/inspect/plugin-bz2.xml
+++ b/docs/plugins/inspect/plugin-bz2.xml
@@ -3,7 +3,7 @@
   <description>Compress or decompress streams</description>
   <filename>../../ext/bz2/.libs/libgstbz2.so</filename>
   <basename>libgstbz2.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-camerabin.xml b/docs/plugins/inspect/plugin-camerabin.xml
index a6be470..bee563c 100644
--- a/docs/plugins/inspect/plugin-camerabin.xml
+++ b/docs/plugins/inspect/plugin-camerabin.xml
@@ -3,7 +3,7 @@
   <description>Take image snapshots and record movies from camera</description>
   <filename>../../gst/camerabin2/.libs/libgstcamerabin2.so</filename>
   <basename>libgstcamerabin2.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-chromaprint.xml b/docs/plugins/inspect/plugin-chromaprint.xml
index bc3838a..d6c56bd 100644
--- a/docs/plugins/inspect/plugin-chromaprint.xml
+++ b/docs/plugins/inspect/plugin-chromaprint.xml
@@ -3,7 +3,7 @@
   <description>Calculate Chromaprint fingerprint from audio files</description>
   <filename>../../ext/chromaprint/.libs/libgstchromaprint.so</filename>
   <basename>libgstchromaprint.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-coloreffects.xml b/docs/plugins/inspect/plugin-coloreffects.xml
index 6dfcd2f..4c911bd 100644
--- a/docs/plugins/inspect/plugin-coloreffects.xml
+++ b/docs/plugins/inspect/plugin-coloreffects.xml
@@ -3,7 +3,7 @@
   <description>Color Look-up Table filters</description>
   <filename>../../gst/coloreffects/.libs/libgstcoloreffects.so</filename>
   <basename>libgstcoloreffects.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-compositor.xml b/docs/plugins/inspect/plugin-compositor.xml
index 9dfdc5e..c276a49 100644
--- a/docs/plugins/inspect/plugin-compositor.xml
+++ b/docs/plugins/inspect/plugin-compositor.xml
@@ -3,7 +3,7 @@
   <description>Compositor</description>
   <filename>../../gst/compositor/.libs/libgstcompositor.so</filename>
   <basename>libgstcompositor.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-curl.xml b/docs/plugins/inspect/plugin-curl.xml
index 38919da..fa994fa 100644
--- a/docs/plugins/inspect/plugin-curl.xml
+++ b/docs/plugins/inspect/plugin-curl.xml
@@ -3,7 +3,7 @@
   <description>libcurl-based elements</description>
   <filename>../../ext/curl/.libs/libgstcurl.so</filename>
   <basename>libgstcurl.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dashdemux.xml b/docs/plugins/inspect/plugin-dashdemux.xml
index fe018dd..d13e227 100644
--- a/docs/plugins/inspect/plugin-dashdemux.xml
+++ b/docs/plugins/inspect/plugin-dashdemux.xml
@@ -3,7 +3,7 @@
   <description>DASH demuxer plugin</description>
   <filename>../../ext/dash/.libs/libgstdashdemux.so</filename>
   <basename>libgstdashdemux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-dataurisrc.xml b/docs/plugins/inspect/plugin-dataurisrc.xml
index 683982b..6a86f44 100644
--- a/docs/plugins/inspect/plugin-dataurisrc.xml
+++ b/docs/plugins/inspect/plugin-dataurisrc.xml
@@ -3,7 +3,7 @@
   <description>data: URI source</description>
   <filename>../../gst/dataurisrc/.libs/libgstdataurisrc.so</filename>
   <basename>libgstdataurisrc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dc1394.xml b/docs/plugins/inspect/plugin-dc1394.xml
index dfc1efd..36c9e11 100644
--- a/docs/plugins/inspect/plugin-dc1394.xml
+++ b/docs/plugins/inspect/plugin-dc1394.xml
@@ -3,7 +3,7 @@
   <description>1394 IIDC video source</description>
   <filename>../../ext/dc1394/.libs/libgstdc1394.so</filename>
   <basename>libgstdc1394.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index bb682a8..c295123 100644
--- a/docs/plugins/inspect/plugin-debugutilsbad.xml
+++ b/docs/plugins/inspect/plugin-debugutilsbad.xml
@@ -3,7 +3,7 @@
   <description>Collection of elements that may or may not be useful for debugging</description>
   <filename>../../gst/debugutils/.libs/libgstdebugutilsbad.so</filename>
   <basename>libgstdebugutilsbad.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-decklink.xml b/docs/plugins/inspect/plugin-decklink.xml
index c23060d..7250256 100644
--- a/docs/plugins/inspect/plugin-decklink.xml
+++ b/docs/plugins/inspect/plugin-decklink.xml
@@ -3,7 +3,7 @@
   <description>Blackmagic Decklink plugin</description>
   <filename>../../sys/decklink/.libs/libgstdecklink.so</filename>
   <basename>libgstdecklink.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
@@ -65,7 +65,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA</details>
+          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)bottom-field-first, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)bottom-field-first, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)bottom-field-first, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)bottom-field-first, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, field-order=(string)bottom-field-first, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, field-order=(string)bottom-field-first, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, field-order=(string)bottom-field-first, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, field-order=(string)bottom-field-first, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, field-order=(string)top-field-first, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)top-field-first, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)top-field-first, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)top-field-first, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, field-order=(string)top-field-first, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, field-order=(string)top-field-first, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, field-order=(string)top-field-first, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, field-order=(string)top-field-first, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, field-order=(string)top-field-first, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index 63bf5cd..e7fdfbd 100644
--- a/docs/plugins/inspect/plugin-dfbvideosink.xml
+++ b/docs/plugins/inspect/plugin-dfbvideosink.xml
@@ -3,7 +3,7 @@
   <description>DirectFB video output plugin</description>
   <filename>../../ext/directfb/.libs/libgstdfbvideosink.so</filename>
   <basename>libgstdfbvideosink.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtls.xml b/docs/plugins/inspect/plugin-dtls.xml
index ef7f3ab..bb47df5 100644
--- a/docs/plugins/inspect/plugin-dtls.xml
+++ b/docs/plugins/inspect/plugin-dtls.xml
@@ -3,7 +3,7 @@
   <description>DTLS decoder and encoder plugins</description>
   <filename>../../ext/dtls/.libs/libgstdtls.so</filename>
   <basename>libgstdtls.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtsdec.xml b/docs/plugins/inspect/plugin-dtsdec.xml
index 273e428..00ac43a 100644
--- a/docs/plugins/inspect/plugin-dtsdec.xml
+++ b/docs/plugins/inspect/plugin-dtsdec.xml
@@ -3,7 +3,7 @@
   <description>Decodes DTS audio streams</description>
   <filename>../../ext/dts/.libs/libgstdtsdec.so</filename>
   <basename>libgstdtsdec.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvb.xml b/docs/plugins/inspect/plugin-dvb.xml
index 45256bd..596889a 100644
--- a/docs/plugins/inspect/plugin-dvb.xml
+++ b/docs/plugins/inspect/plugin-dvb.xml
@@ -3,7 +3,7 @@
   <description>DVB elements</description>
   <filename>../../sys/dvb/.libs/libgstdvb.so</filename>
   <basename>libgstdvb.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvbsuboverlay.xml b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
index 173d817..ad48491 100644
--- a/docs/plugins/inspect/plugin-dvbsuboverlay.xml
+++ b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
@@ -3,7 +3,7 @@
   <description>DVB subtitle renderer</description>
   <filename>../../gst/dvbsuboverlay/.libs/libgstdvbsuboverlay.so</filename>
   <basename>libgstdvbsuboverlay.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index 8c5f28c..5b8c738 100644
--- a/docs/plugins/inspect/plugin-dvdspu.xml
+++ b/docs/plugins/inspect/plugin-dvdspu.xml
@@ -3,7 +3,7 @@
   <description>DVD Sub-picture Overlay element</description>
   <filename>../../gst/dvdspu/.libs/libgstdvdspu.so</filename>
   <basename>libgstdvdspu.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faac.xml b/docs/plugins/inspect/plugin-faac.xml
index 39a824d..42af9c4 100644
--- a/docs/plugins/inspect/plugin-faac.xml
+++ b/docs/plugins/inspect/plugin-faac.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Encoder (FAAC)</description>
   <filename>../../ext/faac/.libs/libgstfaac.so</filename>
   <basename>libgstfaac.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faad.xml b/docs/plugins/inspect/plugin-faad.xml
index 58e176d..5e05382 100644
--- a/docs/plugins/inspect/plugin-faad.xml
+++ b/docs/plugins/inspect/plugin-faad.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Decoder (FAAD)</description>
   <filename>../../ext/faad/.libs/libgstfaad.so</filename>
   <basename>libgstfaad.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fbdevsink.xml b/docs/plugins/inspect/plugin-fbdevsink.xml
index d52d9fb..70a3c9e 100644
--- a/docs/plugins/inspect/plugin-fbdevsink.xml
+++ b/docs/plugins/inspect/plugin-fbdevsink.xml
@@ -3,7 +3,7 @@
   <description>Linux framebuffer video sink</description>
   <filename>../../sys/fbdev/.libs/libgstfbdevsink.so</filename>
   <basename>libgstfbdevsink.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fdkaac.xml b/docs/plugins/inspect/plugin-fdkaac.xml
index 663fd16..01c9a0f 100644
--- a/docs/plugins/inspect/plugin-fdkaac.xml
+++ b/docs/plugins/inspect/plugin-fdkaac.xml
@@ -3,7 +3,7 @@
   <description>Fraunhofer FDK AAC Codec plugin</description>
   <filename>../../ext/fdkaac/.libs/libgstfdkaac.so</filename>
   <basename>libgstfdkaac.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-festival.xml b/docs/plugins/inspect/plugin-festival.xml
index 6f4ecfd..c0d83fd 100644
--- a/docs/plugins/inspect/plugin-festival.xml
+++ b/docs/plugins/inspect/plugin-festival.xml
@@ -3,7 +3,7 @@
   <description>Synthesizes plain text into audio</description>
   <filename>../../gst/festival/.libs/libgstfestival.so</filename>
   <basename>libgstfestival.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fieldanalysis.xml b/docs/plugins/inspect/plugin-fieldanalysis.xml
index 4be5dc1..7cf21a8 100644
--- a/docs/plugins/inspect/plugin-fieldanalysis.xml
+++ b/docs/plugins/inspect/plugin-fieldanalysis.xml
@@ -3,7 +3,7 @@
   <description>Video field analysis</description>
   <filename>../../gst/fieldanalysis/.libs/libgstfieldanalysis.so</filename>
   <basename>libgstfieldanalysis.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-flite.xml b/docs/plugins/inspect/plugin-flite.xml
index 303936e..304fc7c 100644
--- a/docs/plugins/inspect/plugin-flite.xml
+++ b/docs/plugins/inspect/plugin-flite.xml
@@ -3,7 +3,7 @@
   <description>Flite speech synthesizer plugin</description>
   <filename>../../ext/flite/.libs/libgstflite.so</filename>
   <basename>libgstflite.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fluidsynthmidi.xml b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
index 12ba166..31d1920 100644
--- a/docs/plugins/inspect/plugin-fluidsynthmidi.xml
+++ b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
@@ -3,7 +3,7 @@
   <description>Fluidsynth MIDI Plugin</description>
   <filename>../../ext/fluidsynth/.libs/libgstfluidsynthmidi.so</filename>
   <basename>libgstfluidsynthmidi.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-freeverb.xml b/docs/plugins/inspect/plugin-freeverb.xml
index 79b009a..2b84485 100644
--- a/docs/plugins/inspect/plugin-freeverb.xml
+++ b/docs/plugins/inspect/plugin-freeverb.xml
@@ -3,7 +3,7 @@
   <description>Reverberation/room effect</description>
   <filename>../../gst/freeverb/.libs/libgstfreeverb.so</filename>
   <basename>libgstfreeverb.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-frei0r.xml b/docs/plugins/inspect/plugin-frei0r.xml
index cfc641c..7ccd063 100644
--- a/docs/plugins/inspect/plugin-frei0r.xml
+++ b/docs/plugins/inspect/plugin-frei0r.xml
@@ -3,7 +3,7 @@
   <description>frei0r plugin library</description>
   <filename>../../gst/frei0r/.libs/libgstfrei0r.so</filename>
   <basename>libgstfrei0r.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gaudieffects.xml b/docs/plugins/inspect/plugin-gaudieffects.xml
index 809d3a7..0e4e82c 100644
--- a/docs/plugins/inspect/plugin-gaudieffects.xml
+++ b/docs/plugins/inspect/plugin-gaudieffects.xml
@@ -3,7 +3,7 @@
   <description>Gaudi video effects.</description>
   <filename>../../gst/gaudieffects/.libs/libgstgaudieffects.so</filename>
   <basename>libgstgaudieffects.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-gdp.xml b/docs/plugins/inspect/plugin-gdp.xml
index 18e989d..e812127 100644
--- a/docs/plugins/inspect/plugin-gdp.xml
+++ b/docs/plugins/inspect/plugin-gdp.xml
@@ -3,7 +3,7 @@
   <description>Payload/depayload GDP packets</description>
   <filename>../../gst/gdp/.libs/libgstgdp.so</filename>
   <basename>libgstgdp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-geometrictransform.xml b/docs/plugins/inspect/plugin-geometrictransform.xml
index 679ad20..ff76c58 100644
--- a/docs/plugins/inspect/plugin-geometrictransform.xml
+++ b/docs/plugins/inspect/plugin-geometrictransform.xml
@@ -3,7 +3,7 @@
   <description>Various geometric image transform elements</description>
   <filename>../../gst/geometrictransform/.libs/libgstgeometrictransform.so</filename>
   <basename>libgstgeometrictransform.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gmedec.xml b/docs/plugins/inspect/plugin-gmedec.xml
index c7fbece..7d97f0e 100644
--- a/docs/plugins/inspect/plugin-gmedec.xml
+++ b/docs/plugins/inspect/plugin-gmedec.xml
@@ -3,7 +3,7 @@
   <description>GME Audio Decoder</description>
   <filename>../../ext/gme/.libs/libgstgme.so</filename>
   <basename>libgstgme.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gsm.xml b/docs/plugins/inspect/plugin-gsm.xml
index 12988ce..525b29b 100644
--- a/docs/plugins/inspect/plugin-gsm.xml
+++ b/docs/plugins/inspect/plugin-gsm.xml
@@ -3,7 +3,7 @@
   <description>GSM encoder/decoder</description>
   <filename>../../ext/gsm/.libs/libgstgsm.so</filename>
   <basename>libgstgsm.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstgtk.xml b/docs/plugins/inspect/plugin-gstgtk.xml
index 0f67f8f..976b53a 100644
--- a/docs/plugins/inspect/plugin-gstgtk.xml
+++ b/docs/plugins/inspect/plugin-gstgtk.xml
@@ -3,7 +3,7 @@
   <description>Gtk+ sink</description>
   <filename>../../ext/gtk/.libs/libgstgtksink.so</filename>
   <basename>libgstgtksink.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstsiren.xml b/docs/plugins/inspect/plugin-gstsiren.xml
index 1e60f3a..cf17d44 100644
--- a/docs/plugins/inspect/plugin-gstsiren.xml
+++ b/docs/plugins/inspect/plugin-gstsiren.xml
@@ -3,7 +3,7 @@
   <description>Siren encoder/decoder/payloader/depayloader plugins</description>
   <filename>../../gst/siren/.libs/libgstsiren.so</filename>
   <basename>libgstsiren.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-hls.xml b/docs/plugins/inspect/plugin-hls.xml
index b662af5..a5ee208 100644
--- a/docs/plugins/inspect/plugin-hls.xml
+++ b/docs/plugins/inspect/plugin-hls.xml
@@ -3,7 +3,7 @@
   <description>HTTP Live Streaming (HLS)</description>
   <filename>../../ext/hls/.libs/libgsthls.so</filename>
   <basename>libgsthls.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-id3tag.xml b/docs/plugins/inspect/plugin-id3tag.xml
index d753357..cd0582a 100644
--- a/docs/plugins/inspect/plugin-id3tag.xml
+++ b/docs/plugins/inspect/plugin-id3tag.xml
@@ -3,7 +3,7 @@
   <description>ID3 v1 and v2 muxing plugin</description>
   <filename>../../gst/id3tag/.libs/libgstid3tag.so</filename>
   <basename>libgstid3tag.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-inter.xml b/docs/plugins/inspect/plugin-inter.xml
index f0241b4..0607c8a 100644
--- a/docs/plugins/inspect/plugin-inter.xml
+++ b/docs/plugins/inspect/plugin-inter.xml
@@ -3,7 +3,7 @@
   <description>plugin for inter-pipeline communication</description>
   <filename>../../gst/inter/.libs/libgstinter.so</filename>
   <basename>libgstinter.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index 7608c4b..d63126c 100644
--- a/docs/plugins/inspect/plugin-interlace.xml
+++ b/docs/plugins/inspect/plugin-interlace.xml
@@ -3,7 +3,7 @@
   <description>Create an interlaced video stream</description>
   <filename>../../gst/interlace/.libs/libgstinterlace.so</filename>
   <basename>libgstinterlace.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index f3c2f54..04a7ed7 100644
--- a/docs/plugins/inspect/plugin-ivfparse.xml
+++ b/docs/plugins/inspect/plugin-ivfparse.xml
@@ -3,7 +3,7 @@
   <description>IVF parser</description>
   <filename>../../gst/ivfparse/.libs/libgstivfparse.so</filename>
   <basename>libgstivfparse.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivtc.xml b/docs/plugins/inspect/plugin-ivtc.xml
index 37360f4..9e2eeac 100644
--- a/docs/plugins/inspect/plugin-ivtc.xml
+++ b/docs/plugins/inspect/plugin-ivtc.xml
@@ -3,7 +3,7 @@
   <description>Inverse Telecine</description>
   <filename>../../gst/ivtc/.libs/libgstivtc.so</filename>
   <basename>libgstivtc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-jp2kdecimator.xml b/docs/plugins/inspect/plugin-jp2kdecimator.xml
index edb7eb9..c4a04f2 100644
--- a/docs/plugins/inspect/plugin-jp2kdecimator.xml
+++ b/docs/plugins/inspect/plugin-jp2kdecimator.xml
@@ -3,7 +3,7 @@
   <description>JPEG2000 decimator</description>
   <filename>../../gst/jp2kdecimator/.libs/libgstjp2kdecimator.so</filename>
   <basename>libgstjp2kdecimator.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jpegformat.xml b/docs/plugins/inspect/plugin-jpegformat.xml
index 613ee35..07484d7 100644
--- a/docs/plugins/inspect/plugin-jpegformat.xml
+++ b/docs/plugins/inspect/plugin-jpegformat.xml
@@ -3,7 +3,7 @@
   <description>JPEG interchange format plugin</description>
   <filename>../../gst/jpegformat/.libs/libgstjpegformat.so</filename>
   <basename>libgstjpegformat.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-kate.xml b/docs/plugins/inspect/plugin-kate.xml
index 859f2bf..201be6d 100644
--- a/docs/plugins/inspect/plugin-kate.xml
+++ b/docs/plugins/inspect/plugin-kate.xml
@@ -3,7 +3,7 @@
   <description>Kate plugin</description>
   <filename>../../ext/kate/.libs/libgstkate.so</filename>
   <basename>libgstkate.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index ac58f8e..54bdea7 100644
--- a/docs/plugins/inspect/plugin-ladspa.xml
+++ b/docs/plugins/inspect/plugin-ladspa.xml
@@ -3,7 +3,7 @@
   <description>LADSPA plugin</description>
   <filename>../../ext/ladspa/.libs/libgstladspa.so</filename>
   <basename>libgstladspa.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-libde265.xml b/docs/plugins/inspect/plugin-libde265.xml
index abbb845..6a96df2 100644
--- a/docs/plugins/inspect/plugin-libde265.xml
+++ b/docs/plugins/inspect/plugin-libde265.xml
@@ -3,7 +3,7 @@
   <description>HEVC/H.265 decoder using libde265</description>
   <filename>../../ext/libde265/.libs/libgstlibde265.so</filename>
   <basename>libgstlibde265.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-midi.xml b/docs/plugins/inspect/plugin-midi.xml
index a877718..616dfaa 100644
--- a/docs/plugins/inspect/plugin-midi.xml
+++ b/docs/plugins/inspect/plugin-midi.xml
@@ -3,7 +3,7 @@
   <description>Parse MIDI files</description>
   <filename>../../gst/midi/.libs/libgstmidi.so</filename>
   <basename>libgstmidi.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mimic.xml b/docs/plugins/inspect/plugin-mimic.xml
index c9c5545..5a7bb65 100644
--- a/docs/plugins/inspect/plugin-mimic.xml
+++ b/docs/plugins/inspect/plugin-mimic.xml
@@ -3,7 +3,7 @@
   <description>Mimic codec</description>
   <filename>../../ext/mimic/.libs/libgstmimic.so</filename>
   <basename>libgstmimic.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mms.xml b/docs/plugins/inspect/plugin-mms.xml
index 21796e4..e169b25 100644
--- a/docs/plugins/inspect/plugin-mms.xml
+++ b/docs/plugins/inspect/plugin-mms.xml
@@ -3,7 +3,7 @@
   <description>Microsoft Multi Media Server streaming protocol support</description>
   <filename>../../ext/libmms/.libs/libgstmms.so</filename>
   <basename>libgstmms.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-modplug.xml b/docs/plugins/inspect/plugin-modplug.xml
index d5433d7..0306af5 100644
--- a/docs/plugins/inspect/plugin-modplug.xml
+++ b/docs/plugins/inspect/plugin-modplug.xml
@@ -3,7 +3,7 @@
   <description>.MOD audio decoding</description>
   <filename>../../ext/modplug/.libs/libgstmodplug.so</filename>
   <basename>libgstmodplug.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpeg2enc.xml b/docs/plugins/inspect/plugin-mpeg2enc.xml
index 7f53bb8..9090713 100644
--- a/docs/plugins/inspect/plugin-mpeg2enc.xml
+++ b/docs/plugins/inspect/plugin-mpeg2enc.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG-1/2 video encoder</description>
   <filename>../../ext/mpeg2enc/.libs/libgstmpeg2enc.so</filename>
   <basename>libgstmpeg2enc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsdemux.xml b/docs/plugins/inspect/plugin-mpegpsdemux.xml
index 3476983..46e024a 100644
--- a/docs/plugins/inspect/plugin-mpegpsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS demuxer</description>
   <filename>../../gst/mpegdemux/.libs/libgstmpegpsdemux.so</filename>
   <basename>libgstmpegpsdemux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index 2c6beb2..9b21328 100644
--- a/docs/plugins/inspect/plugin-mpegpsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS muxer</description>
   <filename>../../gst/mpegpsmux/.libs/libgstmpegpsmux.so</filename>
   <basename>libgstmpegpsmux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsdemux.xml b/docs/plugins/inspect/plugin-mpegtsdemux.xml
index 36a001e..9727804 100644
--- a/docs/plugins/inspect/plugin-mpegtsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG TS demuxer</description>
   <filename>../../gst/mpegtsdemux/.libs/libgstmpegtsdemux.so</filename>
   <basename>libgstmpegtsdemux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index 2e22776..175e407 100644
--- a/docs/plugins/inspect/plugin-mpegtsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-TS muxer</description>
   <filename>../../gst/mpegtsmux/.libs/libgstmpegtsmux.so</filename>
   <basename>libgstmpegtsmux.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mplex.xml b/docs/plugins/inspect/plugin-mplex.xml
index 15cdaab..54f6abd 100644
--- a/docs/plugins/inspect/plugin-mplex.xml
+++ b/docs/plugins/inspect/plugin-mplex.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG/DVD/SVCD/VCD video/audio multiplexer</description>
   <filename>../../ext/mplex/.libs/libgstmplex.so</filename>
   <basename>libgstmplex.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-musepack.xml b/docs/plugins/inspect/plugin-musepack.xml
index 199b2fe..68bf9b2 100644
--- a/docs/plugins/inspect/plugin-musepack.xml
+++ b/docs/plugins/inspect/plugin-musepack.xml
@@ -3,7 +3,7 @@
   <description>Musepack decoder</description>
   <filename>../../ext/musepack/.libs/libgstmusepack.so</filename>
   <basename>libgstmusepack.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index c38703c..afd22cd 100644
--- a/docs/plugins/inspect/plugin-mxf.xml
+++ b/docs/plugins/inspect/plugin-mxf.xml
@@ -3,7 +3,7 @@
   <description>MXF plugin library</description>
   <filename>../../gst/mxf/.libs/libgstmxf.so</filename>
   <basename>libgstmxf.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-netsim.xml b/docs/plugins/inspect/plugin-netsim.xml
index 2817b0b..4657118 100644
--- a/docs/plugins/inspect/plugin-netsim.xml
+++ b/docs/plugins/inspect/plugin-netsim.xml
@@ -3,7 +3,7 @@
   <description>Network Simulator</description>
   <filename>../../gst/netsim/.libs/libgstnetsim.so</filename>
   <basename>libgstnetsim.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ofa.xml b/docs/plugins/inspect/plugin-ofa.xml
index 7a31c0e..1122560 100644
--- a/docs/plugins/inspect/plugin-ofa.xml
+++ b/docs/plugins/inspect/plugin-ofa.xml
@@ -3,7 +3,7 @@
   <description>Calculate MusicIP fingerprint from audio files</description>
   <filename>../../ext/ofa/.libs/libgstofa.so</filename>
   <basename>libgstofa.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openal.xml b/docs/plugins/inspect/plugin-openal.xml
index cecc670..6303120 100644
--- a/docs/plugins/inspect/plugin-openal.xml
+++ b/docs/plugins/inspect/plugin-openal.xml
@@ -3,7 +3,7 @@
   <description>OpenAL plugin library</description>
   <filename>../../ext/openal/.libs/libgstopenal.so</filename>
   <basename>libgstopenal.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opencv.xml b/docs/plugins/inspect/plugin-opencv.xml
index 2034de8..7044368 100644
--- a/docs/plugins/inspect/plugin-opencv.xml
+++ b/docs/plugins/inspect/plugin-opencv.xml
@@ -3,7 +3,7 @@
   <description>GStreamer OpenCV Plugins</description>
   <filename>../../ext/opencv/.libs/libgstopencv.so</filename>
   <basename>libgstopencv.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index 29cc0e8..ac58fe0 100644
--- a/docs/plugins/inspect/plugin-openexr.xml
+++ b/docs/plugins/inspect/plugin-openexr.xml
@@ -3,7 +3,7 @@
   <description>OpenEXR image plugin</description>
   <filename>../../ext/openexr/.libs/libgstopenexr.so</filename>
   <basename>libgstopenexr.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opengl.xml b/docs/plugins/inspect/plugin-opengl.xml
index 219894a..66a8ce5 100644
--- a/docs/plugins/inspect/plugin-opengl.xml
+++ b/docs/plugins/inspect/plugin-opengl.xml
@@ -3,7 +3,7 @@
   <description>OpenGL plugin</description>
   <filename>../../ext/gl/.libs/libgstopengl.so</filename>
   <basename>libgstopengl.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
index bb0235c..0f5a2cb 100644
--- a/docs/plugins/inspect/plugin-openh264.xml
+++ b/docs/plugins/inspect/plugin-openh264.xml
@@ -3,7 +3,7 @@
   <description>OpenH264 encoder/decoder plugin</description>
   <filename>../../ext/openh264/.libs/libgstopenh264.so</filename>
   <basename>libgstopenh264.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>OpenWebRTC GStreamer plugins</package>
diff --git a/docs/plugins/inspect/plugin-openjpeg.xml b/docs/plugins/inspect/plugin-openjpeg.xml
index a5005ae..8a517b1 100644
--- a/docs/plugins/inspect/plugin-openjpeg.xml
+++ b/docs/plugins/inspect/plugin-openjpeg.xml
@@ -3,7 +3,7 @@
   <description>OpenJPEG-based JPEG2000 image decoder/encoder</description>
   <filename>../../ext/openjpeg/.libs/libgstopenjpeg.so</filename>
   <basename>libgstopenjpeg.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opusparse.xml b/docs/plugins/inspect/plugin-opusparse.xml
index ecd5317..117c71f 100644
--- a/docs/plugins/inspect/plugin-opusparse.xml
+++ b/docs/plugins/inspect/plugin-opusparse.xml
@@ -3,7 +3,7 @@
   <description>OPUS parse plugin</description>
   <filename>../../ext/opus/.libs/libgstopusparse.so</filename>
   <basename>libgstopusparse.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pcapparse.xml b/docs/plugins/inspect/plugin-pcapparse.xml
index e77210d..d655a44 100644
--- a/docs/plugins/inspect/plugin-pcapparse.xml
+++ b/docs/plugins/inspect/plugin-pcapparse.xml
@@ -3,7 +3,7 @@
   <description>Element parsing raw pcap streams</description>
   <filename>../../gst/pcapparse/.libs/libgstpcapparse.so</filename>
   <basename>libgstpcapparse.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-pnm.xml b/docs/plugins/inspect/plugin-pnm.xml
index 381acaa..5ff5c56 100644
--- a/docs/plugins/inspect/plugin-pnm.xml
+++ b/docs/plugins/inspect/plugin-pnm.xml
@@ -3,7 +3,7 @@
   <description>PNM plugin</description>
   <filename>../../gst/pnm/.libs/libgstpnm.so</filename>
   <basename>libgstpnm.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-qt.xml b/docs/plugins/inspect/plugin-qt.xml
index f256f50..26265a9 100644
--- a/docs/plugins/inspect/plugin-qt.xml
+++ b/docs/plugins/inspect/plugin-qt.xml
@@ -3,7 +3,7 @@
   <description>Qt gl plugin</description>
   <filename>../../ext/qt/.libs/libgstqmlgl.so</filename>
   <basename>libgstqmlgl.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rawparse.xml b/docs/plugins/inspect/plugin-rawparse.xml
index 0ca7cba..974654f 100644
--- a/docs/plugins/inspect/plugin-rawparse.xml
+++ b/docs/plugins/inspect/plugin-rawparse.xml
@@ -3,7 +3,7 @@
   <description>Parses byte streams into raw frames</description>
   <filename>../../gst/rawparse/.libs/libgstrawparse.so</filename>
   <basename>libgstrawparse.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index 07f5645..79eafd6 100644
--- a/docs/plugins/inspect/plugin-removesilence.xml
+++ b/docs/plugins/inspect/plugin-removesilence.xml
@@ -3,7 +3,7 @@
   <description>Removes silence from an audio stream</description>
   <filename>../../gst/removesilence/.libs/libgstremovesilence.so</filename>
   <basename>libgstremovesilence.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-resindvd.xml b/docs/plugins/inspect/plugin-resindvd.xml
index 61a49c3..95d3aa7 100644
--- a/docs/plugins/inspect/plugin-resindvd.xml
+++ b/docs/plugins/inspect/plugin-resindvd.xml
@@ -3,7 +3,7 @@
   <description>Resin DVD playback elements</description>
   <filename>../../ext/resindvd/.libs/libgstresindvd.so</filename>
   <basename>libgstresindvd.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index 5ca2abd..43cad1d 100644
--- a/docs/plugins/inspect/plugin-rfbsrc.xml
+++ b/docs/plugins/inspect/plugin-rfbsrc.xml
@@ -3,7 +3,7 @@
   <description>Connects to a VNC server and decodes RFB stream</description>
   <filename>../../gst/librfb/.libs/libgstrfbsrc.so</filename>
   <basename>libgstrfbsrc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rsvg.xml b/docs/plugins/inspect/plugin-rsvg.xml
index d65683f..0eeb12a 100644
--- a/docs/plugins/inspect/plugin-rsvg.xml
+++ b/docs/plugins/inspect/plugin-rsvg.xml
@@ -3,7 +3,7 @@
   <description>RSVG plugin library</description>
   <filename>../../ext/rsvg/.libs/libgstrsvg.so</filename>
   <basename>libgstrsvg.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtmp.xml b/docs/plugins/inspect/plugin-rtmp.xml
index 49b1c18..93fa58f 100644
--- a/docs/plugins/inspect/plugin-rtmp.xml
+++ b/docs/plugins/inspect/plugin-rtmp.xml
@@ -3,7 +3,7 @@
   <description>RTMP source and sink</description>
   <filename>../../ext/rtmp/.libs/libgstrtmp.so</filename>
   <basename>libgstrtmp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtponvif.xml b/docs/plugins/inspect/plugin-rtponvif.xml
index 89b0200..fd4223e 100644
--- a/docs/plugins/inspect/plugin-rtponvif.xml
+++ b/docs/plugins/inspect/plugin-rtponvif.xml
@@ -3,7 +3,7 @@
   <description>ONVIF Streaming features</description>
   <filename>../../gst/onvif/.libs/libgstrtponvif.so</filename>
   <basename>libgstrtponvif.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sbc.xml b/docs/plugins/inspect/plugin-sbc.xml
index 1fde6f7..4c28baa 100644
--- a/docs/plugins/inspect/plugin-sbc.xml
+++ b/docs/plugins/inspect/plugin-sbc.xml
@@ -3,7 +3,7 @@
   <description>SBC bluetooth audio support</description>
   <filename>../../ext/sbc/.libs/libgstsbc.so</filename>
   <basename>libgstsbc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-schro.xml b/docs/plugins/inspect/plugin-schro.xml
index d1f044e..e49a565 100644
--- a/docs/plugins/inspect/plugin-schro.xml
+++ b/docs/plugins/inspect/plugin-schro.xml
@@ -3,7 +3,7 @@
   <description>Schroedinger plugin</description>
   <filename>../../ext/schroedinger/.libs/libgstschro.so</filename>
   <basename>libgstschro.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sdp.xml b/docs/plugins/inspect/plugin-sdp.xml
index 1d9280d..3f602aa 100644
--- a/docs/plugins/inspect/plugin-sdp.xml
+++ b/docs/plugins/inspect/plugin-sdp.xml
@@ -3,7 +3,7 @@
   <description>configure streaming sessions using SDP</description>
   <filename>../../gst/sdp/.libs/libgstsdpelem.so</filename>
   <basename>libgstsdpelem.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index eb6fea5..2448e9f 100644
--- a/docs/plugins/inspect/plugin-segmentclip.xml
+++ b/docs/plugins/inspect/plugin-segmentclip.xml
@@ -3,7 +3,7 @@
   <description>Segment clip elements</description>
   <filename>../../gst/segmentclip/.libs/libgstsegmentclip.so</filename>
   <basename>libgstsegmentclip.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shm.xml b/docs/plugins/inspect/plugin-shm.xml
index 21c1021..24b640d 100644
--- a/docs/plugins/inspect/plugin-shm.xml
+++ b/docs/plugins/inspect/plugin-shm.xml
@@ -3,7 +3,7 @@
   <description>shared memory sink source</description>
   <filename>../../sys/shm/.libs/libgstshm.so</filename>
   <basename>libgstshm.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smooth.xml b/docs/plugins/inspect/plugin-smooth.xml
index dab54ca..df344d9 100644
--- a/docs/plugins/inspect/plugin-smooth.xml
+++ b/docs/plugins/inspect/plugin-smooth.xml
@@ -3,7 +3,7 @@
   <description>Apply a smooth filter to an image</description>
   <filename>../../gst/smooth/.libs/libgstsmooth.so</filename>
   <basename>libgstsmooth.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smoothstreaming.xml b/docs/plugins/inspect/plugin-smoothstreaming.xml
index 9beea49..a3fe17f 100644
--- a/docs/plugins/inspect/plugin-smoothstreaming.xml
+++ b/docs/plugins/inspect/plugin-smoothstreaming.xml
@@ -3,7 +3,7 @@
   <description>Microsoft&apos;s Smooth Streaming format support </description>
   <filename>../../ext/smoothstreaming/.libs/libgstsmoothstreaming.so</filename>
   <basename>libgstsmoothstreaming.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sndfile.xml b/docs/plugins/inspect/plugin-sndfile.xml
index c0e65fa..72c0131 100644
--- a/docs/plugins/inspect/plugin-sndfile.xml
+++ b/docs/plugins/inspect/plugin-sndfile.xml
@@ -3,7 +3,7 @@
   <description>use libsndfile to read and write various audio formats</description>
   <filename>../../ext/sndfile/.libs/libgstsndfile.so</filename>
   <basename>libgstsndfile.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-soundtouch.xml b/docs/plugins/inspect/plugin-soundtouch.xml
index d1a5a87..c4c33dc 100644
--- a/docs/plugins/inspect/plugin-soundtouch.xml
+++ b/docs/plugins/inspect/plugin-soundtouch.xml
@@ -3,7 +3,7 @@
   <description>Audio Pitch Controller &amp; BPM Detection</description>
   <filename>../../ext/soundtouch/.libs/libgstsoundtouch.so</filename>
   <basename>libgstsoundtouch.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-spandsp.xml b/docs/plugins/inspect/plugin-spandsp.xml
index b473ded..e347d0c 100644
--- a/docs/plugins/inspect/plugin-spandsp.xml
+++ b/docs/plugins/inspect/plugin-spandsp.xml
@@ -3,7 +3,7 @@
   <description>libspandsp plugin</description>
   <filename>../../ext/spandsp/.libs/libgstspandsp.so</filename>
   <basename>libgstspandsp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-speed.xml b/docs/plugins/inspect/plugin-speed.xml
index 031d69c..d543444 100644
--- a/docs/plugins/inspect/plugin-speed.xml
+++ b/docs/plugins/inspect/plugin-speed.xml
@@ -3,7 +3,7 @@
   <description>Set speed/pitch on audio/raw streams (resampler)</description>
   <filename>../../gst/speed/.libs/libgstspeed.so</filename>
   <basename>libgstspeed.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-srtp.xml b/docs/plugins/inspect/plugin-srtp.xml
index 5344991..424e3af 100644
--- a/docs/plugins/inspect/plugin-srtp.xml
+++ b/docs/plugins/inspect/plugin-srtp.xml
@@ -3,7 +3,7 @@
   <description>GStreamer SRTP</description>
   <filename>../../ext/srtp/.libs/libgstsrtp.so</filename>
   <basename>libgstsrtp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-stereo.xml b/docs/plugins/inspect/plugin-stereo.xml
index b85890d..b88229b 100644
--- a/docs/plugins/inspect/plugin-stereo.xml
+++ b/docs/plugins/inspect/plugin-stereo.xml
@@ -3,7 +3,7 @@
   <description>Muck with the stereo signal, enhance it&apos;s &apos;stereo-ness&apos;</description>
   <filename>../../gst/stereo/.libs/libgststereo.so</filename>
   <basename>libgststereo.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-subenc.xml b/docs/plugins/inspect/plugin-subenc.xml
index 5de1050..1af4bc7 100644
--- a/docs/plugins/inspect/plugin-subenc.xml
+++ b/docs/plugins/inspect/plugin-subenc.xml
@@ -3,7 +3,7 @@
   <description>subtitle encoders</description>
   <filename>../../gst/subenc/.libs/libgstsubenc.so</filename>
   <basename>libgstsubenc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-teletext.xml b/docs/plugins/inspect/plugin-teletext.xml
index fa8223f..8b849db 100644
--- a/docs/plugins/inspect/plugin-teletext.xml
+++ b/docs/plugins/inspect/plugin-teletext.xml
@@ -3,7 +3,7 @@
   <description>Teletext plugin</description>
   <filename>../../ext/teletextdec/.libs/libgstteletextdec.so</filename>
   <basename>libgstteletextdec.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-timecode.xml b/docs/plugins/inspect/plugin-timecode.xml
index 0c96a88..e05ebc9 100644
--- a/docs/plugins/inspect/plugin-timecode.xml
+++ b/docs/plugins/inspect/plugin-timecode.xml
@@ -3,7 +3,7 @@
   <description>Timecode-related elements</description>
   <filename>../../gst/timecode/.libs/libgsttimecode.so</filename>
   <basename>libgsttimecode.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index 321591b..d0ec4c7 100644
--- a/docs/plugins/inspect/plugin-uvch264.xml
+++ b/docs/plugins/inspect/plugin-uvch264.xml
@@ -3,7 +3,7 @@
   <description>UVC compliant H264 encoding cameras plugin</description>
   <filename>../../sys/uvch264/.libs/libgstuvch264.so</filename>
   <basename>libgstuvch264.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vcdsrc.xml b/docs/plugins/inspect/plugin-vcdsrc.xml
index 2685d26..73c14e7 100644
--- a/docs/plugins/inspect/plugin-vcdsrc.xml
+++ b/docs/plugins/inspect/plugin-vcdsrc.xml
@@ -3,7 +3,7 @@
   <description>Asynchronous read from VCD disk</description>
   <filename>../../sys/vcd/.libs/libgstvcdsrc.so</filename>
   <basename>libgstvcdsrc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videofiltersbad.xml b/docs/plugins/inspect/plugin-videofiltersbad.xml
index c272243..92e5a81 100644
--- a/docs/plugins/inspect/plugin-videofiltersbad.xml
+++ b/docs/plugins/inspect/plugin-videofiltersbad.xml
@@ -3,7 +3,7 @@
   <description>Video filters in gst-plugins-bad</description>
   <filename>../../gst/videofilters/.libs/libgstvideofiltersbad.so</filename>
   <basename>libgstvideofiltersbad.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
index 95710c2..1e01dd7 100644
--- a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
+++ b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
@@ -3,7 +3,7 @@
   <description>Video frame-synchronized audio level</description>
   <filename>../../gst/videoframe_audiolevel/.libs/libgstvideoframe_audiolevel.so</filename>
   <basename>libgstvideoframe_audiolevel.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videoparsersbad.xml b/docs/plugins/inspect/plugin-videoparsersbad.xml
index 9aebfca..cb2c42b 100644
--- a/docs/plugins/inspect/plugin-videoparsersbad.xml
+++ b/docs/plugins/inspect/plugin-videoparsersbad.xml
@@ -3,7 +3,7 @@
   <description>videoparsers</description>
   <filename>../../gst/videoparsers/.libs/libgstvideoparsersbad.so</filename>
   <basename>libgstvideoparsersbad.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index bfb66f9..ac92a0b 100644
--- a/docs/plugins/inspect/plugin-videosignal.xml
+++ b/docs/plugins/inspect/plugin-videosignal.xml
@@ -3,7 +3,7 @@
   <description>Various video signal analysers</description>
   <filename>../../gst/videosignal/.libs/libgstvideosignal.so</filename>
   <basename>libgstvideosignal.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vmnc.xml b/docs/plugins/inspect/plugin-vmnc.xml
index 507c47d..a420050 100644
--- a/docs/plugins/inspect/plugin-vmnc.xml
+++ b/docs/plugins/inspect/plugin-vmnc.xml
@@ -3,7 +3,7 @@
   <description>VmWare Video Codec plugins</description>
   <filename>../../gst/vmnc/.libs/libgstvmnc.so</filename>
   <basename>libgstvmnc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voaacenc.xml b/docs/plugins/inspect/plugin-voaacenc.xml
index 62dc452..af2f4b6 100644
--- a/docs/plugins/inspect/plugin-voaacenc.xml
+++ b/docs/plugins/inspect/plugin-voaacenc.xml
@@ -3,7 +3,7 @@
   <description>AAC audio encoder</description>
   <filename>../../ext/voaacenc/.libs/libgstvoaacenc.so</filename>
   <basename>libgstvoaacenc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voamrwbenc.xml b/docs/plugins/inspect/plugin-voamrwbenc.xml
index 0f8ca26..0952d4b 100644
--- a/docs/plugins/inspect/plugin-voamrwbenc.xml
+++ b/docs/plugins/inspect/plugin-voamrwbenc.xml
@@ -3,7 +3,7 @@
   <description>Adaptive Multi-Rate Wide-Band Encoder</description>
   <filename>../../ext/voamrwbenc/.libs/libgstvoamrwbenc.so</filename>
   <basename>libgstvoamrwbenc.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-waylandsink.xml b/docs/plugins/inspect/plugin-waylandsink.xml
index 5671b2f..99aef7a 100644
--- a/docs/plugins/inspect/plugin-waylandsink.xml
+++ b/docs/plugins/inspect/plugin-waylandsink.xml
@@ -3,7 +3,7 @@
   <description>Wayland Video Sink</description>
   <filename>../../ext/wayland/.libs/libgstwaylandsink.so</filename>
   <basename>libgstwaylandsink.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webp.xml b/docs/plugins/inspect/plugin-webp.xml
index 08b8028..bfec6f4 100644
--- a/docs/plugins/inspect/plugin-webp.xml
+++ b/docs/plugins/inspect/plugin-webp.xml
@@ -3,7 +3,7 @@
   <description>WebP plugin</description>
   <filename>../../ext/webp/.libs/libgstwebp.so</filename>
   <basename>libgstwebp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webrtcdsp.xml b/docs/plugins/inspect/plugin-webrtcdsp.xml
index 78fff60..98e8be9 100644
--- a/docs/plugins/inspect/plugin-webrtcdsp.xml
+++ b/docs/plugins/inspect/plugin-webrtcdsp.xml
@@ -3,7 +3,7 @@
   <description>Voice pre-processing using WebRTC Audio Processing Library</description>
   <filename>../../ext/webrtcdsp/.libs/libgstwebrtcdsp.so</filename>
   <basename>libgstwebrtcdsp.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>WebRTCDsp</package>
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index 3b1a1c7..e3e4d32 100644
--- a/docs/plugins/inspect/plugin-wildmidi.xml
+++ b/docs/plugins/inspect/plugin-wildmidi.xml
@@ -3,7 +3,7 @@
   <description>Wildmidi Plugin</description>
   <filename>../../ext/timidity/.libs/libgstwildmidi.so</filename>
   <basename>libgstwildmidi.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-x265.xml b/docs/plugins/inspect/plugin-x265.xml
index b1e86df..b58cb39 100644
--- a/docs/plugins/inspect/plugin-x265.xml
+++ b/docs/plugins/inspect/plugin-x265.xml
@@ -3,7 +3,7 @@
   <description>x265-based H265 plugins</description>
   <filename>../../ext/x265/.libs/libgstx265.so</filename>
   <basename>libgstx265.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-y4mdec.xml b/docs/plugins/inspect/plugin-y4mdec.xml
index d7d3771..351642d 100644
--- a/docs/plugins/inspect/plugin-y4mdec.xml
+++ b/docs/plugins/inspect/plugin-y4mdec.xml
@@ -3,7 +3,7 @@
   <description>Demuxes/decodes YUV4MPEG streams</description>
   <filename>../../gst/y4m/.libs/libgsty4mdec.so</filename>
   <basename>libgsty4mdec.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-yadif.xml b/docs/plugins/inspect/plugin-yadif.xml
index 4996de5..d7c00c6 100644
--- a/docs/plugins/inspect/plugin-yadif.xml
+++ b/docs/plugins/inspect/plugin-yadif.xml
@@ -3,7 +3,7 @@
   <description>YADIF deinterlacing filter</description>
   <filename>../../gst/yadif/.libs/libgstyadif.so</filename>
   <basename>libgstyadif.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-zbar.xml b/docs/plugins/inspect/plugin-zbar.xml
index 24aaed9..3cd3107 100644
--- a/docs/plugins/inspect/plugin-zbar.xml
+++ b/docs/plugins/inspect/plugin-zbar.xml
@@ -3,7 +3,7 @@
   <description>zbar barcode scanner</description>
   <filename>../../ext/zbar/.libs/libgstzbar.so</filename>
   <basename>libgstzbar.so</basename>
-  <version>1.10.1</version>
+  <version>1.10.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index 242a7c2..271f70f 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -2676,6 +2676,10 @@
     g_object_unref (dash_stream->sidx_adapter);
   if (dash_stream->isobmff_adapter)
     g_object_unref (dash_stream->isobmff_adapter);
+  if (dash_stream->moof)
+    gst_isoff_moof_box_free (dash_stream->moof);
+  if (dash_stream->moof_sync_samples)
+    g_array_free (dash_stream->moof_sync_samples, TRUE);
 }
 
 static GstDashDemuxClockDrift *
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c
index e6d7283..15d6d98 100644
--- a/ext/dash/gstmpdparser.c
+++ b/ext/dash/gstmpdparser.c
@@ -985,11 +985,11 @@
     goto error;
   }
   /* skip leading/trailing whitespace */
-  while (strchr (" \t", str[0])) {
+  while (g_ascii_isspace (str[0])) {
     str++;
     len--;
   }
-  while (len > 0 && strchr (" \t", str[len - 1]))
+  while (len > 0 && g_ascii_isspace (str[len - 1]))
     --len;
 
   /* read "P" for period */
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index bb91f30..9247d45 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -296,7 +296,7 @@
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
   GstFormat format;
   GstSeekFlags flags;
-  GstSeekType start_type, stop_type;
+  GstSeekType start_type, stop_type, target_type;
   gint64 start, stop;
   gdouble rate, old_rate;
   GList *walk, *stream_walk;
@@ -348,6 +348,7 @@
     /* TODO why not continue using the same? that was being used up to now? */
     gst_hls_demux_change_playlist (hlsdemux, bitrate, NULL);
   }
+
   for (stream_walk = demux->streams; stream_walk != NULL;
       stream_walk = stream_walk->next) {
     GstHLSDemuxStream *hls_stream =
@@ -358,66 +359,73 @@
     current_pos = 0;
     reverse = rate < 0;
     target_pos = reverse ? stop : start;
+    target_type = reverse ? stop_type : start_type;
 
-    /* Snap to segment boundary. Improves seek performance on slow machines. */
-    keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
-    snap_nearest =
-        (flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST;
-    snap_before = ! !(flags & GST_SEEK_FLAG_SNAP_BEFORE);
-    snap_after = ! !(flags & GST_SEEK_FLAG_SNAP_AFTER);
+    if (target_type == GST_SEEK_TYPE_NONE && !(flags & GST_SEEK_FLAG_FLUSH)) {
+      /* No need to move */
+      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+          start, stop_type, stop, NULL);
+    } else {
+      /* Snap to segment boundary. Improves seek performance on slow machines. */
+      keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
+      snap_nearest =
+          (flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST;
+      snap_before = ! !(flags & GST_SEEK_FLAG_SNAP_BEFORE);
+      snap_after = ! !(flags & GST_SEEK_FLAG_SNAP_AFTER);
 
-    GST_M3U8_CLIENT_LOCK (hlsdemux->client);
-    /* FIXME: Here we need proper discont handling */
-    for (walk = hls_stream->playlist->files; walk; walk = walk->next) {
-      file = walk->data;
+      GST_M3U8_CLIENT_LOCK (hlsdemux->client);
+      /* FIXME: Here we need proper discont handling */
+      for (walk = hls_stream->playlist->files; walk; walk = walk->next) {
+        file = walk->data;
 
-      current_sequence = file->sequence;
-      if ((!reverse && snap_after) || snap_nearest) {
-        if (current_pos >= target_pos)
-          break;
-        if (snap_nearest && target_pos - current_pos < file->duration / 2)
-          break;
-      } else if (reverse && snap_after) {
-        /* check if the next fragment is our target, in this case we want to
-         * start from the previous fragment */
-        GstClockTime next_pos = current_pos + file->duration;
+        current_sequence = file->sequence;
+        if ((!reverse && snap_after) || snap_nearest) {
+          if (current_pos >= target_pos)
+            break;
+          if (snap_nearest && target_pos - current_pos < file->duration / 2)
+            break;
+        } else if (reverse && snap_after) {
+          /* check if the next fragment is our target, in this case we want to
+           * start from the previous fragment */
+          GstClockTime next_pos = current_pos + file->duration;
 
-        if (next_pos <= target_pos && target_pos < next_pos + file->duration) {
+          if (next_pos <= target_pos && target_pos < next_pos + file->duration) {
+            break;
+          }
+        } else if (current_pos <= target_pos
+            && target_pos < current_pos + file->duration) {
           break;
         }
-      } else if (current_pos <= target_pos
-          && target_pos < current_pos + file->duration) {
-        break;
-      }
-      current_pos += file->duration;
-    }
-
-    if (walk == NULL) {
-      GST_DEBUG_OBJECT (demux, "seeking further than track duration");
-      current_sequence++;
-    }
-
-    GST_DEBUG_OBJECT (demux, "seeking to sequence %u",
-        (guint) current_sequence);
-    hls_stream->reset_pts = TRUE;
-    hls_stream->playlist->sequence = current_sequence;
-    hls_stream->playlist->current_file = walk;
-    hls_stream->playlist->sequence_position = current_pos;
-    GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
-
-    /* Play from the end of the current selected segment */
-    if (file) {
-      if (reverse && (snap_before || snap_after || snap_nearest))
         current_pos += file->duration;
-    }
+      }
 
-    if (keyunit || snap_before || snap_after || snap_nearest) {
-      if (!reverse)
-        gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-            current_pos, stop_type, stop, NULL);
-      else
-        gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-            start, stop_type, current_pos, NULL);
+      if (walk == NULL) {
+        GST_DEBUG_OBJECT (demux, "seeking further than track duration");
+        current_sequence++;
+      }
+
+      GST_DEBUG_OBJECT (demux, "seeking to sequence %u",
+          (guint) current_sequence);
+      hls_stream->reset_pts = TRUE;
+      hls_stream->playlist->sequence = current_sequence;
+      hls_stream->playlist->current_file = walk;
+      hls_stream->playlist->sequence_position = current_pos;
+      GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
+
+      /* Play from the end of the current selected segment */
+      if (file) {
+        if (reverse && (snap_before || snap_after || snap_nearest))
+          current_pos += file->duration;
+      }
+
+      if (keyunit || snap_before || snap_after || snap_nearest) {
+        if (!reverse)
+          gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+              current_pos, stop_type, stop, NULL);
+        else
+          gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+              start, stop_type, current_pos, NULL);
+      }
     }
   }
 
diff --git a/ext/hls/m3u8.c b/ext/hls/m3u8.c
index 2f22c13..788743f 100644
--- a/ext/hls/m3u8.c
+++ b/ext/hls/m3u8.c
@@ -33,7 +33,7 @@
 
 static GstM3U8MediaFile *gst_m3u8_media_file_new (gchar * uri,
     gchar * title, GstClockTime duration, guint sequence);
-gchar *uri_join (const gchar * uri, const gchar * path);
+static gchar *uri_join (const gchar * uri, const gchar * path);
 
 GstM3U8 *
 gst_m3u8_new (void)
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index f7c24a3..f29cb71 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -167,6 +167,7 @@
 		$(GL_CFLAGS) \
 		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
 		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
 		--library=libgstgl-@GST_API_VERSION@.la \
 		--include=Gst-@GST_API_VERSION@ \
 		--include=GstBase-@GST_API_VERSION@ \
@@ -198,6 +199,7 @@
 		--includedir=$(builddir) \
 		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
 		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
 		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/gst-libs/gst/gl/Makefile.in b/gst-libs/gst/gl/Makefile.in
index 0c18cd1..16e666d 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -1728,6 +1728,7 @@
 @HAVE_INTROSPECTION_TRUE@		$(GL_CFLAGS) \
 @HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
 @HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+@HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
 @HAVE_INTROSPECTION_TRUE@		--library=libgstgl-@GST_API_VERSION@.la \
 @HAVE_INTROSPECTION_TRUE@		--include=Gst-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--include=GstBase-@GST_API_VERSION@ \
@@ -1750,6 +1751,7 @@
 @HAVE_INTROSPECTION_TRUE@		--includedir=$(builddir) \
 @HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
 @HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+@HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c
index eb46e6c..975f7d8 100644
--- a/gst-libs/gst/gl/gstglcontext.c
+++ b/gst-libs/gst/gl/gstglcontext.c
@@ -201,6 +201,7 @@
   /* conditions */
   GMutex render_lock;
   GCond create_cond;
+  GCond destroy_cond;
 
   gboolean created;
   gboolean alive;
@@ -272,6 +273,7 @@
   g_mutex_init (&context->priv->render_lock);
 
   g_cond_init (&context->priv->create_cond);
+  g_cond_init (&context->priv->destroy_cond);
   context->priv->created = FALSE;
 
   g_weak_ref_init (&context->priv->other_context_ref, NULL);
@@ -656,22 +658,20 @@
     gst_gl_window_set_resize_callback (context->window, NULL, NULL, NULL);
     gst_gl_window_set_draw_callback (context->window, NULL, NULL, NULL);
 
+    g_mutex_lock (&context->priv->render_lock);
     if (context->priv->alive) {
       GST_INFO_OBJECT (context, "send quit gl window loop");
       gst_gl_window_quit (context->window);
 
       GST_INFO_OBJECT (context, "joining gl thread");
-      g_mutex_lock (&context->priv->render_lock);
-      if (context->priv->alive) {
-        GThread *t = context->priv->gl_thread;
-        g_mutex_unlock (&context->priv->render_lock);
-        g_thread_join (t);
-      } else {
-        g_mutex_unlock (&context->priv->render_lock);
-      }
+      while (context->priv->alive)
+        g_cond_wait (&context->priv->destroy_cond, &context->priv->render_lock);
       GST_INFO_OBJECT (context, "gl thread joined");
+
+      g_thread_unref (context->priv->gl_thread);
       context->priv->gl_thread = NULL;
     }
+    g_mutex_unlock (&context->priv->render_lock);
 
     gst_gl_window_set_close_callback (context->window, NULL, NULL, NULL);
     gst_object_unref (context->window);
@@ -690,6 +690,7 @@
   g_mutex_clear (&context->priv->render_lock);
 
   g_cond_clear (&context->priv->create_cond);
+  g_cond_clear (&context->priv->destroy_cond);
 
   g_free (context->priv->gl_exts);
   g_weak_ref_clear (&context->priv->other_context_ref);
@@ -1290,6 +1291,7 @@
   }
 
   context->priv->created = FALSE;
+  g_cond_signal (&context->priv->destroy_cond);
   g_mutex_unlock (&context->priv->render_lock);
 
   return NULL;
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index 3ac2441..7a275e4 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -142,35 +142,12 @@
 static gboolean
 gst_gl_window_default_open (GstGLWindow * window, GError ** error)
 {
-  GstGLWindowPrivate *priv = window->priv;
-
-  if (g_main_context_get_thread_default ()) {
-    if (priv->main_context)
-      g_main_context_unref (priv->main_context);
-    if (priv->loop)
-      g_main_loop_unref (priv->loop);
-    priv->main_context = g_main_context_ref_thread_default ();
-    priv->loop = NULL;
-    priv->alive = TRUE;
-  } else {
-    g_main_context_push_thread_default (priv->main_context);
-  }
-
   return TRUE;
 }
 
 static void
 gst_gl_window_default_close (GstGLWindow * window)
 {
-  GstGLWindowPrivate *priv = window->priv;
-
-  if (!priv->loop) {
-    priv->alive = FALSE;
-    g_main_context_unref (priv->main_context);
-    priv->main_context = NULL;
-  } else {
-    g_main_context_pop_thread_default (priv->main_context);
-  }
 }
 
 static void
@@ -543,7 +520,29 @@
 static void
 gst_gl_window_default_run (GstGLWindow * window)
 {
-  g_main_loop_run (window->priv->loop);
+  GstGLWindowPrivate *priv = window->priv;
+
+  if (g_main_context_get_thread_default ()) {
+    if (priv->main_context)
+      g_main_context_unref (priv->main_context);
+    if (priv->loop)
+      g_main_loop_unref (priv->loop);
+    priv->main_context = g_main_context_ref_thread_default ();
+    priv->loop = NULL;
+    priv->alive = TRUE;
+  } else {
+    g_main_context_push_thread_default (priv->main_context);
+  }
+
+  g_main_loop_run (priv->loop);
+
+  if (!priv->loop) {
+    priv->alive = FALSE;
+    g_main_context_unref (priv->main_context);
+    priv->main_context = NULL;
+  } else {
+    g_main_context_pop_thread_default (priv->main_context);
+  }
 }
 
 /**
diff --git a/gst-libs/gst/gl/x11/gstglcontext_glx.c b/gst-libs/gst/gl/x11/gstglcontext_glx.c
index bc83230..f3a3821 100644
--- a/gst-libs/gst/gl/x11/gstglcontext_glx.c
+++ b/gst-libs/gst/gl/x11/gstglcontext_glx.c
@@ -190,7 +190,7 @@
   GstGLContextGLX *context_glx;
   GstGLWindow *window;
   GstGLWindowX11 *window_x11;
-  GstGLDisplay *display;
+  GstGLDisplay *display = NULL;
   gboolean create_context;
   const char *glx_exts;
   Display *device;
@@ -198,6 +198,14 @@
 
   context_glx = GST_GL_CONTEXT_GLX (context);
   window = gst_gl_context_get_window (context);
+
+  if (!GST_IS_GL_WINDOW_X11 (window)) {
+    g_set_error (error, GST_GL_CONTEXT_ERROR,
+        GST_GL_CONTEXT_ERROR_WRONG_CONFIG,
+        "Cannot create an GLX context from a non-X11 window");
+    goto failure;
+  }
+
   window_x11 = GST_GL_WINDOW_X11 (window);
   display = gst_gl_context_get_display (context);
 
@@ -213,6 +221,12 @@
   }
 
   device = (Display *) gst_gl_display_get_handle (display);
+  if (!device) {
+    g_set_error (error, GST_GL_CONTEXT_ERROR,
+        GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE, "Invalid Display handle");
+    goto failure;
+  }
+
   glx_exts = glXQueryExtensionsString (device, DefaultScreen (device));
 
   create_context = gst_gl_check_extension ("GLX_ARB_create_context", glx_exts);
@@ -277,7 +291,8 @@
 failure:
   if (window)
     gst_object_unref (window);
-  gst_object_unref (display);
+  if (display)
+    gst_object_unref (display);
 
   return FALSE;
 }
@@ -312,8 +327,21 @@
 
   context_glx = GST_GL_CONTEXT_GLX (context);
   window = gst_gl_context_get_window (context);
+
+  if (!GST_IS_GL_WINDOW_X11 (window)) {
+    g_set_error (error, GST_GL_CONTEXT_ERROR,
+        GST_GL_CONTEXT_ERROR_WRONG_CONFIG,
+        "Cannot create an GLX context from a non-X11 window");
+    goto failure;
+  }
   window_x11 = GST_GL_WINDOW_X11 (window);
+
   device = (Display *) gst_gl_display_get_handle (window->display);
+  if (!device) {
+    g_set_error (error, GST_GL_CONTEXT_ERROR,
+        GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE, "Invalid Display handle");
+    goto failure;
+  }
 
   if (!glXQueryExtension (device, &error_base, &event_base)) {
     g_set_error (error, GST_GL_CONTEXT_ERROR,
diff --git a/gst-libs/gst/mpegts/gstmpegtssection.c b/gst-libs/gst/mpegts/gstmpegtssection.c
index dc62ac3..5222024 100644
--- a/gst-libs/gst/mpegts/gstmpegtssection.c
+++ b/gst-libs/gst/mpegts/gstmpegtssection.c
@@ -414,7 +414,7 @@
 _parse_pat (GstMpegtsSection * section)
 {
   GPtrArray *pat;
-  guint16 i = 0, nb_programs;
+  guint16 i, nb_programs;
   GstMpegtsPatProgram *program;
   guint8 *data, *end;
 
@@ -430,7 +430,9 @@
       g_ptr_array_new_full (nb_programs,
       (GDestroyNotify) _mpegts_pat_program_free);
 
-  while (data < end - 4) {
+  GST_LOG ("nb_programs %u", nb_programs);
+
+  for (i = 0; i < nb_programs; i++) {
     program = g_slice_new0 (GstMpegtsPatProgram);
     program->program_number = GST_READ_UINT16_BE (data);
     data += 2;
@@ -439,8 +441,6 @@
     data += 2;
 
     g_ptr_array_index (pat, i) = program;
-
-    i++;
   }
   pat->len = nb_programs;
 
@@ -632,7 +632,8 @@
 {
   if (pmt->descriptors)
     g_ptr_array_unref (pmt->descriptors);
-  g_ptr_array_unref (pmt->streams);
+  if (pmt->streams)
+    g_ptr_array_unref (pmt->streams);
   g_slice_free (GstMpegtsPMT, pmt);
 }
 
@@ -714,6 +715,11 @@
     i += 1;
   }
 
+  /* Section length was longer than the actual content of the PMT */
+  if (data < end - 4)
+    goto error;
+
+  /* Ensure we did not read after the end of our array */
   g_assert (data == end - 4);
 
   return (gpointer) pmt;
@@ -1178,13 +1184,20 @@
   GstMpegtsSection *res = NULL;
   guint8 tmp;
   guint8 table_id;
-  guint16 section_length;
+  guint16 section_length = 0;
+
+  /* The smallest section ever is 3 bytes */
+  if (G_UNLIKELY (data_size < 3))
+    goto short_packet;
 
   /* Check for length */
   section_length = GST_READ_UINT16_BE (data + 1) & 0x0FFF;
   if (G_UNLIKELY (data_size < section_length + 3))
     goto short_packet;
 
+  GST_LOG ("data_size:%" G_GSIZE_FORMAT " section_length:%u",
+      data_size, section_length);
+
   /* Table id is in first byte */
   table_id = *data;
 
@@ -1199,6 +1212,13 @@
   /* section_length (already parsed) : 12 bit */
   res->section_length = section_length + 3;
   if (!res->short_section) {
+    /* A long packet needs to be at least 11 bytes long
+     * _ 3 for the bytes above
+     * _ 5 for the bytes below
+     * _ 4 for the CRC */
+    if (G_UNLIKELY (data_size < 11))
+      goto bad_long_packet;
+
     /* CRC is after section_length (-4 for the size of the CRC) */
     res->crc = GST_READ_UINT32_BE (res->data + res->section_length - 4);
     /* Skip to after section_length */
@@ -1228,6 +1248,13 @@
     g_free (data);
     return NULL;
   }
+bad_long_packet:
+  {
+    GST_WARNING ("PID 0x%04x long section is too short (%" G_GSIZE_FORMAT
+        " bytes, need at least 11)", pid, data_size);
+    gst_mpegts_section_unref (res);
+    return NULL;
+  }
 }
 
 /**
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index f00eab5..78fe530 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@
 
  <release>
   <Version>
+   <revision>1.10.2</revision>
+   <branch>1.10</branch>
+   <name></name>
+   <created>2016-11-29</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.10.2.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.10.1</revision>
    <branch>1.10</branch>
    <name></name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index df8dc00..87a344f 100644
--- a/gst-plugins-bad.spec
+++ b/gst-plugins-bad.spec
@@ -6,7 +6,7 @@
 
 Summary: GStreamer streaming media framework "bad" plug-ins
 Name: %{gstreamer}-plugins-bad
-Version: 1.10.1
+Version: 1.10.2
 Release: 1.gst
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index 16fb8ff..cc46ebb 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -928,7 +928,7 @@
   MpegTSPacketizerStream *stream;
   gboolean long_packet;
   guint8 pointer = 0, table_id;
-  guint16 subtable_extension = 0;
+  guint16 subtable_extension;
   gsize to_read;
   guint section_length;
   /* data points to the current read location
@@ -1051,9 +1051,16 @@
       res = section;
   }
 
-  /* FIXME : We need at least 8 bytes with current algorithm :(
+section_start:
+  subtable_extension = 0;
+  version_number = 0;
+  last_section_number = 0;
+  section_number = 0;
+  table_id = 0;
+
+  /* FIXME : We need at least 3 bytes (or 8 for long packets) with current algorithm :(
    * We might end up losing sections that start across two packets (srsl...) */
-  if (data > packet->data_end - 8 || *data == 0xff) {
+  if (data > packet->data_end - 3 || *data == 0xff) {
     /* flush stuffing bytes and leave */
     mpegts_packetizer_clear_section (stream);
     goto out;
@@ -1062,8 +1069,6 @@
   /* We have more data to process ... */
   GST_DEBUG ("PID 0x%04x, More section present in packet (remaining bytes:%"
       G_GSIZE_FORMAT ")", stream->pid, (gsize) (packet->data_end - data));
-
-section_start:
   GST_MEMDUMP ("section_start", data, packet->data_end - data);
   data_start = data;
   /* Beginning of a new section */
@@ -1116,6 +1121,10 @@
   data += 2;
 
   if (long_packet) {
+    /* Do we have enough data for a long packet? */
+    if (data > packet->data_end - 5)
+      goto out;
+
     /* subtable_extension (always present, we are in a long section) */
     /* subtable extension              : 16 bit */
     subtable_extension = GST_READ_UINT16_BE (data);
@@ -1864,14 +1873,20 @@
 static inline void
 _append_group_values (PCROffsetGroup * group, PCROffset pcroffset)
 {
-  group->last_value++;
-  /* Resize values if needed */
-  if (G_UNLIKELY (group->nb_allocated == group->last_value)) {
-    group->nb_allocated += DEFAULT_ALLOCATED_OFFSET;
-    group->values =
-        g_realloc (group->values, group->nb_allocated * sizeof (PCROffset));
+  /* Only append if new values */
+  if (group->values[group->last_value].offset == pcroffset.offset &&
+      group->values[group->last_value].pcr == pcroffset.pcr) {
+    GST_DEBUG ("Same values, ignoring");
+  } else {
+    group->last_value++;
+    /* Resize values if needed */
+    if (G_UNLIKELY (group->nb_allocated == group->last_value)) {
+      group->nb_allocated += DEFAULT_ALLOCATED_OFFSET;
+      group->values =
+          g_realloc (group->values, group->nb_allocated * sizeof (PCROffset));
+    }
+    group->values[group->last_value] = pcroffset;
   }
-  group->values[group->last_value] = pcroffset;
 
   GST_DEBUG ("First PCR:%" GST_TIME_FORMAT " offset:%" G_GUINT64_FORMAT
       " PCR_offset:%" GST_TIME_FORMAT,
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index fe0c3a6..c701c37 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -1870,6 +1870,7 @@
   if (demux->requested_program_number == program->program_number ||
       (demux->requested_program_number == -1 && demux->program_number == -1)) {
     GList *tmp;
+    gboolean have_pads = FALSE;
 
     GST_LOG ("program %d started", program->program_number);
     demux->program_number = program->program_number;
@@ -1906,6 +1907,8 @@
     for (tmp = program->stream_list; tmp; tmp = tmp->next) {
       TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
       activate_pad_for_stream (demux, stream);
+      if (stream->pad)
+        have_pads = TRUE;
     }
 
     /* If there was a previous program, now is the time to deactivate it
@@ -1915,6 +1918,16 @@
       mpegts_base_deactivate_and_free_program (base, demux->previous_program);
       demux->previous_program = NULL;
     }
+
+    if (!have_pads) {
+      /* If we had no pads, this stream is likely corrupted or unsupported and
+       * there's not much we can do at this point */
+      GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE,
+          ("This stream contains no valid or supported streams."),
+          ("activating program but got no pads"));
+      return;
+    }
+
     /* If any of the stream is sparse, push a GAP event before anything else
      * This is done here, and not in activate_pad_for_stream() because pushing
      * a GAP event *is* considering data, and we want to ensure the (potential)
@@ -1930,6 +1943,7 @@
         gst_pad_push_event (stream->pad, gst_event_new_gap (0, 0));
       }
     }
+
     gst_element_no_more_pads ((GstElement *) demux);
   }
 }
diff --git a/gst/mxf/Makefile.am b/gst/mxf/Makefile.am
index 2d87907..17ce6e4 100644
--- a/gst/mxf/Makefile.am
+++ b/gst/mxf/Makefile.am
@@ -16,8 +16,7 @@
 	mxfjpeg2000.c \
 	mxfd10.c \
 	mxfup.c \
-	mxfvc3.c \
-	mxfdms1.c
+	mxfvc3.c
 
 libgstmxf_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
@@ -50,5 +49,4 @@
 	mxfjpeg2000.h \
 	mxfd10.h \
 	mxfup.h \
-	mxfvc3.h \
-	mxfdms1.h
+	mxfvc3.h
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index 21ddb86..91aad56 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -173,8 +173,7 @@
 	libgstmxf_la-mxfaes-bwf.lo libgstmxf_la-mxfmpeg.lo \
 	libgstmxf_la-mxfdv-dif.lo libgstmxf_la-mxfalaw.lo \
 	libgstmxf_la-mxfjpeg2000.lo libgstmxf_la-mxfd10.lo \
-	libgstmxf_la-mxfup.lo libgstmxf_la-mxfvc3.lo \
-	libgstmxf_la-mxfdms1.lo
+	libgstmxf_la-mxfup.lo libgstmxf_la-mxfvc3.lo
 libgstmxf_la_OBJECTS = $(am_libgstmxf_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -814,8 +813,7 @@
 	mxfjpeg2000.c \
 	mxfd10.c \
 	mxfup.c \
-	mxfvc3.c \
-	mxfdms1.c
+	mxfvc3.c
 
 libgstmxf_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
@@ -849,8 +847,7 @@
 	mxfjpeg2000.h \
 	mxfd10.h \
 	mxfup.h \
-	mxfvc3.h \
-	mxfdms1.h
+	mxfvc3.h
 
 all: all-am
 
@@ -935,7 +932,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfalaw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfd10.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfdemux.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfdms1.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfdv-dif.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfessence.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmxf_la-mxfjpeg2000.Plo@am__quote@
@@ -1084,13 +1080,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmxf_la_CFLAGS) $(CFLAGS) -c -o libgstmxf_la-mxfvc3.lo `test -f 'mxfvc3.c' || echo '$(srcdir)/'`mxfvc3.c
 
-libgstmxf_la-mxfdms1.lo: mxfdms1.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmxf_la_CFLAGS) $(CFLAGS) -MT libgstmxf_la-mxfdms1.lo -MD -MP -MF $(DEPDIR)/libgstmxf_la-mxfdms1.Tpo -c -o libgstmxf_la-mxfdms1.lo `test -f 'mxfdms1.c' || echo '$(srcdir)/'`mxfdms1.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmxf_la-mxfdms1.Tpo $(DEPDIR)/libgstmxf_la-mxfdms1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mxfdms1.c' object='libgstmxf_la-mxfdms1.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmxf_la_CFLAGS) $(CFLAGS) -c -o libgstmxf_la-mxfdms1.lo `test -f 'mxfdms1.c' || echo '$(srcdir)/'`mxfdms1.c
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/gst/mxf/mxf.c b/gst/mxf/mxf.c
index 324462b..135a16e 100644
--- a/gst/mxf/mxf.c
+++ b/gst/mxf/mxf.c
@@ -25,7 +25,7 @@
 #include "mxfquark.h"
 #include "mxfdemux.h"
 #include "mxfmux.h"
-#include "mxfdms1.h"
+/*#include "mxfdms1.h"*/
 #include "mxfaes-bwf.h"
 #include "mxfalaw.h"
 #include "mxfd10.h"
@@ -59,7 +59,7 @@
   mxf_init ();
   mxf_quark_initialize ();
   mxf_metadata_init_types ();
-  mxf_dms1_initialize ();
+/*  mxf_dms1_initialize ();*/
   mxf_aes_bwf_init ();
   mxf_alaw_init ();
   mxf_d10_init ();
diff --git a/gst/mxf/mxfaes-bwf.c b/gst/mxf/mxfaes-bwf.c
index 633f3af..f92d682 100644
--- a/gst/mxf/mxfaes-bwf.c
+++ b/gst/mxf/mxfaes-bwf.c
@@ -643,11 +643,14 @@
       tag_data += 8;
       tag_size -= 8;
 
-      if (tag_size != len * 24)
+      if (tag_size / 24 != len)
+        goto error;
+
+      if (G_MAXINT / (24 + sizeof (guint8 *)) < len)
         goto error;
 
       self->fixed_channel_status_data =
-          g_malloc0 (len * sizeof (guint8 *) + len * 24);
+          g_malloc0 (len * (sizeof (guint8 *) + 24));
 
       for (i = 0; i < len; i++) {
         self->fixed_channel_status_data[i] =
@@ -738,10 +741,13 @@
       tag_data += 8;
       tag_size -= 8;
 
-      if (tag_size != len * 24)
+      if (tag_size / 24 != len)
         goto error;
 
-      self->fixed_user_data = g_malloc0 (len * sizeof (guint8 *) + len * 24);
+      if (G_MAXINT / (24 + sizeof (guint8 *)) < len)
+        goto error;
+
+      self->fixed_user_data = g_malloc0 (len * (sizeof (guint8 *) + 24));
 
       for (i = 0; i < len; i++) {
         self->fixed_user_data[i] =
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 823b1b6..a380f6d 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -1304,6 +1304,9 @@
     return GST_FLOW_OK;
   }
 
+  if (gst_buffer_get_size (buffer) == 0)
+    return GST_FLOW_OK;
+
   gst_buffer_map (buffer, &map, GST_MAP_READ);
   metadata =
       mxf_metadata_new (type, &demux->current_partition->primer, demux->offset,
@@ -1768,7 +1771,7 @@
 
       index->offset = demux->offset - demux->run_in;
       index->keyframe = keyframe;
-    } else {
+    } else if (etrack->position < G_MAXINT) {
       GstMXFDemuxIndex index;
 
       index.offset = demux->offset - demux->run_in;
@@ -2330,13 +2333,11 @@
   buffer = NULL;
 
   if (demux->current_partition->partition.header_byte_count == 0) {
-    if (demux->current_partition->partition.prev_partition == 0
-        || demux->current_partition->partition.this_partition == 0)
+    if (demux->current_partition->partition.this_partition == 0)
       goto out;
 
     demux->offset =
-        demux->run_in + demux->current_partition->partition.this_partition -
-        demux->current_partition->partition.prev_partition;
+        demux->run_in + demux->current_partition->partition.prev_partition;
     goto next_try;
   }
 
@@ -2345,10 +2346,10 @@
         gst_mxf_demux_pull_klv_packet (demux, demux->offset, &key, &buffer,
         &read);
     if (G_UNLIKELY (flow != GST_FLOW_OK)) {
+      if (!demux->current_partition->partition.prev_partition)
+        goto out;
       demux->offset =
-          demux->run_in +
-          demux->current_partition->partition.this_partition -
-          demux->current_partition->partition.prev_partition;
+          demux->run_in + demux->current_partition->partition.prev_partition;
       goto next_try;
     }
 
@@ -2363,9 +2364,10 @@
           demux->offset += read;
           gst_buffer_unref (buffer);
           buffer = NULL;
+          if (!demux->current_partition->partition.prev_partition)
+            goto out;
           demux->offset =
               demux->run_in +
-              demux->current_partition->partition.this_partition -
               demux->current_partition->partition.prev_partition;
           goto next_try;
         }
@@ -2377,10 +2379,10 @@
     } else {
       gst_buffer_unref (buffer);
       buffer = NULL;
+      if (!demux->current_partition->partition.prev_partition)
+        goto out;
       demux->offset =
-          demux->run_in +
-          demux->current_partition->partition.this_partition -
-          demux->current_partition->partition.prev_partition;
+          demux->run_in + demux->current_partition->partition.prev_partition;
       goto next_try;
     }
   }
@@ -2393,10 +2395,10 @@
         gst_mxf_demux_pull_klv_packet (demux, demux->offset, &key, &buffer,
         &read);
     if (G_UNLIKELY (flow != GST_FLOW_OK)) {
+      if (!demux->current_partition->partition.prev_partition)
+        goto out;
       demux->offset =
-          demux->run_in +
-          demux->current_partition->partition.this_partition -
-          demux->current_partition->partition.prev_partition;
+          demux->run_in + demux->current_partition->partition.prev_partition;
       goto next_try;
     }
 
@@ -2408,10 +2410,10 @@
 
       if (G_UNLIKELY (flow != GST_FLOW_OK)) {
         gst_mxf_demux_reset_metadata (demux);
+        if (!demux->current_partition->partition.prev_partition)
+          goto out;
         demux->offset =
-            demux->run_in +
-            demux->current_partition->partition.this_partition -
-            demux->current_partition->partition.prev_partition;
+            demux->run_in + demux->current_partition->partition.prev_partition;
         goto next_try;
       }
     } else if (mxf_is_descriptive_metadata (&key)) {
@@ -2438,13 +2440,13 @@
   }
 
   /* resolve references etc */
-
-  if (gst_mxf_demux_resolve_references (demux) !=
+  if (!demux->preface || gst_mxf_demux_resolve_references (demux) !=
       GST_FLOW_OK || gst_mxf_demux_update_tracks (demux) != GST_FLOW_OK) {
     demux->current_partition->parsed_metadata = TRUE;
+    if (!demux->current_partition->partition.prev_partition)
+      goto out;
     demux->offset =
-        demux->run_in + demux->current_partition->partition.this_partition -
-        demux->current_partition->partition.prev_partition;
+        demux->run_in + demux->current_partition->partition.prev_partition;
     goto next_try;
   }
 
@@ -3066,7 +3068,11 @@
 
     if (flow == GST_FLOW_EOS) {
       /* perform EOS logic */
-      if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
+      if (demux->src->len == 0) {
+        GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE,
+            ("This stream contains no data."),
+            ("got eos and didn't find any streams"));
+      } else if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
         gint64 stop;
         GstMessage *m;
         GstEvent *e;
@@ -3556,11 +3562,18 @@
 
     start = segment->index_start_position;
     end = start + segment->index_duration;
+    if (end > G_MAXINT / sizeof (GstMXFDemuxIndex)) {
+      demux->index_tables = g_list_remove (demux->index_tables, t);
+      g_array_free (t->offsets, TRUE);
+      g_free (t);
+      continue;
+    }
 
     if (t->offsets->len < end)
       g_array_set_size (t->offsets, end);
 
-    for (i = 0; i < segment->n_index_entries; i++) {
+    for (i = 0; i < segment->n_index_entries && start + i < t->offsets->len;
+        i++) {
       GstMXFDemuxIndex *index =
           &g_array_index (t->offsets, GstMXFDemuxIndex, start + i);
       guint64 offset = segment->index_entries[i].stream_offset;
@@ -4075,6 +4088,12 @@
       GstMXFDemuxPad *p = NULL;
       guint i;
 
+      if (demux->src->len == 0) {
+        GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE,
+            ("This stream contains no data."),
+            ("got eos and didn't find any streams"));
+      }
+
       for (i = 0; i < demux->essence_tracks->len; i++) {
         GstMXFDemuxEssenceTrack *t =
             &g_array_index (demux->essence_tracks, GstMXFDemuxEssenceTrack, i);
diff --git a/gst/mxf/mxfdms1.c b/gst/mxf/mxfdms1.c
deleted file mode 100644
index d5d5d95..0000000
--- a/gst/mxf/mxfdms1.c
+++ /dev/null
@@ -1,5656 +0,0 @@
-/* GStreamer
- * Copyright (C) 2008-2009 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/* Implementation of SMPTE S380M - Descriptive Metadata Scheme-1 */
-
-/* TODO:
- *   - What are the "locators"?
- *   - Create sensible tags from this
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <string.h>
-
-#include "mxfdms1.h"
-#include "mxftypes.h"
-
-GST_DEBUG_CATEGORY_EXTERN (mxf_debug);
-#define GST_CAT_DEFAULT mxf_debug
-
-G_DEFINE_ABSTRACT_TYPE (MXFDMS1, mxf_dms1, MXF_TYPE_DESCRIPTIVE_METADATA);
-
-static gboolean
-mxf_dms1_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1 *self = MXF_DMS1 (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 instance_uid_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 generation_uid_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, 0x05,
-    0x20, 0x07, 0x01, 0x08, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &instance_uid_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-    memcpy (&MXF_METADATA_BASE (self)->instance_uid, tag_data, 16);
-    GST_DEBUG ("  instance uid = %s",
-        mxf_uuid_to_string (&MXF_METADATA_BASE (self)->instance_uid, str));
-  } else if (memcmp (tag_ul, &generation_uid_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-    memcpy (&MXF_METADATA_BASE (self)->generation_uid, tag_data, 16);
-    GST_DEBUG ("  generation uid = %s",
-        mxf_uuid_to_string (&MXF_METADATA_BASE (self)->generation_uid, str));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_init (MXFDMS1 * self)
-{
-}
-
-static void
-mxf_dms1_class_init (MXFDMS1Class * klass)
-{
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  metadatabase_class->handle_tag = mxf_dms1_handle_tag;
-  dm_class->scheme = 0x01;
-}
-
-G_DEFINE_ABSTRACT_TYPE (MXFDMS1TextLanguage, mxf_dms1_text_language,
-    MXF_TYPE_DMS1);
-
-static gboolean
-mxf_dms1_text_language_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1TextLanguage *self = MXF_DMS1_TEXT_LANGUAGE (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 extended_text_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x02, 0x11, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &extended_text_language_code_ul, 16) == 0) {
-    if (tag_size > 12)
-      goto error;
-
-    memcpy (self->extended_text_language_code, tag_data, tag_size);
-    GST_DEBUG ("  extended text language code = %s",
-        self->extended_text_language_code);
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_text_language_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 text language local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_text_language_init (MXFDMS1TextLanguage * self)
-{
-}
-
-static void
-mxf_dms1_text_language_class_init (MXFDMS1TextLanguageClass * klass)
-{
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-
-  metadatabase_class->handle_tag = mxf_dms1_text_language_handle_tag;
-}
-
-G_DEFINE_ABSTRACT_TYPE (MXFDMS1Thesaurus, mxf_dms1_thesaurus,
-    MXF_TYPE_DMS1_TEXT_LANGUAGE);
-
-static void
-mxf_dms1_thesaurus_finalize (GObject * object)
-{
-  MXFDMS1Thesaurus *self = MXF_DMS1_THESAURUS (object);
-
-  g_free (self->thesaurus_name);
-  self->thesaurus_name = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_thesaurus_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_thesaurus_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Thesaurus *self = MXF_DMS1_THESAURUS (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 thesaurus_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &thesaurus_name_ul, 16) == 0) {
-    self->thesaurus_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  thesaurus name  = %s", GST_STR_NULL (self->thesaurus_name));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_thesaurus_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_thesaurus_init (MXFDMS1Thesaurus * self)
-{
-}
-
-static void
-mxf_dms1_thesaurus_class_init (MXFDMS1ThesaurusClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-
-  object_class->finalize = mxf_dms1_thesaurus_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_thesaurus_handle_tag;
-}
-
-static void
-mxf_dms1_framework_interface_init (gpointer g_iface, gpointer iface_data)
-{
-}
-
-G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MXFDMS1Framework, mxf_dms1_framework,
-    MXF_TYPE_DMS1,
-    G_IMPLEMENT_INTERFACE (MXF_TYPE_DESCRIPTIVE_METADATA_FRAMEWORK,
-        mxf_dms1_framework_interface_init));
-
-static void
-mxf_dms1_framework_finalize (GObject * object)
-{
-  MXFDMS1Framework *self = MXF_DMS1_FRAMEWORK (object);
-
-  g_free (self->framework_thesaurus_name);
-  self->framework_thesaurus_name = NULL;
-
-  g_free (self->framework_title);
-  self->framework_title = NULL;
-
-  g_free (self->metadata_server_locators_uids);
-  self->metadata_server_locators_uids = NULL;
-
-  g_free (self->titles_sets_uids);
-  self->titles_sets_uids = NULL;
-
-  g_free (self->titles_sets);
-  self->titles_sets = NULL;
-
-  g_free (self->annotation_sets_uids);
-  self->annotation_sets_uids = NULL;
-
-  g_free (self->annotation_sets);
-  self->annotation_sets = NULL;
-
-  g_free (self->participant_sets_uids);
-  self->participant_sets_uids = NULL;
-
-  g_free (self->participant_sets);
-  self->participant_sets = NULL;
-
-  g_free (self->location_sets_uids);
-  self->location_sets_uids = NULL;
-
-  g_free (self->location_sets);
-  self->location_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_framework_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_framework_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Framework *self = MXF_DMS1_FRAMEWORK (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->titles_sets)
-    memset (self->titles_sets, 0, sizeof (gpointer) * self->n_titles_sets);
-  else
-    self->titles_sets = g_new0 (MXFDMS1Titles *, self->n_titles_sets);
-
-  if (self->annotation_sets)
-    memset (self->annotation_sets, 0,
-        sizeof (gpointer) * self->n_annotation_sets);
-  else
-    self->annotation_sets =
-        g_new0 (MXFDMS1Annotation *, self->n_annotation_sets);
-
-  if (self->participant_sets)
-    memset (self->participant_sets, 0,
-        sizeof (gpointer) * self->n_participant_sets);
-  else
-    self->participant_sets =
-        g_new0 (MXFDMS1Participant *, self->n_participant_sets);
-
-  if (self->location_sets)
-    memset (self->location_sets, 0, sizeof (gpointer) * self->n_location_sets);
-  else
-    self->location_sets = g_new0 (MXFDMS1Location *, self->n_location_sets);
-
-  for (i = 0; i < self->n_titles_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->titles_sets_uids[i]);
-
-    if (current && MXF_IS_DMS1_TITLES (current)) {
-      self->titles_sets[i] = MXF_DMS1_TITLES (current);
-    }
-  }
-
-  for (i = 0; i < self->n_annotation_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->annotation_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ANNOTATION (current)) {
-      self->annotation_sets[i] = MXF_DMS1_ANNOTATION (current);
-    }
-  }
-
-  for (i = 0; i < self->n_participant_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->participant_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PARTICIPANT (current)) {
-      self->participant_sets[i] = MXF_DMS1_PARTICIPANT (current);
-    }
-  }
-
-  current = g_hash_table_lookup (metadata, &self->contacts_list_set_uid);
-  if (current && MXF_IS_DMS1_CONTACTS_LIST (current)) {
-    self->contacts_list_set = MXF_DMS1_CONTACTS_LIST (current);
-  }
-
-  for (i = 0; i < self->n_location_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->location_sets_uids[i]);
-    if (current && MXF_IS_DMS1_LOCATION (current)) {
-      self->location_sets[i] = MXF_DMS1_LOCATION (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_framework_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_framework_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Framework *self = MXF_DMS1_FRAMEWORK (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 framework_extended_text_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x02, 0x13, 0x00, 0x00
-  };
-  static const guint8 framework_thesaurus_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x02, 0x15, 0x01, 0x00, 0x00
-  };
-  static const guint8 framework_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x05, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 primary_extended_spoken_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x03, 0x11, 0x00, 0x00
-  };
-  static const guint8 secondary_extended_spoken_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x03, 0x12, 0x00, 0x00
-  };
-  static const guint8 original_extended_spoken_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x03, 0x13, 0x00, 0x00
-  };
-  static const guint8 metadata_server_locators_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x06, 0x0C, 0x00, 0x00
-  };
-  static const guint8 titles_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x04, 0x00
-  };
-  static const guint8 annotation_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0d, 0x00
-  };
-  static const guint8 participant_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x13, 0x00
-  };
-  static const guint8 contacts_list_set_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x22, 0x00
-  };
-  static const guint8 location_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x16, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &framework_extended_text_language_code_ul, 16) == 0) {
-    if (tag_size > 12)
-      goto error;
-    memcpy (&self->framework_extended_text_language_code, tag_data, tag_size);
-    GST_DEBUG ("  framework extended text language code = %s",
-        self->framework_extended_text_language_code);
-  } else if (memcmp (tag_ul, &framework_thesaurus_name_ul, 16) == 0) {
-    self->framework_thesaurus_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  framework thesaurus name = %s",
-        GST_STR_NULL (self->framework_thesaurus_name));
-  } else if (memcmp (tag_ul, &framework_title_ul, 16) == 0) {
-    self->framework_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  framework title = %s", GST_STR_NULL (self->framework_title));
-  } else if (memcmp (tag_ul, &primary_extended_spoken_language_code_ul,
-          16) == 0) {
-    if (tag_size > 12)
-      goto error;
-    memcpy (&self->primary_extended_spoken_language_code, tag_data, tag_size);
-    GST_DEBUG ("  primary extended spoken language code = %s",
-        self->primary_extended_spoken_language_code);
-  } else if (memcmp (tag_ul, &secondary_extended_spoken_language_code_ul,
-          16) == 0) {
-    if (tag_size > 12)
-      goto error;
-    memcpy (&self->secondary_extended_spoken_language_code, tag_data, tag_size);
-    GST_DEBUG ("  secondary extended spoken language code = %s",
-        self->secondary_extended_spoken_language_code);
-  } else if (memcmp (tag_ul, &original_extended_spoken_language_code_ul,
-          16) == 0) {
-    if (tag_size > 12)
-      goto error;
-    memcpy (&self->original_extended_spoken_language_code, tag_data, tag_size);
-    GST_DEBUG ("  original extended spoken language code = %s",
-        self->original_extended_spoken_language_code);
-  } else if (memcmp (tag_ul, &metadata_server_locators_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->metadata_server_locators_uids,
-            &self->n_metadata_server_locators, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  number of metadata server locators = %u",
-        self->n_metadata_server_locators);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_metadata_server_locators; i++) {
-        GST_DEBUG ("    metadata server locator %u = %s", i,
-            mxf_uuid_to_string (&self->metadata_server_locators_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &titles_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->titles_sets_uids, &self->n_titles_sets,
-            tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  number of titles sets = %u", self->n_titles_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_titles_sets; i++) {
-        GST_DEBUG ("    titles sets %u = %s", i,
-            mxf_uuid_to_string (&self->titles_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &annotation_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->annotation_sets_uids,
-            &self->n_annotation_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of annotation sets = %u", self->n_annotation_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_annotation_sets; i++) {
-        GST_DEBUG ("    annotation sets %u = %s", i,
-            mxf_uuid_to_string (&self->annotation_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &participant_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->participant_sets_uids,
-            &self->n_participant_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of participant sets = %u", self->n_participant_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_participant_sets; i++) {
-        GST_DEBUG ("    participant sets %u = %s", i,
-            mxf_uuid_to_string (&self->participant_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &contacts_list_set_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->contacts_list_set_uid, tag_data, 16);
-    GST_DEBUG ("  contacts list = %s",
-        mxf_uuid_to_string (&self->contacts_list_set_uid, str));
-  } else if (memcmp (tag_ul, &location_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->location_sets_uids,
-            &self->n_location_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of location sets = %u", self->n_location_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_location_sets; i++) {
-        GST_DEBUG ("    location sets %u = %s", i,
-            mxf_uuid_to_string (&self->location_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_framework_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 framework local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_framework_init (MXFDMS1Framework * self)
-{
-}
-
-static void
-mxf_dms1_framework_class_init (MXFDMS1FrameworkClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-
-  object_class->finalize = mxf_dms1_framework_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_framework_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_framework_resolve;
-}
-
-G_DEFINE_ABSTRACT_TYPE (MXFDMS1ProductionClipFramework,
-    mxf_dms1_production_clip_framework, MXF_TYPE_DMS1_FRAMEWORK);
-
-static void
-mxf_dms1_production_clip_framework_finalize (GObject * object)
-{
-  MXFDMS1ProductionClipFramework *self =
-      MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK (object);
-
-  g_free (self->captions_description_sets_uids);
-  self->captions_description_sets_uids = NULL;
-
-  g_free (self->captions_description_sets);
-  self->captions_description_sets = NULL;
-
-  g_free (self->contract_sets_uids);
-  self->contract_sets_uids = NULL;
-
-  g_free (self->contract_sets);
-  self->contract_sets = NULL;
-
-  G_OBJECT_CLASS
-      (mxf_dms1_production_clip_framework_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_production_clip_framework_resolve (MXFMetadataBase * m,
-    GHashTable * metadata)
-{
-  MXFDMS1ProductionClipFramework *self = MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->captions_description_sets)
-    memset (self->captions_description_sets, 0,
-        sizeof (gpointer) * self->n_captions_description_sets);
-  else
-    self->captions_description_sets =
-        g_new0 (MXFDMS1CaptionsDescription *,
-        self->n_captions_description_sets);
-
-  if (self->contract_sets)
-    memset (self->contract_sets, 0,
-        sizeof (gpointer) * self->n_captions_description_sets);
-  else
-    self->contract_sets = g_new0 (MXFDMS1Contract *, self->n_contract_sets);
-
-  current = g_hash_table_lookup (metadata, &self->picture_format_set_uid);
-  if (current && MXF_IS_DMS1_PICTURE_FORMAT (current)) {
-    self->picture_format = MXF_DMS1_PICTURE_FORMAT (current);
-  }
-
-  for (i = 0; i < self->n_captions_description_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata,
-        &self->captions_description_sets_uids[i]);
-    if (current && MXF_IS_DMS1_CAPTIONS_DESCRIPTION (current)) {
-      self->captions_description_sets[i] =
-          MXF_DMS1_CAPTIONS_DESCRIPTION (current);
-    }
-  }
-
-  for (i = 0; i < self->n_contract_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->contract_sets_uids[i]);
-    if (current && MXF_IS_DMS1_CONTRACT (current)) {
-      self->contract_sets[i] = MXF_DMS1_CONTRACT (current);
-    }
-  }
-
-  current = g_hash_table_lookup (metadata, &self->project_set_uid);
-  if (current && MXF_IS_DMS1_PROJECT (current)) {
-    self->project_set = MXF_DMS1_PROJECT (current);
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS
-      (mxf_dms1_production_clip_framework_parent_class)->resolve (m, metadata);
-}
-
-static gboolean
-mxf_dms1_production_clip_framework_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1ProductionClipFramework *self =
-      MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 picture_format_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x1d, 0x00
-  };
-  static const guint8 captions_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0c, 0x00
-  };
-  static const guint8 contract_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x19, 0x00
-  };
-  static const guint8 project_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x21, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &picture_format_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->picture_format_set_uid, tag_data, 16);
-    GST_DEBUG ("  picture format set = %s",
-        mxf_uuid_to_string (&self->picture_format_set_uid, str));
-  } else if (memcmp (tag_ul, &captions_description_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->captions_description_sets_uids,
-            &self->n_captions_description_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of captions description sets = %u",
-        self->n_captions_description_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_captions_description_sets; i++) {
-        GST_DEBUG ("    captions description sets %u = %s", i,
-            mxf_uuid_to_string (&self->captions_description_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &contract_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->contract_sets_uids,
-            &self->n_contract_sets, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  number of contract sets = %u", self->n_contract_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_contract_sets; i++) {
-        GST_DEBUG ("    contract sets %u = %s", i,
-            mxf_uuid_to_string (&self->contract_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &project_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->project_set_uid, tag_data, 16);
-    GST_DEBUG ("  project set = %s", mxf_uuid_to_string (&self->project_set_uid,
-            str));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_production_clip_framework_parent_class)->handle_tag (metadata,
-        primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR
-      ("Invalid DMS1 production-clip framework local tag 0x%04x of size %u",
-      tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_production_clip_framework_init (MXFDMS1ProductionClipFramework * self)
-{
-}
-
-static void
-    mxf_dms1_production_clip_framework_class_init
-    (MXFDMS1ProductionClipFrameworkClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-
-  object_class->finalize = mxf_dms1_production_clip_framework_finalize;
-  metadatabase_class->handle_tag =
-      mxf_dms1_production_clip_framework_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_production_clip_framework_resolve;
-}
-
-G_DEFINE_TYPE (MXFDMS1ProductionFramework, mxf_dms1_production_framework,
-    MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK);
-
-static void
-mxf_dms1_production_framework_finalize (GObject * object)
-{
-  MXFDMS1ProductionFramework *self = MXF_DMS1_PRODUCTION_FRAMEWORK (object);
-
-  g_free (self->integration_indication);
-  self->integration_indication = NULL;
-
-  g_free (self->identification_sets_uids);
-  self->identification_sets_uids = NULL;
-
-  g_free (self->identification_sets);
-  self->identification_sets = NULL;
-
-  g_free (self->group_relationship_sets_uids);
-  self->group_relationship_sets_uids = NULL;
-
-  g_free (self->group_relationship_sets);
-  self->group_relationship_sets = NULL;
-
-  g_free (self->branding_sets_uids);
-  self->branding_sets_uids = NULL;
-
-  g_free (self->branding_sets);
-  self->branding_sets = NULL;
-
-  g_free (self->event_sets_uids);
-  self->event_sets_uids = NULL;
-
-  g_free (self->event_sets);
-  self->event_sets = NULL;
-
-  g_free (self->award_sets_uids);
-  self->award_sets_uids = NULL;
-
-  g_free (self->award_sets);
-  self->award_sets = NULL;
-
-  g_free (self->setting_period_sets_uids);
-  self->setting_period_sets_uids = NULL;
-
-  g_free (self->setting_period_sets);
-  self->setting_period_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_production_framework_parent_class)->finalize
-      (object);
-}
-
-static gboolean
-mxf_dms1_production_framework_resolve (MXFMetadataBase * m,
-    GHashTable * metadata)
-{
-  MXFDMS1ProductionFramework *self = MXF_DMS1_PRODUCTION_FRAMEWORK (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->identification_sets)
-    memset (self->identification_sets, 0,
-        sizeof (gpointer) * self->n_identification_sets);
-  else
-    self->identification_sets =
-        g_new0 (MXFDMS1Identification *, self->n_identification_sets);
-
-  if (self->group_relationship_sets)
-    memset (self->group_relationship_sets, 0,
-        sizeof (gpointer) * self->n_group_relationship_sets);
-  else
-    self->group_relationship_sets =
-        g_new0 (MXFDMS1GroupRelationship *, self->n_group_relationship_sets);
-
-  if (self->branding_sets)
-    memset (self->branding_sets, 0, sizeof (gpointer) * self->n_branding_sets);
-  else
-    self->branding_sets = g_new0 (MXFDMS1Branding *, self->n_branding_sets);
-
-  if (self->event_sets)
-    memset (self->event_sets, 0, sizeof (gpointer) * self->n_event_sets);
-  else
-    self->event_sets = g_new0 (MXFDMS1Event *, self->n_event_sets);
-
-  if (self->award_sets)
-    memset (self->award_sets, 0, sizeof (gpointer) * self->n_award_sets);
-  else
-    self->award_sets = g_new0 (MXFDMS1Award *, self->n_award_sets);
-
-  if (self->setting_period_sets)
-    memset (self->setting_period_sets, 0,
-        sizeof (gpointer) * self->n_setting_period_sets);
-  else
-    self->setting_period_sets =
-        g_new0 (MXFDMS1SettingPeriod *, self->n_setting_period_sets);
-
-  for (i = 0; i < self->n_identification_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->identification_sets_uids[i]);
-    if (current && MXF_IS_DMS1_IDENTIFICATION (current)) {
-      self->identification_sets[i] = MXF_DMS1_IDENTIFICATION (current);
-    }
-  }
-
-  for (i = 0; i < self->n_group_relationship_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->group_relationship_sets_uids[i]);
-    if (current && MXF_IS_DMS1_GROUP_RELATIONSHIP (current)) {
-      self->group_relationship_sets[i] = MXF_DMS1_GROUP_RELATIONSHIP (current);
-    }
-  }
-
-  for (i = 0; i < self->n_branding_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->branding_sets_uids[i]);
-    if (current && MXF_IS_DMS1_BRANDING (current)) {
-      self->branding_sets[i] = MXF_DMS1_BRANDING (current);
-    }
-  }
-
-  for (i = 0; i < self->n_event_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->event_sets_uids[i]);
-    if (current && MXF_IS_DMS1_EVENT (current)) {
-      self->event_sets[i] = MXF_DMS1_EVENT (current);
-    }
-  }
-
-  for (i = 0; i < self->n_award_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->award_sets_uids[i]);
-    if (current && MXF_IS_DMS1_AWARD (current)) {
-      self->award_sets[i] = MXF_DMS1_AWARD (current);
-    }
-  }
-
-  for (i = 0; i < self->n_setting_period_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->setting_period_sets_uids[i]);
-    if (current && MXF_IS_DMS1_SETTING_PERIOD (current)) {
-      self->setting_period_sets[i] = MXF_DMS1_SETTING_PERIOD (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS
-      (mxf_dms1_production_framework_parent_class)->resolve (m, metadata);
-}
-
-static gboolean
-mxf_dms1_production_framework_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1ProductionFramework *self = MXF_DMS1_PRODUCTION_FRAMEWORK (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 integration_indication_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x05,
-    0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 identification_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x06, 0x00
-  };
-  static const guint8 group_relationship_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x05, 0x00
-  };
-  static const guint8 branding_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x08, 0x00
-  };
-  static const guint8 event_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x09, 0x00
-  };
-  static const guint8 award_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0b, 0x00
-  };
-  static const guint8 setting_period_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0e, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &integration_indication_ul, 16) == 0) {
-    self->integration_indication = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  integration indication = %s",
-        GST_STR_NULL (self->integration_indication));
-  } else if (memcmp (tag_ul, &identification_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->identification_sets_uids,
-            &self->n_identification_sets, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  number of identification sets = %u",
-        self->n_identification_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_identification_sets; i++) {
-        GST_DEBUG ("    identification sets %u = %s", i,
-            mxf_uuid_to_string (&self->identification_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &group_relationship_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->group_relationship_sets_uids,
-            &self->n_group_relationship_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of group relationship sets = %u",
-        self->n_group_relationship_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_group_relationship_sets; i++) {
-        GST_DEBUG ("    group relationship sets %u = %s", i,
-            mxf_uuid_to_string (&self->group_relationship_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &branding_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->branding_sets_uids,
-            &self->n_branding_sets, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  number of branding sets = %u", self->n_branding_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_branding_sets; i++) {
-        GST_DEBUG ("    branding sets %u = %s", i,
-            mxf_uuid_to_string (&self->branding_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &event_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->event_sets_uids, &self->n_event_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of event sets = %u", self->n_event_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_event_sets; i++) {
-        GST_DEBUG ("    event sets %u = %s", i,
-            mxf_uuid_to_string (&self->event_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &award_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->award_sets_uids, &self->n_award_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of award sets = %u", self->n_award_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_award_sets; i++) {
-        GST_DEBUG ("    award sets %u = %s", i,
-            mxf_uuid_to_string (&self->award_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &setting_period_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->setting_period_sets_uids,
-            &self->n_setting_period_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of setting period sets = %u",
-        self->n_setting_period_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_setting_period_sets; i++) {
-        GST_DEBUG ("    setting period sets %u = %s", i,
-            mxf_uuid_to_string (&self->setting_period_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_production_framework_parent_class)->handle_tag (metadata,
-        primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 production framework local tag 0x%04x of size %u",
-      tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_production_framework_init (MXFDMS1ProductionFramework * self)
-{
-}
-
-static void
-mxf_dms1_production_framework_class_init (MXFDMS1ProductionFrameworkClass *
-    klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_production_framework_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_production_framework_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_production_framework_resolve;
-
-  dm_class->type = 0x010100;
-}
-
-G_DEFINE_TYPE (MXFDMS1ClipFramework, mxf_dms1_clip_framework,
-    MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK);
-
-static void
-mxf_dms1_clip_framework_finalize (GObject * object)
-{
-  MXFDMS1ClipFramework *self = MXF_DMS1_CLIP_FRAMEWORK (object);
-
-  g_free (self->clip_kind);
-  self->clip_kind = NULL;
-
-  g_free (self->slate_information);
-  self->slate_information = NULL;
-
-  g_free (self->scripting_sets_uids);
-  self->scripting_sets_uids = NULL;
-
-  g_free (self->scripting_sets);
-  self->scripting_sets = NULL;
-
-  g_free (self->shot_sets_uids);
-  self->shot_sets_uids = NULL;
-
-  g_free (self->shot_sets);
-  self->shot_sets = NULL;
-
-  g_free (self->device_parameters_sets_uids);
-  self->device_parameters_sets_uids = NULL;
-
-  g_free (self->device_parameters_sets);
-  self->device_parameters_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_clip_framework_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_clip_framework_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1ClipFramework *self = MXF_DMS1_CLIP_FRAMEWORK (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->scripting_sets)
-    memset (self->scripting_sets, 0,
-        sizeof (gpointer) * self->n_scripting_sets);
-  else
-    self->scripting_sets = g_new0 (MXFDMS1Scripting *, self->n_scripting_sets);
-
-  if (self->shot_sets)
-    memset (self->shot_sets, 0, sizeof (gpointer) * self->n_shot_sets);
-  else
-    self->shot_sets = g_new0 (MXFDMS1Shot *, self->n_shot_sets);
-
-  if (self->device_parameters_sets)
-    memset (self->device_parameters_sets, 0,
-        sizeof (gpointer) * self->n_device_parameters_sets);
-  else
-    self->device_parameters_sets =
-        g_new0 (MXFDMS1DeviceParameters *, self->n_device_parameters_sets);
-
-  for (i = 0; i < self->n_scripting_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->scripting_sets_uids[i]);
-
-    if (current && MXF_IS_DMS1_SCRIPTING (current)) {
-      self->scripting_sets[i] = MXF_DMS1_SCRIPTING (current);
-    }
-  }
-
-  for (i = 0; i < self->n_shot_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->shot_sets_uids[i]);
-    if (current && MXF_IS_DMS1_SHOT (current)) {
-      self->shot_sets[i] = MXF_DMS1_SHOT (current);
-    }
-  }
-
-  for (i = 0; i < self->n_device_parameters_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->device_parameters_sets_uids[i]);
-    if (current && MXF_IS_DMS1_DEVICE_PARAMETERS (current)) {
-      self->device_parameters_sets[i] = MXF_DMS1_DEVICE_PARAMETERS (current);
-    }
-  }
-
-  current = g_hash_table_lookup (metadata, &self->processing_set_uid);
-  if (current && MXF_IS_DMS1_PROCESSING (current)) {
-    self->processing_set = MXF_DMS1_PROCESSING (current);
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_clip_framework_parent_class)->resolve
-      (m, metadata);
-}
-
-static gboolean
-mxf_dms1_clip_framework_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1ClipFramework *self = MXF_DMS1_CLIP_FRAMEWORK (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[96];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 clip_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 clip_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x05, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 extended_clip_id_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x01,
-    0x01, 0x15, 0x09, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 clip_creation_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x07,
-    0x02, 0x01, 0x10, 0x01, 0x04, 0x00, 0x00
-  };
-  static const guint8 take_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 slate_information_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 scripting_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0f, 0x00
-  };
-  static const guint8 shot_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x11, 0x02
-  };
-  static const guint8 device_parameters_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1e, 0x00
-  };
-  static const guint8 processing_set_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x20, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &clip_kind_ul, 16) == 0) {
-    self->clip_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  clip kind = %s", GST_STR_NULL (self->clip_kind));
-  } else if (memcmp (tag_ul, &clip_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->clip_number, tag_data, tag_size);
-    GST_DEBUG ("  clip number = %s", self->clip_number);
-  } else if (memcmp (tag_ul, &extended_clip_id_ul, 16) == 0) {
-    if (tag_size != 32 && tag_size != 64)
-      goto error;
-
-    memcpy (self->extended_clip_id, tag_data, tag_size);
-    self->extended_clip_id_full = (tag_size == 64);
-
-    GST_DEBUG ("  extended clip id (1) = %s",
-        mxf_umid_to_string ((MXFUMID *) & self->extended_clip_id, str));
-    if (tag_size == 64)
-      GST_DEBUG ("  extended clip id (2) = %s",
-          mxf_umid_to_string ((MXFUMID *) & self->extended_clip_id[32], str));
-  } else if (memcmp (tag_ul, &clip_creation_date_and_time_ul, 16) == 0) {
-    if (!mxf_timestamp_parse (&self->clip_creation_date_and_time, tag_data,
-            tag_size))
-      goto error;
-    GST_DEBUG ("  clip creation date and time = %s",
-        mxf_timestamp_to_string (&self->clip_creation_date_and_time, str));
-  } else if (memcmp (tag_ul, &take_number_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->take_number = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  take number = %u", self->take_number);
-  } else if (memcmp (tag_ul, &slate_information_ul, 16) == 0) {
-    self->slate_information = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  slate information = %s",
-        GST_STR_NULL (self->slate_information));
-  } else if (memcmp (tag_ul, &scripting_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->scripting_sets_uids,
-            &self->n_scripting_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of scripting sets = %u", self->n_scripting_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_scripting_sets; i++) {
-        GST_DEBUG ("    scripting sets %u = %s", i,
-            mxf_uuid_to_string (&self->scripting_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &shot_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->shot_sets_uids, &self->n_shot_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of shot sets = %u", self->n_shot_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_shot_sets; i++) {
-        GST_DEBUG ("    shot sets %u = %s", i,
-            mxf_uuid_to_string (&self->shot_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &device_parameters_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->device_parameters_sets_uids,
-            &self->n_device_parameters_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of device parameters sets = %u",
-        self->n_device_parameters_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_device_parameters_sets; i++) {
-        GST_DEBUG ("    device parameters sets %u = %s", i,
-            mxf_uuid_to_string (&self->device_parameters_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &processing_set_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->processing_set_uid, tag_data, 16);
-    GST_DEBUG ("  processing set = %s",
-        mxf_uuid_to_string (&self->processing_set_uid, str));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_clip_framework_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 clip framework local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_clip_framework_init (MXFDMS1ClipFramework * self)
-{
-}
-
-static void
-mxf_dms1_clip_framework_class_init (MXFDMS1ClipFrameworkClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_clip_framework_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_clip_framework_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_clip_framework_resolve;
-  dm_class->type = 0x010200;
-}
-
-G_DEFINE_TYPE (MXFDMS1SceneFramework, mxf_dms1_scene_framework,
-    MXF_TYPE_DMS1_FRAMEWORK);
-
-static void
-mxf_dms1_scene_framework_finalize (GObject * object)
-{
-  MXFDMS1SceneFramework *self = MXF_DMS1_SCENE_FRAMEWORK (object);
-
-  g_free (self->setting_period_sets_uids);
-  self->setting_period_sets_uids = NULL;
-
-  g_free (self->setting_period_sets);
-  self->setting_period_sets = NULL;
-
-  g_free (self->shot_scene_sets_uids);
-  self->shot_scene_sets_uids = NULL;
-
-  g_free (self->shot_scene_sets);
-  self->shot_scene_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_scene_framework_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_scene_framework_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1SceneFramework *self = MXF_DMS1_SCENE_FRAMEWORK (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->setting_period_sets)
-    memset (self->setting_period_sets, 0,
-        sizeof (gpointer) * self->n_setting_period_sets);
-  else
-    self->setting_period_sets =
-        g_new0 (MXFDMS1SettingPeriod *, self->n_setting_period_sets);
-
-  if (self->shot_scene_sets)
-    memset (self->shot_scene_sets, 0,
-        sizeof (gpointer) * self->n_shot_scene_sets);
-  else
-    self->shot_scene_sets = g_new0 (MXFDMS1Shot *, self->n_shot_scene_sets);
-
-  for (i = 0; i < self->n_setting_period_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->setting_period_sets_uids[i]);
-    if (current && MXF_IS_DMS1_SETTING_PERIOD (current)) {
-      self->setting_period_sets[i] = MXF_DMS1_SETTING_PERIOD (current);
-    }
-  }
-
-  for (i = 0; i < self->n_shot_scene_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->shot_scene_sets_uids[i]);
-    if (current && MXF_IS_DMS1_SHOT (current)) {
-      self->shot_scene_sets[i] = MXF_DMS1_SHOT (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_scene_framework_parent_class)->resolve
-      (m, metadata);
-}
-
-static gboolean
-mxf_dms1_scene_framework_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1SceneFramework *self = MXF_DMS1_SCENE_FRAMEWORK (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 scene_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 setting_period_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0e, 0x02
-  };
-  static const guint8 shot_scene_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x11, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &scene_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->scene_number, tag_data, tag_size);
-    GST_DEBUG ("  scene number = %s", self->scene_number);
-  } else if (memcmp (tag_ul, &setting_period_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->setting_period_sets_uids,
-            &self->n_setting_period_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of setting period sets = %u",
-        self->n_setting_period_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_setting_period_sets; i++) {
-        GST_DEBUG ("    setting period sets %u = %s", i,
-            mxf_uuid_to_string (&self->setting_period_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &shot_scene_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->shot_scene_sets_uids,
-            &self->n_shot_scene_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of shot sets = %u", self->n_shot_scene_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_shot_scene_sets; i++) {
-        GST_DEBUG ("    shot sets %u = %s", i,
-            mxf_uuid_to_string (&self->shot_scene_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_scene_framework_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 scene framework local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_scene_framework_init (MXFDMS1SceneFramework * self)
-{
-}
-
-static void
-mxf_dms1_scene_framework_class_init (MXFDMS1SceneFrameworkClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_scene_framework_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_scene_framework_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_scene_framework_resolve;
-  dm_class->type = 0x010300;
-}
-
-G_DEFINE_TYPE (MXFDMS1Titles, mxf_dms1_titles, MXF_TYPE_DMS1_TEXT_LANGUAGE);
-
-static void
-mxf_dms1_titles_finalize (GObject * object)
-{
-  MXFDMS1Titles *self = MXF_DMS1_TITLES (object);
-
-  g_free (self->main_title);
-  self->main_title = NULL;
-
-  g_free (self->secondary_title);
-  self->secondary_title = NULL;
-
-  g_free (self->working_title);
-  self->working_title = NULL;
-
-  g_free (self->original_title);
-  self->original_title = NULL;
-
-  g_free (self->version_title);
-  self->version_title = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_titles_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_titles_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Titles *self = MXF_DMS1_TITLES (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 main_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x01,
-    0x05, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 secondary_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x01,
-    0x05, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 working_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x05, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 original_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x05, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 version_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x01,
-    0x05, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &main_title_ul, 16) == 0) {
-    self->main_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  main title = %s", GST_STR_NULL (self->main_title));
-  } else if (memcmp (tag_ul, &secondary_title_ul, 16) == 0) {
-    self->secondary_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  secondary title = %s", GST_STR_NULL (self->secondary_title));
-  } else if (memcmp (tag_ul, &working_title_ul, 16) == 0) {
-    self->working_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  working title = %s", GST_STR_NULL (self->working_title));
-  } else if (memcmp (tag_ul, &original_title_ul, 16) == 0) {
-    self->original_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  original title = %s", GST_STR_NULL (self->original_title));
-  } else if (memcmp (tag_ul, &version_title_ul, 16) == 0) {
-    self->version_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  version title = %s", GST_STR_NULL (self->version_title));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_titles_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_titles_init (MXFDMS1Titles * self)
-{
-}
-
-static void
-mxf_dms1_titles_class_init (MXFDMS1TitlesClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_titles_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_titles_handle_tag;
-  dm_class->type = 0x100100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Identification, mxf_dms1_identification,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_identification_finalize (GObject * object)
-{
-  MXFDMS1Identification *self = MXF_DMS1_IDENTIFICATION (object);
-
-  g_free (self->identifier_value);
-  self->identifier_value = NULL;
-
-  g_free (self->identification_issuing_authority);
-  self->identification_issuing_authority = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_identification_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_identification_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Identification *self = MXF_DMS1_IDENTIFICATION (metadata);
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 identifier_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 identifier_value_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 identification_locator_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 identification_issuing_authority_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x0a, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &identifier_kind_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->identifier_kind, tag_data, tag_size);
-    GST_DEBUG ("  identifier kind = %s", self->identifier_kind);
-  } else if (memcmp (tag_ul, &identifier_value_ul, 16) == 0) {
-    self->identifier_value = g_memdup (tag_data, tag_size);
-    self->identifier_value_length = tag_size;
-    GST_DEBUG ("  identifier value length = %u", tag_size);
-  } else if (memcmp (tag_ul, &identification_locator_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->identification_locator, tag_data, 16);
-
-    GST_DEBUG ("  identification locator = %s",
-        mxf_uuid_to_string (&self->identification_locator, str));
-  } else if (memcmp (tag_ul, &identification_issuing_authority_ul, 16) == 0) {
-    self->identification_issuing_authority =
-        mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  identification issuing authority = %s",
-        GST_STR_NULL (self->identification_issuing_authority));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_identification_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 identification local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_identification_init (MXFDMS1Identification * self)
-{
-}
-
-static void
-mxf_dms1_identification_class_init (MXFDMS1IdentificationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_identification_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_identification_handle_tag;
-  dm_class->type = 0x110100;
-}
-
-G_DEFINE_TYPE (MXFDMS1GroupRelationship, mxf_dms1_group_relationship,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_group_relationship_finalize (GObject * object)
-{
-  MXFDMS1GroupRelationship *self = MXF_DMS1_GROUP_RELATIONSHIP (object);
-
-  g_free (self->programming_group_kind);
-  self->programming_group_kind = NULL;
-
-  g_free (self->programming_group_title);
-  self->programming_group_title = NULL;
-
-  g_free (self->group_synopsis);
-  self->group_synopsis = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_group_relationship_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_group_relationship_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1GroupRelationship *self = MXF_DMS1_GROUP_RELATIONSHIP (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 programming_group_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 programming_group_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x02, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 group_synopsis_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x08, 0x01, 0x00, 0x00
-  };
-  static const guint8 numerical_position_in_sequence_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x06,
-    0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 total_number_in_the_sequence_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 episodic_start_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 episodic_end_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x02, 0x05, 0x02, 0x03, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &programming_group_kind_ul, 16) == 0) {
-    self->programming_group_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  programming group kind = %s",
-        GST_STR_NULL (self->programming_group_kind));
-  } else if (memcmp (tag_ul, &programming_group_title_ul, 16) == 0) {
-    self->programming_group_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  programming group title = %s",
-        GST_STR_NULL (self->programming_group_title));
-  } else if (memcmp (tag_ul, &group_synopsis_ul, 16) == 0) {
-    self->group_synopsis = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  group synopsis = %s", GST_STR_NULL (self->group_synopsis));
-  } else if (memcmp (tag_ul, &numerical_position_in_sequence_ul, 16) == 0) {
-    if (tag_size != 4)
-      goto error;
-
-    self->numerical_position_in_sequence = GST_READ_UINT32_BE (tag_data);
-    GST_DEBUG ("  numerical position in sequence = %u",
-        self->numerical_position_in_sequence);
-  } else if (memcmp (tag_ul, &total_number_in_the_sequence_ul, 16) == 0) {
-    if (tag_size != 4)
-      goto error;
-
-    self->total_number_in_the_sequence = GST_READ_UINT32_BE (tag_data);
-    GST_DEBUG ("  total number in the sequence = %u",
-        self->total_number_in_the_sequence);
-  } else if (memcmp (tag_ul, &episodic_start_number_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->episodic_start_number = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  episodic start number = %u", self->episodic_start_number);
-  } else if (memcmp (tag_ul, &episodic_end_number_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->episodic_end_number = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  episodic end number = %u", self->episodic_end_number);
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_group_relationship_parent_class)->handle_tag (metadata,
-        primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 group relationship local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_group_relationship_init (MXFDMS1GroupRelationship * self)
-{
-}
-
-static void
-mxf_dms1_group_relationship_class_init (MXFDMS1GroupRelationshipClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_group_relationship_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_group_relationship_handle_tag;
-  dm_class->type = 0x120100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Branding, mxf_dms1_branding, MXF_TYPE_DMS1_TEXT_LANGUAGE);
-
-static void
-mxf_dms1_branding_finalize (GObject * object)
-{
-  MXFDMS1Branding *self = MXF_DMS1_BRANDING (object);
-
-  g_free (self->brand_main_title);
-  self->brand_main_title = NULL;
-
-  g_free (self->brand_original_title);
-  self->brand_original_title = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_branding_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_branding_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Branding *self = MXF_DMS1_BRANDING (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 brand_main_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x05, 0x0D, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 brand_original_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x05, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &brand_main_title_ul, 16) == 0) {
-    self->brand_main_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  brand main title = %s",
-        GST_STR_NULL (self->brand_main_title));
-  } else if (memcmp (tag_ul, &brand_original_title_ul, 16) == 0) {
-    self->brand_original_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  brand original title = %s",
-        GST_STR_NULL (self->brand_original_title));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_branding_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_branding_init (MXFDMS1Branding * self)
-{
-}
-
-static void
-mxf_dms1_branding_class_init (MXFDMS1BrandingClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_branding_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_branding_handle_tag;
-  dm_class->type = 0x130100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Event, mxf_dms1_event, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_event_finalize (GObject * object)
-{
-  MXFDMS1Event *self = MXF_DMS1_EVENT (object);
-
-  g_free (self->event_indication);
-  self->event_indication = NULL;
-
-  g_free (self->publication_sets_uids);
-  self->publication_sets_uids = NULL;
-
-  g_free (self->publication_sets);
-  self->publication_sets = NULL;
-
-  g_free (self->annotation_sets_uids);
-  self->annotation_sets_uids = NULL;
-
-  g_free (self->annotation_sets);
-  self->annotation_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_event_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_event_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Event *self = MXF_DMS1_EVENT (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->publication_sets)
-    memset (self->publication_sets, 0,
-        sizeof (gpointer) * self->n_publication_sets);
-  else
-    self->publication_sets =
-        g_new0 (MXFDMS1Publication *, self->n_publication_sets);
-
-  if (self->annotation_sets)
-    memset (self->annotation_sets, 0,
-        sizeof (gpointer) * self->n_annotation_sets);
-  else
-    self->annotation_sets =
-        g_new0 (MXFDMS1Annotation *, self->n_annotation_sets);
-
-  for (i = 0; i < self->n_publication_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->publication_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PUBLICATION (current)) {
-      self->publication_sets[i] = MXF_DMS1_PUBLICATION (current);
-    }
-  }
-
-  for (i = 0; i < self->n_annotation_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->annotation_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ANNOTATION (current)) {
-      self->annotation_sets[i] = MXF_DMS1_ANNOTATION (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_event_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_event_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Event *self = MXF_DMS1_EVENT (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 event_indication_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x05,
-    0x01, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 event_start_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x07,
-    0x02, 0x01, 0x02, 0x07, 0x02, 0x00, 0x00
-  };
-  static const guint8 event_end_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x07,
-    0x02, 0x01, 0x02, 0x09, 0x02, 0x00, 0x00
-  };
-  static const guint8 publication_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0a, 0x00
-  };
-  static const guint8 annotation_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x0d, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &event_indication_ul, 16) == 0) {
-    self->event_indication = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  event indication = %s",
-        GST_STR_NULL (self->event_indication));
-  } else if (memcmp (tag_ul, &event_start_date_and_time_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->event_start_date_and_time, tag_data, tag_size);
-    GST_DEBUG ("  event start date and time = %s",
-        self->event_start_date_and_time);
-  } else if (memcmp (tag_ul, &event_end_date_and_time_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->event_end_date_and_time, tag_data, tag_size);
-    GST_DEBUG ("  event end date and time = %s", self->event_end_date_and_time);
-  } else if (memcmp (tag_ul, &publication_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->publication_sets_uids,
-            &self->n_publication_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of publication sets = %u", self->n_publication_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_publication_sets; i++) {
-        GST_DEBUG ("    publication sets %u = %s", i,
-            mxf_uuid_to_string (&self->publication_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &annotation_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->annotation_sets_uids,
-            &self->n_annotation_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of annotation sets = %u", self->n_annotation_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_annotation_sets; i++) {
-        GST_DEBUG ("    annotation sets %u = %s", i,
-            mxf_uuid_to_string (&self->annotation_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_event_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 event local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_event_init (MXFDMS1Event * self)
-{
-}
-
-static void
-mxf_dms1_event_class_init (MXFDMS1EventClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_event_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_event_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_event_resolve;
-  dm_class->type = 0x140100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Publication, mxf_dms1_publication, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_publication_finalize (GObject * object)
-{
-  MXFDMS1Publication *self = MXF_DMS1_PUBLICATION (object);
-
-  g_free (self->publication_organisation_name);
-  self->publication_organisation_name = NULL;
-
-  g_free (self->publication_service_name);
-  self->publication_service_name = NULL;
-
-  g_free (self->publication_medium);
-  self->publication_medium = NULL;
-
-  g_free (self->publication_region);
-  self->publication_region = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_publication_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_publication_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Publication *self = MXF_DMS1_PUBLICATION (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 publication_organisation_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x10, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 publication_service_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x10, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 publication_medium_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x10, 0x02, 0x01, 0x03, 0x01, 0x00, 0x00
-  };
-  static const guint8 publication_region_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x10, 0x02, 0x01, 0x04, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &publication_organisation_name_ul, 16) == 0) {
-    self->publication_organisation_name =
-        mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  publication organisation name = %s",
-        GST_STR_NULL (self->publication_organisation_name));
-  } else if (memcmp (tag_ul, &publication_service_name_ul, 16) == 0) {
-    self->publication_service_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG (" publication service name = %s",
-        GST_STR_NULL (self->publication_service_name));
-  } else if (memcmp (tag_ul, &publication_medium_ul, 16) == 0) {
-    self->publication_medium = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG (" publication medium = %s",
-        GST_STR_NULL (self->publication_medium));
-  } else if (memcmp (tag_ul, &publication_region_ul, 16) == 0) {
-    self->publication_region = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG (" publication region = %s",
-        GST_STR_NULL (self->publication_region));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_publication_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_publication_init (MXFDMS1Publication * self)
-{
-}
-
-static void
-mxf_dms1_publication_class_init (MXFDMS1PublicationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_publication_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_publication_handle_tag;
-  dm_class->type = 0x140200;
-}
-
-G_DEFINE_TYPE (MXFDMS1Award, mxf_dms1_award, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_award_finalize (GObject * object)
-{
-  MXFDMS1Award *self = MXF_DMS1_AWARD (object);
-
-  g_free (self->festival);
-  self->festival = NULL;
-
-  g_free (self->award_name);
-  self->award_name = NULL;
-
-  g_free (self->award_classification);
-  self->award_classification = NULL;
-
-  g_free (self->nomination_category);
-  self->nomination_category = NULL;
-
-  g_free (self->participant_sets_uids);
-  self->participant_sets_uids = NULL;
-
-  g_free (self->participant_sets);
-  self->participant_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_award_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_award_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Award *self = MXF_DMS1_AWARD (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->participant_sets)
-    memset (self->participant_sets, 0,
-        sizeof (gpointer) * self->n_participant_sets);
-  else
-    self->participant_sets =
-        g_new0 (MXFDMS1Participant *, self->n_participant_sets);
-
-  for (i = 0; i < self->n_participant_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->participant_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PARTICIPANT (current)) {
-      self->participant_sets[i] = MXF_DMS1_PARTICIPANT (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_award_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_award_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Award *self = MXF_DMS1_AWARD (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 festival_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x02, 0x01, 0x03, 0x01, 0x00, 0x00
-  };
-  static const guint8 festival_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x02, 0x01, 0x02, 0x07, 0x10, 0x01, 0x00
-  };
-  static const guint8 award_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x02, 0x01, 0x04, 0x01, 0x00, 0x00
-  };
-  static const guint8 award_classification_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x02, 0x01, 0x05, 0x01, 0x00, 0x00
-  };
-  static const guint8 nomination_category_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x02, 0x01, 0x06, 0x01, 0x00, 0x00
-  };
-  static const guint8 participant_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x13, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &festival_ul, 16) == 0) {
-    self->festival = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  festival = %s", GST_STR_NULL (self->festival));
-  } else if (memcmp (tag_ul, &festival_date_and_time_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->festival_date_and_time, tag_data, tag_size);
-    GST_DEBUG ("  festival date and time = %s",
-        GST_STR_NULL (self->festival_date_and_time));
-  } else if (memcmp (tag_ul, &award_name_ul, 16) == 0) {
-    self->award_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  award name = %s", GST_STR_NULL (self->award_name));
-  } else if (memcmp (tag_ul, &award_classification_ul, 16) == 0) {
-    self->award_classification = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  award classification = %s",
-        GST_STR_NULL (self->award_classification));
-  } else if (memcmp (tag_ul, &nomination_category_ul, 16) == 0) {
-    self->nomination_category = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  nomination category = %s",
-        GST_STR_NULL (self->nomination_category));
-  } else if (memcmp (tag_ul, &participant_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->participant_sets_uids,
-            &self->n_participant_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of participant sets = %u", self->n_participant_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_participant_sets; i++) {
-        GST_DEBUG ("    participant sets %u = %s", i,
-            mxf_uuid_to_string (&self->participant_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_award_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 award local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_award_init (MXFDMS1Award * self)
-{
-}
-
-static void
-mxf_dms1_award_class_init (MXFDMS1AwardClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_award_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_award_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_award_resolve;
-  dm_class->type = 0x150100;
-}
-
-G_DEFINE_TYPE (MXFDMS1CaptionsDescription, mxf_dms1_captions_description,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_captions_description_finalize (GObject * object)
-{
-  MXFDMS1CaptionsDescription *self = MXF_DMS1_CAPTIONS_DESCRIPTION (object);
-
-  g_free (self->caption_kind);
-  self->caption_kind = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_captions_description_parent_class)->finalize
-      (object);
-}
-
-static gboolean
-mxf_dms1_captions_description_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1CaptionsDescription *self = MXF_DMS1_CAPTIONS_DESCRIPTION (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 extended_captions_language_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x01, 0x01, 0x02, 0x02, 0x12, 0x00, 0x00
-  };
-  static const guint8 caption_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x04,
-    0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &extended_captions_language_code_ul, 16) == 0) {
-    if (tag_size > 12)
-      goto error;
-
-    memcpy (self->extended_captions_language_code, tag_data, tag_size);
-    GST_DEBUG ("  extended captions language code = %s",
-        self->extended_captions_language_code);
-  } else if (memcmp (tag_ul, &caption_kind_ul, 16) == 0) {
-    self->caption_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  caption kind = %s", GST_STR_NULL (self->caption_kind));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_captions_description_parent_class)->handle_tag (metadata,
-        primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 captions description local tag 0x%04x of size %u",
-      tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_captions_description_init (MXFDMS1CaptionsDescription * self)
-{
-}
-
-static void
-mxf_dms1_captions_description_class_init (MXFDMS1CaptionsDescriptionClass *
-    klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_captions_description_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_captions_description_handle_tag;
-  dm_class->type = 0x160100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Annotation, mxf_dms1_annotation, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_annotation_finalize (GObject * object)
-{
-  MXFDMS1Annotation *self = MXF_DMS1_ANNOTATION (object);
-
-  g_free (self->annotation_kind);
-  self->annotation_kind = NULL;
-
-  g_free (self->annotation_synopsis);
-  self->annotation_synopsis = NULL;
-
-  g_free (self->annotation_description);
-  self->annotation_description = NULL;
-
-  g_free (self->related_material_description);
-  self->related_material_description = NULL;
-
-  g_free (self->classification_sets_uids);
-  self->classification_sets_uids = NULL;
-
-  g_free (self->classification_sets);
-  self->classification_sets = NULL;
-
-  g_free (self->related_material_locators);
-  self->related_material_locators = NULL;
-
-  g_free (self->participant_sets_uids);
-  self->participant_sets_uids = NULL;
-
-  g_free (self->participant_sets);
-  self->participant_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_annotation_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_annotation_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Annotation *self = MXF_DMS1_ANNOTATION (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->classification_sets)
-    memset (self->classification_sets, 0,
-        sizeof (gpointer) * self->n_classification_sets);
-  else
-    self->classification_sets =
-        g_new0 (MXFDMS1Classification *, self->n_classification_sets);
-
-  if (self->participant_sets)
-    memset (self->participant_sets, 0,
-        sizeof (gpointer) * self->n_participant_sets);
-  else
-    self->participant_sets =
-        g_new0 (MXFDMS1Participant *, self->n_participant_sets);
-
-  for (i = 0; i < self->n_classification_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->classification_sets_uids[i]);
-    if (current && MXF_IS_DMS1_CLASSIFICATION (current)) {
-      self->classification_sets[i] = MXF_DMS1_CLASSIFICATION (current);
-    }
-  }
-
-  current = g_hash_table_lookup (metadata, &self->cue_words_set_uid);
-  if (current && MXF_IS_DMS1_CUE_WORDS (current)) {
-    self->cue_words_set = MXF_DMS1_CUE_WORDS (current);
-  }
-
-  for (i = 0; i < self->n_participant_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->participant_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PARTICIPANT (current)) {
-      self->participant_sets[i] = MXF_DMS1_PARTICIPANT (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_annotation_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_annotation_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Annotation *self = MXF_DMS1_ANNOTATION (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 annotation_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0e, 0x01, 0x00, 0x00
-  };
-  static const guint8 annotation_synopsis_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x09, 0x01, 0x00, 0x00
-  };
-  static const guint8 annotation_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0a, 0x01, 0x00, 0x00
-  };
-  static const guint8 related_material_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0f, 0x01, 0x00, 0x00
-  };
-  static const guint8 classification_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x10, 0x00
-  };
-  static const guint8 cue_words_set_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x23, 0x01
-  };
-  static const guint8 related_material_locators_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x06, 0x0d, 0x00, 0x00
-  };
-  static const guint8 participant_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x13, 0x03
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &annotation_kind_ul, 16) == 0) {
-    self->annotation_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  annotation kind = %s", GST_STR_NULL (self->annotation_kind));
-  } else if (memcmp (tag_ul, &annotation_synopsis_ul, 16) == 0) {
-    self->annotation_synopsis = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  annotation synopsis = %s",
-        GST_STR_NULL (self->annotation_synopsis));
-  } else if (memcmp (tag_ul, &annotation_description_ul, 16) == 0) {
-    self->annotation_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  annotation description = %s",
-        GST_STR_NULL (self->annotation_description));
-  } else if (memcmp (tag_ul, &related_material_description_ul, 16) == 0) {
-    self->related_material_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  related material description = %s",
-        GST_STR_NULL (self->related_material_description));
-  } else if (memcmp (tag_ul, &classification_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->classification_sets_uids,
-            &self->n_classification_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of classification sets = %u",
-        self->n_classification_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_classification_sets; i++) {
-        GST_DEBUG ("    classification sets %u = %s", i,
-            mxf_uuid_to_string (&self->classification_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &cue_words_set_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->cue_words_set_uid, tag_data, 16);
-    GST_DEBUG ("  cue words set = %s",
-        mxf_uuid_to_string (&self->cue_words_set_uid, str));
-  } else if (memcmp (tag_ul, &related_material_locators_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->related_material_locators,
-            &self->n_related_material_locators, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of related material locators = %u",
-        self->n_related_material_locators);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_related_material_locators; i++) {
-        GST_DEBUG ("    related material locators %u = %s", i,
-            mxf_uuid_to_string (&self->related_material_locators[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &participant_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->participant_sets_uids,
-            &self->n_participant_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of participant sets = %u", self->n_participant_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_participant_sets; i++) {
-        GST_DEBUG ("    participant sets %u = %s", i,
-            mxf_uuid_to_string (&self->participant_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_annotation_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 annotation local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_annotation_init (MXFDMS1Annotation * self)
-{
-}
-
-static void
-mxf_dms1_annotation_class_init (MXFDMS1AnnotationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_annotation_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_annotation_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_annotation_resolve;
-  dm_class->type = 0x170100;
-}
-
-G_DEFINE_TYPE (MXFDMS1SettingPeriod, mxf_dms1_setting_period,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_setting_period_finalize (GObject * object)
-{
-  MXFDMS1SettingPeriod *self = MXF_DMS1_SETTING_PERIOD (object);
-
-  g_free (self->time_period_keyword);
-  self->time_period_keyword = NULL;
-
-  g_free (self->setting_period_description);
-  self->setting_period_description = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_setting_period_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_setting_period_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1SettingPeriod *self = MXF_DMS1_SETTING_PERIOD (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[32];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 setting_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00
-  };
-  static const guint8 time_period_keyword_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 setting_period_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x08, 0x03, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &setting_date_and_time_ul, 16) == 0) {
-    if (!mxf_timestamp_parse (&self->setting_date_and_time, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  last modified date = %s",
-        mxf_timestamp_to_string (&self->setting_date_and_time, str));
-  } else if (memcmp (tag_ul, &time_period_keyword_ul, 16) == 0) {
-    self->time_period_keyword = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  time period keyword = %s",
-        GST_STR_NULL (self->time_period_keyword));
-  } else if (memcmp (tag_ul, &setting_period_description_ul, 16) == 0) {
-    self->setting_period_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  setting period description = %s",
-        GST_STR_NULL (self->setting_period_description));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_setting_period_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 setting period local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_setting_period_init (MXFDMS1SettingPeriod * self)
-{
-}
-
-static void
-mxf_dms1_setting_period_class_init (MXFDMS1SettingPeriodClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_setting_period_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_setting_period_handle_tag;
-  dm_class->type = 0x170200;
-}
-
-G_DEFINE_TYPE (MXFDMS1Scripting, mxf_dms1_scripting, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_scripting_finalize (GObject * object)
-{
-  MXFDMS1Scripting *self = MXF_DMS1_SCRIPTING (object);
-
-  g_free (self->scripting_kind);
-  self->scripting_kind = NULL;
-
-  g_free (self->scripting_text);
-  self->scripting_text = NULL;
-
-  g_free (self->scripting_locators);
-  self->scripting_locators = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_scripting_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_scripting_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Scripting *self = MXF_DMS1_SCRIPTING (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 scripting_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0b, 0x01, 0x00, 0x00
-  };
-  static const guint8 scripting_text_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0c, 0x01, 0x00, 0x00
-  };
-  static const guint8 scripting_locators_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, 0x06,
-    0x01, 0x01, 0x04, 0x06, 0x0e, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &scripting_kind_ul, 16) == 0) {
-    self->scripting_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  scripting kind = %s", GST_STR_NULL (self->scripting_kind));
-  } else if (memcmp (tag_ul, &scripting_text_ul, 16) == 0) {
-    self->scripting_text = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  scripting description = %s",
-        GST_STR_NULL (self->scripting_text));
-  } else if (memcmp (tag_ul, &scripting_locators_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->scripting_locators,
-            &self->n_scripting_locators, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of scripting locators = %u",
-        self->n_scripting_locators);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_scripting_locators; i++) {
-        GST_DEBUG ("   scripting locators %u = %s", i,
-            mxf_uuid_to_string (&self->scripting_locators[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_scripting_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 scripting local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_scripting_init (MXFDMS1Scripting * self)
-{
-}
-
-static void
-mxf_dms1_scripting_class_init (MXFDMS1ScriptingClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_scripting_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_scripting_handle_tag;
-  dm_class->type = 0x170300;
-}
-
-G_DEFINE_TYPE (MXFDMS1Classification, mxf_dms1_classification,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_classification_finalize (GObject * object)
-{
-  MXFDMS1Classification *self = MXF_DMS1_CLASSIFICATION (object);
-
-  g_free (self->name_value_sets_uids);
-  self->name_value_sets_uids = NULL;
-
-  g_free (self->name_value_sets);
-  self->name_value_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_classification_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_classification_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Classification *self = MXF_DMS1_CLASSIFICATION (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->name_value_sets)
-    memset (self->name_value_sets, 0,
-        sizeof (gpointer) * self->n_name_value_sets);
-  else
-    self->name_value_sets =
-        g_new0 (MXFDMS1NameValue *, self->n_name_value_sets);
-
-  for (i = 0; i < self->n_name_value_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->name_value_sets_uids[i]);
-    if (current && MXF_IS_DMS1_NAME_VALUE (current)) {
-      self->name_value_sets[i] = MXF_DMS1_NAME_VALUE (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_classification_parent_class)->resolve
-      (m, metadata);
-}
-
-static gboolean
-mxf_dms1_classification_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Classification *self = MXF_DMS1_CLASSIFICATION (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 content_classification_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x03,
-    0x02, 0x01, 0x03, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 name_value_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1f, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &content_classification_ul, 16) == 0) {
-    if (tag_size > 127)
-      goto error;
-
-    memcpy (self->content_classification, tag_data, tag_size);
-    GST_DEBUG ("  content classification = %s", self->content_classification);
-  } else if (memcmp (tag_ul, &name_value_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->name_value_sets_uids,
-            &self->n_name_value_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of name-value sets = %u", self->n_name_value_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_name_value_sets; i++) {
-        GST_DEBUG ("    name-value sets %u = %s", i,
-            mxf_uuid_to_string (&self->name_value_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_classification_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 classification local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_classification_init (MXFDMS1Classification * self)
-{
-}
-
-static void
-mxf_dms1_classification_class_init (MXFDMS1ClassificationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_classification_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_classification_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_classification_resolve;
-  dm_class->type = 0x170400;
-}
-
-G_DEFINE_TYPE (MXFDMS1Shot, mxf_dms1_shot, MXF_TYPE_DMS1_TEXT_LANGUAGE);
-
-static void
-mxf_dms1_shot_finalize (GObject * object)
-{
-  MXFDMS1Shot *self = MXF_DMS1_SHOT (object);
-
-  g_free (self->shot_track_ids);
-  self->shot_track_ids = NULL;
-
-  g_free (self->shot_description);
-  self->shot_description = NULL;
-
-  g_free (self->shot_comment_kind);
-  self->shot_comment_kind = NULL;
-
-  g_free (self->shot_comment);
-  self->shot_comment = NULL;
-
-  g_free (self->key_point_sets_uids);
-  self->key_point_sets_uids = NULL;
-
-  g_free (self->key_point_sets);
-  self->key_point_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_shot_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_shot_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Shot *self = MXF_DMS1_SHOT (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->key_point_sets)
-    memset (self->key_point_sets, 0,
-        sizeof (gpointer) * self->n_key_point_sets);
-  else
-    self->key_point_sets = g_new0 (MXFDMS1KeyPoint *, self->n_key_point_sets);
-
-  current = g_hash_table_lookup (metadata, &self->cue_words_set_uid);
-  if (current && MXF_IS_DMS1_CUE_WORDS (current)) {
-    self->cue_words_set = MXF_DMS1_CUE_WORDS (current);
-  }
-
-  for (i = 0; i < self->n_key_point_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->key_point_sets_uids[i]);
-    if (current && MXF_IS_DMS1_KEY_POINT (current)) {
-      self->key_point_sets[i] = MXF_DMS1_KEY_POINT (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_shot_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_shot_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Shot *self = MXF_DMS1_SHOT (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 shot_start_position_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x02, 0x01, 0x03, 0x01, 0x09, 0x00, 0x00
-  };
-  static const guint8 shot_duration_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x02, 0x02, 0x01, 0x02, 0x04, 0x00, 0x00
-  };
-  static const guint8 shot_track_ids_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x07, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 shot_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x02, 0x01, 0x06, 0x0d, 0x01, 0x00, 0x00
-  };
-  static const guint8 shot_comment_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x02, 0x05, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 shot_comment_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x03,
-    0x02, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 cue_words_set_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x02, 0x40, 0x23, 0x01
-  };
-  static const guint8 key_point_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x12, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &shot_start_position_ul, 16) == 0) {
-    if (tag_size != 8)
-      goto error;
-
-    self->shot_start_position = GST_READ_UINT64_BE (tag_data);
-    GST_DEBUG ("  shot start position = %" G_GINT64_FORMAT,
-        self->shot_start_position);
-  } else if (memcmp (tag_ul, &shot_duration_ul, 16) == 0) {
-    if (tag_size != 8)
-      goto error;
-
-    self->shot_duration = GST_READ_UINT64_BE (tag_data);
-    GST_DEBUG ("  shot duration = %" G_GINT64_FORMAT, self->shot_duration);
-  } else if (memcmp (tag_ul, &shot_track_ids_ul, 16) == 0) {
-    guint32 len, i;
-
-    len = GST_READ_UINT32_BE (tag_data);
-    GST_DEBUG ("  number of shot track ids = %u", len);
-    if (len == 0)
-      return ret;
-
-    if (GST_READ_UINT32_BE (tag_data + 4) != 4)
-      goto error;
-    tag_data += 8;
-    tag_size -= 8;
-
-    if (tag_size < 4 * len)
-      goto error;
-
-    self->n_shot_track_ids = len;
-    self->shot_track_ids = g_new0 (guint32, len);
-
-    for (i = 0; i < len; i++) {
-      self->shot_track_ids[i] = GST_READ_UINT32_BE (tag_data);
-      GST_DEBUG ("    shot track ids %u = %u", i, self->shot_track_ids[i]);
-      tag_data += 4;
-      tag_size -= 4;
-    }
-  } else if (memcmp (tag_ul, &shot_description_ul, 16) == 0) {
-    self->shot_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  shot description = %s",
-        GST_STR_NULL (self->shot_description));
-  } else if (memcmp (tag_ul, &shot_comment_kind_ul, 16) == 0) {
-    self->shot_comment_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  shot comment kind = %s",
-        GST_STR_NULL (self->shot_comment_kind));
-  } else if (memcmp (tag_ul, &shot_comment_ul, 16) == 0) {
-    self->shot_comment = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  shot comment = %s", GST_STR_NULL (self->shot_comment));
-  } else if (memcmp (tag_ul, &cue_words_set_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->cue_words_set_uid, tag_data, 16);
-    GST_DEBUG ("  cue words set = %s",
-        mxf_uuid_to_string (&self->cue_words_set_uid, str));
-  } else if (memcmp (tag_ul, &key_point_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->key_point_sets_uids,
-            &self->n_key_point_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of key point sets = %u", self->n_key_point_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_key_point_sets; i++) {
-        GST_DEBUG ("    key point sets %u = %s", i,
-            mxf_uuid_to_string (&self->key_point_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_shot_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 shot local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_shot_init (MXFDMS1Shot * self)
-{
-}
-
-static void
-mxf_dms1_shot_class_init (MXFDMS1ShotClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_shot_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_shot_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_shot_resolve;
-  dm_class->type = 0x170500;
-}
-
-G_DEFINE_TYPE (MXFDMS1KeyPoint, mxf_dms1_key_point, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_key_point_finalize (GObject * object)
-{
-  MXFDMS1KeyPoint *self = MXF_DMS1_KEY_POINT (object);
-
-  g_free (self->keypoint_kind);
-  self->keypoint_kind = NULL;
-
-  g_free (self->keypoint_value);
-  self->keypoint_value = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_key_point_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_key_point_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1KeyPoint *self = MXF_DMS1_KEY_POINT (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 keypoint_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x01, 0x02, 0x10, 0x01, 0x00, 0x00
-  };
-  static const guint8 keypoint_value_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x01, 0x02, 0x11, 0x01, 0x00, 0x00
-  };
-  static const guint8 keypoint_position_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x03, 0x01, 0x07, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &keypoint_kind_ul, 16) == 0) {
-    self->keypoint_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  keypoint kind = %s", GST_STR_NULL (self->keypoint_kind));
-  } else if (memcmp (tag_ul, &keypoint_value_ul, 16) == 0) {
-    self->keypoint_value = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  keypoint value = %s", GST_STR_NULL (self->keypoint_value));
-  } else if (memcmp (tag_ul, &keypoint_position_ul, 16) == 0) {
-    if (tag_size != 8)
-      goto error;
-
-    self->keypoint_position = GST_READ_UINT64_BE (tag_data);
-    GST_DEBUG ("  keypoint position = %" G_GINT64_FORMAT,
-        self->keypoint_position);
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_key_point_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 key point local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_key_point_init (MXFDMS1KeyPoint * self)
-{
-}
-
-static void
-mxf_dms1_key_point_class_init (MXFDMS1KeyPointClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_key_point_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_key_point_handle_tag;
-  dm_class->type = 0x170600;
-}
-
-G_DEFINE_TYPE (MXFDMS1Participant, mxf_dms1_participant,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_participant_finalize (GObject * object)
-{
-  MXFDMS1Participant *self = MXF_DMS1_PARTICIPANT (object);
-
-  g_free (self->contribution_status);
-  self->contribution_status = NULL;
-
-  g_free (self->job_function);
-  self->job_function = NULL;
-
-  g_free (self->role_or_identity_name);
-  self->role_or_identity_name = NULL;
-
-  g_free (self->person_sets_uids);
-  self->person_sets_uids = NULL;
-
-  g_free (self->person_sets);
-  self->person_sets = NULL;
-
-  g_free (self->organisation_sets_uids);
-  self->organisation_sets_uids = NULL;
-
-  g_free (self->organisation_sets);
-  self->organisation_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_participant_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_participant_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Participant *self = MXF_DMS1_PARTICIPANT (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->person_sets)
-    memset (self->person_sets, 0, sizeof (gpointer) * self->n_person_sets);
-  else
-    self->person_sets = g_new0 (MXFDMS1Person *, self->n_person_sets);
-
-  if (self->organisation_sets)
-    memset (self->organisation_sets, 0,
-        sizeof (gpointer) * self->n_organisation_sets);
-  else
-    self->organisation_sets =
-        g_new0 (MXFDMS1Organisation *, self->n_organisation_sets);
-
-  for (i = 0; i < self->n_person_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->person_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PERSON (current)) {
-      self->person_sets[i] = MXF_DMS1_PERSON (current);
-    }
-  }
-
-  for (i = 0; i < self->n_organisation_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->organisation_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ORGANISATION (current)) {
-      self->organisation_sets[i] = MXF_DMS1_ORGANISATION (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_participant_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_participant_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Participant *self = MXF_DMS1_PARTICIPANT (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 participant_uid_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, 0x01,
-    0x01, 0x15, 0x40, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 contribution_status_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 job_function_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x05, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 job_function_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x05, 0x01, 0x02, 0x00, 0x00, 0x00
-  };
-  static const guint8 role_or_identity_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 person_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x14, 0x00
-  };
-  static const guint8 organisation_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x15, 0x02
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &participant_uid_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->participant_uid, tag_data, 16);
-    GST_DEBUG ("  participant uid = %s",
-        mxf_uuid_to_string (&self->participant_uid, str));
-  } else if (memcmp (tag_ul, &contribution_status_ul, 16) == 0) {
-    self->contribution_status = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  contribution status = %s",
-        GST_STR_NULL (self->contribution_status));
-  } else if (memcmp (tag_ul, &job_function_ul, 16) == 0) {
-    self->job_function = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  job function = %s", GST_STR_NULL (self->job_function));
-  } else if (memcmp (tag_ul, &job_function_code_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->job_function_code, tag_data, tag_size);
-    GST_DEBUG ("  job function code = %s", self->job_function_code);
-  } else if (memcmp (tag_ul, &role_or_identity_name_ul, 16) == 0) {
-    self->role_or_identity_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  role or identity name = %s",
-        GST_STR_NULL (self->role_or_identity_name));
-  } else if (memcmp (tag_ul, &person_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->person_sets_uids, &self->n_person_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of person sets = %u", self->n_person_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_person_sets; i++) {
-        GST_DEBUG ("    person sets %u = %s", i,
-            mxf_uuid_to_string (&self->person_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &organisation_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->organisation_sets_uids,
-            &self->n_organisation_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of organisation sets = %u", self->n_organisation_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_organisation_sets; i++) {
-        GST_DEBUG ("    organisation sets %u = %s", i,
-            mxf_uuid_to_string (&self->organisation_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_participant_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 participant local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_participant_init (MXFDMS1Participant * self)
-{
-}
-
-static void
-mxf_dms1_participant_class_init (MXFDMS1ParticipantClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_participant_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_participant_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_participant_resolve;
-  dm_class->type = 0x180100;
-}
-
-G_DEFINE_ABSTRACT_TYPE (MXFDMS1Contact, mxf_dms1_contact,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_contact_finalize (GObject * object)
-{
-  MXFDMS1Contact *self = MXF_DMS1_CONTACT (object);
-
-  g_free (self->name_value_sets_uids);
-  self->name_value_sets_uids = NULL;
-
-  g_free (self->name_value_sets);
-  self->name_value_sets = NULL;
-
-  g_free (self->address_sets_uids);
-  self->address_sets_uids = NULL;
-
-  g_free (self->address_sets);
-  self->address_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_contact_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_contact_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Contact *self = MXF_DMS1_CONTACT (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->name_value_sets)
-    memset (self->name_value_sets, 0,
-        sizeof (gpointer) * self->n_name_value_sets);
-  else
-    self->name_value_sets =
-        g_new0 (MXFDMS1NameValue *, self->n_name_value_sets);
-
-  if (self->address_sets)
-    memset (self->address_sets, 0, sizeof (gpointer) * self->n_address_sets);
-  else
-    self->address_sets = g_new0 (MXFDMS1Address *, self->n_address_sets);
-
-  for (i = 0; i < self->n_name_value_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->name_value_sets_uids[i]);
-    if (current && MXF_IS_DMS1_NAME_VALUE (current)) {
-      self->name_value_sets[i] = MXF_DMS1_NAME_VALUE (current);
-    }
-  }
-
-  for (i = 0; i < self->n_address_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->address_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ADDRESS (current)) {
-      self->address_sets[i] = MXF_DMS1_ADDRESS (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_contact_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_contact_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Contact *self = MXF_DMS1_CONTACT (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 contact_uid_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, 0x01,
-    0x01, 0x15, 0x40, 0x01, 0x02, 0x00, 0x00
-  };
-  static const guint8 name_value_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1f, 0x02
-  };
-  static const guint8 address_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x17, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &contact_uid_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->contact_uid, tag_data, 16);
-    GST_DEBUG ("  contact uid = %s", mxf_uuid_to_string (&self->contact_uid,
-            str));
-  } else if (memcmp (tag_ul, &name_value_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->name_value_sets_uids,
-            &self->n_name_value_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of name-value sets = %u", self->n_name_value_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_name_value_sets; i++) {
-        GST_DEBUG ("    name-value sets %u = %s", i,
-            mxf_uuid_to_string (&self->name_value_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &address_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->address_sets_uids, &self->n_address_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of address sets = %u", self->n_address_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_address_sets; i++) {
-        GST_DEBUG ("    address sets %u = %s", i,
-            mxf_uuid_to_string (&self->address_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_contact_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 contact local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_contact_init (MXFDMS1Contact * self)
-{
-}
-
-static void
-mxf_dms1_contact_class_init (MXFDMS1ContactClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-
-  object_class->finalize = mxf_dms1_contact_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_contact_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_contact_resolve;
-}
-
-G_DEFINE_TYPE (MXFDMS1Person, mxf_dms1_person, MXF_TYPE_DMS1_CONTACT);
-
-static void
-mxf_dms1_person_finalize (GObject * object)
-{
-  MXFDMS1Person *self = MXF_DMS1_PERSON (object);
-
-  g_free (self->family_name);
-  self->family_name = NULL;
-
-  g_free (self->first_given_name);
-  self->first_given_name = NULL;
-
-  g_free (self->other_given_names);
-  self->other_given_names = NULL;
-
-  g_free (self->linking_name);
-  self->linking_name = NULL;
-
-  g_free (self->salutation);
-  self->salutation = NULL;
-
-  g_free (self->name_suffix);
-  self->name_suffix = NULL;
-
-  g_free (self->honours_qualifications);
-  self->honours_qualifications = NULL;
-
-  g_free (self->former_family_name);
-  self->former_family_name = NULL;
-
-  g_free (self->person_description);
-  self->person_description = NULL;
-
-  g_free (self->alternate_name);
-  self->alternate_name = NULL;
-
-  g_free (self->nationality);
-  self->nationality = NULL;
-
-  g_free (self->citizenship);
-  self->citizenship = NULL;
-
-  g_free (self->organisation_sets_uids);
-  self->organisation_sets_uids = NULL;
-
-  g_free (self->organisation_sets);
-  self->organisation_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_person_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_person_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Person *self = MXF_DMS1_PERSON (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->organisation_sets)
-    memset (self->organisation_sets, 0,
-        sizeof (gpointer) * self->n_organisation_sets);
-  else
-    self->organisation_sets =
-        g_new0 (MXFDMS1Organisation *, self->n_organisation_sets);
-
-  for (i = 0; i < self->n_organisation_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->organisation_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ORGANISATION (current)) {
-      self->organisation_sets[i] = MXF_DMS1_ORGANISATION (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_person_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_person_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Person *self = MXF_DMS1_PERSON (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 family_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x01, 0x01, 0x00
-  };
-  static const guint8 first_given_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x02, 0x01, 0x00
-  };
-  static const guint8 other_given_names_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x08, 0x01, 0x00
-  };
-  static const guint8 linking_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x0a, 0x01, 0x00
-  };
-  static const guint8 salutation_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x05, 0x01, 0x00
-  };
-  static const guint8 name_suffix_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x0b, 0x01, 0x00
-  };
-  static const guint8 honours_qualifications_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x06, 0x01, 0x00
-  };
-  static const guint8 former_family_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x0c, 0x01, 0x00
-  };
-  static const guint8 person_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x07, 0x01, 0x00
-  };
-  static const guint8 alternate_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x09, 0x01, 0x00
-  };
-  static const guint8 nationality_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x0d, 0x01, 0x00
-  };
-  static const guint8 citizenship_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x02,
-    0x30, 0x06, 0x03, 0x01, 0x0e, 0x01, 0x00
-  };
-  static const guint8 organisation_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x15, 0x02
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &family_name_ul, 16) == 0) {
-    self->family_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  family name = %s", GST_STR_NULL (self->family_name));
-  } else if (memcmp (tag_ul, &first_given_name_ul, 16) == 0) {
-    self->first_given_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  first given name = %s",
-        GST_STR_NULL (self->first_given_name));
-  } else if (memcmp (tag_ul, &other_given_names_ul, 16) == 0) {
-    self->other_given_names = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  other given names = %s",
-        GST_STR_NULL (self->other_given_names));
-  } else if (memcmp (tag_ul, &linking_name_ul, 16) == 0) {
-    self->linking_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  linking name = %s", GST_STR_NULL (self->linking_name));
-  } else if (memcmp (tag_ul, &salutation_ul, 16) == 0) {
-    self->salutation = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  salutation = %s", GST_STR_NULL (self->salutation));
-  } else if (memcmp (tag_ul, &name_suffix_ul, 16) == 0) {
-    self->name_suffix = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  name suffix = %s", GST_STR_NULL (self->name_suffix));
-  } else if (memcmp (tag_ul, &honours_qualifications_ul, 16) == 0) {
-    self->honours_qualifications = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  honours & qualifications = %s",
-        GST_STR_NULL (self->honours_qualifications));
-  } else if (memcmp (tag_ul, &former_family_name_ul, 16) == 0) {
-    self->former_family_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  former family name = %s",
-        GST_STR_NULL (self->former_family_name));
-  } else if (memcmp (tag_ul, &person_description_ul, 16) == 0) {
-    self->person_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  person description = %s",
-        GST_STR_NULL (self->person_description));
-  } else if (memcmp (tag_ul, &alternate_name_ul, 16) == 0) {
-    self->alternate_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  alternate name = %s", GST_STR_NULL (self->alternate_name));
-  } else if (memcmp (tag_ul, &nationality_ul, 16) == 0) {
-    self->nationality = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  nationality = %s", GST_STR_NULL (self->nationality));
-  } else if (memcmp (tag_ul, &citizenship_ul, 16) == 0) {
-    self->citizenship = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  citizenship = %s", GST_STR_NULL (self->citizenship));
-  } else if (memcmp (tag_ul, &organisation_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->organisation_sets_uids,
-            &self->n_organisation_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of organisation sets = %u", self->n_organisation_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_organisation_sets; i++) {
-        GST_DEBUG ("    organisation sets %u = %s", i,
-            mxf_uuid_to_string (&self->organisation_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_person_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 person local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_person_init (MXFDMS1Person * self)
-{
-}
-
-static void
-mxf_dms1_person_class_init (MXFDMS1PersonClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_person_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_person_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_person_resolve;
-  dm_class->type = 0x1a0200;
-}
-
-G_DEFINE_TYPE (MXFDMS1Organisation, mxf_dms1_organisation,
-    MXF_TYPE_DMS1_CONTACT);
-
-static void
-mxf_dms1_organisation_finalize (GObject * object)
-{
-  MXFDMS1Organisation *self = MXF_DMS1_ORGANISATION (object);
-
-  g_free (self->nature_of_organisation);
-  self->nature_of_organisation = NULL;
-
-  g_free (self->organisation_main_name);
-  self->organisation_main_name = NULL;
-
-  g_free (self->organisation_code);
-  self->organisation_code = NULL;
-
-  g_free (self->contact_department);
-  self->contact_department = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_organisation_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_organisation_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Organisation *self = MXF_DMS1_ORGANISATION (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 nature_of_organisation_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 organisation_main_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00
-  };
-  static const guint8 organisation_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x0a, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 contact_department_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x30, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &nature_of_organisation_ul, 16) == 0) {
-    self->nature_of_organisation = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  nature of organisation = %s",
-        GST_STR_NULL (self->nature_of_organisation));
-  } else if (memcmp (tag_ul, &organisation_main_name_ul, 16) == 0) {
-    self->organisation_main_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  organisation main name = %s",
-        GST_STR_NULL (self->organisation_main_name));
-  } else if (memcmp (tag_ul, &organisation_code_ul, 16) == 0) {
-    self->organisation_code = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  organisation code = %s",
-        GST_STR_NULL (self->organisation_code));
-  } else if (memcmp (tag_ul, &contact_department_ul, 16) == 0) {
-    self->contact_department = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  contact department = %s",
-        GST_STR_NULL (self->contact_department));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_organisation_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_organisation_init (MXFDMS1Organisation * self)
-{
-}
-
-static void
-mxf_dms1_organisation_class_init (MXFDMS1OrganisationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_organisation_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_organisation_handle_tag;
-  dm_class->type = 0x1a0300;
-}
-
-G_DEFINE_TYPE (MXFDMS1Location, mxf_dms1_location, MXF_TYPE_DMS1_CONTACT);
-
-static void
-mxf_dms1_location_finalize (GObject * object)
-{
-  MXFDMS1Location *self = MXF_DMS1_LOCATION (object);
-
-  g_free (self->location_kind);
-  self->location_kind = NULL;
-
-  g_free (self->location_description);
-  self->location_description = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_location_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_location_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Location *self = MXF_DMS1_LOCATION (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 location_kind_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x01, 0x20, 0x02, 0x03, 0x01, 0x00, 0x00
-  };
-  static const guint8 location_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x01, 0x20, 0x02, 0x02, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &location_kind_ul, 16) == 0) {
-    self->location_kind = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  location kind = %s", GST_STR_NULL (self->location_kind));
-  } else if (memcmp (tag_ul, &location_description_ul, 16) == 0) {
-    self->location_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  location description = %s",
-        GST_STR_NULL (self->location_description));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_location_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_location_init (MXFDMS1Location * self)
-{
-}
-
-static void
-mxf_dms1_location_class_init (MXFDMS1LocationClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_location_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_location_handle_tag;
-  dm_class->type = 0x1a0400;
-}
-
-G_DEFINE_TYPE (MXFDMS1Address, mxf_dms1_address, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_address_finalize (GObject * object)
-{
-  MXFDMS1Address *self = MXF_DMS1_ADDRESS (object);
-
-  g_free (self->room_or_suite_number);
-  self->room_or_suite_number = NULL;
-
-  g_free (self->room_or_suite_name);
-  self->room_or_suite_name = NULL;
-
-  g_free (self->building_name);
-  self->building_name = NULL;
-
-  g_free (self->street_number);
-  self->street_number = NULL;
-
-  g_free (self->street_name);
-  self->street_name = NULL;
-
-  g_free (self->postal_town);
-  self->postal_town = NULL;
-
-  g_free (self->city);
-  self->city = NULL;
-
-  g_free (self->state_or_province_or_country);
-  self->state_or_province_or_country = NULL;
-
-  g_free (self->postal_code);
-  self->postal_code = NULL;
-
-  g_free (self->country);
-  self->country = NULL;
-
-  g_free (self->astronomical_body_name);
-  self->astronomical_body_name = NULL;
-
-  g_free (self->communications_sets_uids);
-  self->communications_sets_uids = NULL;
-
-  g_free (self->communications_sets);
-  self->communications_sets = NULL;
-
-  g_free (self->name_value_sets_uids);
-  self->name_value_sets_uids = NULL;
-
-  g_free (self->name_value_sets);
-  self->name_value_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_address_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_address_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Address *self = MXF_DMS1_ADDRESS (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->communications_sets)
-    memset (self->communications_sets, 0,
-        sizeof (gpointer) * self->n_communications_sets);
-  else
-    self->communications_sets =
-        g_new0 (MXFDMS1Communications *, self->n_communications_sets);
-
-  if (self->name_value_sets)
-    memset (self->name_value_sets, 0,
-        sizeof (gpointer) * self->n_name_value_sets);
-  else
-    self->name_value_sets =
-        g_new0 (MXFDMS1NameValue *, self->n_name_value_sets);
-
-  for (i = 0; i < self->n_communications_sets; i++) {
-    current =
-        g_hash_table_lookup (metadata, &self->communications_sets_uids[i]);
-    if (current && MXF_IS_DMS1_COMMUNICATIONS (current)) {
-      self->communications_sets[i] = MXF_DMS1_COMMUNICATIONS (current);
-    }
-  }
-
-  for (i = 0; i < self->n_name_value_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->name_value_sets_uids[i]);
-    if (current && MXF_IS_DMS1_NAME_VALUE (current)) {
-      self->name_value_sets[i] = MXF_DMS1_NAME_VALUE (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_address_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_address_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Address *self = MXF_DMS1_ADDRESS (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 room_or_suite_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x01, 0x01
-  };
-  static const guint8 room_or_suite_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x11, 0x01
-  };
-  static const guint8 building_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x12, 0x01
-  };
-  static const guint8 place_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x14, 0x01
-  };
-  static const guint8 street_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x02, 0x01
-  };
-  static const guint8 street_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x03, 0x01
-  };
-  static const guint8 postal_town_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x04, 0x01
-  };
-  static const guint8 city_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x05, 0x01
-  };
-  static const guint8 state_or_province_or_country_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x06, 0x01
-  };
-  static const guint8 postal_code_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x07, 0x01
-  };
-  static const guint8 country_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x08, 0x01
-  };
-  static const guint8 geographical_coordinate_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x15, 0x01
-  };
-  static const guint8 astronomical_body_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x07,
-    0x01, 0x20, 0x01, 0x04, 0x01, 0x16, 0x01
-  };
-  static const guint8 communications_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x19, 0x00
-  };
-  static const guint8 name_value_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x07, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1f, 0x04
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &room_or_suite_name_ul, 16) == 0) {
-    self->room_or_suite_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  room or suite name = %s",
-        GST_STR_NULL (self->room_or_suite_name));
-  } else if (memcmp (tag_ul, &room_or_suite_number_ul, 16) == 0) {
-    self->room_or_suite_number = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  room or suite number = %s",
-        GST_STR_NULL (self->room_or_suite_number));
-  } else if (memcmp (tag_ul, &building_name_ul, 16) == 0) {
-    self->building_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  building name = %s", GST_STR_NULL (self->building_name));
-  } else if (memcmp (tag_ul, &place_name_ul, 16) == 0) {
-    self->place_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  place name = %s", GST_STR_NULL (self->place_name));
-  } else if (memcmp (tag_ul, &street_number_ul, 16) == 0) {
-    self->street_number = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  street number = %s", GST_STR_NULL (self->street_number));
-  } else if (memcmp (tag_ul, &street_name_ul, 16) == 0) {
-    self->street_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  street name = %s", GST_STR_NULL (self->street_name));
-  } else if (memcmp (tag_ul, &postal_town_ul, 16) == 0) {
-    self->postal_town = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  postal town = %s", GST_STR_NULL (self->postal_town));
-  } else if (memcmp (tag_ul, &city_ul, 16) == 0) {
-    self->city = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  city = %s", GST_STR_NULL (self->city));
-  } else if (memcmp (tag_ul, &state_or_province_or_country_ul, 16) == 0) {
-    self->state_or_province_or_country = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  state or province or country = %s",
-        GST_STR_NULL (self->state_or_province_or_country));
-  } else if (memcmp (tag_ul, &postal_code_ul, 16) == 0) {
-    self->postal_code = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  postal code = %s", GST_STR_NULL (self->postal_code));
-  } else if (memcmp (tag_ul, &country_ul, 16) == 0) {
-    self->country = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  country = %s", GST_STR_NULL (self->country));
-  } else if (memcmp (tag_ul, &geographical_coordinate_ul, 16) == 0) {
-    if (tag_size != 12)
-      goto error;
-
-    memcpy (&self->geographical_coordinate, tag_data, 12);
-    /* TODO implement */
-  } else if (memcmp (tag_ul, &astronomical_body_name_ul, 16) == 0) {
-    self->astronomical_body_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  astronomical body name = %s",
-        GST_STR_NULL (self->astronomical_body_name));
-  } else if (memcmp (tag_ul, &communications_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->communications_sets_uids,
-            &self->n_communications_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of communications sets = %u",
-        self->n_communications_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_communications_sets; i++) {
-        GST_DEBUG ("    communications sets %u = %s", i,
-            mxf_uuid_to_string (&self->communications_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &name_value_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->name_value_sets_uids,
-            &self->n_name_value_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of name-value sets = %u", self->n_name_value_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_name_value_sets; i++) {
-        GST_DEBUG ("    name-value sets %u = %s", i,
-            mxf_uuid_to_string (&self->name_value_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_address_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 address local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_address_init (MXFDMS1Address * self)
-{
-}
-
-static void
-mxf_dms1_address_class_init (MXFDMS1AddressClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_address_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_address_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_address_resolve;
-  dm_class->type = 0x1b0100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Communications, mxf_dms1_communications, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_communications_finalize (GObject * object)
-{
-  MXFDMS1Communications *self = MXF_DMS1_COMMUNICATIONS (object);
-
-  g_free (self->email_address);
-  self->email_address = NULL;
-
-  g_free (self->web_page);
-  self->web_page = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_communications_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_communications_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Communications *self = MXF_DMS1_COMMUNICATIONS (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 central_telephone_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x04, 0x00
-  };
-  static const guint8 telephone_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x01, 0x00
-  };
-  static const guint8 mobile_telephone_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x05, 0x00
-  };
-  static const guint8 fax_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x02, 0x00
-  };
-  static const guint8 email_address_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x03, 0x01
-  };
-  static const guint8 web_page_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x07,
-    0x01, 0x20, 0x01, 0x10, 0x03, 0x06, 0x01
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &central_telephone_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-    memcpy (self->central_telephone_number, tag_data, tag_size);
-
-    GST_DEBUG ("  central telephone number = %s",
-        self->central_telephone_number);
-  } else if (memcmp (tag_ul, &telephone_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-    memcpy (self->telephone_number, tag_data, tag_size);
-
-    GST_DEBUG ("  telephone number = %s", self->telephone_number);
-  } else if (memcmp (tag_ul, &mobile_telephone_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-    memcpy (self->mobile_telephone_number, tag_data, tag_size);
-
-    GST_DEBUG ("  mobile telephone number = %s", self->mobile_telephone_number);
-  } else if (memcmp (tag_ul, &fax_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-    memcpy (self->fax_number, tag_data, tag_size);
-
-    GST_DEBUG ("  fax number = %s", self->fax_number);
-  } else if (memcmp (tag_ul, &email_address_ul, 16) == 0) {
-    self->email_address = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  email address = %s", GST_STR_NULL (self->email_address));
-  } else if (memcmp (tag_ul, &web_page_ul, 16) == 0) {
-    self->web_page = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  web page = %s", GST_STR_NULL (self->web_page));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_communications_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 communications local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_communications_init (MXFDMS1Communications * self)
-{
-}
-
-static void
-mxf_dms1_communications_class_init (MXFDMS1CommunicationsClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_communications_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_communications_handle_tag;
-  dm_class->type = 0x1b0200;
-}
-
-G_DEFINE_TYPE (MXFDMS1Contract, mxf_dms1_contract, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_contract_finalize (GObject * object)
-{
-  MXFDMS1Contract *self = MXF_DMS1_CONTRACT (object);
-
-  g_free (self->rights_sets_uids);
-  self->rights_sets_uids = NULL;
-
-  g_free (self->rights_sets);
-  self->rights_sets = NULL;
-
-  g_free (self->participant_sets_uids);
-  self->participant_sets_uids = NULL;
-
-  g_free (self->participant_sets);
-  self->participant_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_contract_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_contract_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1Contract *self = MXF_DMS1_CONTRACT (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->rights_sets)
-    memset (self->rights_sets, 0, sizeof (gpointer) * self->n_rights_sets);
-  else
-    self->rights_sets = g_new0 (MXFDMS1Rights *, self->n_rights_sets);
-
-  if (self->participant_sets)
-    memset (self->participant_sets, 0,
-        sizeof (gpointer) * self->n_participant_sets);
-  else
-    self->participant_sets =
-        g_new0 (MXFDMS1Participant *, self->n_participant_sets);
-
-  for (i = 0; i < self->n_rights_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->rights_sets_uids[i]);
-    if (current && MXF_IS_DMS1_RIGHTS (current)) {
-      self->rights_sets[i] = MXF_DMS1_RIGHTS (current);
-    }
-  }
-
-  for (i = 0; i < self->n_participant_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->participant_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PARTICIPANT (current)) {
-      self->participant_sets[i] = MXF_DMS1_PARTICIPANT (current);
-    }
-  }
-
-  return MXF_METADATA_BASE_CLASS (mxf_dms1_contract_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_contract_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Contract *self = MXF_DMS1_CONTRACT (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 supply_contract_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x02,
-    0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 rights_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1a, 0x00
-  };
-  static const guint8 participant_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x13, 0x02
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &supply_contract_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->supply_contract_number, tag_data, tag_size);
-    GST_DEBUG ("  supply contract number = %s", self->supply_contract_number);
-  } else if (memcmp (tag_ul, &rights_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->rights_sets_uids, &self->n_rights_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of rights sets = %u", self->n_rights_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_rights_sets; i++) {
-        GST_DEBUG ("    rights sets %u = %s", i,
-            mxf_uuid_to_string (&self->rights_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &participant_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->participant_sets_uids,
-            &self->n_participant_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of participant sets = %u", self->n_participant_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_participant_sets; i++) {
-        GST_DEBUG ("    participant sets %u = %s", i,
-            mxf_uuid_to_string (&self->participant_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_contract_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 contract local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_contract_init (MXFDMS1Contract * self)
-{
-}
-
-static void
-mxf_dms1_contract_class_init (MXFDMS1ContractClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_contract_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_contract_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_contract_resolve;
-  dm_class->type = 0x1c0100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Rights, mxf_dms1_rights, MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_rights_finalize (GObject * object)
-{
-  MXFDMS1Rights *self = MXF_DMS1_RIGHTS (object);
-
-  g_free (self->copyright_owner);
-  self->copyright_owner = NULL;
-
-  g_free (self->rights_holder);
-  self->rights_holder = NULL;
-
-  g_free (self->rights_managment_authority);
-  self->rights_managment_authority = NULL;
-
-  g_free (self->region_or_area_of_ip_license);
-  self->region_or_area_of_ip_license = NULL;
-
-  g_free (self->intellectual_property_type);
-  self->intellectual_property_type = NULL;
-
-  g_free (self->right_condition);
-  self->right_condition = NULL;
-
-  g_free (self->right_remarks);
-  self->right_remarks = NULL;
-
-  g_free (self->intellectual_property_right);
-  self->intellectual_property_right = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_rights_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_rights_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Rights *self = MXF_DMS1_RIGHTS (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[32];
-#endif
-  static const guint8 copyright_owner_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 rights_holder_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 rights_managment_authority_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 region_or_area_of_ip_license_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x07,
-    0x01, 0x20, 0x01, 0x03, 0x05, 0x01, 0x00
-  };
-  static const guint8 intellectual_property_type_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 right_condition_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 right_remarks_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x08, 0x02,
-    0x05, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 intellectual_property_right_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x02,
-    0x05, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 rights_start_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x20, 0x02, 0x00, 0x00, 0x00
-  };
-  static const guint8 rights_stop_date_and_time_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x07,
-    0x02, 0x01, 0x20, 0x03, 0x00, 0x00, 0x00
-  };
-  static const guint8 maximum_number_of_usages_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &copyright_owner_ul, 16) == 0) {
-    self->copyright_owner = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  copyright owner = %s", GST_STR_NULL (self->copyright_owner));
-  } else if (memcmp (tag_ul, &rights_holder_ul, 16) == 0) {
-    self->rights_holder = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  rights holder = %s", GST_STR_NULL (self->rights_holder));
-  } else if (memcmp (tag_ul, &rights_managment_authority_ul, 16) == 0) {
-    self->rights_managment_authority = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  rights managment authority = %s",
-        GST_STR_NULL (self->rights_managment_authority));
-  } else if (memcmp (tag_ul, &region_or_area_of_ip_license_ul, 16) == 0) {
-    self->region_or_area_of_ip_license = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  region or area of ip license = %s",
-        GST_STR_NULL (self->region_or_area_of_ip_license));
-  } else if (memcmp (tag_ul, &intellectual_property_type_ul, 16) == 0) {
-    self->intellectual_property_type = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  intellectual property type = %s",
-        GST_STR_NULL (self->intellectual_property_type));
-  } else if (memcmp (tag_ul, &right_condition_ul, 16) == 0) {
-    self->right_condition = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  right condition = %s", GST_STR_NULL (self->right_condition));
-  } else if (memcmp (tag_ul, &right_remarks_ul, 16) == 0) {
-    self->right_remarks = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  right remarks = %s", GST_STR_NULL (self->right_remarks));
-  } else if (memcmp (tag_ul, &intellectual_property_right_ul, 16) == 0) {
-    self->intellectual_property_right = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  intellectual property right = %s",
-        GST_STR_NULL (self->intellectual_property_right));
-  } else if (memcmp (tag_ul, &rights_start_date_and_time_ul, 16) == 0) {
-    if (!mxf_timestamp_parse (&self->rights_start_date_and_time, tag_data,
-            tag_size))
-      goto error;
-
-    GST_DEBUG ("  rights start date and time = %s",
-        mxf_timestamp_to_string (&self->rights_start_date_and_time, str));
-  } else if (memcmp (tag_ul, &rights_stop_date_and_time_ul, 16) == 0) {
-    if (!mxf_timestamp_parse (&self->rights_stop_date_and_time, tag_data,
-            tag_size))
-      goto error;
-
-    GST_DEBUG ("  rights stop date and time = %s",
-        mxf_timestamp_to_string (&self->rights_stop_date_and_time, str));
-  } else if (memcmp (tag_ul, &maximum_number_of_usages_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->maximum_number_of_usages = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  maximum number of usages = %u",
-        self->maximum_number_of_usages);
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_rights_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 rights local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_rights_init (MXFDMS1Rights * self)
-{
-}
-
-static void
-mxf_dms1_rights_class_init (MXFDMS1RightsClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_rights_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_rights_handle_tag;
-  dm_class->type = 0x1c0200;
-}
-
-G_DEFINE_TYPE (MXFDMS1PictureFormat, mxf_dms1_picture_format, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_picture_format_finalize (GObject * object)
-{
-  MXFDMS1PictureFormat *self = MXF_DMS1_PICTURE_FORMAT (object);
-
-  g_free (self->colour_descriptor);
-  self->colour_descriptor = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_picture_format_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_picture_format_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1PictureFormat *self = MXF_DMS1_PICTURE_FORMAT (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 viewport_aspect_ratio_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, 0x04,
-    0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00
-  };
-  static const guint8 perceived_display_format_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x04,
-    0x01, 0x01, 0x01, 0x08, 0x00, 0x00, 0x00
-  };
-  static const guint8 colour_descriptor_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x03,
-    0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &viewport_aspect_ratio_ul, 16) == 0) {
-    if (!mxf_fraction_parse (&self->viewport_aspect_ratio, tag_data, tag_size))
-      goto error;
-
-    GST_DEBUG ("  viewport aspect ratio = %u/%u", self->viewport_aspect_ratio.n,
-        self->viewport_aspect_ratio.d);
-  } else if (memcmp (tag_ul, &perceived_display_format_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->perceived_display_format, tag_data, tag_size);
-    GST_DEBUG ("  perceived display format = %s",
-        self->perceived_display_format);
-  } else if (memcmp (tag_ul, &colour_descriptor_ul, 16) == 0) {
-    self->colour_descriptor = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  colour descriptor = %s",
-        GST_STR_NULL (self->colour_descriptor));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_picture_format_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 picture format local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_picture_format_init (MXFDMS1PictureFormat * self)
-{
-}
-
-static void
-mxf_dms1_picture_format_class_init (MXFDMS1PictureFormatClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_picture_format_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_picture_format_handle_tag;
-  dm_class->type = 0x1d0100;
-}
-
-G_DEFINE_TYPE (MXFDMS1DeviceParameters, mxf_dms1_device_parameters,
-    MXF_TYPE_DMS1_THESAURUS);
-
-static void
-mxf_dms1_device_parameters_finalize (GObject * object)
-{
-  MXFDMS1DeviceParameters *self = MXF_DMS1_DEVICE_PARAMETERS (object);
-
-  g_free (self->device_type);
-  self->device_type = NULL;
-
-  g_free (self->manufacturer);
-  self->manufacturer = NULL;
-
-  g_free (self->device_model);
-  self->device_model = NULL;
-
-  g_free (self->device_serial_number);
-  self->device_serial_number = NULL;
-
-  g_free (self->device_usage_description);
-  self->device_usage_description = NULL;
-
-  g_free (self->name_value_sets_uids);
-  self->name_value_sets_uids = NULL;
-
-  g_free (self->name_value_sets);
-  self->name_value_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_device_parameters_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_device_parameters_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1DeviceParameters *self = MXF_DMS1_DEVICE_PARAMETERS (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->name_value_sets)
-    memset (self->name_value_sets, 0,
-        sizeof (gpointer) * self->n_name_value_sets);
-  else
-    self->name_value_sets =
-        g_new0 (MXFDMS1NameValue *, self->n_name_value_sets);
-
-  for (i = 0; i < self->n_name_value_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->name_value_sets_uids[i]);
-    if (current && MXF_IS_DMS1_NAME_VALUE (current)) {
-      self->name_value_sets[i] = MXF_DMS1_NAME_VALUE (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_device_parameters_parent_class)->resolve
-      (m, metadata);
-}
-
-static gboolean
-mxf_dms1_device_parameters_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1DeviceParameters *self = MXF_DMS1_DEVICE_PARAMETERS (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 device_type_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x01, 0x20, 0x08, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 device_designation_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 device_asset_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x01, 0x20, 0x0c, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 ieee_device_identifier_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, 0x01,
-    0x01, 0x20, 0x05, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 manufacturer_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, 0x01,
-    0x0a, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 device_model_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 device_serial_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 device_usage_description_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x03, 0x03, 0x10, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 name_value_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x05, 0x40, 0x1f, 0x03
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &device_type_ul, 16) == 0) {
-    self->device_type = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  device type = %s", GST_STR_NULL (self->device_type));
-  } else if (memcmp (tag_ul, &device_designation_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->device_designation, tag_data, tag_size);
-    GST_DEBUG ("  device designation = %s", self->device_designation);
-  } else if (memcmp (tag_ul, &device_asset_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->device_asset_number, tag_data, tag_size);
-    GST_DEBUG ("  device asset number = %s", self->device_asset_number);
-  } else if (memcmp (tag_ul, &ieee_device_identifier_ul, 16) == 0) {
-    if (tag_size != 6)
-      goto error;
-
-    memcpy (self->ieee_device_identifier, tag_data, 6);
-    GST_DEBUG
-        ("  IEEE device identifier = 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
-        self->ieee_device_identifier[0], self->ieee_device_identifier[1],
-        self->ieee_device_identifier[2], self->ieee_device_identifier[3],
-        self->ieee_device_identifier[4], self->ieee_device_identifier[5]);
-  } else if (memcmp (tag_ul, &manufacturer_ul, 16) == 0) {
-    self->manufacturer = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  manufacturer = %s", GST_STR_NULL (self->manufacturer));
-  } else if (memcmp (tag_ul, &device_model_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->device_model, tag_data, tag_size);
-    GST_DEBUG ("  device model = %s", self->device_model);
-  } else if (memcmp (tag_ul, &device_serial_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->device_serial_number, tag_data, tag_size);
-    GST_DEBUG ("  device serial number = %s", self->device_serial_number);
-  } else if (memcmp (tag_ul, &device_usage_description_ul, 16) == 0) {
-    self->device_usage_description = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  device usage description = %s",
-        GST_STR_NULL (self->device_usage_description));
-  } else if (memcmp (tag_ul, &name_value_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->name_value_sets_uids,
-            &self->n_name_value_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of name-value sets = %u", self->n_name_value_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_name_value_sets; i++) {
-        GST_DEBUG ("    name-value sets %u = %s", i,
-            mxf_uuid_to_string (&self->name_value_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_device_parameters_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 device parameters local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_device_parameters_init (MXFDMS1DeviceParameters * self)
-{
-}
-
-static void
-mxf_dms1_device_parameters_class_init (MXFDMS1DeviceParametersClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_device_parameters_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_device_parameters_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_device_parameters_resolve;
-  dm_class->type = 0x1e0100;
-}
-
-G_DEFINE_TYPE (MXFDMS1NameValue, mxf_dms1_name_value, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_name_value_finalize (GObject * object)
-{
-  MXFDMS1NameValue *self = MXF_DMS1_NAME_VALUE (object);
-
-  g_free (self->item_name);
-  self->item_name = NULL;
-
-  g_free (self->item_value);
-  self->item_value = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_name_value_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_name_value_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1NameValue *self = MXF_DMS1_NAME_VALUE (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 item_name_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x01, 0x02, 0x0a, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 item_value_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x03,
-    0x01, 0x02, 0x0a, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 smpte_universal_label_locator_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x01,
-    0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &item_name_ul, 16) == 0) {
-    self->item_name = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  item name = %s", GST_STR_NULL (self->item_name));
-  } else if (memcmp (tag_ul, &item_value_ul, 16) == 0) {
-    self->item_value = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  item value = %s", GST_STR_NULL (self->item_value));
-  } else if (memcmp (tag_ul, &smpte_universal_label_locator_ul, 16) == 0) {
-    if (tag_size != 16)
-      goto error;
-
-    memcpy (&self->smpte_universal_label_locator, tag_data, 16);
-    GST_DEBUG ("  SMPTE universal label locator = %s",
-        mxf_uuid_to_string (&self->smpte_universal_label_locator, str));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_name_value_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 name-value local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_name_value_init (MXFDMS1NameValue * self)
-{
-}
-
-static void
-mxf_dms1_name_value_class_init (MXFDMS1NameValueClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_name_value_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_name_value_handle_tag;
-  dm_class->type = 0x1f0100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Processing, mxf_dms1_processing, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_processing_finalize (GObject * object)
-{
-  MXFDMS1Processing *self = MXF_DMS1_PROCESSING (object);
-
-  g_free (self->descriptive_comment);
-  self->descriptive_comment = NULL;
-
-  g_free (self->graphic_usage_type);
-  self->graphic_usage_type = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_processing_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_processing_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1Processing *self = MXF_DMS1_PROCESSING (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 quality_flag_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 descriptive_comment_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x03,
-    0x02, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 logo_flag_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x03, 0x05,
-    0x01, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 graphic_usage_type_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x05,
-    0x01, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 process_steps_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 generation_copy_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 generation_clone_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &quality_flag_ul, 16) == 0) {
-    if (tag_size != 1)
-      goto error;
-
-    self->quality_flag = GST_READ_UINT8 (tag_data);
-    GST_DEBUG ("  quality flag = %u", self->quality_flag);
-  } else if (memcmp (tag_ul, &descriptive_comment_ul, 16) == 0) {
-    self->descriptive_comment = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  descriptive comment = %s",
-        GST_STR_NULL (self->descriptive_comment));
-  } else if (memcmp (tag_ul, &logo_flag_ul, 16) == 0) {
-    if (tag_size != 1)
-      goto error;
-
-    self->logo_flag = GST_READ_UINT8 (tag_data);
-    GST_DEBUG ("  logo flag = %u", self->logo_flag);
-  } else if (memcmp (tag_ul, &graphic_usage_type_ul, 16) == 0) {
-    self->graphic_usage_type = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  graphic usage type = %s",
-        GST_STR_NULL (self->graphic_usage_type));
-  } else if (memcmp (tag_ul, &process_steps_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->process_steps = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  process steps = %u", self->process_steps);
-  } else if (memcmp (tag_ul, &generation_copy_number_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->generation_copy_number = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  generation copy number = %u", self->generation_copy_number);
-  } else if (memcmp (tag_ul, &generation_clone_number_ul, 16) == 0) {
-    if (tag_size != 2)
-      goto error;
-
-    self->generation_clone_number = GST_READ_UINT16_BE (tag_data);
-    GST_DEBUG ("  generation clone number = %u", self->generation_clone_number);
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_processing_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 processing local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_processing_init (MXFDMS1Processing * self)
-{
-}
-
-static void
-mxf_dms1_processing_class_init (MXFDMS1ProcessingClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_processing_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_processing_handle_tag;
-  dm_class->type = 0x200100;
-}
-
-G_DEFINE_TYPE (MXFDMS1Project, mxf_dms1_project, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_project_finalize (GObject * object)
-{
-  MXFDMS1Project *self = MXF_DMS1_PROJECT (object);
-
-  g_free (self->project_name_or_title);
-  self->project_name_or_title = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_project_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_project_handle_tag (MXFMetadataBase * metadata, MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint tag_size)
-{
-  MXFDMS1Project *self = MXF_DMS1_PROJECT (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 project_number_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x02, 0x01,
-    0x03, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 project_name_or_title_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x01,
-    0x03, 0x01, 0x08, 0x01, 0x00, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &project_number_ul, 16) == 0) {
-    if (tag_size > 32)
-      goto error;
-
-    memcpy (self->project_number, tag_data, tag_size);
-
-    GST_DEBUG ("  project number = %s", self->project_number);
-  } else if (memcmp (tag_ul, &project_name_or_title_ul, 16) == 0) {
-    self->project_name_or_title = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  project name or title = %s",
-        GST_STR_NULL (self->project_name_or_title));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_project_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 project local tag 0x%04x of size %u", tag, tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_project_init (MXFDMS1Project * self)
-{
-}
-
-static void
-mxf_dms1_project_class_init (MXFDMS1ProjectClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_project_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_project_handle_tag;
-  dm_class->type = 0x200200;
-}
-
-G_DEFINE_TYPE (MXFDMS1ContactsList, mxf_dms1_contacts_list, MXF_TYPE_DMS1);
-
-static void
-mxf_dms1_contacts_list_finalize (GObject * object)
-{
-  MXFDMS1ContactsList *self = MXF_DMS1_CONTACTS_LIST (object);
-
-  g_free (self->person_sets_uids);
-  self->person_sets_uids = NULL;
-
-  g_free (self->person_sets);
-  self->person_sets = NULL;
-
-  g_free (self->organisation_sets_uids);
-  self->organisation_sets_uids = NULL;
-
-  g_free (self->organisation_sets);
-  self->organisation_sets = NULL;
-
-  g_free (self->location_sets_uids);
-  self->location_sets_uids = NULL;
-
-  g_free (self->location_sets);
-  self->location_sets = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_contacts_list_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_contacts_list_resolve (MXFMetadataBase * m, GHashTable * metadata)
-{
-  MXFDMS1ContactsList *self = MXF_DMS1_CONTACTS_LIST (m);
-  MXFMetadataBase *current = NULL;
-  guint i;
-
-  if (self->person_sets)
-    memset (self->person_sets, 0, sizeof (gpointer) * self->n_person_sets);
-  else
-    self->person_sets = g_new0 (MXFDMS1Person *, self->n_person_sets);
-
-  if (self->organisation_sets)
-    memset (self->organisation_sets, 0,
-        sizeof (gpointer) * self->n_organisation_sets);
-  else
-    self->organisation_sets =
-        g_new0 (MXFDMS1Organisation *, self->n_organisation_sets);
-
-  if (self->location_sets)
-    memset (self->location_sets, 0, sizeof (gpointer) * self->n_location_sets);
-  else
-    self->location_sets = g_new0 (MXFDMS1Location *, self->n_location_sets);
-
-  for (i = 0; i < self->n_person_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->person_sets_uids[i]);
-    if (current && MXF_IS_DMS1_PERSON (current)) {
-      self->person_sets[i] = MXF_DMS1_PERSON (current);
-    }
-  }
-
-  for (i = 0; i < self->n_organisation_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->organisation_sets_uids[i]);
-    if (current && MXF_IS_DMS1_ORGANISATION (current)) {
-      self->organisation_sets[i] = MXF_DMS1_ORGANISATION (current);
-    }
-  }
-
-  for (i = 0; i < self->n_location_sets; i++) {
-    current = g_hash_table_lookup (metadata, &self->location_sets_uids[i]);
-    if (current && MXF_IS_DMS1_LOCATION (current)) {
-      self->location_sets[i] = MXF_DMS1_LOCATION (current);
-    }
-  }
-
-  return
-      MXF_METADATA_BASE_CLASS (mxf_dms1_contacts_list_parent_class)->resolve (m,
-      metadata);
-}
-
-static gboolean
-mxf_dms1_contacts_list_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1ContactsList *self = MXF_DMS1_CONTACTS_LIST (metadata);
-  gboolean ret = TRUE;
-#ifndef GST_DISABLE_GST_DEBUG
-  gchar str[48];
-#endif
-  MXFUL *tag_ul = NULL;
-  static const guint8 person_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x14, 0x00
-  };
-  static const guint8 organisation_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x15, 0x00
-  };
-  static const guint8 location_sets_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x05, 0x06,
-    0x01, 0x01, 0x04, 0x03, 0x40, 0x16, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &person_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->person_sets_uids, &self->n_person_sets,
-            tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of person sets = %u", self->n_person_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_person_sets; i++) {
-        GST_DEBUG ("    person sets %u = %s", i,
-            mxf_uuid_to_string (&self->person_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &organisation_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->organisation_sets_uids,
-            &self->n_organisation_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of organisation sets = %u", self->n_organisation_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_organisation_sets; i++) {
-        GST_DEBUG ("    organisation sets %u = %s", i,
-            mxf_uuid_to_string (&self->organisation_sets_uids[i], str));
-      }
-    }
-#endif
-  } else if (memcmp (tag_ul, &location_sets_ul, 16) == 0) {
-    if (!mxf_uuid_array_parse (&self->location_sets_uids,
-            &self->n_location_sets, tag_data, tag_size))
-      goto error;
-    GST_DEBUG ("  number of location sets = %u", self->n_location_sets);
-#ifndef GST_DISABLE_GST_DEBUG
-    {
-      guint i;
-      for (i = 0; i < self->n_location_sets; i++) {
-        GST_DEBUG ("    location sets %u = %s", i,
-            mxf_uuid_to_string (&self->location_sets_uids[i], str));
-      }
-    }
-#endif
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS
-        (mxf_dms1_contacts_list_parent_class)->handle_tag (metadata, primer,
-        tag, tag_data, tag_size);
-  }
-
-  return ret;
-
-error:
-
-  GST_ERROR ("Invalid DMS1 contacts list local tag 0x%04x of size %u", tag,
-      tag_size);
-
-  return FALSE;
-}
-
-static void
-mxf_dms1_contacts_list_init (MXFDMS1ContactsList * self)
-{
-}
-
-static void
-mxf_dms1_contacts_list_class_init (MXFDMS1ContactsListClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_contacts_list_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_contacts_list_handle_tag;
-  metadatabase_class->resolve = mxf_dms1_contacts_list_resolve;
-  dm_class->type = 0x190100;
-}
-
-G_DEFINE_TYPE (MXFDMS1CueWords, mxf_dms1_cue_words,
-    MXF_TYPE_DMS1_TEXT_LANGUAGE);
-
-static void
-mxf_dms1_cue_words_finalize (GObject * object)
-{
-  MXFDMS1CueWords *self = MXF_DMS1_CUE_WORDS (object);
-
-  g_free (self->in_cue_words);
-  self->in_cue_words = NULL;
-
-  g_free (self->out_cue_words);
-  self->out_cue_words = NULL;
-
-  G_OBJECT_CLASS (mxf_dms1_cue_words_parent_class)->finalize (object);
-}
-
-static gboolean
-mxf_dms1_cue_words_handle_tag (MXFMetadataBase * metadata,
-    MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
-    guint tag_size)
-{
-  MXFDMS1CueWords *self = MXF_DMS1_CUE_WORDS (metadata);
-  gboolean ret = TRUE;
-  MXFUL *tag_ul = NULL;
-  static const guint8 in_cue_words_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x01, 0x02, 0x0d, 0x01, 0x00, 0x00
-  };
-  static const guint8 out_cue_words_ul[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x01, 0x01, 0x01, 0x04, 0x03,
-    0x02, 0x01, 0x02, 0x0e, 0x01, 0x00, 0x00
-  };
-
-  if (!(tag_ul =
-          (MXFUL *) g_hash_table_lookup (primer->mappings,
-              GUINT_TO_POINTER (((guint) tag)))))
-    return FALSE;
-
-  if (memcmp (tag_ul, &in_cue_words_ul, 16) == 0) {
-    self->in_cue_words = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  in cue words = %s", GST_STR_NULL (self->in_cue_words));
-  } else if (memcmp (tag_ul, &out_cue_words_ul, 16) == 0) {
-    self->out_cue_words = mxf_utf16_to_utf8 (tag_data, tag_size);
-    GST_DEBUG ("  out cue words = %s", GST_STR_NULL (self->out_cue_words));
-  } else {
-    ret =
-        MXF_METADATA_BASE_CLASS (mxf_dms1_cue_words_parent_class)->handle_tag
-        (metadata, primer, tag, tag_data, tag_size);
-  }
-
-  return ret;
-}
-
-static void
-mxf_dms1_cue_words_init (MXFDMS1CueWords * self)
-{
-}
-
-static void
-mxf_dms1_cue_words_class_init (MXFDMS1CueWordsClass * klass)
-{
-  GObjectClass *object_class = (GObjectClass *) klass;
-  MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
-  MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
-
-  object_class->finalize = mxf_dms1_cue_words_finalize;
-  metadatabase_class->handle_tag = mxf_dms1_cue_words_handle_tag;
-  dm_class->type = 0x170800;
-}
-
-#define _add_dm_type(type) G_STMT_START { \
-  GType tmp = type; \
-  \
-  g_array_append_val (dms1_sets, tmp); \
-} G_STMT_END
-
-void
-mxf_dms1_initialize (void)
-{
-  GArray *dms1_sets = g_array_new (TRUE, TRUE, sizeof (GType));
-
-  _add_dm_type (MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK);
-  _add_dm_type (MXF_TYPE_DMS1_CLIP_FRAMEWORK);
-  _add_dm_type (MXF_TYPE_DMS1_SCENE_FRAMEWORK);
-  _add_dm_type (MXF_TYPE_DMS1_TITLES);
-  _add_dm_type (MXF_TYPE_DMS1_IDENTIFICATION);
-  _add_dm_type (MXF_TYPE_DMS1_GROUP_RELATIONSHIP);
-  _add_dm_type (MXF_TYPE_DMS1_BRANDING);
-  _add_dm_type (MXF_TYPE_DMS1_EVENT);
-  _add_dm_type (MXF_TYPE_DMS1_PUBLICATION);
-  _add_dm_type (MXF_TYPE_DMS1_AWARD);
-  _add_dm_type (MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION);
-  _add_dm_type (MXF_TYPE_DMS1_ANNOTATION);
-  _add_dm_type (MXF_TYPE_DMS1_SETTING_PERIOD);
-  _add_dm_type (MXF_TYPE_DMS1_SCRIPTING);
-  _add_dm_type (MXF_TYPE_DMS1_CLASSIFICATION);
-  _add_dm_type (MXF_TYPE_DMS1_SHOT);
-  _add_dm_type (MXF_TYPE_DMS1_KEY_POINT);
-  _add_dm_type (MXF_TYPE_DMS1_PARTICIPANT);
-  _add_dm_type (MXF_TYPE_DMS1_PERSON);
-  _add_dm_type (MXF_TYPE_DMS1_ORGANISATION);
-  _add_dm_type (MXF_TYPE_DMS1_LOCATION);
-  _add_dm_type (MXF_TYPE_DMS1_ADDRESS);
-  _add_dm_type (MXF_TYPE_DMS1_COMMUNICATIONS);
-  _add_dm_type (MXF_TYPE_DMS1_CONTRACT);
-  _add_dm_type (MXF_TYPE_DMS1_RIGHTS);
-  _add_dm_type (MXF_TYPE_DMS1_PICTURE_FORMAT);
-  _add_dm_type (MXF_TYPE_DMS1_DEVICE_PARAMETERS);
-  _add_dm_type (MXF_TYPE_DMS1_NAME_VALUE);
-  _add_dm_type (MXF_TYPE_DMS1_PROCESSING);
-  _add_dm_type (MXF_TYPE_DMS1_PROJECT);
-  _add_dm_type (MXF_TYPE_DMS1_CONTACTS_LIST);
-  _add_dm_type (MXF_TYPE_DMS1_CUE_WORDS);
-
-  mxf_descriptive_metadata_register (0x01, (GType *) g_array_free (dms1_sets,
-          FALSE));
-}
-
-#undef _add_dm_type
-
-#undef ADD_SET
diff --git a/gst/mxf/mxfdms1.h b/gst/mxf/mxfdms1.h
deleted file mode 100644
index 78f32e4..0000000
--- a/gst/mxf/mxfdms1.h
+++ /dev/null
@@ -1,933 +0,0 @@
-/* GStreamer
- * Copyright (C) 2008-2009 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/* Implementation of SMPTE S380M - Descriptive  Scheme-1 */
-
-#ifndef _MXF_DMS1_H_
-#define _MXF_DMS1_H_
-
-#include <gst/gst.h>
-#include "mxfmetadata.h"
-
-#define MXF_TYPE_DMS1 \
-  (mxf_dms1_get_type())
-#define MXF_DMS1(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1, MXFDMS1))
-#define MXF_IS_DMS1(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1))
-typedef struct _MXFDMS1 MXFDMS1;
-typedef MXFDescriptiveMetadataClass MXFDMS1Class;
-GType mxf_dms1_get_type (void);
-
-#define MXF_TYPE_DMS1_TEXT_LANGUAGE \
-  (mxf_dms1_text_language_get_type())
-#define MXF_DMS1_TEXT_LANGUAGE(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_TEXT_LANGUAGE, MXFDMS1TextLanguage))
-#define MXF_IS_DMS1_TEXT_LANGUAGE(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_TEXT_LANGUAGE))
-typedef struct _MXFDMS1TextLanguage MXFDMS1TextLanguage;
-typedef MXFDescriptiveMetadataClass MXFDMS1TextLanguageClass;
-GType mxf_dms1_text_language_get_type (void);
-
-#define MXF_TYPE_DMS1_THESAURUS \
-  (mxf_dms1_thesaurus_get_type())
-#define MXF_DMS1_THESAURUS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_THESAURUS, MXFDMS1Thesaurus))
-#define MXF_IS_DMS1_THESAURUS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_THESAURUS))
-typedef struct _MXFDMS1Thesaurus MXFDMS1Thesaurus;
-typedef MXFDescriptiveMetadataClass MXFDMS1ThesaurusClass;
-GType mxf_dms1_thesaurus_get_type (void);
-
-#define MXF_TYPE_DMS1_FRAMEWORK \
-  (mxf_dms1_framework_get_type())
-#define MXF_DMS1_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_FRAMEWORK, MXFDMS1Framework))
-#define MXF_IS_DMS1_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_FRAMEWORK))
-typedef struct _MXFDMS1Framework MXFDMS1Framework;
-typedef MXFDescriptiveMetadataClass MXFDMS1FrameworkClass;
-GType mxf_dms1_framework_get_type (void);
-
-#define MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK \
-  (mxf_dms1_production_clip_framework_get_type())
-#define MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK, MXFDMS1ProductionClipFramework))
-#define MXF_IS_DMS1_PRODUCTION_CLIP_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK))
-typedef struct _MXFDMS1ProductionClipFramework MXFDMS1ProductionClipFramework;
-typedef MXFDescriptiveMetadataClass MXFDMS1ProductionClipFrameworkClass;
-GType mxf_dms1_production_clip_framework_get_type (void);
-
-#define MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK \
-  (mxf_dms1_production_framework_get_type())
-#define MXF_DMS1_PRODUCTION_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK, MXFDMS1ProductionFramework))
-#define MXF_IS_DMS1_PRODUCTION_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PRODUCTION_FRAMEWORK))
-typedef struct _MXFDMS1ProductionFramework MXFDMS1ProductionFramework;
-typedef MXFDescriptiveMetadataClass MXFDMS1ProductionFrameworkClass;
-GType mxf_dms1_production_framework_get_type (void);
-
-#define MXF_TYPE_DMS1_CLIP_FRAMEWORK \
-  (mxf_dms1_clip_framework_get_type())
-#define MXF_DMS1_CLIP_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CLIP_FRAMEWORK, MXFDMS1ClipFramework))
-#define MXF_IS_DMS1_CLIP_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CLIP_FRAMEWORK))
-typedef struct _MXFDMS1ClipFramework MXFDMS1ClipFramework;
-typedef MXFDescriptiveMetadataClass MXFDMS1ClipFrameworkClass;
-GType mxf_dms1_clip_framework_get_type (void);
-
-#define MXF_TYPE_DMS1_SCENE_FRAMEWORK \
-  (mxf_dms1_scene_framework_get_type())
-#define MXF_DMS1_SCENE_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SCENE_FRAMEWORK, MXFDMS1SceneFramework))
-#define MXF_IS_DMS1_SCENE_FRAMEWORK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SCENE_FRAMEWORK))
-typedef struct _MXFDMS1SceneFramework MXFDMS1SceneFramework;
-typedef MXFDescriptiveMetadataClass MXFDMS1SceneFrameworkClass;
-GType mxf_dms1_scene_framework_get_type (void);
-
-#define MXF_TYPE_DMS1_TITLES \
-  (mxf_dms1_titles_get_type())
-#define MXF_DMS1_TITLES(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_TITLES, MXFDMS1Titles))
-#define MXF_IS_DMS1_TITLES(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_TITLES))
-typedef struct _MXFDMS1Titles MXFDMS1Titles;
-typedef MXFDescriptiveMetadataClass MXFDMS1TitlesClass;
-GType mxf_dms1_titles_get_type (void);
-
-#define MXF_TYPE_DMS1_IDENTIFICATION \
-  (mxf_dms1_identification_get_type())
-#define MXF_DMS1_IDENTIFICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_IDENTIFICATION, MXFDMS1Identification))
-#define MXF_IS_DMS1_IDENTIFICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_IDENTIFICATION))
-typedef struct _MXFDMS1Identification MXFDMS1Identification;
-typedef MXFDescriptiveMetadataClass MXFDMS1IdentificationClass;
-GType mxf_dms1_identification_get_type (void);
-
-#define MXF_TYPE_DMS1_GROUP_RELATIONSHIP \
-  (mxf_dms1_group_relationship_get_type())
-#define MXF_DMS1_GROUP_RELATIONSHIP(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_GROUP_RELATIONSHIP, MXFDMS1GroupRelationship))
-#define MXF_IS_DMS1_GROUP_RELATIONSHIP(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_GROUP_RELATIONSHIP))
-typedef struct _MXFDMS1GroupRelationship MXFDMS1GroupRelationship;
-typedef MXFDescriptiveMetadataClass MXFDMS1GroupRelationshipClass;
-GType mxf_dms1_group_relationship_get_type (void);
-
-#define MXF_TYPE_DMS1_BRANDING \
-  (mxf_dms1_branding_get_type())
-#define MXF_DMS1_BRANDING(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_BRANDING, MXFDMS1Branding))
-#define MXF_IS_DMS1_BRANDING(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_BRANDING))
-typedef struct _MXFDMS1Branding MXFDMS1Branding;
-typedef MXFDescriptiveMetadataClass MXFDMS1BrandingClass;
-GType mxf_dms1_branding_get_type (void);
-
-#define MXF_TYPE_DMS1_EVENT \
-  (mxf_dms1_event_get_type())
-#define MXF_DMS1_EVENT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_EVENT, MXFDMS1Event))
-#define MXF_IS_DMS1_EVENT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_EVENT))
-typedef struct _MXFDMS1Event MXFDMS1Event;
-typedef MXFDescriptiveMetadataClass MXFDMS1EventClass;
-GType mxf_dms1_event_get_type (void);
-
-#define MXF_TYPE_DMS1_PUBLICATION \
-  (mxf_dms1_publication_get_type())
-#define MXF_DMS1_PUBLICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PUBLICATION, MXFDMS1Publication))
-#define MXF_IS_DMS1_PUBLICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PUBLICATION))
-typedef struct _MXFDMS1Publication MXFDMS1Publication;
-typedef MXFDescriptiveMetadataClass MXFDMS1PublicationClass;
-GType mxf_dms1_publication_get_type (void);
-
-#define MXF_TYPE_DMS1_AWARD \
-  (mxf_dms1_award_get_type())
-#define MXF_DMS1_AWARD(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_AWARD, MXFDMS1Award))
-#define MXF_IS_DMS1_AWARD(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_AWARD))
-typedef struct _MXFDMS1Award MXFDMS1Award;
-typedef MXFDescriptiveMetadataClass MXFDMS1AwardClass;
-GType mxf_dms1_award_get_type (void);
-
-#define MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION \
-  (mxf_dms1_captions_description_get_type())
-#define MXF_DMS1_CAPTIONS_DESCRIPTION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION, MXFDMS1CaptionsDescription))
-#define MXF_IS_DMS1_CAPTIONS_DESCRIPTION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CAPTIONS_DESCRIPTION))
-typedef struct _MXFDMS1CaptionsDescription MXFDMS1CaptionsDescription;
-typedef MXFDescriptiveMetadataClass MXFDMS1CaptionsDescriptionClass;
-GType mxf_dms1_captions_description_get_type (void);
-
-#define MXF_TYPE_DMS1_ANNOTATION \
-  (mxf_dms1_annotation_get_type())
-#define MXF_DMS1_ANNOTATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ANNOTATION, MXFDMS1Annotation))
-#define MXF_IS_DMS1_ANNOTATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ANNOTATION))
-typedef struct _MXFDMS1Annotation MXFDMS1Annotation;
-typedef MXFDescriptiveMetadataClass MXFDMS1AnnotationClass;
-GType mxf_dms1_annotation_get_type (void);
-
-#define MXF_TYPE_DMS1_SETTING_PERIOD \
-  (mxf_dms1_setting_period_get_type())
-#define MXF_DMS1_SETTING_PERIOD(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SETTING_PERIOD, MXFDMS1SettingPeriod))
-#define MXF_IS_DMS1_SETTING_PERIOD(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SETTING_PERIOD))
-typedef struct _MXFDMS1SettingPeriod MXFDMS1SettingPeriod;
-typedef MXFDescriptiveMetadataClass MXFDMS1SettingPeriodClass;
-GType mxf_dms1_setting_period_get_type (void);
-
-#define MXF_TYPE_DMS1_SCRIPTING \
-  (mxf_dms1_scripting_get_type())
-#define MXF_DMS1_SCRIPTING(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SCRIPTING, MXFDMS1Scripting))
-#define MXF_IS_DMS1_SCRIPTING(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SCRIPTING))
-typedef struct _MXFDMS1Scripting MXFDMS1Scripting;
-typedef MXFDescriptiveMetadataClass MXFDMS1ScriptingClass;
-GType mxf_dms1_scripting_get_type (void);
-
-#define MXF_TYPE_DMS1_CLASSIFICATION \
-  (mxf_dms1_classification_get_type())
-#define MXF_DMS1_CLASSIFICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CLASSIFICATION, MXFDMS1Classification))
-#define MXF_IS_DMS1_CLASSIFICATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CLASSIFICATION))
-typedef struct _MXFDMS1Classification MXFDMS1Classification;
-typedef MXFDescriptiveMetadataClass MXFDMS1ClassificationClass;
-GType mxf_dms1_classification_get_type (void);
-
-#define MXF_TYPE_DMS1_SHOT \
-  (mxf_dms1_shot_get_type())
-#define MXF_DMS1_SHOT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_SHOT, MXFDMS1Shot))
-#define MXF_IS_DMS1_SHOT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_SHOT))
-typedef struct _MXFDMS1Shot MXFDMS1Shot;
-typedef MXFDescriptiveMetadataClass MXFDMS1ShotClass;
-GType mxf_dms1_shot_get_type (void);
-
-#define MXF_TYPE_DMS1_KEY_POINT \
-  (mxf_dms1_key_point_get_type())
-#define MXF_DMS1_KEY_POINT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_KEY_POINT, MXFDMS1KeyPoint))
-#define MXF_IS_DMS1_KEY_POINT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_KEY_POINT))
-typedef struct _MXFDMS1KeyPoint MXFDMS1KeyPoint;
-typedef MXFDescriptiveMetadataClass MXFDMS1KeyPointClass;
-GType mxf_dms1_key_point_get_type (void);
-
-#define MXF_TYPE_DMS1_PARTICIPANT \
-  (mxf_dms1_participant_get_type())
-#define MXF_DMS1_PARTICIPANT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PARTICIPANT, MXFDMS1Participant))
-#define MXF_IS_DMS1_PARTICIPANT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PARTICIPANT))
-typedef struct _MXFDMS1Participant MXFDMS1Participant;
-typedef MXFDescriptiveMetadataClass MXFDMS1ParticipantClass;
-GType mxf_dms1_participant_get_type (void);
-
-#define MXF_TYPE_DMS1_CONTACT \
-  (mxf_dms1_contact_get_type())
-#define MXF_DMS1_CONTACT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTACT, MXFDMS1Contact))
-#define MXF_IS_DMS1_CONTACT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTACT))
-typedef struct _MXFDMS1Contact MXFDMS1Contact;
-typedef MXFDescriptiveMetadataClass MXFDMS1ContactClass;
-GType mxf_dms1_contact_get_type (void);
-
-#define MXF_TYPE_DMS1_PERSON \
-  (mxf_dms1_person_get_type())
-#define MXF_DMS1_PERSON(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PERSON, MXFDMS1Person))
-#define MXF_IS_DMS1_PERSON(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PERSON))
-typedef struct _MXFDMS1Person MXFDMS1Person;
-typedef MXFDescriptiveMetadataClass MXFDMS1PersonClass;
-GType mxf_dms1_person_get_type (void);
-
-#define MXF_TYPE_DMS1_ORGANISATION \
-  (mxf_dms1_organisation_get_type())
-#define MXF_DMS1_ORGANISATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ORGANISATION, MXFDMS1Organisation))
-#define MXF_IS_DMS1_ORGANISATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ORGANISATION))
-typedef struct _MXFDMS1Organisation MXFDMS1Organisation;
-typedef MXFDescriptiveMetadataClass MXFDMS1OrganisationClass;
-GType mxf_dms1_organisation_get_type (void);
-
-#define MXF_TYPE_DMS1_LOCATION \
-  (mxf_dms1_location_get_type())
-#define MXF_DMS1_LOCATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_LOCATION, MXFDMS1Location))
-#define MXF_IS_DMS1_LOCATION(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_LOCATION))
-typedef struct _MXFDMS1Location MXFDMS1Location;
-typedef MXFDescriptiveMetadataClass MXFDMS1LocationClass;
-GType mxf_dms1_location_get_type (void);
-
-#define MXF_TYPE_DMS1_ADDRESS \
-  (mxf_dms1_address_get_type())
-#define MXF_DMS1_ADDRESS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_ADDRESS, MXFDMS1Address))
-#define MXF_IS_DMS1_ADDRESS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_ADDRESS))
-typedef struct _MXFDMS1Address MXFDMS1Address;
-typedef MXFDescriptiveMetadataClass MXFDMS1AddressClass;
-GType mxf_dms1_address_get_type (void);
-
-#define MXF_TYPE_DMS1_COMMUNICATIONS \
-  (mxf_dms1_communications_get_type())
-#define MXF_DMS1_COMMUNICATIONS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_COMMUNICATIONS, MXFDMS1Communications))
-#define MXF_IS_DMS1_COMMUNICATIONS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_COMMUNICATIONS))
-typedef struct _MXFDMS1Communications MXFDMS1Communications;
-typedef MXFDescriptiveMetadataClass MXFDMS1CommunicationsClass;
-GType mxf_dms1_communications_get_type (void);
-
-#define MXF_TYPE_DMS1_CONTRACT \
-  (mxf_dms1_contract_get_type())
-#define MXF_DMS1_CONTRACT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTRACT, MXFDMS1Contract))
-#define MXF_IS_DMS1_CONTRACT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTRACT))
-typedef struct _MXFDMS1Contract MXFDMS1Contract;
-typedef MXFDescriptiveMetadataClass MXFDMS1ContractClass;
-GType mxf_dms1_contract_get_type (void);
-
-#define MXF_TYPE_DMS1_RIGHTS \
-  (mxf_dms1_rights_get_type())
-#define MXF_DMS1_RIGHTS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_RIGHTS, MXFDMS1Rights))
-#define MXF_IS_DMS1_RIGHTS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_RIGHTS))
-typedef struct _MXFDMS1Rights MXFDMS1Rights;
-typedef MXFDescriptiveMetadataClass MXFDMS1RightsClass;
-GType mxf_dms1_rights_get_type (void);
-
-#define MXF_TYPE_DMS1_PICTURE_FORMAT \
-  (mxf_dms1_picture_format_get_type())
-#define MXF_DMS1_PICTURE_FORMAT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PICTURE_FORMAT, MXFDMS1PictureFormat))
-#define MXF_IS_DMS1_PICTURE_FORMAT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PICTURE_FORMAT))
-typedef struct _MXFDMS1PictureFormat MXFDMS1PictureFormat;
-typedef MXFDescriptiveMetadataClass MXFDMS1PictureFormatClass;
-GType mxf_dms1_picture_format_get_type (void);
-
-#define MXF_TYPE_DMS1_DEVICE_PARAMETERS \
-  (mxf_dms1_device_parameters_get_type())
-#define MXF_DMS1_DEVICE_PARAMETERS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_DEVICE_PARAMETERS, MXFDMS1DeviceParameters))
-#define MXF_IS_DMS1_DEVICE_PARAMETERS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_DEVICE_PARAMETERS))
-typedef struct _MXFDMS1DeviceParameters MXFDMS1DeviceParameters;
-typedef MXFDescriptiveMetadataClass MXFDMS1DeviceParametersClass;
-GType mxf_dms1_device_parameters_get_type (void);
-
-#define MXF_TYPE_DMS1_NAME_VALUE \
-  (mxf_dms1_name_value_get_type())
-#define MXF_DMS1_NAME_VALUE(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_NAME_VALUE, MXFDMS1NameValue))
-#define MXF_IS_DMS1_NAME_VALUE(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_NAME_VALUE))
-typedef struct _MXFDMS1NameValue MXFDMS1NameValue;
-typedef MXFDescriptiveMetadataClass MXFDMS1NameValueClass;
-GType mxf_dms1_name_value_get_type (void);
-
-#define MXF_TYPE_DMS1_PROCESSING \
-  (mxf_dms1_processing_get_type())
-#define MXF_DMS1_PROCESSING(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PROCESSING, MXFDMS1Processing))
-#define MXF_IS_DMS1_PROCESSING(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PROCESSING))
-typedef struct _MXFDMS1Processing MXFDMS1Processing;
-typedef MXFDescriptiveMetadataClass MXFDMS1ProcessingClass;
-GType mxf_dms1_processing_get_type (void);
-
-#define MXF_TYPE_DMS1_PROJECT \
-  (mxf_dms1_project_get_type())
-#define MXF_DMS1_PROJECT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_PROJECT, MXFDMS1Project))
-#define MXF_IS_DMS1_PROJECT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_PROJECT))
-typedef struct _MXFDMS1Project MXFDMS1Project;
-typedef MXFDescriptiveMetadataClass MXFDMS1ProjectClass;
-GType mxf_dms1_project_get_type (void);
-
-#define MXF_TYPE_DMS1_CONTACTS_LIST \
-  (mxf_dms1_contacts_list_get_type())
-#define MXF_DMS1_CONTACTS_LIST(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CONTACTS_LIST, MXFDMS1ContactsList))
-#define MXF_IS_DMS1_CONTACTS_LIST(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CONTACTS_LIST))
-typedef struct _MXFDMS1ContactsList MXFDMS1ContactsList;
-typedef MXFDescriptiveMetadataClass MXFDMS1ContactsListClass;
-GType mxf_dms1_contacts_list_get_type (void);
-
-#define MXF_TYPE_DMS1_CUE_WORDS \
-  (mxf_dms1_cue_words_get_type())
-#define MXF_DMS1_CUE_WORDS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),MXF_TYPE_DMS1_CUE_WORDS, MXFDMS1CueWords))
-#define MXF_IS_DMS1_CUE_WORDS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),MXF_TYPE_DMS1_CUE_WORDS))
-typedef struct _MXFDMS1CueWords MXFDMS1CueWords;
-typedef MXFDescriptiveMetadataClass MXFDMS1CueWordsClass;
-GType mxf_dms1_cue_words_get_type (void);
-
-struct _MXFDMS1 {
-  MXFDescriptiveMetadata parent;
-};
-
-struct _MXFDMS1TextLanguage {
-  MXFDMS1 parent;
-
-  gchar extended_text_language_code[13];
-};
-
-struct _MXFDMS1Thesaurus {
-  MXFDMS1TextLanguage parent;
-
-  gchar *thesaurus_name;
-};
-
-struct _MXFDMS1Framework {
-  MXFDMS1 parent;
-
-  gchar framework_extended_text_language_code[13];
-  gchar *framework_thesaurus_name;
-  gchar *framework_title;
-  gchar primary_extended_spoken_language_code[13];
-  gchar secondary_extended_spoken_language_code[13];
-  gchar original_extended_spoken_language_code[13];
-
-  guint32 n_metadata_server_locators;
-  MXFUUID *metadata_server_locators_uids;
-  /* TODO */
-
-  guint32 n_titles_sets;
-  MXFUUID *titles_sets_uids;
-  MXFDMS1Titles **titles_sets;
-
-  guint32 n_annotation_sets;
-  MXFUUID *annotation_sets_uids;
-  MXFDMS1Annotation **annotation_sets;
-
-  guint32 n_participant_sets;
-  MXFUUID *participant_sets_uids;
-  MXFDMS1Participant **participant_sets;
-
-  MXFUUID contacts_list_set_uid;
-  MXFDMS1ContactsList *contacts_list_set;
-
-  guint32 n_location_sets;
-  MXFUUID *location_sets_uids;
-  MXFDMS1Location **location_sets;
-};
-
-struct _MXFDMS1ProductionClipFramework {
-  MXFDMS1Framework parent;
-
-  MXFUUID picture_format_set_uid;
-  MXFDMS1PictureFormat *picture_format;
-  
-  guint32 n_captions_description_sets;
-  MXFUUID *captions_description_sets_uids;
-  MXFDMS1CaptionsDescription **captions_description_sets;
-
-  guint32 n_contract_sets;
-  MXFUUID *contract_sets_uids;
-  MXFDMS1Contract **contract_sets;
-
-  MXFUUID project_set_uid;
-  MXFDMS1Project *project_set;
-};
-
-struct _MXFDMS1ProductionFramework {
-  MXFDMS1ProductionClipFramework parent;
-
-  gchar *integration_indication;
-  
-  guint32 n_identification_sets;
-  MXFUUID *identification_sets_uids;
-  MXFDMS1Identification **identification_sets;
-
-  guint32 n_group_relationship_sets;
-  MXFUUID *group_relationship_sets_uids;
-  MXFDMS1GroupRelationship **group_relationship_sets;
-
-  guint32 n_branding_sets;
-  MXFUUID *branding_sets_uids;
-  MXFDMS1Branding **branding_sets;
-
-  guint32 n_event_sets;
-  MXFUUID *event_sets_uids;
-  MXFDMS1Event **event_sets;
-
-  guint32 n_award_sets;
-  MXFUUID *award_sets_uids;
-  MXFDMS1Award **award_sets;
-
-  guint32 n_setting_period_sets;
-  MXFUUID *setting_period_sets_uids;
-  MXFDMS1SettingPeriod **setting_period_sets;
-};
-
-struct _MXFDMS1ClipFramework {
-  MXFDMS1ProductionClipFramework parent;
-
-  gchar *clip_kind;
-  gchar clip_number[33];
-  
-  guint8 extended_clip_id[64];
-  gboolean extended_clip_id_full;
-
-  MXFTimestamp clip_creation_date_and_time;
-  
-  guint16 take_number;
-
-  gchar *slate_information;
-
-  guint32 n_scripting_sets;
-  MXFUUID *scripting_sets_uids;
-  MXFDMS1Scripting **scripting_sets;
-
-  guint32 n_shot_sets;
-  MXFUUID *shot_sets_uids;
-  MXFDMS1Shot **shot_sets;
-
-  guint32 n_device_parameters_sets;
-  MXFUUID *device_parameters_sets_uids;
-  MXFDMS1DeviceParameters **device_parameters_sets;
-
-  MXFUUID processing_set_uid;
-  MXFDMS1Processing *processing_set;
-};
-
-struct _MXFDMS1SceneFramework {
-  MXFDMS1Framework parent;
-
-  gchar scene_number[33];
-
-  guint32 n_setting_period_sets;
-  MXFUUID *setting_period_sets_uids;
-  MXFDMS1SettingPeriod **setting_period_sets;
-
-  guint32 n_shot_scene_sets;
-  MXFUUID *shot_scene_sets_uids;
-  MXFDMS1Shot **shot_scene_sets;
-};
-
-struct _MXFDMS1Titles {
-  MXFDMS1TextLanguage parent;
-
-  gchar *main_title;
-  gchar *secondary_title;
-  gchar *working_title;
-  gchar *original_title;
-  gchar *version_title;
-};
-
-struct _MXFDMS1Identification {
-  MXFDMS1Thesaurus parent;
-
-  gchar identifier_kind[33];
-  guint8 *identifier_value;
-  guint16 identifier_value_length;
-  MXFUUID identification_locator;
-  gchar *identification_issuing_authority;
-};
-
-struct _MXFDMS1GroupRelationship {
-  MXFDMS1Thesaurus parent;
-
-  gchar *programming_group_kind;
-  gchar* programming_group_title;
-  gchar *group_synopsis;
-  guint32 numerical_position_in_sequence;
-  guint32 total_number_in_the_sequence;
-  guint16 episodic_start_number;
-  guint16 episodic_end_number;
-};
-
-struct _MXFDMS1Branding {
-  MXFDMS1TextLanguage parent;
-
-  gchar *brand_main_title;
-  gchar *brand_original_title;
-};
-
-struct _MXFDMS1Event {
-  MXFDMS1Thesaurus parent;
-
-  gchar *event_indication;
-  gchar event_start_date_and_time[33];
-  gchar event_end_date_and_time[33];
-  
-  guint32 n_publication_sets;
-  MXFUUID *publication_sets_uids;
-  MXFDMS1Publication **publication_sets;
-
-  guint32 n_annotation_sets;
-  MXFUUID *annotation_sets_uids;
-  MXFDMS1Annotation **annotation_sets;
-};
-
-struct _MXFDMS1Publication {
-  MXFDMS1 parent;
-
-  gchar *publication_organisation_name;
-  gchar *publication_service_name;
-  gchar *publication_medium;
-  gchar *publication_region;
-};
-
-struct _MXFDMS1Award {
-  MXFDMS1Thesaurus parent;
-
-  gchar *festival;
-  gchar festival_date_and_time[33];
-  gchar *award_name;
-  gchar *award_classification;
-  gchar *nomination_category;
-
-  guint32 n_participant_sets;
-  MXFUUID *participant_sets_uids;
-  MXFDMS1Participant **participant_sets;
-};
-
-struct _MXFDMS1CaptionsDescription {
-  MXFDMS1Thesaurus parent;
-
-  gchar extended_captions_language_code[13];
-  gchar *caption_kind;
-};
-
-struct _MXFDMS1Annotation {
-  MXFDMS1Thesaurus parent;
-
-  gchar *annotation_kind;
-  gchar *annotation_synopsis;
-  gchar *annotation_description;
-  gchar *related_material_description;
-
-  guint32 n_classification_sets;
-  MXFUUID *classification_sets_uids;
-  MXFDMS1Classification **classification_sets;
-
-  MXFUUID cue_words_set_uid;
-  MXFDMS1CueWords *cue_words_set;
-
-  guint32 n_related_material_locators;
-  MXFUUID *related_material_locators;
-  /* TODO */
-  
-  guint32 n_participant_sets;
-  MXFUUID *participant_sets_uids;
-  MXFDMS1Participant **participant_sets;
-};
-
-struct _MXFDMS1SettingPeriod {
-  MXFDMS1Thesaurus parent;
-
-  MXFTimestamp setting_date_and_time;
-  gchar *time_period_keyword;
-  gchar *setting_period_description;
-};
-
-struct _MXFDMS1Scripting {
-  MXFDMS1Thesaurus parent;
-
-  gchar *scripting_kind;
-  gchar *scripting_text;
-
-  guint32 n_scripting_locators;
-  MXFUUID *scripting_locators;
-  /* TODO */
-};
-
-struct _MXFDMS1Classification {
-  MXFDMS1Thesaurus parent;
-
-  gchar content_classification[128];
-
-  guint32 n_name_value_sets;
-  MXFUUID *name_value_sets_uids;
-  MXFDMS1NameValue **name_value_sets;
-};
-
-struct _MXFDMS1Shot {
-  MXFDMS1TextLanguage parent;
-
-  gint64 shot_start_position;
-  gint64 shot_duration;
-
-  guint32 n_shot_track_ids;
-  guint32 *shot_track_ids;
-  
-  gchar *shot_description;
-  gchar *shot_comment_kind;
-  gchar *shot_comment;
-
-  MXFUUID cue_words_set_uid;
-  MXFDMS1CueWords *cue_words_set;
-
-  guint32 n_key_point_sets;
-  MXFUUID *key_point_sets_uids;
-  MXFDMS1KeyPoint **key_point_sets;
-};
-
-struct _MXFDMS1KeyPoint {
-  MXFDMS1Thesaurus parent;
-
-  gchar *keypoint_kind;
-  gchar *keypoint_value;
-  gint64 keypoint_position;
-};
-
-struct _MXFDMS1Participant {
-  MXFDMS1Thesaurus parent;
-
-  MXFUUID participant_uid;
-
-  gchar *contribution_status;
-  gchar *job_function;
-  gchar job_function_code[33];
-  gchar *role_or_identity_name;
-
-  guint32 n_person_sets;
-  MXFUUID *person_sets_uids;
-  MXFDMS1Person **person_sets;
-
-  guint32 n_organisation_sets;
-  MXFUUID *organisation_sets_uids;
-  MXFDMS1Organisation **organisation_sets;
-};
-
-struct _MXFDMS1Contact {
-  MXFDMS1Thesaurus parent;
-
-  MXFUUID contact_uid;
-
-  guint32 n_name_value_sets;
-  MXFUUID *name_value_sets_uids;
-  MXFDMS1NameValue **name_value_sets;
-
-  guint32 n_address_sets;
-  MXFUUID *address_sets_uids;
-  MXFDMS1Address **address_sets;
-};
-
-struct _MXFDMS1Person {
-  MXFDMS1Contact parent;
-
-  gchar *family_name;
-  gchar *first_given_name;
-  gchar *other_given_names;
-  gchar *linking_name;
-  gchar *salutation;
-  gchar *name_suffix;
-  gchar *honours_qualifications;
-  gchar *former_family_name;
-  gchar *person_description;
-  gchar *alternate_name;
-  gchar *nationality;
-  gchar *citizenship;
-
-  guint32 n_organisation_sets;
-  MXFUUID *organisation_sets_uids;
-  MXFDMS1Organisation **organisation_sets;
-};
-
-struct _MXFDMS1Organisation {
-  MXFDMS1Contact parent;
-
-  gchar *nature_of_organisation;
-  gchar *organisation_main_name;
-  gchar *organisation_code;
-  gchar *contact_department;
-};
-
-struct _MXFDMS1Location {
-  MXFDMS1Contact parent;
-
-  gchar *location_kind;
-  gchar *location_description;
-};
-
-struct _MXFDMS1Address {
-  MXFDMS1 parent;
-  
-  gchar *room_or_suite_number;
-  gchar *room_or_suite_name;
-  gchar *building_name;
-  gchar *place_name;
-  gchar *street_number;
-  gchar *street_name;
-  gchar *postal_town;
-  gchar *city;
-  gchar *state_or_province_or_country;
-  gchar *postal_code;
-  gchar *country;
-  guint8 geographical_coordinate[12];
-  gchar *astronomical_body_name;
-
-  guint32 n_communications_sets;
-  MXFUUID *communications_sets_uids;
-  MXFDMS1Communications **communications_sets;
-
-  guint32 n_name_value_sets;
-  MXFUUID *name_value_sets_uids;
-  MXFDMS1NameValue **name_value_sets;
-};
-
-struct _MXFDMS1Communications {
-  MXFDMS1 parent;
-
-  gchar central_telephone_number[33];
-  gchar telephone_number[33];
-  gchar mobile_telephone_number[33];
-  gchar fax_number[33];
-  gchar *email_address;
-  gchar *web_page;
-};
-
-struct _MXFDMS1Contract {
-  MXFDMS1Thesaurus parent;
-
-  gchar supply_contract_number[33];
-
-  guint32 n_rights_sets;
-  MXFUUID *rights_sets_uids;
-  MXFDMS1Rights **rights_sets;
-
-  guint32 n_participant_sets;
-  MXFUUID *participant_sets_uids;
-  MXFDMS1Participant **participant_sets;
-};
-
-struct _MXFDMS1Rights {
-  MXFDMS1Thesaurus parent;
-
-  gchar *copyright_owner;
-  gchar *rights_holder;
-  gchar *rights_managment_authority;
-  gchar *region_or_area_of_ip_license;
-  gchar *intellectual_property_type;
-  gchar *right_condition;
-  gchar *right_remarks;
-  gchar *intellectual_property_right;
-  MXFTimestamp rights_start_date_and_time;
-  MXFTimestamp rights_stop_date_and_time;
-  guint16 maximum_number_of_usages;
-};
-
-struct _MXFDMS1PictureFormat {
-  MXFDMS1 parent;
-
-  MXFFraction viewport_aspect_ratio;
-  gchar perceived_display_format[33];
-  gchar *colour_descriptor;
-};
-
-struct _MXFDMS1DeviceParameters {
-  MXFDMS1Thesaurus parent;
-
-  gchar *device_type;
-  gchar device_designation[33];
-  gchar device_asset_number[33];
-  guint8 ieee_device_identifier[6];
-  gchar *manufacturer;
-  gchar *device_model;
-  gchar *device_serial_number;
-  gchar *device_usage_description;
-
-  guint32 n_name_value_sets;
-  MXFUUID *name_value_sets_uids;
-  MXFDMS1NameValue **name_value_sets;
-};
-
-struct _MXFDMS1NameValue {
-  MXFDMS1 parent;
-
-  gchar *item_name;
-  gchar *item_value;
-
-  MXFUUID smpte_universal_label_locator;
-};
-
-struct _MXFDMS1Processing {
-  MXFDMS1 parent;
-
-  gboolean quality_flag;
-  gchar *descriptive_comment;
-  gboolean logo_flag;
-  gchar *graphic_usage_type;
-  guint16 process_steps;
-  guint16 generation_copy_number;
-  guint16 generation_clone_number;
-};
-
-struct _MXFDMS1Project {
-  MXFDMS1 parent;
-
-  gchar project_number[33];
-  gchar *project_name_or_title;
-};
-
-struct _MXFDMS1ContactsList {
-  MXFDMS1 parent;
-
-  guint32 n_person_sets;
-  MXFUUID *person_sets_uids;
-  MXFDMS1Person **person_sets;
-
-  guint32 n_organisation_sets;
-  MXFUUID *organisation_sets_uids;
-  MXFDMS1Organisation **organisation_sets;
-
-  guint32 n_location_sets;
-  MXFUUID *location_sets_uids;
-  MXFDMS1Location **location_sets;
-};
-
-struct _MXFDMS1CueWords {
-  MXFDMS1TextLanguage parent;
-
-  gchar *in_cue_words;
-  gchar *out_cue_words;
-};
-
-void mxf_dms1_initialize (void);
-
-#endif /* _MXF_DMS1_H_ */
diff --git a/gst/mxf/mxfmetadata.c b/gst/mxf/mxfmetadata.c
index 69aadb5..0fbc11e 100644
--- a/gst/mxf/mxfmetadata.c
+++ b/gst/mxf/mxfmetadata.c
@@ -149,9 +149,13 @@
   const guint8 *tag_data;
 
   g_return_val_if_fail (MXF_IS_METADATA_BASE (self), FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
   g_return_val_if_fail (primer != NULL, FALSE);
 
+  if (size == 0)
+    return FALSE;
+
+  g_return_val_if_fail (data != NULL, FALSE);
+
   while (mxf_local_tag_parse (data, size, &tag, &tag_size, &tag_data)) {
     if (tag_size == 0 || tag == 0x0000)
       goto next;
@@ -2244,6 +2248,9 @@
   d = MXF_METADATA_FILE_DESCRIPTOR (current);
 
   for (i = 0; i < package->n_tracks; i++) {
+    if (!package->tracks[i])
+      continue;
+
     if (!MXF_IS_METADATA_MULTIPLE_DESCRIPTOR (d)) {
       if (d->linked_track_id == package->tracks[i]->track_id ||
           (d->linked_track_id == 0 && package->n_essence_tracks == 1 &&
@@ -3552,12 +3559,12 @@
       if (GST_READ_UINT32_BE (tag_data + 4) != 4)
         goto error;
 
-      if (tag_size < 8 + 4 * len)
-        goto error;
-
       tag_data += 8;
       tag_size -= 8;
 
+      if (tag_size / 4 < len)
+        goto error;
+
       self->n_track_ids = len;
       self->track_ids = g_new0 (guint32, len);
 
@@ -3725,7 +3732,10 @@
       if (GST_READ_UINT32_BE (tag_data + 4) != 4)
         goto error;
 
-      if (len * 4 + 8 < tag_size)
+      tag_data += 8;
+      tag_size -= 8;
+
+      if (len < tag_size / 4)
         goto error;
 
       self->n_track_ids = len;
@@ -6493,7 +6503,7 @@
     return NULL;
   }
 
-  for (i = 0; i < _dm_schemes->len; i++) {
+  for (i = 0; _dm_schemes && i < _dm_schemes->len; i++) {
     _MXFDescriptiveMetadataScheme *data =
         &g_array_index (_dm_schemes, _MXFDescriptiveMetadataScheme, i);
 
diff --git a/gst/mxf/mxftypes.c b/gst/mxf/mxftypes.c
index 14e2362..ba7704b 100644
--- a/gst/mxf/mxftypes.c
+++ b/gst/mxf/mxftypes.c
@@ -326,11 +326,12 @@
 
   g_return_val_if_fail (array != NULL, FALSE);
   g_return_val_if_fail (count != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
 
   if (size < 8)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   element_count = GST_READ_UINT32_BE (data);
   data += 4;
   size -= 4;
@@ -351,7 +352,7 @@
     return FALSE;
   }
 
-  if (16 * element_count < size) {
+  if (element_count > size / 16) {
     *array = NULL;
     *count = 0;
     return FALSE;
@@ -492,7 +493,6 @@
 gboolean
 mxf_timestamp_parse (MXFTimestamp * timestamp, const guint8 * data, guint size)
 {
-  g_return_val_if_fail (data != NULL, FALSE);
   g_return_val_if_fail (timestamp != NULL, FALSE);
 
   memset (timestamp, 0, sizeof (MXFTimestamp));
@@ -500,6 +500,8 @@
   if (size < 8)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   timestamp->year = GST_READ_UINT16_BE (data);
   timestamp->month = GST_READ_UINT8 (data + 2);
   timestamp->day = GST_READ_UINT8 (data + 3);
@@ -597,13 +599,14 @@
 mxf_fraction_parse (MXFFraction * fraction, const guint8 * data, guint size)
 {
   g_return_val_if_fail (fraction != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
 
   memset (fraction, 0, sizeof (MXFFraction));
 
   if (size < 8)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   fraction->n = GST_READ_UINT32_BE (data);
   fraction->d = GST_READ_UINT32_BE (data + 4);
 
@@ -669,13 +672,14 @@
     const guint8 * data, guint size)
 {
   g_return_val_if_fail (product_version != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
 
   memset (product_version, 0, sizeof (MXFProductVersion));
 
   if (size < 9)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   product_version->major = GST_READ_UINT16_BE (data);
   product_version->minor = GST_READ_UINT16_BE (data + 2);
   product_version->patch = GST_READ_UINT16_BE (data + 4);
@@ -769,8 +773,10 @@
   gchar str[48];
 #endif
 
+  if (size < 84)
+    return FALSE;
+
   g_return_val_if_fail (data != NULL, FALSE);
-  g_return_val_if_fail (size >= 84, FALSE);
 
   memset (pack, 0, sizeof (MXFPartitionPack));
 
@@ -991,12 +997,13 @@
   guint len, i;
   MXFRandomIndexPackEntry entry;
 
-  g_return_val_if_fail (data != NULL, FALSE);
   g_return_val_if_fail (array != NULL, FALSE);
 
   if (size < 4)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   if ((size - 4) % 12 != 0)
     return FALSE;
 
@@ -1072,13 +1079,14 @@
   const guint8 *tag_data;
 
   g_return_val_if_fail (ul != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
 
   memset (segment, 0, sizeof (MXFIndexTableSegment));
 
   if (size < 70)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   GST_DEBUG ("Parsing index table segment:");
 
   while (mxf_local_tag_parse (data, size, &tag, &tag_size, &tag_data)) {
@@ -1167,7 +1175,7 @@
         tag_data += 4;
         tag_size -= 4;
 
-        if (tag_size < len * 6)
+        if (tag_size / 6 < len)
           goto error;
 
         segment->delta_entries = g_new (MXFDeltaEntry, len);
@@ -1216,7 +1224,8 @@
         tag_data += 4;
         tag_size -= 4;
 
-        if (tag_size < len * 11)
+        if (tag_size / (11 + 4 * segment->slice_count +
+                8 * segment->pos_table_count) < len)
           goto error;
 
         segment->index_entries = g_new0 (MXFIndexEntry, len);
@@ -1289,9 +1298,11 @@
 
   g_return_if_fail (segment != NULL);
 
-  for (i = 0; i < segment->n_index_entries; i++) {
-    g_free (segment->index_entries[i].slice_offset);
-    g_free (segment->index_entries[i].pos_table);
+  if (segment->index_entries) {
+    for (i = 0; i < segment->n_index_entries; i++) {
+      g_free (segment->index_entries[i].slice_offset);
+      g_free (segment->index_entries[i].pos_table);
+    }
   }
 
   g_free (segment->index_entries);
@@ -1434,8 +1445,10 @@
   guint i;
   guint32 n;
 
+  if (size < 8)
+    return FALSE;
+
   g_return_val_if_fail (data != NULL, FALSE);
-  g_return_val_if_fail (size >= 8, FALSE);
 
   memset (pack, 0, sizeof (MXFPrimerPack));
 
@@ -1447,14 +1460,16 @@
 
   n = GST_READ_UINT32_BE (data);
   data += 4;
+  size -= 4;
 
   GST_DEBUG ("  number of mappings = %u", n);
 
   if (GST_READ_UINT32_BE (data) != 18)
     goto error;
   data += 4;
+  size -= 4;
 
-  if (size < 8 + n * 18)
+  if (size / 18 < n)
     goto error;
 
   for (i = 0; i < n; i++) {
@@ -1610,18 +1625,21 @@
 mxf_local_tag_parse (const guint8 * data, guint size, guint16 * tag,
     guint16 * tag_size, const guint8 ** tag_data)
 {
-  g_return_val_if_fail (data != NULL, FALSE);
-
   if (size < 4)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   *tag = GST_READ_UINT16_BE (data);
   *tag_size = GST_READ_UINT16_BE (data + 2);
 
-  if (size < 4 + *tag_size)
+  data += 4;
+  size -= 4;
+
+  if (size < *tag_size)
     return FALSE;
 
-  *tag_data = data + 4;
+  *tag_data = data;
 
   return TRUE;
 }
@@ -1645,7 +1663,7 @@
   MXFUL *ul;
 
   g_return_val_if_fail (primer != NULL, FALSE);
-  g_return_val_if_fail (tag_data != NULL, FALSE);
+  g_return_val_if_fail (tag_size == 0 || tag_data != NULL, FALSE);
   g_return_val_if_fail (hash_table != NULL, FALSE);
   g_return_val_if_fail (primer->mappings != NULL, FALSE);
 
@@ -1671,7 +1689,7 @@
     local_tag = g_slice_new0 (MXFLocalTag);
     memcpy (&local_tag->ul, ul, sizeof (MXFUL));
     local_tag->size = tag_size;
-    local_tag->data = g_memdup (tag_data, tag_size);
+    local_tag->data = tag_size == 0 ? NULL : g_memdup (tag_data, tag_size);
     local_tag->g_slice = FALSE;
 
     g_hash_table_insert (*hash_table, &local_tag->ul, local_tag);
diff --git a/gst/mxf/mxful.c b/gst/mxf/mxful.c
index 3d186f9..75829c6 100644
--- a/gst/mxf/mxful.c
+++ b/gst/mxf/mxful.c
@@ -616,11 +616,12 @@
 
   g_return_val_if_fail (array != NULL, FALSE);
   g_return_val_if_fail (count != NULL, FALSE);
-  g_return_val_if_fail (data != NULL, FALSE);
 
   if (size < 8)
     return FALSE;
 
+  g_return_val_if_fail (data != NULL, FALSE);
+
   element_count = GST_READ_UINT32_BE (data);
   data += 4;
   size -= 4;
@@ -641,7 +642,7 @@
     return FALSE;
   }
 
-  if (16 * element_count < size) {
+  if (element_count > size / 16) {
     *array = NULL;
     *count = 0;
     return FALSE;
diff --git a/gst/rawparse/gstrawaudioparse.c b/gst/rawparse/gstrawaudioparse.c
index 98575dd..626604c 100644
--- a/gst/rawparse/gstrawaudioparse.c
+++ b/gst/rawparse/gstrawaudioparse.c
@@ -161,6 +161,8 @@
 static void gst_raw_audio_parse_get_units_per_second (GstRawBaseParse *
     raw_base_parse, GstFormat format, GstRawBaseParseConfig config,
     gsize * units_per_sec_n, gsize * units_per_sec_d);
+static gint gst_raw_audio_parse_get_alignment (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config);
 
 static gboolean gst_raw_audio_parse_is_using_sink_caps (GstRawAudioParse *
     raw_audio_parse);
@@ -228,6 +230,8 @@
       GST_DEBUG_FUNCPTR (gst_raw_audio_parse_is_unit_format_supported);
   rawbaseparse_class->get_units_per_second =
       GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_units_per_second);
+  rawbaseparse_class->get_alignment =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_alignment);
 
   g_object_class_install_property (object_class,
       PROP_FORMAT,
@@ -669,6 +673,38 @@
   return gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config)->ready;
 }
 
+static guint
+round_up_pow2 (guint n)
+{
+  n = n - 1;
+  n = n | (n >> 1);
+  n = n | (n >> 2);
+  n = n | (n >> 4);
+  n = n | (n >> 8);
+  n = n | (n >> 16);
+  return n + 1;
+}
+
+static gint
+gst_raw_audio_parse_get_alignment (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  GstRawAudioParseConfig *config_ptr =
+      gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config);
+  gint width;
+
+  if (config_ptr->format != GST_RAW_AUDIO_PARSE_FORMAT_PCM)
+    return 1;
+
+  width =
+      GST_AUDIO_FORMAT_INFO_WIDTH (gst_audio_format_get_info
+      (config_ptr->pcm_format)) / 8;
+  width = GST_ROUND_UP_8 (width);
+  width = round_up_pow2 (width);
+
+  return width;
+}
 
 static gboolean
 gst_raw_audio_parse_process (GstRawBaseParse * raw_base_parse,
diff --git a/gst/rawparse/gstrawbaseparse.c b/gst/rawparse/gstrawbaseparse.c
index c2ccee5..5fb8e73 100644
--- a/gst/rawparse/gstrawbaseparse.c
+++ b/gst/rawparse/gstrawbaseparse.c
@@ -430,6 +430,43 @@
   return ret;
 }
 
+static GstBuffer *
+gst_raw_base_parse_align_buffer (GstRawBaseParse * raw_base_parse,
+    gsize alignment, GstBuffer * buffer, gsize out_size)
+{
+  GstMapInfo map;
+
+  gst_buffer_map (buffer, &map, GST_MAP_READ);
+
+  if (map.size < sizeof (guintptr)) {
+    gst_buffer_unmap (buffer, &map);
+    return NULL;
+  }
+
+  if (((guintptr) map.data) & (alignment - 1)) {
+    GstBuffer *new_buffer;
+    GstAllocationParams params = { 0, alignment - 1, 0, 0, };
+
+    new_buffer = gst_buffer_new_allocate (NULL, out_size, &params);
+
+    /* Copy data "by hand", so ensure alignment is kept: */
+    gst_buffer_fill (new_buffer, 0, map.data, out_size);
+
+    gst_buffer_copy_into (new_buffer, buffer, GST_BUFFER_COPY_METADATA, 0,
+        out_size);
+    GST_DEBUG_OBJECT (raw_base_parse,
+        "We want output aligned on %" G_GSIZE_FORMAT ", reallocated",
+        alignment);
+
+    gst_buffer_unmap (buffer, &map);
+
+    return new_buffer;
+  }
+
+  gst_buffer_unmap (buffer, &map);
+
+  return NULL;
+}
 
 static GstFlowReturn
 gst_raw_base_parse_handle_frame (GstBaseParse * parse,
@@ -442,6 +479,7 @@
   guint64 buffer_duration;
   GstFlowReturn flow_ret = GST_FLOW_OK;
   GstEvent *new_caps_event = NULL;
+  gint alignment;
   GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
   GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (parse);
 
@@ -567,6 +605,23 @@
     frame->out_buffer = NULL;
   }
 
+  if (klass->get_alignment
+      && (alignment =
+          klass->get_alignment (raw_base_parse,
+              GST_RAW_BASE_PARSE_CONFIG_CURRENT)) != 1) {
+    GstBuffer *aligned_buffer;
+
+    aligned_buffer =
+        gst_raw_base_parse_align_buffer (raw_base_parse, alignment,
+        frame->out_buffer ? frame->out_buffer : frame->buffer, out_size);
+
+    if (aligned_buffer) {
+      if (frame->out_buffer)
+        gst_buffer_unref (frame->out_buffer);
+      frame->out_buffer = aligned_buffer;
+    }
+  }
+
   /* Set the duration of the output buffer, or if none exists, of
    * the input buffer. Do this after the process() call, since in
    * case out_buffer is set, the subclass has created a new buffer.
diff --git a/gst/rawparse/gstrawbaseparse.h b/gst/rawparse/gstrawbaseparse.h
index 519b409..4af4408 100644
--- a/gst/rawparse/gstrawbaseparse.h
+++ b/gst/rawparse/gstrawbaseparse.h
@@ -193,6 +193,9 @@
 
   gint                  (*get_overhead_size)         (GstRawBaseParse * raw_base_parse,
                                                       GstRawBaseParseConfig config);
+
+  gint                  (*get_alignment)             (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config);
 };
 
 
diff --git a/gst/rawparse/gstrawvideoparse.c b/gst/rawparse/gstrawvideoparse.c
index 2fb58c1..3808369 100644
--- a/gst/rawparse/gstrawvideoparse.c
+++ b/gst/rawparse/gstrawvideoparse.c
@@ -182,11 +182,12 @@
     * gst_raw_video_parse_get_config_ptr (GstRawVideoParse * raw_video_parse,
     GstRawBaseParseConfig config);
 
+static gint gst_raw_video_parse_get_alignment (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config);
+
 static void gst_raw_video_parse_init_config (GstRawVideoParseConfig * config);
 static void gst_raw_video_parse_update_info (GstRawVideoParseConfig * config);
 
-
-
 static void
 gst_raw_video_parse_class_init (GstRawVideoParseClass * klass)
 {
@@ -236,6 +237,8 @@
       GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_units_per_second);
   rawbaseparse_class->get_overhead_size =
       GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_overhead_size);
+  rawbaseparse_class->get_alignment =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_alignment);
 
   g_object_class_install_property (object_class,
       PROP_WIDTH,
@@ -929,6 +932,12 @@
   return gst_raw_video_parse_get_config_ptr (raw_video_parse, config)->ready;
 }
 
+static gint
+gst_raw_video_parse_get_alignment (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  return 32;
+}
 
 static gboolean
 gst_raw_video_parse_process (GstRawBaseParse * raw_base_parse,
diff --git a/gst/timecode/gsttimecodestamper.c b/gst/timecode/gsttimecodestamper.c
index d930289..4cbdc68 100644
--- a/gst/timecode/gsttimecodestamper.c
+++ b/gst/timecode/gsttimecodestamper.c
@@ -341,6 +341,16 @@
   return ret;
 }
 
+static gboolean
+remove_timecode_meta (GstBuffer * buffer, GstMeta ** meta, gpointer user_data)
+{
+  if (meta && *meta && (*meta)->info->api == GST_VIDEO_TIME_CODE_META_API_TYPE) {
+    *meta = NULL;
+  }
+
+  return TRUE;
+}
+
 static GstFlowReturn
 gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
     GstBuffer * buffer)
@@ -350,10 +360,13 @@
 
   GST_OBJECT_LOCK (timecodestamper);
   if (gst_buffer_get_video_time_code_meta (buffer)
-      && timecodestamper->override_existing == FALSE) {
+      && !timecodestamper->override_existing) {
     GST_OBJECT_UNLOCK (timecodestamper);
     return GST_FLOW_OK;
+  } else if (timecodestamper->override_existing) {
+    gst_buffer_foreach_meta (buffer, remove_timecode_meta, NULL);
   }
+
   if (timecodestamper->source_clock != NULL) {
     if (timecodestamper->current_tc->hours == 0
         && timecodestamper->current_tc->minutes == 0
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index be2f462..3153c2b 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -1131,8 +1131,10 @@
         goto skip;
         break;
       default:
-        g_assert_not_reached ();
-        break;
+        /* should not really occur either */
+        GST_ELEMENT_ERROR (h264parse, STREAM, FORMAT,
+            ("Error parsing H.264 stream"), ("Invalid H.264 stream"));
+        goto invalid_stream;
     }
   }
 
@@ -1829,8 +1831,8 @@
       /* Pass through or set output stereo/multiview config */
       if (s && gst_structure_has_field (s, "multiview-mode")) {
         caps_mview_mode = gst_structure_get_string (s, "multiview-mode");
-        gst_structure_get_flagset (s, "multiview-flags", (guint*) &mview_flags,
-            NULL);
+        gst_structure_get_flagset (s, "multiview-flags",
+            (guint *) & mview_flags, NULL);
       } else if (mview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) {
         if (gst_video_multiview_guess_half_aspect (mview_mode,
                 width, height, par_n, par_d)) {
@@ -2583,6 +2585,10 @@
       off = nalu.offset + nalu.size;
     }
 
+    if (off >= size) {
+      gst_buffer_unmap (codec_data, &map);
+      goto avcc_too_small;
+    }
     num_pps = data[off];
     off++;
 
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index 68fbe8d..f965a4b 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -883,8 +883,10 @@
         *skipsize = size - 3;
         goto skip;
       default:
-        g_assert_not_reached ();
-        break;
+        /* should not really occur either */
+        GST_ELEMENT_ERROR (h265parse, STREAM, FORMAT,
+            ("Error parsing H.265 stream"), ("Invalid H.265 stream"));
+        goto invalid_stream;
     }
   }
 
@@ -2016,6 +2018,7 @@
       (value = gst_structure_get_value (str, "codec_data"))) {
     GstMapInfo map;
     guint8 *data;
+    guint num_nal_arrays;
 
     GST_DEBUG_OBJECT (h265parse, "have packetized h265");
     /* make note for optional split processing */
@@ -2044,8 +2047,15 @@
     GST_DEBUG_OBJECT (h265parse, "nal length size %u",
         h265parse->nal_length_size);
 
+    num_nal_arrays = data[22];
     off = 23;
-    for (i = 0; i < data[22]; i++) {
+
+    for (i = 0; i < num_nal_arrays; i++) {
+      if (off + 3 >= size) {
+        gst_buffer_unmap (codec_data, &map);
+        goto hvcc_too_small;
+      }
+
       num_nals = GST_READ_UINT16_BE (data + off + 1);
       off += 3;
       for (j = 0; j < num_nals; j++) {
diff --git a/po/af.gmo b/po/af.gmo
index 714f8f3..72c32a8 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 4037d42..0e16b39 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2004-03-18 14:16+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
diff --git a/po/az.gmo b/po/az.gmo
index 6da931a..f6c9536 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index cf4eb2d..32f7c2b 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2004-03-19 18:29+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 744e2c9..49ec4c6 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 5fab88a..b4487eb 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-02-21 21:03+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 1e58437..bca5133 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 35620af..ccda1cb 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2012-01-01 14:19+0100\n"
 "Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index 2afbb6d..850e58b 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 20f6976..77ab332 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-10-15 20:54+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
diff --git a/po/da.gmo b/po/da.gmo
index 70e6ccd..d24ab54 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 01a70e1..bd90d18 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-03 11:28+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
diff --git a/po/de.gmo b/po/de.gmo
index dab42d0..585f773 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 6057d4b..d068781 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-02 19:18+0100\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/el.gmo b/po/el.gmo
index 19e1623..22097b4 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 708874b..6f248c4 100644
--- a/po/el.po
+++ b/po/el.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2012-05-05 19:17+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index fa5a4e6..7d0abe1 100644
--- a/po/en_GB.gmo
+++ b/po/en_GB.gmo
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index 326b081..8341e78 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2004-04-26 10:41-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
diff --git a/po/eo.gmo b/po/eo.gmo
index 436db6e..303ce32 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index eb66941..21ce85c 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2011-06-04 22:18+0200\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/es.gmo b/po/es.gmo
index 6cb202a..d08d44a 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index ce65055..d192f14 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2011-10-02 15:47+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
diff --git a/po/eu.gmo b/po/eu.gmo
index 1292bda..ed6c2e7 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 0c7801f..5efc36c 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2010-03-25 12:30+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 907ce9f..f64759f 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index d949447..ec41403 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2009-08-12 22:13+0300\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index ecdebbc..5ff6255 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 8873911..95790c5 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-02-20 16:27+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 21bb47b..aaceaa9 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index ef006b4..0fc6cb5 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2011-09-05 12:50+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index edf7499..ee78a91 100644
--- a/po/gst-plugins-bad-1.0.pot
+++ b/po/gst-plugins-bad-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad 1.10.1\n"
+"Project-Id-Version: gst-plugins-bad 1.10.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/po/hr.gmo b/po/hr.gmo
index 3f8bf43..a6d89ab 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 7b221a8..3192a86 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -5,25 +5,26 @@
 # Božidar Putanec <bozidarp@yahoo.com>, 2016.
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad 1.7.2\n"
+"Project-Id-Version: gst-plugins-bad-1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
-"PO-Revision-Date: 2016-05-27 12:45-0700\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
+"PO-Revision-Date: 2016-11-19 10:21-0800\n"
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
 "Language: hr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
-"X-Generator: Lokalize 2.0\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 1.8.7.1\n"
 
 msgid "failed to draw pattern"
-msgstr ""
+msgstr "crtanje uzorka nije uspjelo"
 
 msgid "A GL error occured"
-msgstr ""
+msgstr "Dogodila se GL greška"
 
 msgid "format wasn't negotiated before get function"
 msgstr "format nije bio dogovoren prije ‘get’ funkcije"
@@ -133,33 +134,31 @@
 msgid "Could not open file \"%s\" for reading."
 msgstr "Datoteku „%s“ nije moguće otvoriti za čitanje."
 
-#, fuzzy
 msgid "Couldn't find channel configuration file"
-msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
+msgstr "Konfiguracijska datoteka kanala nije pronađena"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't load channel configuration file: '%s'"
-msgstr "Nije moguće učitati konfiguracijsku datoteku za DVB kanal: %s"
+msgstr "Neuspjeh pri učitavanju konfiguracijske datoteke kanala: ‘%s’"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find details for channel '%s'"
-msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+msgstr "Pojedinosti za kanal ‘%s’ nisu nađene"
 
-#, fuzzy, c-format
+#, c-format
 msgid "No properties for channel '%s'"
-msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+msgstr "Svojstva za kanal ‘%s’ nisu nađena"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to set properties for channel '%s'"
-msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+msgstr "Nije uspjelo postaviti svojstva za kanal ‘%s’"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't find channel configuration file: '%s'"
-msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
+msgstr "Nije nađena konfiguracijska datoteka kanala: ‘%s’"
 
-#, fuzzy
 msgid "Channel configuration file doesn't contain any channels"
-msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
+msgstr "Konfiguracijska datoteka za kanala ne sadrži niti jedan kanal"
 
 #~ msgid "Internal data flow error."
 #~ msgstr "Interna greška u protoku podataka."
diff --git a/po/hu.gmo b/po/hu.gmo
index 857ff48..5388a47 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 00e8286..1f14bde 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-11-20 23:46+0100\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
diff --git a/po/id.gmo b/po/id.gmo
index 03b1840..1ad98ee 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index bb2421a..5c3a840 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-14 20:38+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
diff --git a/po/it.gmo b/po/it.gmo
index 06ff45f..fd78ab7 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 3292328..0c3b1a0 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2009-08-14 00:12+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index 514dbe0..22f7a8d 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 3db9285..3116b0d 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2011-04-26 19:38+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
diff --git a/po/ky.gmo b/po/ky.gmo
index 2d2795c..a6a56d2 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index d7d69f0..cb7c08d 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.5\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2007-11-13 17:16+0600\n"
 "Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
 "Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
diff --git a/po/lt.gmo b/po/lt.gmo
index d9c1114..2c498c8 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 96da4e8..e7612b3 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.6.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2008-05-14 02:13+0300\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
diff --git a/po/lv.gmo b/po/lv.gmo
index 98bd1b6..87753e0 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index aafa98b..1b850d8 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2014-04-20 15:52+0300\n"
 "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
diff --git a/po/mt.gmo b/po/mt.gmo
index a22b914..00d8da8 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index ffa22b4..16fe0a6 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2008-10-26 20:27+0100\n"
 "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
 "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index b519c79..ca1218a 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index f237fc3..6cd5dee 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-12-22 21:08+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
diff --git a/po/nl.gmo b/po/nl.gmo
index 2d04fe5..a381044 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 2d69729..a400221 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-02-20 12:35+0100\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
diff --git a/po/or.gmo b/po/or.gmo
index f96f0a8..76af1dd 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 688a4b5..eba41b1 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2004-09-27 13:32+0530\n"
 "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
 "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index f2bb40d..e55d27f 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index a4cbe6f..357dc5e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-01 20:53+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index b97dbb9..067d978 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index bb1c130..d510617 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-05-06 16:02-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
diff --git a/po/ro.gmo b/po/ro.gmo
index 49deece..5c6ab53 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 7410caf..8486783 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.18.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2010-08-16 03:11+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index 3cf96bd..dcd4387 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 54b7bca..78dfbb1 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-02 21:21+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index 49248ed..0b8c3f7 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 4f86f86..27358de 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-05-20 12:33+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
diff --git a/po/sl.gmo b/po/sl.gmo
index 6d766ad..abf5726 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 56533d7..c5d8077 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2011-04-26 15:21+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
diff --git a/po/sq.gmo b/po/sq.gmo
index ee00767..27cc06f 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 988c7e8..e391aff 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2008-08-15 16:07+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
index 2553349..24c40d4 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 487f409..b71d324 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-12-24 11:34+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index b48ff05..9cc0a61 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 693f7b8..7f92daf 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-11-01 00:48+0100\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 7306974..bd87b74 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 33781e3..06cff2f 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2015-01-10 21:07+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index b0ec640..3eaa54d 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index d088181..db819b3 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-01 20:55+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 5fb1f7e..2ae17b5 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index cd187a7..f93b6d2 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-02 13:38+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index e38d4fa..eb0db0c 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 4d395a3..18f39db 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.10.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-11-17 15:03+0200\n"
+"POT-Creation-Date: 2016-11-29 15:49+0200\n"
 "PO-Revision-Date: 2016-11-02 13:41+0800\n"
 "Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
index 184f124..8596337 100644
--- a/sys/decklink/gstdecklink.cpp
+++ b/sys/decklink/gstdecklink.cpp
@@ -194,8 +194,8 @@
 
 #define NTSC 10, 11, false, "bt601"
 #define PAL 12, 11, true, "bt601"
-#define HD 1, 1, false, "bt709"
-#define UHD 1, 1, false, "bt2020"
+#define HD 1, 1, true, "bt709"
+#define UHD 1, 1, true, "bt2020"
 
 static const GstDecklinkMode modes[] = {
   {bmdModeNTSC, 720, 486, 30000, 1001, true, NTSC},     // default is ntsc
@@ -467,7 +467,7 @@
 }
 
 static GstStructure *
-gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f)
+gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f, gboolean input)
 {
   const GstDecklinkMode *mode = &modes[e];
   GstStructure *s = gst_structure_new ("video/x-raw",
@@ -478,6 +478,13 @@
       mode->interlaced ? "interleaved" : "progressive",
       "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
 
+  if (input && mode->interlaced) {
+    if (mode->tff)
+      gst_structure_set (s, "field-order", G_TYPE_STRING, "top-field-first", NULL);
+    else
+      gst_structure_set (s, "field-order", G_TYPE_STRING, "bottom-field-first", NULL);
+  }
+
   switch (f) {
     case bmdFormat8BitYUV:     /* '2vuy' */
       gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
@@ -509,19 +516,19 @@
 }
 
 GstCaps *
-gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f)
+gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f, gboolean input)
 {
   GstCaps *caps;
 
   caps = gst_caps_new_empty ();
   caps =
-      gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e, f));
+      gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e, f, input));
 
   return caps;
 }
 
 GstCaps *
-gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e)
+gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e, gboolean input)
 {
   GstCaps *caps;
   guint i;
@@ -530,13 +537,13 @@
   for (i = 1; i < G_N_ELEMENTS (formats); i++)
     caps =
         gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e,
-            formats[i].format));
+            formats[i].format, input));
 
   return caps;
 }
 
 GstCaps *
-gst_decklink_pixel_format_get_caps (BMDPixelFormat f)
+gst_decklink_pixel_format_get_caps (BMDPixelFormat f, gboolean input)
 {
   int i;
   GstCaps *caps;
@@ -544,7 +551,7 @@
 
   caps = gst_caps_new_empty ();
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, f);
+    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, f, input);
     caps = gst_caps_merge_structure (caps, s);
   }
 
@@ -552,7 +559,7 @@
 }
 
 GstCaps *
-gst_decklink_mode_get_template_caps (void)
+gst_decklink_mode_get_template_caps (gboolean input)
 {
   int i;
   GstCaps *caps;
@@ -561,7 +568,7 @@
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++)
     caps =
         gst_caps_merge (caps,
-        gst_decklink_mode_get_caps_all_formats ((GstDecklinkModeEnum) i));
+        gst_decklink_mode_get_caps_all_formats ((GstDecklinkModeEnum) i, input));
 
   return caps;
 }
@@ -578,7 +585,7 @@
     return NULL;
 
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, *format);
+    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, *format, FALSE);
     if (gst_caps_can_intersect (caps, mode_caps)) {
       gst_caps_unref (mode_caps);
       return gst_decklink_get_mode ((GstDecklinkModeEnum) i);
@@ -918,6 +925,8 @@
       GST_WARNING ("selected device does not have input interface: 0x%08x",
           ret);
     } else {
+      IDeckLinkDisplayModeIterator *mode_iter;
+
       devices[i].input.device = decklink;
       devices[i].input.clock = gst_decklink_clock_new ("GstDecklinkInputClock");
       GST_DECKLINK_CLOCK_CAST (devices[i].input.clock)->input =
@@ -925,6 +934,27 @@
       devices[i].input.
           input->SetCallback (new GStreamerDecklinkInputCallback (&devices[i].
               input));
+
+      if ((ret =
+              devices[i].input.input->GetDisplayModeIterator (&mode_iter)) ==
+          S_OK) {
+        IDeckLinkDisplayMode *mode;
+
+        GST_DEBUG ("Input %d supports:", i);
+        while ((ret = mode_iter->Next (&mode)) == S_OK) {
+          const char *name;
+
+          mode->GetName (&name);
+          GST_DEBUG ("    %s mode: 0x%08x width: %ld height: %ld"
+              " fields: 0x%08x flags: 0x%08x", name,
+              (int) mode->GetDisplayMode (), mode->GetWidth (),
+              mode->GetHeight (), (int) mode->GetFieldDominance (),
+              (int) mode->GetFlags ());
+          mode->Release ();
+        }
+        mode_iter->Release ();
+      }
+      ret = S_OK;
     }
 
     ret = decklink->QueryInterface (IID_IDeckLinkOutput,
@@ -933,11 +963,34 @@
       GST_WARNING ("selected device does not have output interface: 0x%08x",
           ret);
     } else {
+      IDeckLinkDisplayModeIterator *mode_iter;
+
       devices[i].output.device = decklink;
       devices[i].output.clock =
           gst_decklink_clock_new ("GstDecklinkOutputClock");
       GST_DECKLINK_CLOCK_CAST (devices[i].output.clock)->output =
           &devices[i].output;
+
+      if ((ret =
+              devices[i].output.output->GetDisplayModeIterator (&mode_iter)) ==
+          S_OK) {
+        IDeckLinkDisplayMode *mode;
+
+        GST_DEBUG ("Output %d supports:", i);
+        while ((ret = mode_iter->Next (&mode)) == S_OK) {
+          const char *name;
+
+          mode->GetName (&name);
+          GST_DEBUG ("    %s mode: 0x%08x width: %ld height: %ld"
+              " fields: 0x%08x flags: 0x%08x", name,
+              (int) mode->GetDisplayMode (), mode->GetWidth (),
+              mode->GetHeight (), (int) mode->GetFieldDominance (),
+              (int) mode->GetFlags ());
+          mode->Release ();
+        }
+        mode_iter->Release ();
+      }
+      ret = S_OK;
     }
 
     ret = decklink->QueryInterface (IID_IDeckLinkConfiguration,
diff --git a/sys/decklink/gstdecklink.h b/sys/decklink/gstdecklink.h
index 9f95c56..90fda5c 100644
--- a/sys/decklink/gstdecklink.h
+++ b/sys/decklink/gstdecklink.h
@@ -160,8 +160,8 @@
 const GstDecklinkMode * gst_decklink_get_mode (GstDecklinkModeEnum e);
 const GstDecklinkModeEnum gst_decklink_get_mode_enum_from_bmd (BMDDisplayMode mode);
 const BMDVideoConnection gst_decklink_get_connection (GstDecklinkConnectionEnum e);
-GstCaps * gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f);
-GstCaps * gst_decklink_mode_get_template_caps (void);
+GstCaps * gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f, gboolean input);
+GstCaps * gst_decklink_mode_get_template_caps (gboolean input);
 
 typedef struct _GstDecklinkOutput GstDecklinkOutput;
 struct _GstDecklinkOutput {
@@ -231,7 +231,7 @@
 
 const GstDecklinkMode * gst_decklink_find_mode_for_caps (GstCaps * caps);
 const GstDecklinkMode * gst_decklink_find_mode_and_format_for_caps (GstCaps * caps, BMDPixelFormat * format);
-GstCaps * gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e);
-GstCaps * gst_decklink_pixel_format_get_caps (BMDPixelFormat f);
+GstCaps * gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e, gboolean input);
+GstCaps * gst_decklink_pixel_format_get_caps (BMDPixelFormat f, gboolean input);
 
 #endif
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index 741d74f..1612f8b 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -227,7 +227,7 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
               G_PARAM_CONSTRUCT)));
 
-  templ_caps = gst_decklink_mode_get_template_caps ();
+  templ_caps = gst_decklink_mode_get_template_caps (FALSE);
   templ_caps = gst_caps_make_writable (templ_caps);
   /* For output we support any framerate and only really care about timestamps */
   gst_caps_map_in_place (templ_caps, reset_framerate, NULL);
@@ -405,17 +405,17 @@
 
   if (self->mode == GST_DECKLINK_MODE_AUTO
       && self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
-    mode_caps = gst_decklink_mode_get_template_caps ();
+    mode_caps = gst_decklink_mode_get_template_caps (FALSE);
   else if (self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
-    mode_caps = gst_decklink_mode_get_caps_all_formats (self->mode);
+    mode_caps = gst_decklink_mode_get_caps_all_formats (self->mode, FALSE);
   else if (self->mode == GST_DECKLINK_MODE_AUTO)
     mode_caps =
         gst_decklink_pixel_format_get_caps (gst_decklink_pixel_format_from_type
-        (self->video_format));
+        (self->video_format), FALSE);
   else
     mode_caps =
         gst_decklink_mode_get_caps (self->mode,
-        gst_decklink_pixel_format_from_type (self->video_format));
+        gst_decklink_pixel_format_from_type (self->video_format), FALSE);
   mode_caps = gst_caps_make_writable (mode_caps);
   /* For output we support any framerate and only really care about timestamps */
   gst_caps_map_in_place (mode_caps, reset_framerate, NULL);
diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index d82c5fc..f5e785c 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -59,6 +59,8 @@
   CaptureFrame *frame = (CaptureFrame *) data;
 
   frame->frame->Release ();
+  if (frame->tc)
+    gst_video_time_code_free (frame->tc);
   g_free (frame);
 }
 
@@ -179,7 +181,7 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
               G_PARAM_CONSTRUCT)));
 
-  templ_caps = gst_decklink_mode_get_template_caps ();
+  templ_caps = gst_decklink_mode_get_template_caps (TRUE);
   gst_element_class_add_pad_template (element_class,
       gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, templ_caps));
   gst_caps_unref (templ_caps);
@@ -418,7 +420,7 @@
   format = self->caps_format;
   g_mutex_unlock (&self->lock);
 
-  mode_caps = gst_decklink_mode_get_caps (mode, format);
+  mode_caps = gst_decklink_mode_get_caps (mode, format, TRUE);
 
   if (filter) {
     caps =
@@ -585,6 +587,7 @@
   CaptureFrame *f;
   GstCaps *caps;
   gboolean caps_changed = FALSE;
+  const GstDecklinkMode *mode;
 
   g_mutex_lock (&self->lock);
   while (g_queue_is_empty (&self->current_frames) && !self->flushing) {
@@ -637,7 +640,7 @@
 
   g_mutex_unlock (&self->lock);
   if (caps_changed) {
-    caps = gst_decklink_mode_get_caps (f->mode, f->format);
+    caps = gst_decklink_mode_get_caps (f->mode, f->format, TRUE);
     gst_video_info_from_caps (&self->info, caps);
     gst_base_src_set_caps (GST_BASE_SRC_CAST (bsrc), caps);
     gst_element_post_message (GST_ELEMENT_CAST (self),
@@ -665,6 +668,10 @@
   GST_BUFFER_DURATION (*buffer) = f->capture_duration;
   gst_buffer_add_video_time_code_meta (*buffer, f->tc);
 
+  mode = gst_decklink_get_mode (self->mode);
+  if (mode->interlaced && mode->tff)
+    GST_BUFFER_FLAG_SET (*buffer, GST_VIDEO_BUFFER_FLAG_TFF | GST_VIDEO_BUFFER_FLAG_INTERLACED);
+
   GST_DEBUG_OBJECT (self,
       "Outputting buffer %p with timestamp %" GST_TIME_FORMAT " and duration %"
       GST_TIME_FORMAT, *buffer, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (*buffer)),
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 2c0cdb2..39f5aba 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -322,7 +322,7 @@
 elements_audiointerleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 
 elements_pnm_CFLAGS = \
-	$(GST_PLUGINS_BASE_CFLAGS)
+	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 elements_pnm_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
@@ -395,7 +395,6 @@
 
 libs_vp8parser_LDADD = \
 	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BAD_LIBS) -lgstcodecparsers-@GST_API_VERSION@ \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 
 elements_videoframe_audiolevel_CFLAGS = \
@@ -472,23 +471,21 @@
 elements_dash_isoff_LDADD = $(LDADD) $(GST_BASE_LIBS)
 elements_dash_isoff_SOURCES = elements/dash_isoff.c
 
-elements_dash_demux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
+elements_dash_demux_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS) $(LIBXML2_CFLAGS)
 elements_dash_demux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-	-lgsttag-$(GST_API_VERSION) \
-	-lgstapp-$(GST_API_VERSION) \
-	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
+	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) \
+	$(GST_BASE_LIBS) $(LIBXML2_LIBS) $(LDADD)
 
 elements_dash_demux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/dash_demux.c
 
 elements_neonhttpsrc_CFLAGS = $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
 
-elements_mssdemux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
+elements_mssdemux_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS) $(LIBXML2_CFLAGS)
 elements_mssdemux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-	-lgsttag-$(GST_API_VERSION) \
-	-lgstapp-$(GST_API_VERSION) \
-	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
+	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) \
+	$(GST_BASE_LIBS) $(LIBXML2_LIBS) $(LDADD)
 
 elements_mssdemux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/mssdemux.c
 
@@ -499,7 +496,7 @@
 	$(top_builddir)/gst-libs/gst/insertbin/libgstinsertbin-@GST_API_VERSION@.la \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 libs_insertbin_CFLAGS = \
-	$(GST_PLUGINS_BAD_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 
 libs_player_SOURCES = libs/player.c
 
@@ -652,11 +649,11 @@
 elements_hlsdemux_m3u8_LDADD = $(GST_BASE_LIBS) $(LDADD)
 elements_hlsdemux_m3u8_SOURCES = elements/hlsdemux_m3u8.c
 
-elements_hls_demux_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-elements_hls_demux_LDADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) $(LDADD) \
-	-lgsttag-$(GST_API_VERSION) \
-	-lgstapp-$(GST_API_VERSION) \
-	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptive