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'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 & 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's 'stereo-ness'</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, ¢ral_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, ©right_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, ®ion_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, ¶ms);
+
+ /* 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/libgstadaptivedemux-@GST_API_VERSION@.la
+elements_hls_demux_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_hls_demux_LDADD = \
+ $(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) $(LDADD)
elements_hls_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/hls_demux.c
orc_compositor_CFLAGS = $(ORC_CFLAGS)
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index cf3a183..98fcb0c 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -315,10 +315,9 @@
elements/elements_dash_demux-adaptive_demux_common.$(OBJEXT) \
elements/elements_dash_demux-dash_demux.$(OBJEXT)
elements_dash_demux_OBJECTS = $(am_elements_dash_demux_OBJECTS)
-elements_dash_demux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+elements_dash_demux_DEPENDENCIES = $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) \
- $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
elements_dash_demux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_dash_demux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -403,9 +402,9 @@
elements/elements_hls_demux-adaptive_demux_common.$(OBJEXT) \
elements/elements_hls_demux-hls_demux.$(OBJEXT)
elements_hls_demux_OBJECTS = $(am_elements_hls_demux_OBJECTS)
-elements_hls_demux_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
- $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+elements_hls_demux_DEPENDENCIES = $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_2)
elements_hls_demux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_hls_demux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -476,10 +475,9 @@
elements/elements_mssdemux-adaptive_demux_common.$(OBJEXT) \
elements/elements_mssdemux-mssdemux.$(OBJEXT)
elements_mssdemux_OBJECTS = $(am_elements_mssdemux_OBJECTS)
-elements_mssdemux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+elements_mssdemux_DEPENDENCIES = $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) \
- $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
elements_mssdemux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_mssdemux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -1835,7 +1833,8 @@
elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_AUDIO_LIBS) $(LDADD)
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)
@@ -1902,7 +1901,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 = \
@@ -1978,21 +1976,19 @@
elements_dash_isoff_CFLAGS = $(AM_CFLAGS) $(GST_BASE_CFLAGS)
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
pipelines_streamheader_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
@@ -2002,7 +1998,7 @@
$(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
libs_player_LDADD = \
@@ -2130,11 +2126,11 @@
elements_hlsdemux_m3u8_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS) -I$(top_srcdir)/ext/hls
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/libgstadaptivedemux-@GST_API_VERSION@.la
+elements_hls_demux_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_hls_demux_LDADD = \
+ $(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) $(LDADD)
elements_hls_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/hls_demux.c
orc_compositor_CFLAGS = $(ORC_CFLAGS)
@@ -4886,7 +4882,6 @@
clean-local: clean-local-check
distclean-local: distclean-local-orc
- $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
@WITH_GST_PLAYER_TESTS_TRUE@$(PLAYER_MEDIA_FILES):
@WITH_GST_PLAYER_TESTS_TRUE@ $(MKDIR_P) media
diff --git a/win32/common/config.h b/win32/common/config.h
index 45c018a..86b4818 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -86,7 +86,7 @@
#define GST_PACKAGE_ORIGIN "Unknown package origin"
/* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2016-11-17"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-11-29"
/* Define if static plugins should be built */
#undef GST_PLUGIN_BUILD_STATIC
@@ -737,7 +737,7 @@
#define PACKAGE_NAME "GStreamer Bad Plug-ins"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.10.1"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.10.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-bad"
@@ -746,7 +746,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.10.1"
+#define PACKAGE_VERSION "1.10.2"
/* directory where plugins are located */
#ifdef _DEBUG
@@ -790,7 +790,7 @@
#undef USE_EGL_RPI
/* Version number of package */
-#define VERSION "1.10.1"
+#define VERSION "1.10.2"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */